{"version":3,"sources":["src/js/wsForms.js","node_modules/gsap/dist/EasePack.js","node_modules/gsap/dist/gsap.js","dist/js/vendors.js","../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/utils/dom.js","../src/utils/get-support.js","../src/utils/get-device.js","../src/utils/get-browser.js","../src/utils/utils.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/components/core/modular.js","../src/components/core/events-emitter.js","../src/components/core/update/index.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/translate/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/transition/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/slide/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/loop/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/grab-cursor/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/manipulation/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/breakpoints/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/classes/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/images/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js","node_modules/three/build/three.js","node_modules/jquery/dist/jquery.js","node_modules/jquery-validation/dist/jquery.validate.js"],"names":["GetJsonData","formObj","d","form","$","fields","find","each","value","type","this","attr","name","list","filter","length","is","values","push","val","join","i","files","trim","sendActionsToGTM","obj","actions","jQuery","isArray","dataLayer","wsActionComplete","event","ex","province","selectNazione","select","textbox","$selectNazione","$select","$textbox","func","prov","data","select2","trovato","remove","p","v","append","prop","Sigla","text","Nome","show","trigger","fn","closeOnSelect","width","id","dropdownPosition","on","hide","ajax","url","cache","contentType","JSON","stringify","nazId","dataType","success","error","alert","global","factory","exports","module","define","amd","self","window","gsap","_registerEase","_getGSAP","registerPlugin","_boolean","defaultValue","indexOf","_initCore","core","registerEase","eases","parseEase","createConfig","ease","ratio","y","config","SlowMo","ExpoScaleEase","RoughEase","EasePack","globals","_createSlowMo","linearRatio","power","yoyoMode","pow","Math","min","p1","p3","calcEnd","r","_createExpoScale","start","end","log","p2","exp","EasePoint","time","next","t","prev","c","gap","_createRoughEase","vars","points","x","bump","invX","pnt","recent","taper","a","cnt","randomize","clamp","template","strength","random","sort","b","register","version","default","Object","defineProperty","_inheritsLoose","subClass","superClass","prototype","create","constructor","__proto__","_assertThisInitialized","ReferenceError","_suppressOverwrites","_globalTimeline","_win","_coreInitted","_doc","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_id","_req","_raf","_self","_delta","_i","_getTime","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","_tick","n","n1","easeOut","_config","autoSleep","force3D","nullTargetWarn","units","lineHeight","_defaults","duration","overwrite","delay","_bigNum","_tinyNum","_2PI","PI","_HALF_PI","_gsID","_sqrt","sqrt","_cos","cos","_sin","sin","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","Array","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_unitExp","_globals","_installScope","_install","scope","_merge","_missingPlugin","property","console","warn","_warn","message","suppress","_addGlobal","_emptyFunc","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","targets","harnessPlugin","target","_gsap","harness","targetTest","GSCache","splice","_getCache","toArray","_getProperty","getAttribute","_forEachName","names","split","forEach","_round","round","_roundPrecise","_arrayContainsAny","toSearch","toFind","l","_lazyRender","tween","slice","_lazy","render","_lazySafeRender","animation","suppressEvents","force","_numericIfPossible","parseFloat","match","_passThrough","_setDefaults","defaults","_setKeyframeDefaults","base","toMerge","_mergeDeep","_copyExcluding","excluding","copy","_inheritDefaults","parent","keyframes","inherit","_dp","_removeLinkedListItem","child","firstProp","lastProp","_prev","_next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_end","_dur","_start","_dirty","_recacheAncestors","totalDuration","_hasNoPausedAncestors","_ts","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","whole","floor","_parentToChildTotalTime","parentTime","_tDur","_setEnd","abs","_rts","_alignPlayhead","totalTime","smoothChildTiming","_time","_postAddChecks","timeline","_initted","rawTime","_clamp","_zTime","_addToTimeline","position","skipChecks","_parsePosition","_delay","timeScale","sortBy","_addLinkedListItem","_sort","_isFromOrFromStart","_recent","_scrollTrigger","ScrollTrigger","_attemptInitTween","_initTween","_pt","lazy","_ticker","frame","_parentPlayheadIsBeforeStart","_ref","_lock","_ref2","_setDuration","skipUncache","leavePlayhead","repeat","dur","totalProgress","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","percentAnimation","offset","isPercent","labels","clippedDuration","isNaN","charAt","substr","replace","_createTweenType","params","irVars","isLegacy","varsIndex","immediateRender","runBackwards","startAt","Tween","_conditionalReturn","max","getUnit","exec","index","_slice","_isArrayLike","nonEmpty","nodeType","_flatten","ar","leaveStrings","accumulator","_accumulator","apply","_wake","call","querySelectorAll","shuffle","distribute","_parseEase","from","isDecimal","ratios","axis","ratioX","ratioY","center","edges","originX","originY","j","wrapAt","distances","grid","getBoundingClientRect","left","amount","u","_invertEase","_roundModifier","raw","snap","snapTo","radius","is2D","increment","dx","dy","closest","roundingIncrement","returnFunction","_wrapArray","wrapper","_replaceRandom","nums","s","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","distance","label","_callback","executeLazyFirst","callback","callbackScope","_interrupt","scrollTrigger","kill","progress","_createPlugin","isFunc","Plugin","init","_props","instanceDefaults","_renderPropTweens","add","_addPropTween","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","get","getSetter","_getSetter","aliases","toUpperCase","PropTween","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","h","m1","m2","splitColor","toHSL","forceAlpha","g","wasHSL","parseInt","map","Number","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","result","colors","color","shift","RegExp","_hslExp","_colorStringFilter","combined","lastIndex","test","Date","now","overlap","dispatch","elapsed","manual","tick","deltaRatio","fps","wake","document","gsapVersions","GreenSockGlobals","requestAnimationFrame","sleep","f","setTimeout","cancelAnimationFrame","clearTimeout","lagSmoothing","threshold","adjustedLag","_fps","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","key","lastIndexOf","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","open","close","nested","substring","_CE","_configEaseFromString","_insertEase","easeIn","easeInOut","lowercaseName","toLowerCase","_easeInOutFromOut","_configElastic","amplitude","period","asin","_configBack","overshoot","Linear","easeNone","none","SteppedEase","steps","immediateStart","set","Animation","Infinity","repeatDelay","yoyo","_proto","startTime","arguments","_totalTime","_ptLookup","_pTime","iteration","_ps","paused","includeRepeats","wrapRepeats","globalTime","seek","restart","includeDelay","play","reversed","reverse","pause","atTime","resume","invalidate","isActive","eventCallback","_onUpdate","then","onFulfilled","Promise","resolve","_resolve","_then","_prom","_Animation","_this","sortChildren","_proto2","to","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onComplete","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_last","_findNextPauseTween","onUpdate","adjustedTime","_this2","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","props","onlyActive","getTweensOf","_overwritingTween","children","parsedTargets","isGlobalTime","_targets","tweenTo","initted","tl","_vars","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","clear","includeLabels","updateRoot","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","pt","_renderComplexString","matchIndex","e","m","fp","currentValue","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","plugin","ptLookup","_parseFuncOrString","style","_processVars","priority","cleanVars","hasPriority","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_from","_op","_sortPropTweensByPriority","_onInit","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_proto3","prevRatio","_renderZeroDurationTween","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a1","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","setAttribute","hasNonDependentRemaining","op","dep","_setterWithModifier","mSet","mt","pt2","first","last","pr","change","renderer","TweenMax","TweenLite","TimelineLite","TimelineMax","_len2","args","_key2","getProperty","unit","uncache","getter","format","quickSetter","setters","isTweening","registerEffect","_ref3","effect","plugins","extendTimeline","pluginName","exportRoot","includeDelayedCalls","utils","wrap","range","wrapYoyo","total","normalize","selector","el","current","nativeElement","createElement","pipe","_len","functions","_key","reduce","unitize","interpolate","mutate","interpolators","il","isString","master","install","effects","ticker","globalTimeline","getCache","suppressOverwrites","_getPluginPropTween","_buildModifierPlugin","temp","modifiers","_addModifiers","_win$1","_doc$1","_docElement","_pluginInitted","_tempDiv","_recentSetterPlugin","_supports3D","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","atan2","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","scale","alpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformProp","_transformOriginProp","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getComputedStyle","getPropertyValue","_checkPropPrefix","_prefixes","element","preferPrefix","documentElement","cssText","_getBBoxHack","swapIfPossible","bbox","svg","ownerSVGElement","oldParent","parentNode","oldSibling","nextSibling","oldCSS","appendChild","display","getBBox","_gsapBBox","insertBefore","removeChild","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","height","_isSVG","getCTM","_removeProperty","removeProperty","removeAttribute","_addNonTweeningPT","beginning","onlySetAtEnd","_nonConvertibleUnits","deg","rad","turn","_convertToUnit","px","isSVG","curValue","curUnit","horizontal","isRootSVG","tagName","measureProperty","toPixels","toPercent","body","_get","_parseTransform","origin","_firstTwoOnly","zOrigin","_specialProps","_tweenComplexCSSString","startValues","startValue","endValue","endUnit","startUnit","relative","_keywordToPercent","top","bottom","right","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","addedToDOM","matrix","transform","baseVal","consolidate","offsetParent","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","z","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","forceCSS","xPercent","offsetWidth","yPercent","offsetHeight","transformPerspective","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","_addRotationalPropTween","direction","cap","finalValue","_assign","source","_addRawTransformPTs","endCache","startCache","side","positionAndScale","all","CSSPlugin","specialProp","isTransformRelated","transformPropTween","parseTransform","smoothOrigin","autoRound","checkPrefix","gsapWithCSS","TweenMaxWithCSS","globalThis","Swiper","_defineProperties","descriptor","enumerable","configurable","writable","_extends","assign","hasOwnProperty","isObject","extend","src","keys","ssrDocument","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","importNode","location","hash","host","hostname","href","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","Image","screen","matchMedia","getWindow","win","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","toString","_construct","Parent","Class","instance","Function","bind","_wrapNativeSuper","_cache","Map","undefined","TypeError","has","Wrapper","Dom7","_Array","items","proto","concat","arrayFlat","arr","res","arrayFilter","context","html","toCreate","tempParent","innerHTML","qsa","uniqueArray","arrayUnique","support","device","browser","Methods","addClass","classes","classNames","_el$classList","classList","removeClass","_el$classList2","hasClass","_len4","_key4","className","contains","toggleClass","_len3","_key3","toggle","attrs","attrName","removeAttr","transition","transitionDuration","_len5","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","_parents","parents","k","handleEvent","events","_event","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","_len9","_key9","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","outerHeight","_styles2","box","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","css","_prop","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","newChild","tempDiv","firstChild","prepend","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","_parent","foundElements","found","err","nextTick","getTranslate","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","HTMLElement","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","bindModuleMethods","subKey","classesToSelector","createElementIfNotDefined","$container","createElements","checkProps","auto","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isSafari","isWebView","calcBrowser","methodName","Resize","swiper","resize","createObserver","destroyed","initialized","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","observe","removeObserver","unobserve","emit","orientationChangeHandler","resizeObserver","destroy","Observer","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observers","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","disconnect","Observer$1","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","originalEvent","$targetEl","touchEventsTarget","wrapperEl","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","rtl","rtlTranslate","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","loop","isVertical","translate","maxTranslate","minTranslate","diffX","diffY","touchAngle","isHorizontal","cssMode","touchMoveStopPropagation","stopPropagation","loopFix","startTranslate","setTransition","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","watchSlidesVisibility","updateActiveIndex","updateSlidesClasses","velocities","updateProgress","setTranslate","onTouchEnd","slidesGrid","snapGrid","currentPos","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","slideTo","activeIndex","slides","freeModeMomentum","lastMoveEvent","pop","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","centeredSlides","freeModeSticky","nextSlide","once","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","transitionStart","longSwipesMs","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","updateSlides","slidesPerView","isEnd","isBeginning","autoplay","running","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","previousTranslate","scrollWidth","translatesDiff","dummyEventAttached","dummyEventListener","initialSlide","updateOnWindowResize","autoHeight","setWrapperSize","virtualTranslate","breakpointsBase","spaceBetween","slidesPerColumn","slidesPerColumnFill","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","passiveListeners","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","prototypes","modular","useParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","moduleEventName","eventsEmitter","method","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","update","clientWidth","clientHeight","size","getDirectionLabel","margin-top","margin-bottom ","margin-left","margin-right","padding-left","padding-right","marginRight","getDirectionPropertyValue","node","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginBottom","ceil","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","_slide$","swiperSlideSize","slidesGridItem","_slides$filter$css","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","allSlidesOffset","snapIndex","updateSlidesOffset","updateAutoHeight","activeSlides","getSlideByIndex","visibleSlides","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideProgress","slideBefore","slideAfter","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","prevSlide","emitSlidesClasses","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","slideFound","clickedSlide","clickedIndex","byController","translateTo","runCallbacks","translateBounds","internal","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","dir","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGird","normalizedGridNext","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","_clientLeft","slidePrev","prevIndex","normalizedSnapGrid","prevSnap","slideReset","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","attachEvents","touchEvents","move","passive","cancel","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","param","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","point","minRatio","_points$i","wasLocked","lastSlidePosition","addClasses","prefix","resultClasses","suffixes","pointer-events","free-mode","autoheight","multirow","multirow-column","css-mode","item","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","swipers","newParams","moduleParamName","desktop","swiperParams","passedParams","eventName","touchEventsTouch","touchEventsDesktop","clickTimeout","Constructor","protoProps","staticProps","setProgress","getSlideClasses","slideEl","updates","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","deleteInstance","cleanStyles","object","extendDefaults","newDefaults","installModule","use","prototypeGroup","protoMethod","Virtual","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","positions","sensitivity","newEvent","sign","ignoreWheelEvents","timeout","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","animateSlider","releaseScroll","thresholdDelta","thresholdTime","getTime","Navigation","toggleEl","disabled","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Pagination","pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","opacity","divider","moveDivider","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","scrollingElement","isWindow","scrollElementWidth","scrollElementHeight","scrollHandlerAttached","Controller","LinearSpline","guess","i1","i3","binarySearch","array","getInterpolateFunction","controller","spline","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","A11y","getRandomNumber","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","slideRole","ariaLabelMessage","slideLabelMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","pathArray","URL","part","setHistory","slugify","root","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","attachMouseEvents","pauseOnMouseEnter","detachMouseEvents","Fade","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowScale","shadowAngle","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","rotate","depth","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","components","hideOnClick","toEdge","fromEdge","enable disable","_swiper$navigation3","_swiper$navigation4","targetEl","isHidden","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","checkInView","loadOnTransitionStart","scroll","scrollbarDragMove resize _freeModeNoMomentumRelease","notificationClass","afterInit","paginationUpdate","transitionEnd _freeModeNoMomentumRelease","beforeTransitionStart","sliderFirstMove","beforeDestroy","THREE","REVISION","AddEquation","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","UnsignedShortType","UnsignedIntType","FloatType","HalfFloatType","UnsignedInt248Type","RGBFormat","RGBAFormat","DepthFormat","DepthStencilFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","KeepStencilOp","StaticDrawUsage","DynamicDrawUsage","GLSL3","EventDispatcher","[object Object]","listeners","listenerArray","_lut","_seed","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","euclideanModulo","lerp","isPowerOfTwo","ceilPowerOfTwo","LN2","floorPowerOfTwo","MathUtils","freeze","mapLinear","b1","b2","inverseLerp","damp","lambda","dt","pingpong","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","seededRandom","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","q","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","Vector2","scalar","w","addVectors","subVectors","multiplyScalar","elements","minVal","maxVal","divideScalar","distanceToSquared","v1","v2","attribute","getX","getY","isVector2","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a31","b11","b12","b13","b21","b22","b23","b31","b32","b33","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","transpose","sx","sy","cx","cy","theta","fromArray","_canvas","isMatrix3","ImageUtils","HTMLCanvasElement","canvas","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","anisotropy","encoding","super","uuid","mipmaps","internalFormat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","isRenderTargetTexture","setUvTransform","meta","isRootObject","textures","output","metadata","generator","isDataTexture","serializeImage","uv","applyMatrix3","needsUpdate","HTMLImageElement","ImageBitmap","getDataURL","isTexture","Vector4","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","isVector4","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","dispose","clone","isWebGLRenderTarget","WebGLMultipleRenderTargets","count","isWebGLMultipleRenderTargets","WebGLMultisampleRenderTarget","samples","isWebGLMultisampleRenderTarget","Quaternion","_x","_y","_z","_w","qa","qb","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","z1","w1","sqrSin","EPSILON","tDir","_onChangeCallback","quaternion","euler","isEuler","_order","c1","c3","s1","s3","halfAngle","trace","vFrom","vTo","dot","step","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","isVector3","Box3","minZ","maxZ","makeEmpty","expandByPoint","halfSize","_vector$b","expandByObject","isEmpty","vector","addScalar","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","_box$3","union","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","p0","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","_v1$5","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","z2","wx","wy","wz","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","makeRotationFromQuaternion","newOrder","setFromQuaternion","optionalResult","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","DefaultUp","_onChange","defineProperties","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","getObjectByProperty","traverse","traverseVisible","traverseAncestors","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","serialize","library","toJSON","isInstancedMesh","instanceMatrix","instanceColor","isScene","isColor","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","extractFromCache","recursive","parse","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getBarycoord","uv1","uv2","uv3","addScaledVector","i0","i2","getNormal","setFromCoplanarPoints","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","d5","d6","vb","va","materialId","Material","fog","blending","vertexColors","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","alphaTest","onBeforeCompile","newValue","flatShading","isRoot","getHex","roughness","metalness","sheenTint","emissive","emissiveIntensity","specular","specularIntensity","specularTint","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularTintMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationTint","sizeAttenuation","linewidth","dashSize","gapSize","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","srcPlanes","dstPlanes","isMaterial","_colorKeywords","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","_hslA","_hslB","hue2rgb","SRGBToLinear","LinearToSRGB","Color","setRGB","setHex","setStyle","hex","handleAlpha","string","setHSL","setColorName","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","copySRGBToLinear","copyLinearToSRGB","hue","saturation","lightness","getHSL","color1","color2","normalized","NAMES","MeshBasicMaterial","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","usage","updateRange","index1","index2","vectors","fromBufferAttribute","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","arrayMax","TYPED_ARRAYS","getTypedArray","buffer","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","jl","indices","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","group","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","String","morphTargets","raycaster","intersects","intersectsBox","intersection","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersect","intersectTriangle","checkIntersection","BoxGeometry","widthSegments","heightSegments","depthSegments","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","UniformsUtils","merge","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","focus","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","fullWidth","fullHeight","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","dummy","isInteger","_needsFlipEnvMap","shader","tEquirect","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","deleteBuffer","delete","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","FLOAT","HALF_FLOAT","UNSIGNED_SHORT","SHORT","UNSIGNED_INT","INT","BYTE","UNSIGNED_BYTE","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshnormal_frag","meshnormal_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","meshtoon_frag","meshtoon_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLBackground","cubemaps","objects","clearColor","planeMesh","boxMesh","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","toneMapping","WebGLBindingStates","maxVertexAttributes","getParameter","MAX_VERTEX_ATTRIBS","extension","vaoAvailable","bindingStates","defaultState","createBindingState","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","reset","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","cachedAttribute","geometryAttribute","saveCache","ELEMENT_ARRAY_BUFFER","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","ARRAY_BUFFER","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","FRAGMENT_SHADER","MEDIUM_FLOAT","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","MAX_TEXTURE_IMAGE_UNITS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxTextureSize","MAX_TEXTURE_SIZE","maxCubemapSize","MAX_CUBE_MAP_TEXTURE_SIZE","maxAttributes","maxVertexUniforms","MAX_VERTEX_UNIFORM_VECTORS","maxVaryings","MAX_VARYING_VECTORS","maxFragmentUniforms","MAX_FRAGMENT_UNIFORM_VECTORS","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","MAX_SAMPLES","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","cubemap","fromEquirectangularTexture","physical","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","RawShaderMaterial","isRawShaderMaterial","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","LOD_MAX","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_blurMaterial","weights","poleAxis","latitudinal","dTheta","mipInt","inputEncoding","outputEncoding","_getCommonVertexShader","_getEncodings","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","sigma","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","_textureToCubeUV","_isLDR","_createRenderTarget","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","sum","weight","outputSize","lod","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","isCubeTextureComplete","fromEquirectangular","fromCubemap","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","TRIANGLES","LINES","LINE_STRIP","LINE_LOOP","POINTS","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","MAX_SAFE_INTEGER","morphNormals","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","hasEventListener","DataTexture2DArray","wrapR","isDataTexture2DArray","DataTexture3D","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","safeSetTexture2D","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","COMPILE_STATUS","errors","getShaderInfoLog","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","gammaFactorDefine","customExtensions","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","generateExtensions","customDefines","chunks","generateDefines","createProgram","prefixVertex","prefixFragment","versionString","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","specularTintMapEncoding","lightMapEncoding","depthPacking","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","LINK_STATUS","vertexErrors","fragmentErrors","getError","VALIDATE_STATUS","diagnostics","cachedUniforms","deleteShader","ACTIVE_ATTRIBUTES","getActiveAttrib","FLOAT_MAT2","FLOAT_MAT3","FLOAT_MAT4","getAttribLocation","fetchAttributeLocations","deleteProgram","usedTimes","WebGLPrograms","cubeuvmaps","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","getParameters","shadows","isMeshStandardMaterial","bones","nVertexUniforms","nVertexMatrices","getMaxBones","useAlphaTest","useClearcoat","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","defaultProgram","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","0","1","2","shadowMaterialVertical","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","DEPTH_TEST","depthMask","setFunc","NEVER","ALWAYS","LESS","LEQUAL","EQUAL","GEQUAL","GREATER","NOTEQUAL","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","STENCIL_TEST","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","xrFramebuffer","currentBoundFramebuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","MAX_COMBINED_TEXTURE_IMAGE_UNITS","lineWidthAvailable","glVersion","VERSION","currentTextureSlot","currentBoundTextures","scissorParam","SCISSOR_BOX","viewportParam","VIEWPORT","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texImage2D","RGBA","emptyTextures","TEXTURE_2D","TEXTURE_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","setFlipSided","setCullFace","CULL_FACE","equationToGL","FUNC_ADD","101","FUNC_SUBTRACT","102","FUNC_REVERSE_SUBTRACT","MIN","MAX","MIN_EXT","MAX_EXT","factorToGL","200","ZERO","201","ONE","202","SRC_COLOR","204","SRC_ALPHA","210","SRC_ALPHA_SATURATE","208","DST_COLOR","206","DST_ALPHA","203","ONE_MINUS_SRC_COLOR","205","ONE_MINUS_SRC_ALPHA","209","ONE_MINUS_DST_COLOR","207","ONE_MINUS_DST_ALPHA","BLEND","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","CW","CCW","cullFace","BACK","FRONT","FRONT_AND_BACK","setPolygonOffset","factor","POLYGON_OFFSET_FILL","activeTexture","webglSlot","TEXTURE0","bindFramebuffer","framebuffer","DRAW_FRAMEBUFFER","FRAMEBUFFER","bindXRFramebuffer","useProgram","setMaterial","frontFaceCW","SAMPLE_ALPHA_TO_COVERAGE","setLineWidth","lineWidth","SCISSOR_TEST","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","KEEP","READ_FRAMEBUFFER","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","log2","getInternalFormat","internalFormatName","glFormat","glType","RED","R32F","R16F","R8","RGB","RGB32F","RGB16F","RGB8","RGBA32F","RGBA16F","RGBA8","filterFallback","LINEAR","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","uploadTexture","setTextureCube","initTexture","pixelStorei","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","UNPACK_COLORSPACE_CONVERSION_WEBGL","NONE","isCompressed","isCompressedTexture","cubeImage","convert","glInternalFormat","setTextureParameters","mipmap","mipmapImage","uploadCubeTexture","wrappingToGL","REPEAT","CLAMP_TO_EDGE","MIRRORED_REPEAT","filterToGL","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","textureType","TEXTURE_WRAP_S","TEXTURE_WRAP_T","TEXTURE_3D","TEXTURE_2D_ARRAY","TEXTURE_WRAP_R","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT24","DEPTH24_STENCIL8","DEPTH_COMPONENT16","DEPTH_STENCIL","setupFrameBufferTexture","attachment","textureTarget","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","RENDERBUFFER","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","isMultipleRenderTargets","isRenderTarget3D","createFramebuffer","COLOR_ATTACHMENT0","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","blitFramebuffer","WebGLUtils","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","UNSIGNED_SHORT_5_6_5","HALF_FLOAT_OES","ALPHA","LUMINANCE","LUMINANCE_ALPHA","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","getPose","targetRaySpace","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","gripSpace","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","glBinding","glFramebuffer","glProjLayer","glBaseLayer","glMultisampledFramebuffer","glColorRenderbuffer","glDepthRenderbuffer","xrFrame","depthStyle","clearStyle","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","onSessionEnd","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","async","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","WebGLRenderingContext","depthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","requestReferenceSpace","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","setFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","glSubImage","getViewSubImage","depthStencilTexture","colorTexture","invalidateFramebuffer","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshUniformsStandard","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","WebGLRenderer","createCanvasElement","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_currentDrawBuffers","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","rangeMin","rangeMax","initGLContext","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","releaseMaterialProgramReferences","deallocateMaterial","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","positionArray","DYNAMIC_DRAW","normalArray","uvArray","colorArray","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","getProgram","projectObject","isLOD","intersectsSprite","isImmediateRenderObject","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","needsAntialias","currentToneMapping","renderObjects","renderTransmissionPass","renderObjectImmediate","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","setFromProjectionMatrix","camera2","drawBuffersWEBGL","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","IMPLEMENTATION_COLOR_READ_FORMAT","halfFloatSupportedByExt","IMPLEMENTATION_COLOR_READ_TYPE","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","UNPACK_ROW_LENGTH","unpackImageHeight","UNPACK_IMAGE_HEIGHT","unpackSkipPixels","UNPACK_SKIP_PIXELS","unpackSkipRows","UNPACK_SKIP_ROWS","unpackSkipImages","UNPACK_SKIP_IMAGES","texSubImage3D","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","_currentLevel","levels","addLevel","getObjectForDistance","raycast","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","boneInverses","Bone","isBone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","bone","json","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","readyState","HAVE_CURRENT_DATA","CompressedTexture","CanvasTexture","isCanvasTexture","DepthTexture","CircleGeometry","segments","thetaStart","thetaLength","vertex","segment","CylinderGeometry","radiusTop","radiusBottom","radialSegments","openEnded","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","PolyhedronGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","applyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","computeVertexNormals","details","DodecahedronGeometry","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","thresholdDot","indexAttr","getIndex","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","arcLengths","targetArcLength","comparison","lengthBefore","pt1","getTangent","closed","binormals","vec","mat","getTangentAt","MAX_VALUE","makeRotationAxis","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","fromJSON","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","py","pz","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","Earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","invSize","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","pts","holes","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","addShape","placeholder","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","hl","ahole","triangulateShape","scalePt2","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","IcosahedronGeometry","LatheGeometry","phiStart","phiLength","inverseSegments","OctahedronGeometry","ParametricGeometry","slices","stacks","EPS","pu","pv","sliceCount","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","SphereGeometry","thetaEnd","verticesRow","uOffset","TetrahedronGeometry","TextGeometry","font","isFont","generateShapes","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","B","T","N","calculatePositionOnCurve","cu","su","quOverP","TubeGeometry","frames","P","generateSegment","generateIndices","generateBufferData","WireframeGeometry","Set","ol","isUniqueEdge","hash1","hash2","Geometries","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","ParametricBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TextBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","STANDARD","PHYSICAL","_clearcoat","_transmission","TOON","MATCAP","Materials","AnimationUtils","arraySlice","isTypedArray","convertArray","forceClone","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","trackType","getInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","nKeys","valid","currTime","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","morphTarget","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","validate","optimize","typeName","getTrackTypeForValueTypeName","Cache","file","LoadingManager","onLoad","onProgress","onError","urlModifier","isLoading","itemsLoaded","itemsTotal","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","DefaultLoadingManager","Loader","manager","crossOrigin","withCredentials","resourcePath","requestHeader","reject","loading","FileLoader","dataUriRegexResult","request","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","XMLHttpRequest","callbacks","overrideMimeType","header","setRequestHeader","send","ImageLoader","onImageLoad","onImageError","CubeTextureLoader","urls","setCrossOrigin","setPath","loaded","loadTexture","DataTextureLoader","setResponseType","setWithCredentials","texData","mipmapCount","TextureLoader","isJPEG","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","getPoints","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","Shape","holesPts","getPointsHoles","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","MaterialLoader","getTexture","shading","LoaderUtils","TextDecoder","decode","fromCharCode","escape","InstancedBufferGeometry","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","arrayBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","ImageBitmapLoader","createImageBitmap","fetch","fetchOptions","credentials","headers","blob","colorSpaceConversion","imageBitmap","catch","isImageBitmapLoader","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","betterShapeHoles","newShapes","tmpPoints","tmpHoles","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","Font","chars","line_height","yMax","yMin","underlineThickness","char","ret","createPath","createPaths","toShapes","glyph","glyphs","familyName","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","AudioContext","webkitAudioContext","AudioLoader","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","Clock","autoStart","oldTime","elapsedTime","getElapsedTime","getDelta","newTime","performance","_position$1","_quaternion$1","_scale$1","_orientation$1","Audio","gain","createGain","connect","getInput","detune","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","currentTime","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","setTargetAtTime","getFilters","setFilters","_position","_quaternion","_scale","_orientation","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","PropertyBinding","rootNode","parsedPath","parseTrackName","findNode","_getValue_unbound","_setValue_unbound","isAnimationObjectGroup","Composite","results","objectName","objectIndex","propertyIndex","lastDot","getBoneByName","searchNodeSubtree","childNode","subTreeNode","targetObject","resolvedProperty","dest","targetArray","sourceArray","_getValue_unavailable","_setValue_unavailable","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","targetGroup","optionalParsedPath","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","inUse","bindingsPerObject","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_effectiveTimeScale","_effectiveWeight","repetitions","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","_updateWeight","timeRunning","_updateTimeScale","clipTime","_updateTime","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","ascSort","intersectObject","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","ImmediateRenderObject","_vector$3","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","_vector$1","_color1","_color2","GridHelper","_v1","_v2","_v3","_vector","_camera","setPoint","pointMap","unproject","_box","BoxHelper","setFromObject","_axis","_lineGeometry","_coneGeometry","AxesHelper","xAxisColor","yAxisColor","zAxisColor","_floatView","_int32View","fromPoints","setColors","extractUrlBase","Handlers","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","renderReverseSided","renderSingleSided","setBuffer","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","revision","__THREE__","ACESFilmicToneMapping","AddOperation","AdditiveBlending","AlphaFormat","AlwaysDepth","AlwaysStencilFunc","AnimationLoader","ArrowHelper","headLength","headWidth","cone","setDirection","setLength","AudioListener","destination","timeDelta","_clock","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","AxisHelper","BackSide","BasicDepthPacking","BasicShadowMap","BinaryTextureLoader","BoundingBoxHelper","Box3Helper","ByteType","CameraHelper","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","CanvasRenderer","CineonToneMapping","CompressedTextureLoader","texDatas","isCubemap","CullFaceBack","CullFaceFront","CullFaceFrontBack","CullFaceNone","CustomBlending","CustomToneMapping","Cylindrical","other","setFromCartesianCoords","DataUtils","DecrementStencilOp","DecrementWrapStencilOp","DirectionalLightHelper","lightPlane","targetLine","DoubleSide","DstAlphaFactor","DstColorFactor","DynamicBufferAttribute","DynamicCopyUsage","DynamicReadUsage","EdgesHelper","EqualDepth","EqualStencilFunc","FaceColors","FlatShading","Float32Attribute","Float64Attribute","FontLoader","FrontSide","GLSL1","GreaterDepth","GreaterEqualDepth","GreaterEqualStencilFunc","GreaterStencilFunc","HemisphereLightHelper","IncrementStencilOp","IncrementWrapStencilOp","Int16Attribute","Int32Attribute","Int8Attribute","IntType","InvertStencilOp","JSONLoader","LensFlare","LessDepth","LessEqualDepth","LessEqualStencilFunc","LessStencilFunc","LinePieces","LineStrip","LinearMipMapLinearFilter","LinearMipMapNearestFilter","LinearToneMapping","LogLuvEncoding","LoopOnce","LoopPingPong","LoopRepeat","LuminanceAlphaFormat","LuminanceFormat","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","MaxEquation","MeshFaceMaterial","MinEquation","MixOperation","MultiMaterial","isMultiMaterial","MultiplyBlending","MultiplyOperation","NearestMipMapLinearFilter","NearestMipMapNearestFilter","NeverDepth","NeverStencilFunc","NoBlending","NoColors","NoToneMapping","NormalBlending","NotEqualDepth","NotEqualStencilFunc","ObjectLoader","loadAsync","parseAsync","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","parseImagesAsync","bufferGeometryLoader","setTextures","deserializeImage","deserializedImage","currentUrl","parseConstant","getGeometry","getMaterial","objectAnimations","setResourcePath","ObjectSpaceNormalMap","OneFactor","OneMinusDstAlphaFactor","OneMinusDstColorFactor","OneMinusSrcAlphaFactor","OneMinusSrcColorFactor","PCFShadowMap","PCFSoftShadowMap","Particle","ParticleBasicMaterial","ParticleSystem","ParticleSystemMaterial","PlaneHelper","PointCloud","PointCloudMaterial","PointLightHelper","sphereSize","PolarGridHelper","radials","circles","PositionalAudio","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","RGBADepthPacking","RGBAIntegerFormat","RGBA_ASTC_10x10_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_BPTC_Format","RGBEFormat","RGBIntegerFormat","RGB_ETC1_Format","RGFormat","RGIntegerFormat","Raycaster","coords","RedFormat","RedIntegerFormat","ReinhardToneMapping","ReplaceStencilOp","ReverseSubtractEquation","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","ShortType","SmoothShading","Spherical","SpotLightHelper","coneLength","coneWidth","SrcAlphaFactor","SrcAlphaSaturateFactor","SrcColorFactor","StaticCopyUsage","StaticReadUsage","StereoCamera","eyeSep","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","StreamCopyUsage","StreamDrawUsage","StreamReadUsage","SubtractEquation","SubtractiveBlending","TOUCH","DOLLY_PAN","DOLLY_ROTATE","TangentSpaceNormalMap","TriangleFanDrawMode","TriangleStripDrawMode","TrianglesDrawMode","Uint16Attribute","Uint32Attribute","Uint8Attribute","Uint8ClampedAttribute","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","VSMShadowMap","Vertex","VertexColors","WebGLRenderTargetCube","WireframeHelper","XHRLoader","ZeroFactor","ZeroStencilOp","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","isFunction","preservedScriptAttributes","nonce","noModule","DOMEval","code","script","head","toType","isArrayLike","jquery","pushStack","elems","prevObject","elem","even","grep","_elem","odd","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","Ctor","isEmptyObject","globalEval","makeArray","inArray","second","callbackExpect","arg","guid","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","newSelector","newContext","ownerDocument","getElementsByClassName","testContext","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getElementsByName","attrId","getAttributeNode","tag","input","matchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","lastChild","uniqueID","pseudo","idx","matched","not","matcher","unmatched","lang","elemLang","hasFocus","tabIndex","checked","selected","selectedIndex","_matchIndexes","lt","gt","radio","checkbox","password","submit","tokens","combinator","checkNonElements","doneName","oldCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","addBack","parentsUntil","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","fired","firingIndex","fire","stopOnFalse","fireWith","Deferred","tuples","always","deferred","fns","newDefer","tuple","returned","onRejected","maxDepth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","option","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","Event","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","eventPhase","buttons","pointerId","pointerType","screenX","screenY","toElement","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","getWidthOrHeight","valueIsBorderBox","getClientRects","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","orphans","widows","origName","isCustomProp","scrollboxSizeBuggy","margin","padding","border","suffix","expand","expanded","propHooks","percent","eased","pos","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","createFxNow","genFx","includeWidth","createTween","tweeners","stopped","prefilters","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","opt","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","clazz","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","processData","accepts","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","abort","statusText","finalText","crossDomain","hasContent","ifModified","beforeSend","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","responseContainer","jsonProp","createHTMLDocument","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","pageYOffset","pageXOffset","parentOffset","Height","Width","","defaultExtra","funcName","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","require","validator","onsubmit","submitButton","cancelSubmit","submitHandler","formSubmitted","currentForm","pendingRequest","focusInvalid","errorList","rules","command","staticRules","existingRules","filtered","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","remote","called","str","blank","filled","unchecked","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","elementValue","invalid","onclick","highlight","setDefaults","email","date","dateISO","digits","equalTo","maxlength","minlength","rangelength","autoCreateRanges","labelContainer","errorContext","containers","valueCache","invalidHandler","checkForm","errorMap","showErrors","prepareForm","currentElements","rs","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","successList","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","addWrapper","findLastActive","rulesCache","resetInternals","toShow","$element","validity","badInput","rule","normalizer","rulesCount","dependencyMismatch","methods","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","title","theregex","toToggle","showLabel","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","errorPlacement","escapeCssMeta","describer","depend","dependTypes","function","startRequest","stopRequest","previousValue","classRuleSettings","creditcard","addClassRules","normalizeAttributeRule","depends","keepRule","parameter","transformed","addMethod","decimals","errorMessage","re","decimalPlaces","toInt","optionDataString","previous","originalMessage","port","pendingRequests","getDataToSend","callbackHandler","Props","Redirect","Status","Actions","highlight_base","unhighlight_base"],"mappings":"AAsFA,SAAAA,YAAAC,GACA,IAAAC,EAAA,GACAC,EAAAC,EAAAH,GACAI,EAAAF,EAAAG,KAAA,8CAyCA,OAvCAD,EAAAE,MAAA,WACA,IAGAC,EAFAC,EAAAL,EAAAM,MAAAC,KAAA,QACAC,EAAAR,EAAAM,MAAAC,KAAA,QAGA,OAAAF,GACA,IAAA,WACA,IAAA,QACA,IAAAI,EAAAR,EAAAS,OAAA,SAAAF,EAAA,UAAAH,EAAA,KACA,GAAA,GAAAI,EAAAE,OACAP,EAAAJ,EAAAM,MAAAM,GAAA,gBACA,CACA,GAAAd,EAAAU,GAAA,OAEA,IAAAK,EAAA,GACAJ,EAAAN,MAAA,WAAAH,EAAAM,MAAAM,GAAA,aAAAC,EAAAC,KAAAd,EAAAM,MAAAS,UACAX,EAAAS,EAAAG,KAAA,KAEA,MACA,IAAA,OACAZ,EAAA,GACA,IAAA,IAAAa,EAAA,EAAAA,EAAAX,KAAAY,MAAAP,OAAAM,IAAAb,EAAAU,KAAAR,KAAAY,MAAAD,GAAAT,MACA,MACA,QACAJ,EAAAJ,EAAAM,MAAAS,MACAX,EAAAJ,EAAAmB,KAAAf,GAIAN,EAAAU,GAAAJ,KAGAL,EAAAG,KAAA,wCAAAC,MAAA,WACA,IAAAK,EAAAR,EAAAM,MAAAC,KAAA,QACAT,EAAAU,GAAAR,EAAAM,MAAAS,SAIAjB,EAiBA,SAAAsB,iBAAAC,GACA,GAAA,MAAAA,EAEA,IACA,IAAAC,EAIAA,EAHAC,OAAAC,QAAAH,GAGAA,EAFA,CAAAA,GAIA,IAAA,IAAAJ,EAAA,EAAAA,EAAAK,EAAAX,OAAAM,IACAQ,UAAAX,KAAA,CAAAY,iBAAAJ,EAAAL,KACAQ,UAAAX,KAAA,CAAAa,MAAA,oBAEA,MAAAC,KAGA,SAAAC,SAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAjC,EAAA8B,GACA,GAAA,IAAAG,EAAAtB,OAAA,CAEA,IAAAuB,EAAAlC,EAAA+B,GACA,GAAA,IAAAG,EAAAvB,OAAA,CAEA,IAAAwB,EAAAnC,EAAAgC,GACA,GAAA,IAAAG,EAAAxB,OAAA,CAEA,IAAAyB,EAAA,SAAAC,GACAH,EAAAnB,IAAA,IAEAmB,EAAAI,KAAA,YACAJ,EAAAK,QAAA,WAGA,IAAAC,GAAA,EAEAN,EAAAhC,KAAA,gBAAAuC,SACA,IAAA,IAAAxB,EAAA,EAAAA,EAAAoB,EAAA1B,OAAAM,IAAA,CACA,IAAAyB,EAAAL,EAAApB,GACA0B,EAAAR,EAAApB,MACAmB,EAAAU,OAAA5C,EAAA,qBAAA6C,KAAA,QAAAH,EAAAI,OAAAC,KAAAL,EAAAM,OAEAL,GACAA,GAAAD,EAAAI,QACAZ,EAAAnB,IAAAsB,EAAApB,GAAA6B,OACAN,GAAA,GAKAA,GAAA,IAAAH,EAAA1B,QACAwB,EAAApB,IAAA,IAGAsB,EAAA1B,OAAA,GAGAuB,EAAAe,OAAAC,QAAA,QAEA3B,OAAA4B,GAAAZ,SACAL,EAAAK,QACA,CACAa,eAAA,EACAC,MAAA,QACAC,IAAA,EACAC,iBAAA,UAEAC,GAAA,kBAAA,WACArB,EAAApB,IAAAf,EAAAM,MAAAS,UAIAoB,EAAAsB,SAGAvB,EAAAuB,OACAtB,EAAAc,SAIA1B,OAAA4B,GAAAZ,SACAL,EAAAsB,GAAA,UAAA,WACArB,EAAApB,IAAAf,EAAAM,MAAAS,UAIAkB,EACAuB,GAAA,yBAAA,WACAxD,EAAAM,MAAAS,MACAf,EAAA0D,KAAA,CACArD,KAAA,OACAsD,IAAA,4BACAC,OAAA,EACAC,YAAA,kCACAvB,KAAAwB,KAAAC,UAAA,CAAAC,MAAA/B,EAAAlB,QACAkD,SAAA,OACAC,QAAA,SAAA5B,GACAF,EAAAE,EAAAxC,IAEAqE,MAAA,SAAA7B,GACA8B,MAAA,0BAIAhC,EAAA,OAIAb,OAAA4B,GAAAZ,QACAN,EAAAiB,QAAA,kBAEAjB,EAAAiB,QAAA,cClQA,SAAAmB,EAAAC,GACA,iBAAAC,SAAA,oBAAAC,OAAAF,EAAAC,SACA,mBAAAE,QAAAA,OAAAC,IAAAD,OAAA,CAAA,WAAAH,GACAA,GAAAD,EAAAA,GAAAM,MAAAC,OAAAP,EAAAO,QAAA,IAHA,CAIAtE,MAAA,SAAAiE,GAAA;;;;;;;;;GAWA,IAAAM,EACAC,EACAC,EAAA,WACA,OAAAF,GAAA,oBAAAD,SAAAC,EAAAD,OAAAC,OAAAA,EAAAG,gBAAAH,GAEAI,EAAA,SAAA7E,EAAA8E,GACA,cAAA,IAAA9E,EAAA8E,EAAA9E,MAAAA,EAAA,IAAA+E,QAAA,WAEAC,EAAA,SAAAC,GAGA,GAFAR,EAAAQ,GAAAN,IAEA,CACAD,EAAAD,EAAAS,aAEA,IAUA5C,EAVA6C,EAAAV,EAAAW,YACAC,EAAA,SAAAC,GACA,OAAA,SAAAC,GACA,IAAAC,EAAA,GAAAD,EAAA,EAEAD,EAAAG,OAAA,SAAAnD,GACA,OAAAgD,EAAA,GAAA,EAAAhD,GAAAA,EAAAkD,EAAAlD,EAAAA,MAMA,IAAAA,KAAA6C,EACAA,EAAA7C,GAAAmD,QACAJ,EAAAF,EAAA7C,IAUA,IAAAA,KANAoC,EAAA,OAAAgB,GAEAhB,EAAA,YAAAiB,GAEAjB,EAAA,QAAAkB,GAEAC,EACA,YAAAvD,GAAAmC,EAAAQ,KAAAa,QAAAxD,EAAAuD,EAAAvD,MAIAyD,EAAA,SAAAC,EAAAC,EAAAC,GAGA,IAAAC,GAFAH,EAAAI,KAAAC,IAAA,EAAAL,GAAA,KAEA,EAAAC,GAAA,IAAAA,EAAAA,EAAA,GAAA,EACAK,GAAA,EAAAN,GAAA,EACAO,EAAAD,EAAAN,EACAQ,EAAA3B,EAAAqB,GAEA,OAAA,SAAA5D,GACA,IAAAmE,EAAAnE,GAAA,GAAAA,GAAA6D,EACA,OAAA7D,EAAAgE,EAAAE,EAAA,GAAAlE,EAAA,EAAAA,EAAAgE,GAAAhE,EAAAmE,GAAAnE,EAAA,EAAAA,EAAAgE,GAAAhE,EAAAA,EAAAA,EAAAmE,EAAAnE,EAAAiE,EAAAC,EAAA,IAAAlE,EAAA,EAAA,GAAAA,GAAAA,EAAAiE,GAAAD,GAAAhE,EAAAmE,GAAAnE,EAAAmE,IAAAnE,GAAAA,EAAAiE,GAAAD,GAAAhE,EAAAA,EAAAA,EAAAkE,EAAA,EAAAC,IAGAC,EAAA,SAAAC,EAAAC,EAAAtB,GACA,IAAAgB,EAAAF,KAAAS,IAAAD,EAAAD,GACAG,EAAAF,EAAAD,EAEA,OADArB,IAAAA,EAAAb,EAAAW,UAAAE,IACA,SAAAhD,GACA,OAAAqE,EAAAP,KAAAW,IAAAT,GAAAhB,EAAAA,EAAAhD,GAAAA,IAAAqE,GAAAG,IAGAE,EAAA,SAAAC,EAAAjH,EAAAkH,GACAhH,KAAAiH,EAAAF,EACA/G,KAAAqC,EAAAvC,EAEAkH,IACAhH,KAAAgH,KAAAA,EACAA,EAAAE,KAAAlH,KACAA,KAAAmH,EAAAH,EAAA3E,EAAAvC,EACAE,KAAAoH,IAAAJ,EAAAC,EAAAF,IAGAM,EAAA,SAAAC,GACA,iBAAAA,IACAA,EAAA,CACAC,QAAAD,GAAA,KAqBA,IAjBA,IASAE,EACAlC,EACAmC,EACAC,EACA3G,EACA4G,EACAC,EAfAC,EAAAP,EAAAO,OAAA,OACAC,EAAA,GACAC,EAAA,EACAR,EAAA,IAAAD,EAAAC,QAAA,IACA5G,EAAA4G,EACAS,EAAArD,EAAA2C,EAAAU,WAAA,GACAC,EAAAtD,EAAA2C,EAAAW,OACAC,EAAA3D,EAAAA,EAAAW,UAAAoC,EAAAY,UAAA,EACAC,EAAA,KAAAb,EAAAa,UAAA,KASAxH,GAAA,GACA6G,EAAAQ,EAAA9B,KAAAkC,SAAA,EAAAb,EAAA5G,EACA2E,EAAA4C,EAAAA,EAAAV,GAAAA,EAGAC,EADA,SAAAI,EACAM,EACA,QAAAN,GACAH,EAAA,EAAAF,GACAE,EAAAS,EACA,OAAAN,EACAL,EAAAA,EAAAW,EACAX,EAAA,IACAE,EAAA,EAAAF,GACAE,EAAA,GAAAS,GAEAT,EAAA,GAAA,EAAAF,IACAE,EAAA,GAAAS,EAGAH,EACA1C,GAAAY,KAAAkC,SAAAX,EAAA,GAAAA,EACA9G,EAAA,EACA2E,GAAA,GAAAmC,EAEAnC,GAAA,GAAAmC,EAGAQ,IACA3C,EAAA,EACAA,EAAA,EACAA,EAAA,IACAA,EAAA,IAIAwC,EAAAC,KAAA,CACAP,EAAAA,EACAlC,EAAAA,GAUA,IANAwC,EAAAO,MAAA,SAAAP,EAAAQ,GACA,OAAAR,EAAAN,EAAAc,EAAAd,KAEAG,EAAA,IAAAb,EAAA,EAAA,EAAA,MACAnG,EAAA4G,EAEA5G,KACAI,EAAA+G,EAAAnH,GACAgH,EAAA,IAAAb,EAAA/F,EAAAyG,EAAAzG,EAAAuE,EAAAqC,GAIA,OADAC,EAAA,IAAAd,EAAA,EAAA,EAAAa,EAAAV,EAAAU,EAAAA,EAAAX,MACA,SAAA5E,GACA,IAAAuF,EAAAC,EAEA,GAAAxF,EAAAuF,EAAAV,EAAA,CACA,KAAAU,EAAAX,MAAA5E,GAAAuF,EAAAV,GACAU,EAAAA,EAAAX,KAGAW,EAAAA,EAAAT,UAEA,KAAAS,EAAAT,MAAA9E,GAAAuF,EAAAV,GACAU,EAAAA,EAAAT,KAKA,OADAU,EAAAD,EACAA,EAAAtF,GAAAD,EAAAuF,EAAAV,GAAAU,EAAAP,IAAAO,EAAAR,IAIA3B,EAAAK,EAAA,IACAL,EAAAJ,KAAAI,EACAA,EAAAD,OAAAM,EACA,IAAAJ,EAAAe,EAAA,EAAA,GACAf,EAAAF,OAAAiB,EACA,IAAAd,EAAA2B,IACA3B,EAAAN,KAAAM,EACAA,EAAAH,OAAA8B,EACA,IAAA1B,EAAA,CACAH,OAAAA,EACAE,UAAAA,EACAD,cAAAA,GAGA,IAAA,IAAArD,KAAAuD,EACAA,EAAAvD,GAAAmG,SAAAzD,EACAa,EAAAvD,GAAAoG,QAAA,QAGA/D,KAAAF,EAAAG,eAAAc,GAEAvB,EAAA0B,SAAAA,EACA1B,EAAAwB,cAAAA,EACAxB,EAAAyB,UAAAA,EACAzB,EAAAuB,OAAAA,EACAvB,EAAAwE,QAAA9C,EAEA+C,OAAAC,eAAA1E,EAAA,aAAA,CAAAnE,OAAA,OCtNA,SAAAiE,EAAAC,GACA,iBAAAC,SAAA,oBAAAC,OAAAF,EAAAC,SACA,mBAAAE,QAAAA,OAAAC,IAAAD,OAAA,CAAA,WAAAH,GACAA,GAAAD,EAAAA,GAAAM,MAAAC,OAAAP,EAAAO,QAAA,IAHA,CAIAtE,MAAA,SAAAiE,GAAA,aAEA,SAAA2E,EAAAC,EAAAC,GACAD,EAAAE,UAAAL,OAAAM,OAAAF,EAAAC,WACAF,EAAAE,UAAAE,YAAAJ,EACAA,EAAAK,UAAAJ,EAGA,SAAAK,EAAA9E,GACA,QAAA,IAAAA,EACA,MAAA,IAAA+E,eAAA,6DAGA,OAAA/E;;;;;;;;;IAYA,IAaAgF,EA0CAC,EACAC,EACAC,EACAC,EAGAC,EAmBAC,EA2zBAC,EAgPAC,EAUAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAbAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EAuPAC,EAAA1D,EACA2D,EAGAC,EAt4CAC,EAAA,CACAC,UAAA,IACAC,QAAA,OACAC,eAAA,EACAC,MAAA,CACAC,WAAA,KAGAC,EAAA,CACAC,SAAA,GACAC,WAAA,EACAC,MAAA,GAGAC,EAAA,IACAC,EAAA,KACAC,EAAA,EAAA1F,KAAA2F,GACAC,EAAAF,EAAA,EACAG,EAAA,EACAC,EAAA9F,KAAA+F,KACAC,EAAAhG,KAAAiG,IACAC,EAAAlG,KAAAmG,IACAC,EAAA,SAAAxM,GACA,MAAA,iBAAAA,GAEAyM,EAAA,SAAAzM,GACA,MAAA,mBAAAA,GAEA0M,EAAA,SAAA1M,GACA,MAAA,iBAAAA,GAEA2M,EAAA,SAAA3M,GACA,YAAA,IAAAA,GAEA4M,EAAA,SAAA5M,GACA,MAAA,iBAAAA,GAEA6M,EAAA,SAAA7M,GACA,OAAA,IAAAA,GAEA8M,EAAA,WACA,MAAA,oBAAAtI,QAEAuI,EAAA,SAAA/M,GACA,OAAAyM,EAAAzM,IAAAwM,EAAAxM,IAEAgN,EAAA,mBAAAC,aAAAA,YAAAC,QAAA,aACAC,EAAAC,MAAAhM,QACAiM,EAAA,oBACAC,EAAA,mCACAC,EAAA,8BACAC,GAAA,mCACAC,GAAA,gBACAC,GAAA,kBACAC,GAAA,2BAKAC,GAAA,GACAC,GAAA,GAEAC,GAAA,SAAAC,GACA,OAAAF,GAAAG,GAAAD,EAAAH,MAAAnJ,IAEAwJ,GAAA,SAAAC,EAAAlO,GACA,OAAAmO,QAAAC,KAAA,mBAAAF,EAAA,SAAAlO,EAAA,0CAEAqO,GAAA,SAAAC,EAAAC,GACA,OAAAA,GAAAJ,QAAAC,KAAAE,IAEAE,GAAA,SAAApO,EAAAa,GACA,OAAAb,IAAAwN,GAAAxN,GAAAa,IAAA4M,KAAAA,GAAAzN,GAAAa,IAAA2M,IAEAa,GAAA,WACA,OAAA,GAEAC,GAAA,GACAC,GAAA,GACAC,GAAA,GAEAC,GAAA,GACAC,GAAA,GACAC,GAAA,GACAC,GAAA,GACAC,GAAA,GACAC,GAAA,SAAAC,GACA,IACAC,EACAvO,EAFAwO,EAAAF,EAAA,GAKA,GAFAvC,EAAAyC,IAAA5C,EAAA4C,KAAAF,EAAA,CAAAA,MAEAC,GAAAC,EAAAC,OAAA,IAAAC,SAAA,CAGA,IAFA1O,EAAAmO,GAAAzO,OAEAM,MAAAmO,GAAAnO,GAAA2O,WAAAH,KAEAD,EAAAJ,GAAAnO,GAKA,IAFAA,EAAAsO,EAAA5O,OAEAM,KACAsO,EAAAtO,KAAAsO,EAAAtO,GAAAyO,QAAAH,EAAAtO,GAAAyO,MAAA,IAAAG,GAAAN,EAAAtO,GAAAuO,MAAAD,EAAAO,OAAA7O,EAAA,GAGA,OAAAsO,GAEAQ,GAAA,SAAAN,GACA,OAAAA,EAAAC,OAAAJ,GAAAU,GAAAP,IAAA,GAAAC,OAEAO,GAAA,SAAAR,EAAAnB,EAAA3L,GACA,OAAAA,EAAA8M,EAAAnB,KAAAzB,EAAAlK,GAAA8M,EAAAnB,KAAAvB,EAAApK,IAAA8M,EAAAS,cAAAT,EAAAS,aAAA5B,IAAA3L,GAEAwN,GAAA,SAAAC,EAAAhO,GACA,OAAAgO,EAAAA,EAAAC,MAAA,MAAAC,QAAAlO,IAAAgO,GAEAG,GAAA,SAAAnQ,GACA,OAAAoG,KAAAgK,MAAA,IAAApQ,GAAA,KAAA,GAEAqQ,GAAA,SAAArQ,GACA,OAAAoG,KAAAgK,MAAA,IAAApQ,GAAA,KAAA,GAEAsQ,GAAA,SAAAC,EAAAC,GAIA,IAHA,IAAAC,EAAAD,EAAAjQ,OACAM,EAAA,EAEA0P,EAAAxL,QAAAyL,EAAA3P,IAAA,KAAAA,EAAA4P,IAEA,OAAA5P,EAAA4P,GAEAC,GAAA,WACA,IAEA7P,EACA8P,EAHAF,EAAA9B,GAAApO,OACAyH,EAAA2G,GAAAiC,MAAA,GAOA,IAHAhC,GAAA,GACAD,GAAApO,OAAA,EAEAM,EAAA,EAAAA,EAAA4P,EAAA5P,KACA8P,EAAA3I,EAAAnH,KACA8P,EAAAE,QAAAF,EAAAG,OAAAH,EAAAE,MAAA,GAAAF,EAAAE,MAAA,IAAA,GAAAA,MAAA,IAGAE,GAAA,SAAAC,EAAA/J,EAAAgK,EAAAC,GACAvC,GAAApO,QAAAmQ,KACAM,EAAAF,OAAA7J,EAAAgK,EAAAC,GACAvC,GAAApO,QAAAmQ,MAEAS,GAAA,SAAAnR,GACA,IAAA+K,EAAAqG,WAAApR,GACA,OAAA+K,GAAA,IAAAA,KAAA/K,EAAA,IAAAqR,MAAA3D,IAAAnN,OAAA,EAAAwK,EAAAyB,EAAAxM,GAAAA,EAAAe,OAAAf,GAEAsR,GAAA,SAAAhP,GACA,OAAAA,GAEAiP,GAAA,SAAAtQ,EAAAuQ,GACA,IAAA,IAAAlP,KAAAkP,EACAlP,KAAArB,IAAAA,EAAAqB,GAAAkP,EAAAlP,IAGA,OAAArB,GAEAwQ,GAAA,SAAAxQ,EAAAuQ,GACA,IAAA,IAAAlP,KAAAkP,EACAlP,KAAArB,GAAA,aAAAqB,GAAA,SAAAA,IAAArB,EAAAqB,GAAAkP,EAAAlP,KAGA0L,GAAA,SAAA0D,EAAAC,GACA,IAAA,IAAArP,KAAAqP,EACAD,EAAApP,GAAAqP,EAAArP,GAGA,OAAAoP,GAEAE,GAAA,SAAAA,EAAAF,EAAAC,GACA,IAAA,IAAArP,KAAAqP,EACA,cAAArP,GAAA,gBAAAA,GAAA,cAAAA,IAAAoP,EAAApP,GAAAsK,EAAA+E,EAAArP,IAAAsP,EAAAF,EAAApP,KAAAoP,EAAApP,GAAA,IAAAqP,EAAArP,IAAAqP,EAAArP,IAGA,OAAAoP,GAEAG,GAAA,SAAA5Q,EAAA6Q,GACA,IACAxP,EADAyP,EAAA,GAGA,IAAAzP,KAAArB,EACAqB,KAAAwP,IAAAC,EAAAzP,GAAArB,EAAAqB,IAGA,OAAAyP,GAEAC,GAAA,SAAAxK,GACA,IAAAyK,EAAAzK,EAAAyK,QAAAzI,EACAxH,EAAAwF,EAAA0K,UAAAT,GAAAF,GAEA,GAAA1E,EAAArF,EAAA2K,SACA,KAAAF,GACAjQ,EAAAwF,EAAAyK,EAAAzK,KAAAgK,UACAS,EAAAA,EAAAA,QAAAA,EAAAG,IAIA,OAAA5K,GAgDA6K,GAAA,SAAAJ,EAAAK,EAAAC,EAAAC,QACA,IAAAD,IACAA,EAAA,eAGA,IAAAC,IACAA,EAAA,SAGA,IAAApL,EAAAkL,EAAAG,MACAvL,EAAAoL,EAAAI,MAEAtL,EACAA,EAAAsL,MAAAxL,EACA+K,EAAAM,KAAAD,IACAL,EAAAM,GAAArL,GAGAA,EACAA,EAAAuL,MAAArL,EACA6K,EAAAO,KAAAF,IACAL,EAAAO,GAAApL,GAGAkL,EAAAI,MAAAJ,EAAAG,MAAAH,EAAAL,OAAA,MAEAU,GAAA,SAAAL,EAAAM,GACAN,EAAAL,UAAAW,GAAAN,EAAAL,OAAAY,qBAAAP,EAAAL,OAAA5P,OAAAiQ,GACAA,EAAAQ,KAAA,GAEAC,GAAA,SAAA/B,EAAAsB,GACA,GAAAtB,KAAAsB,GAAAA,EAAAU,KAAAhC,EAAAiC,MAAAX,EAAAY,OAAA,GAGA,IAFA,IAAAlL,EAAAgJ,EAEAhJ,GACAA,EAAAmL,OAAA,EACAnL,EAAAA,EAAAiK,OAIA,OAAAjB,GAEAoC,GAAA,SAAApC,GAGA,IAFA,IAAAiB,EAAAjB,EAAAiB,OAEAA,GAAAA,EAAAA,QACAA,EAAAkB,OAAA,EACAlB,EAAAoB,gBACApB,EAAAA,EAAAA,OAGA,OAAAjB,GAEAsC,GAAA,SAAAA,EAAAtC,GACA,OAAAA,GAAAA,EAAAuC,KAAAD,EAAAtC,EAAAiB,SAEAuB,GAAA,SAAAxC,GACA,OAAAA,EAAAyC,QAAAC,GAAA1C,EAAA2C,OAAA3C,EAAAA,EAAAvF,WAAAuF,EAAA4C,SAAA5C,EAAA,GAEA0C,GAAA,SAAAG,EAAAC,GACA,IAAAC,EAAA3N,KAAA4N,MAAAH,GAAAC,GACA,OAAAD,GAAAE,IAAAF,EAAAE,EAAA,EAAAA,GAEAE,GAAA,SAAAC,EAAA5B,GACA,OAAA4B,EAAA5B,EAAAY,QAAAZ,EAAAiB,KAAAjB,EAAAiB,KAAA,EAAA,EAAAjB,EAAAa,OAAAb,EAAAe,gBAAAf,EAAA6B,QAEAC,GAAA,SAAApD,GACA,OAAAA,EAAAgC,KAAA3C,GAAAW,EAAAkC,QAAAlC,EAAAmD,MAAA/N,KAAAiO,IAAArD,EAAAuC,KAAAvC,EAAAsD,MAAAzI,IAAA,KAEA0I,GAAA,SAAAvD,EAAAwD,GACA,IAAAvC,EAAAjB,EAAAoB,IAUA,OARAH,GAAAA,EAAAwC,mBAAAzD,EAAAuC,MACAvC,EAAAkC,OAAA7C,GAAA4B,EAAAyC,OAAA1D,EAAAuC,IAAA,EAAAiB,EAAAxD,EAAAuC,MAAAvC,EAAAmC,OAAAnC,EAAAqC,gBAAArC,EAAAmD,OAAAK,IAAAxD,EAAAuC,MAEAa,GAAApD,GAEAiB,EAAAkB,QAAAJ,GAAAd,EAAAjB,IAGAA,GAEA2D,GAAA,SAAAC,EAAAtC,GACA,IAAAnL,EAUA,IARAmL,EAAAoC,OAAApC,EAAAuC,WAAAvC,EAAAW,QACA9L,EAAA8M,GAAAW,EAAAE,UAAAxC,KAEAA,EAAAW,MAAA8B,GAAA,EAAAzC,EAAAe,gBAAAlM,GAAAmL,EAAAqB,OAAA9H,IACAyG,EAAAxB,OAAA3J,GAAA,IAIA4L,GAAA6B,EAAAtC,GAAAF,KAAAwC,EAAAC,UAAAD,EAAAF,OAAAE,EAAA3B,MAAA2B,EAAArB,IAAA,CACA,GAAAqB,EAAA3B,KAAA2B,EAAAnJ,WAGA,IAFAtE,EAAAyN,EAEAzN,EAAAiL,KACAjL,EAAA2N,WAAA,GAAA3N,EAAAqN,UAAArN,EAAAwM,QACAxM,EAAAA,EAAAiL,IAIAwC,EAAAI,QAAA,OAGAC,GAAA,SAAAL,EAAAtC,EAAA4C,EAAAC,GASA,OARA7C,EAAAL,QAAAU,GAAAL,GACAA,EAAAY,OAAA7C,IAAA3D,EAAAwI,GAAAA,EAAAA,GAAAN,IAAApL,EAAA4L,GAAAR,EAAAM,EAAA5C,GAAAsC,EAAAF,OAAApC,EAAA+C,QACA/C,EAAAU,KAAA3C,GAAAiC,EAAAY,QAAAZ,EAAAe,gBAAAjN,KAAAiO,IAAA/B,EAAAgD,cAAA,IAnJA,SAAArD,EAAAK,EAAAC,EAAAC,EAAA+C,QACA,IAAAhD,IACAA,EAAA,eAGA,IAAAC,IACAA,EAAA,SAGA,IACArL,EADAC,EAAA6K,EAAAO,GAGA,GAAA+C,EAGA,IAFApO,EAAAmL,EAAAiD,GAEAnO,GAAAA,EAAAmO,GAAApO,GACAC,EAAAA,EAAAqL,MAIArL,GACAkL,EAAAI,MAAAtL,EAAAsL,MACAtL,EAAAsL,MAAAJ,IAEAA,EAAAI,MAAAT,EAAAM,GACAN,EAAAM,GAAAD,GAGAA,EAAAI,MACAJ,EAAAI,MAAAD,MAAAH,EAEAL,EAAAO,GAAAF,EAGAA,EAAAG,MAAArL,EACAkL,EAAAL,OAAAK,EAAAF,IAAAH,EAkHAuD,CAAAZ,EAAAtC,EAAA,SAAA,QAAAsC,EAAAa,MAAA,SAAA,GAEAC,GAAApD,KAAAsC,EAAAe,QAAArD,GACA6C,GAAAR,GAAAC,EAAAtC,GACAsC,GAEAgB,GAAA,SAAA5E,EAAAlO,GACA,OAAA8K,GAAAiI,eAAA5H,GAAA,gBAAAnL,KAAA8K,GAAAiI,cAAA3M,OAAApG,EAAAkO,IAEA8E,GAAA,SAAAnF,EAAA6D,EAAAtD,EAAAD,GAGA,OAFA8E,GAAApF,EAAA6D,GAEA7D,EAAAkE,UAIA3D,GAAAP,EAAAqF,MAAArF,EAAAsC,OAAA,IAAAtC,EAAAnJ,KAAAyO,OAAAtF,EAAAsC,MAAAtC,EAAAnJ,KAAAyO,OAAApM,IAAAqM,GAAAC,OACAxH,GAAAjO,KAAAiQ,GAEAA,EAAAE,MAAA,CAAA2D,EAAAvD,GACA,QAJA,EAHA,GAUAmF,GAAA,SAAAA,EAAAC,GACA,IAAApE,EAAAoE,EAAApE,OACA,OAAAA,GAAAA,EAAAsB,KAAAtB,EAAA4C,WAAA5C,EAAAqE,QAAArE,EAAA6C,UAAA,GAAAsB,EAAAnE,KAEAyD,GAAA,SAAAa,GACA,IAAArU,EAAAqU,EAAArU,KACA,MAAA,gBAAAA,GAAA,YAAAA,GAoFAsU,GAAA,SAAAxF,EAAAvF,EAAAgL,EAAAC,GACA,IAAAC,EAAA3F,EAAAyC,QACAmD,EAAAvG,GAAA5E,IAAA,EACAoL,EAAA7F,EAAA2C,OAAA3C,EAAAmD,MAMA,OALA0C,IAAAH,IAAA1F,EAAA0D,OAAAkC,EAAA5F,EAAAiC,MACAjC,EAAAiC,KAAA2D,EACA5F,EAAAmD,MAAAwC,EAAAA,EAAA,EAAA,KAAAtG,GAAAuG,GAAAD,EAAA,GAAA3F,EAAA4C,QAAA+C,GAAAC,EACAC,IAAAH,EAAAnC,GAAAvD,EAAAA,EAAA2C,OAAA3C,EAAAmD,MAAA0C,GAAA7F,EAAAiB,QAAAmC,GAAApD,GACAyF,GAAA1D,GAAA/B,EAAAiB,OAAAjB,GACAA,GAEA8F,GAAA,SAAA9F,GACA,OAAAA,aAAA+F,GAAAhE,GAAA/B,GAAAwF,GAAAxF,EAAAA,EAAAiC,OAEA+D,GAAA,CACA9D,OAAA,EACA+D,QAAAxI,GACA4E,cAAA5E,IAEA2G,GAAA,SAAAA,EAAApE,EAAAkE,EAAAgC,GACA,IAGArW,EACAsW,EACAC,EALAC,EAAArG,EAAAqG,OACAvP,EAAAkJ,EAAA2E,SAAAqB,GACAM,EAAAtG,EAAAvF,YAAAG,EAAA9D,EAAAmP,SAAA,GAAAjG,EAAAiC,KAKA,OAAAzG,EAAA0I,KAAAqC,MAAArC,IAAAA,KAAAmC,IACAF,EAAAjC,EAAAsC,OAAA,GACAJ,EAAA,MAAAlC,EAAAuC,QAAA,GACA5W,EAAAqU,EAAAnQ,QAAA,KAEA,MAAAoS,GAAA,MAAAA,GACAtW,GAAA,IAAAqU,EAAAA,EAAAwC,QAAA,IAAA,MACA,MAAAP,EAAArP,EAAAoL,OAAApL,EAAAmP,QAAAnP,EAAA2L,SAAA,KAAArC,WAAA8D,EAAAuC,OAAA,KAAA,IAAAL,GAAAvW,EAAA,EAAAiH,EAAAoP,GAAA7D,gBAAA,IAAA,IAGAxS,EAAA,GACAqU,KAAAmC,IAAAA,EAAAnC,GAAAoC,GACAD,EAAAnC,KAGAiC,EAAA/F,WAAA8D,EAAAsC,OAAA3W,EAAA,GAAAqU,EAAAuC,OAAA5W,EAAA,IAEAuW,GAAAF,IACAC,EAAAA,EAAA,KAAAhK,EAAA+J,GAAAA,EAAA,GAAAA,GAAA7D,iBAGAxS,EAAA,EAAAuU,EAAApE,EAAAkE,EAAAuC,OAAA,EAAA5W,EAAA,GAAAqW,GAAAC,EAAAG,EAAAH,IAGA,MAAAjC,EAAAoC,GAAApC,GAEAyC,GAAA,SAAA1X,EAAA2X,EAAAhD,GACA,IAGAiD,EACA5F,EAJA6F,EAAApL,EAAAkL,EAAA,IACAG,GAAAD,EAAA,EAAA,IAAA7X,EAAA,EAAA,EAAA,GACAuH,EAAAoQ,EAAAG,GAOA,GAHAD,IAAAtQ,EAAAiE,SAAAmM,EAAA,IACApQ,EAAAyK,OAAA2C,EAEA3U,EAAA,CAIA,IAHA4X,EAAArQ,EACAyK,EAAA2C,EAEA3C,KAAA,oBAAA4F,IACAA,EAAA5F,EAAAzK,KAAAgK,UAAA,GACAS,EAAApF,EAAAoF,EAAAzK,KAAA2K,UAAAF,EAAAA,OAGAzK,EAAAwQ,gBAAAnL,EAAAgL,EAAAG,iBACA/X,EAAA,EAAAuH,EAAAyQ,aAAA,EAAAzQ,EAAA0Q,QAAAN,EAAAG,EAAA,GAGA,OAAA,IAAAI,GAAAP,EAAA,GAAApQ,EAAAoQ,EAAAG,EAAA,KAEAK,GAAA,SAAApY,EAAAgC,GACA,OAAAhC,GAAA,IAAAA,EAAAgC,EAAAhC,GAAAgC,GAEA+S,GAAA,SAAA1O,EAAAgS,EAAArY,GACA,OAAAA,EAAAqG,EAAAA,EAAArG,EAAAqY,EAAAA,EAAArY,GAEAsY,GAAA,SAAAtY,GACA,GAAA,iBAAAA,EACA,MAAA,GAGA,IAAAuC,EAAAoL,GAAA4K,KAAAvY,GAEA,OAAAuC,EAAAvC,EAAAyX,OAAAlV,EAAAiW,MAAAjW,EAAA,GAAAhC,QAAA,IAOAkY,GAAA,GAAA7H,MACA8H,GAAA,SAAA1Y,EAAA2Y,GACA,OAAA3Y,GAAA4M,EAAA5M,IAAA,WAAAA,KAAA2Y,IAAA3Y,EAAAO,QAAAP,EAAAO,OAAA,KAAAP,GAAA4M,EAAA5M,EAAA,OAAAA,EAAA4Y,UAAA5Y,IAAAyJ,GAEAoP,GAAA,SAAAC,EAAAC,EAAAC,GAKA,YAJA,IAAAA,IACAA,EAAA,IAGAF,EAAA5I,SAAA,SAAAlQ,GACA,IAAAiZ,EAEA,OAAAzM,EAAAxM,KAAA+Y,GAAAL,GAAA1Y,EAAA,IAAAiZ,EAAAD,GAAAtY,KAAAwY,MAAAD,EAAArJ,GAAA5P,IAAAgZ,EAAAtY,KAAAV,OACAgZ,GAEApJ,GAAA,SAAA5P,EAAA+N,EAAAgL,GACA,OAAAvM,EAAAxM,IAAA+Y,IAAArP,GAAAyP,KAAAhM,EAAAnN,GAAA6Y,GAAA7Y,EAAA+Y,GAAAL,GAAA1Y,GAAAyY,GAAAW,KAAApZ,EAAA,GAAAA,EAAA,CAAAA,GAAA,GAAAyY,GAAAW,MAAArL,GAAApE,GAAA0P,iBAAArZ,GAAA,IASAsZ,GAAA,SAAAtR,GACA,OAAAA,EAAAO,MAAA,WACA,MAAA,GAAAnC,KAAAkC,aAGAiR,GAAA,SAAAhX,GACA,GAAAkK,EAAAlK,GACA,OAAAA,EAGA,IAAAiF,EAAAoF,EAAArK,GAAAA,EAAA,CACAxC,KAAAwC,GAEA+C,EAAAkU,GAAAhS,EAAAlC,MACAmU,EAAAjS,EAAAiS,MAAA,EACA/H,EAAAN,WAAA5J,EAAAkK,OAAA,EACAlO,EAAA,GACAkW,EAAAD,EAAA,GAAAA,EAAA,EACAE,EAAApC,MAAAkC,IAAAC,EACAE,EAAApS,EAAAoS,KACAC,EAAAJ,EACAK,EAAAL,EAaA,OAXAjN,EAAAiN,GACAI,EAAAC,EAAA,CACAC,OAAA,GACAC,MAAA,GACApT,IAAA,GACA6S,IAAA,GACAC,GAAAC,IACAE,EAAAJ,EAAA,GACAK,EAAAL,EAAA,IAGA,SAAA5Y,EAAAwO,EAAArH,GACA,IAEAiS,EACAC,EACAxS,EACAlC,EACA9F,EACAya,EACA9B,EACAhS,EACA+T,EAVA3J,GAAAzI,GAAAR,GAAAjH,OACA8Z,EAAA7W,EAAAiN,GAWA,IAAA4J,EAAA,CAGA,KAFAD,EAAA,SAAA5S,EAAA8S,KAAA,GAAA9S,EAAA8S,MAAA,CAAA,EAAA1O,IAAA,IAEA,CAGA,IAFAyM,GAAAzM,EAEAyM,GAAAA,EAAArQ,EAAAoS,KAAAG,wBAAAC,OAAAJ,EAAA3J,IAEA2J,IASA,IANAC,EAAA7W,EAAAiN,GAAA,GACAwJ,EAAAN,EAAAvT,KAAAC,IAAA+T,EAAA3J,GAAAoJ,EAAA,GAAAJ,EAAAW,EACAF,EAAAP,EAAAlJ,EAAAqJ,EAAAM,EAAA,GAAAX,EAAAW,EAAA,EACA/B,EAAA,EACAhS,EAAAuF,EAEAuO,EAAA,EAAAA,EAAA1J,EAAA0J,IACAzS,EAAAyS,EAAAC,EAAAH,EACAzU,EAAA0U,GAAAC,EAAAC,EAAA,GACAC,EAAAF,GAAAza,EAAAka,EAAAxT,KAAAiO,IAAA,MAAAuF,EAAApU,EAAAkC,GAAAwE,EAAAxE,EAAAA,EAAAlC,EAAAA,GACA9F,EAAA2Y,IAAAA,EAAA3Y,GACAA,EAAA2G,IAAAA,EAAA3G,GAGA,WAAA+Z,GAAAH,GAAAe,GACAA,EAAAhC,IAAAA,EAAAhS,EACAgU,EAAAhU,IAAAA,EACAgU,EAAA9X,EAAAkO,GAAAW,WAAA5J,EAAAiT,SAAArJ,WAAA5J,EAAAzH,OAAAqa,EAAA3J,EAAAA,EAAA,EAAAmJ,EAAA,MAAAA,EAAAnJ,EAAA2J,EAAAA,EAAAhU,KAAAiS,IAAA+B,EAAA3J,EAAA2J,KAAA,IAAA,UAAAX,GAAA,EAAA,GACAY,EAAA7R,EAAAiI,EAAA,EAAAiB,EAAAjB,EAAAiB,EACA2I,EAAAK,EAAApC,GAAA9Q,EAAAiT,QAAAjT,EAAAzH,OAAA,EACAuF,EAAAA,GAAAmL,EAAA,EAAAkK,GAAArV,GAAAA,EAIA,OADAmL,GAAA4J,EAAAxZ,GAAAwZ,EAAAhU,KAAAgU,EAAAhC,KAAA,EACAhI,GAAAgK,EAAA7R,GAAAlD,EAAAA,EAAAmL,GAAAA,GAAA4J,EAAA9X,GAAA8X,EAAAK,IAGAE,GAAA,SAAArY,GACA,IAAAD,EAAA8D,KAAAD,IAAA,KAAA5D,EAAA,IAAA0N,MAAA,KAAA,IAAA,IAAA1P,QACA,OAAA,SAAAsa,GACA,IAAA9P,EAAA3E,KAAAgK,MAAAgB,WAAAyJ,GAAAtY,GAAAA,EAAAD,EACA,OAAAyI,EAAAA,EAAA,GAAAzI,GAAAoK,EAAAmO,GAAA,EAAAvC,GAAAuC,MAGAC,GAAA,SAAAC,EAAA/a,GACA,IACAgb,EACAC,EAFA7Z,EAAA+L,EAAA4N,GAkBA,OAdA3Z,GAAAwL,EAAAmO,KACAC,EAAA5Z,EAAA2Z,EAAAC,QAAApP,EAEAmP,EAAAta,QACAsa,EAAAnL,GAAAmL,EAAAta,SAEAwa,GAAAvO,EAAAqO,EAAA,OACAC,GAAAA,IAGAD,EAAAH,GAAAG,EAAAG,YAIA9C,GAAApY,EAAAoB,EAAAqL,EAAAsO,GAAA,SAAAF,GAEA,OADAI,EAAAF,EAAAF,GACAzU,KAAAiO,IAAA4G,EAAAJ,IAAAG,EAAAC,EAAAJ,GACA,SAAAA,GASA,IARA,IAKAM,EACAC,EANA1T,EAAA0J,WAAA6J,EAAAJ,EAAAnT,EAAAmT,GACArV,EAAA4L,WAAA6J,EAAAJ,EAAArV,EAAA,GACAa,EAAAuF,EACAyP,EAAA,EACAxa,EAAAka,EAAAxa,OAIAM,MAIAsa,EAHAF,GACAE,EAAAJ,EAAAla,GAAA6G,EAAAA,GAEAyT,GADAC,EAAAL,EAAAla,GAAA2E,EAAAA,GACA4V,EAEAhV,KAAAiO,IAAA0G,EAAAla,GAAA6G,IAGArB,IACAA,EAAA8U,EACAE,EAAAxa,GAKA,OADAwa,GAAAL,GAAA3U,GAAA2U,EAAAD,EAAAM,GAAAR,EACAI,GAAAI,IAAAR,GAAAnO,EAAAmO,GAAAQ,EAAAA,EAAA/C,GAAAuC,IA5BAD,GAAAG,KA+BAzS,GAAA,SAAAjC,EAAAgS,EAAAiD,EAAAC,GACA,OAAAnD,GAAAjL,EAAA9G,IAAAgS,GAAA,IAAAiD,KAAAA,EAAA,IAAAC,GAAA,WACA,OAAApO,EAAA9G,GAAAA,KAAAD,KAAAkC,SAAAjC,EAAA9F,UAAA+a,EAAAA,GAAA,QAAAC,EAAAD,EAAA,EAAAlV,KAAAD,IAAA,IAAAmV,EAAA,IAAA/a,OAAA,GAAA,IAAA6F,KAAA4N,MAAA5N,KAAAgK,OAAA/J,EAAAiV,EAAA,EAAAlV,KAAAkC,UAAA+P,EAAAhS,EAAA,IAAAiV,IAAAA,GAAAA,EAAAC,GAAAA,MAsBAC,GAAA,SAAAxT,EAAAyT,EAAAzb,GACA,OAAAoY,GAAApY,GAAA,SAAAwY,GACA,OAAAxQ,IAAAyT,EAAAjD,QAiBAkD,GAAA,SAAA1b,GAQA,IAPA,IAEAa,EACA8a,EACA/U,EACAxF,EALAgG,EAAA,EACAwU,EAAA,KAMA/a,EAAAb,EAAA+E,QAAA,UAAAqC,KACAR,EAAA5G,EAAA+E,QAAA,IAAAlE,GACAO,EAAA,MAAApB,EAAAwX,OAAA3W,EAAA,GACA8a,EAAA3b,EAAAyX,OAAA5W,EAAA,EAAA+F,EAAA/F,EAAA,GAAAwQ,MAAAjQ,EAAAsM,GAAAL,GACAuO,GAAA5b,EAAAyX,OAAArQ,EAAAvG,EAAAuG,GAAAkB,GAAAlH,EAAAua,GAAAA,EAAA,GAAAva,EAAA,GAAAua,EAAA,IAAAA,EAAA,IAAA,MACAvU,EAAAR,EAAA,EAGA,OAAAgV,EAAA5b,EAAAyX,OAAArQ,EAAApH,EAAAO,OAAA6G,IAEAyU,GAAA,SAAAC,EAAAC,EAAAC,EAAAC,EAAAjc,GACA,IAAAkc,EAAAH,EAAAD,EACAK,EAAAF,EAAAD,EACA,OAAA5D,GAAApY,GAAA,SAAAA,GACA,OAAAgc,IAAAhc,EAAA8b,GAAAI,EAAAC,GAAA,OA6DAC,GAAA,SAAAxH,EAAAyH,EAAAC,GACA,IAEAha,EACAia,EACAC,EAJAnF,EAAAzC,EAAAyC,OACAhR,EAAAuF,EAKA,IAAAtJ,KAAA+U,GACAkF,EAAAlF,EAAA/U,GAAA+Z,GAEA,KAAAC,GAAAC,GAAAlW,GAAAkW,EAAAnW,KAAAiO,IAAAkI,MACAC,EAAAla,EACA+D,EAAAkW,GAIA,OAAAC,GAEAC,GAAA,SAAAzL,EAAA/Q,EAAAyc,GACA,IAEA9E,EACA7J,EAHAxL,EAAAyO,EAAAxJ,KACAmV,EAAApa,EAAAtC,GAIA,GAAA0c,EAOA,OAHA/E,EAAArV,EAAAtC,EAAA,UACA8N,EAAAxL,EAAAqa,eAAA5L,EACA0L,GAAA/N,GAAApO,QAAAmQ,KACAkH,EAAA+E,EAAAzD,MAAAnL,EAAA6J,GAAA+E,EAAAvD,KAAArL,IAEA8O,GAAA,SAAA7L,GAKA,OAJA2B,GAAA3B,GAEAA,EAAA8L,eAAA9L,EAAA8L,cAAAC,MAAA,GACA/L,EAAAgM,WAAA,GAAAP,GAAAzL,EAAA,eACAA,GAGAiM,GAAA,SAAAxX,GAGA,IAAArF,GAFAqF,GAAAA,EAAArF,MAAAqF,EAAA,SAAAA,GAEArF,KACA8c,EAAAzQ,EAAAhH,GACA0X,EAAA/c,IAAA8c,GAAAzX,EAAA2X,KAAA,WACAld,KAAAmd,OAAA,IACA5X,EACA6X,EAAA,CACAF,KAAA3O,GACAqC,OAAAyM,GACAC,IAAAC,GACAV,KAAAW,GACAC,SAAAC,GACAC,QAAA,GAEAC,EAAA,CACAtO,WAAA,EACAuO,IAAA,EACAC,UAAAC,GACAC,QAAA,GACAzV,SAAA,GAKA,GAFA0Q,KAEA1T,IAAA0X,EAAA,CACA,GAAAtO,GAAAzO,GACA,OAGAmR,GAAA4L,EAAA5L,GAAAM,GAAApM,EAAA6X,GAAAQ,IAEA9P,GAAAmP,EAAAlU,UAAA+E,GAAAsP,EAAAzL,GAAApM,EAAAqY,KAEAjP,GAAAsO,EAAA1a,KAAArC,GAAA+c,EAEA1X,EAAA+J,aACAR,GAAAtO,KAAAyc,GAEAzO,GAAAtO,GAAA,GAGAA,GAAA,QAAAA,EAAA,MAAAA,EAAAoX,OAAA,GAAA2G,cAAA/d,EAAAqX,OAAA,IAAA,SAGAjJ,GAAApO,EAAA+c,GAEA1X,EAAAgD,UAAAhD,EAAAgD,SAAAhE,GAAA0Y,EAAAiB,KAEAC,GAAA,IACAC,GAAA,CACAC,KAAA,CAAA,EAAAF,GAAAA,IACAG,KAAA,CAAA,EAAAH,GAAA,GACAI,OAAA,CAAA,IAAA,IAAA,KACAC,MAAA,CAAA,EAAA,EAAA,GACAC,OAAA,CAAA,IAAA,EAAA,GACAC,KAAA,CAAA,EAAA,IAAA,KACAC,KAAA,CAAA,EAAA,EAAAR,IACAS,KAAA,CAAA,EAAA,EAAA,KACAC,MAAA,CAAAV,GAAAA,GAAAA,IACAW,MAAA,CAAA,IAAA,IAAA,GACAC,OAAA,CAAAZ,GAAAA,GAAA,GACAa,OAAA,CAAAb,GAAA,IAAA,GACAc,KAAA,CAAA,IAAA,IAAA,KACAC,OAAA,CAAA,IAAA,EAAA,KACAC,MAAA,CAAA,EAAA,IAAA,GACAC,IAAA,CAAAjB,GAAA,EAAA,GACAkB,KAAA,CAAAlB,GAAA,IAAA,KACAmB,KAAA,CAAA,EAAAnB,GAAAA,IACAoB,YAAA,CAAApB,GAAAA,GAAAA,GAAA,IAEAqB,GAAA,SAAAC,EAAAC,EAAAC,GAEA,OAAA,GADAF,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,GACA,EAAAC,GAAAC,EAAAD,GAAAD,EAAA,EAAAA,EAAA,GAAAE,EAAA,EAAAF,EAAA,EAAAC,GAAAC,EAAAD,IAAA,EAAA,EAAAD,GAAA,EAAAC,GAAAvB,GAAA,GAAA,GAEAyB,GAAA,SAAAvd,EAAAwd,EAAAC,GACA,IACAvZ,EACAwZ,EACAzX,EACAmX,EACA/D,EACAnL,EACA4H,EACAhS,EACA3G,EACAwgB,EAVAlY,EAAAzF,EAAAmK,EAAAnK,GAAA,CAAAA,GAAA,GAAAA,GAAA,EAAA8b,GAAA9b,EAAA8b,IAAA,EAAAC,GAAAI,MAYA,IAAA1W,EAAA,CAKA,GAJA,MAAAzF,EAAAkV,QAAA,KACAlV,EAAAA,EAAAkV,OAAA,EAAAlV,EAAAhC,OAAA,IAGA+d,GAAA/b,GACAyF,EAAAsW,GAAA/b,QACA,GAAA,MAAAA,EAAAiV,OAAA,GAAA,CAQA,GAPAjV,EAAAhC,OAAA,IACAkG,EAAAlE,EAAAiV,OAAA,GACAyI,EAAA1d,EAAAiV,OAAA,GACAhP,EAAAjG,EAAAiV,OAAA,GACAjV,EAAA,IAAAkE,EAAAA,EAAAwZ,EAAAA,EAAAzX,EAAAA,GAAA,IAAAjG,EAAAhC,OAAAgC,EAAAiV,OAAA,GAAAjV,EAAAiV,OAAA,GAAA,KAGA,IAAAjV,EAAAhC,OAEA,MAAA,EADAyH,EAAAmY,SAAA5d,EAAAkV,OAAA,EAAA,GAAA,MACA,GAAAzP,GAAA,EAAAqW,GAAArW,EAAAqW,GAAA8B,SAAA5d,EAAAkV,OAAA,GAAA,IAAA,KAIAzP,EAAA,EADAzF,EAAA4d,SAAA5d,EAAAkV,OAAA,GAAA,MACA,GAAAlV,GAAA,EAAA8b,GAAA9b,EAAA8b,SACA,GAAA,QAAA9b,EAAAkV,OAAA,EAAA,GAGA,GAFAzP,EAAAkY,EAAA3d,EAAA8O,MAAAhE,GAEA0S,GAUA,IAAAxd,EAAAwC,QAAA,KAGA,OAFAiD,EAAAzF,EAAA8O,MAAA/D,GACA0S,GAAAhY,EAAAzH,OAAA,IAAAyH,EAAA,GAAA,GACAA,OAZA2X,GAAA3X,EAAA,GAAA,IAAA,IACA4T,GAAA5T,EAAA,GAAA,IAGAvB,EAAA,GAFAgK,GAAAzI,EAAA,GAAA,MACAiY,EAAAxP,GAAA,GAAAA,GAAAmL,EAAA,GAAAnL,EAAAmL,EAAAnL,EAAAmL,GAEA5T,EAAAzH,OAAA,IAAAyH,EAAA,IAAA,GACAA,EAAA,GAAA0X,GAAAC,EAAA,EAAA,EAAAlZ,EAAAwZ,GACAjY,EAAA,GAAA0X,GAAAC,EAAAlZ,EAAAwZ,GACAjY,EAAA,GAAA0X,GAAAC,EAAA,EAAA,EAAAlZ,EAAAwZ,QAOAjY,EAAAzF,EAAA8O,MAAAhE,IAAAiR,GAAAmB,YAGAzX,EAAAA,EAAAoY,IAAAC,QA0BA,OAvBAN,IAAAG,IACAzZ,EAAAuB,EAAA,GAAAqW,GACA4B,EAAAjY,EAAA,GAAAqW,GACA7V,EAAAR,EAAA,GAAAqW,GAGA5N,IAFA4H,EAAAjS,KAAAiS,IAAA5R,EAAAwZ,EAAAzX,KACAnC,EAAAD,KAAAC,IAAAI,EAAAwZ,EAAAzX,KACA,EAEA6P,IAAAhS,EACAsZ,EAAA/D,EAAA,GAEAlc,EAAA2Y,EAAAhS,EACAuV,EAAAnL,EAAA,GAAA/Q,GAAA,EAAA2Y,EAAAhS,GAAA3G,GAAA2Y,EAAAhS,GACAsZ,EAAAtH,IAAA5R,GAAAwZ,EAAAzX,GAAA9I,GAAAugB,EAAAzX,EAAA,EAAA,GAAA6P,IAAA4H,GAAAzX,EAAA/B,GAAA/G,EAAA,GAAA+G,EAAAwZ,GAAAvgB,EAAA,EACAigB,GAAA,IAGA3X,EAAA,MAAA2X,EAAA,IACA3X,EAAA,MAAA,IAAA4T,EAAA,IACA5T,EAAA,MAAA,IAAAyI,EAAA,KAGAuP,GAAAhY,EAAAzH,OAAA,IAAAyH,EAAA,GAAA,GACAA,GAEAsY,GAAA,SAAA/d,GACA,IAAA9B,EAAA,GACA4G,EAAA,GACAxG,GAAA,EAOA,OANA0B,EAAA0N,MAAAsQ,IAAArQ,SAAA,SAAA3N,GACA,IAAAyF,EAAAzF,EAAA8O,MAAA9D,IAAA,GACA9M,EAAAC,KAAAwY,MAAAzY,EAAAuH,GACAX,EAAA3G,KAAAG,GAAAmH,EAAAzH,OAAA,MAEAE,EAAA4G,EAAAA,EACA5G,GAEA+f,GAAA,SAAA5E,EAAAmE,EAAAU,GACA,IAIApZ,EACAqZ,EACAhhB,EACA+Q,EAPAkQ,EAAA,GACAC,GAAAhF,EAAA+E,GAAAtP,MAAAkP,IACAtgB,EAAA8f,EAAA,QAAA,QACAlf,EAAA,EAMA,IAAA+f,EACA,OAAAhF,EAOA,GAJAgF,EAAAA,EAAAR,KAAA,SAAAS,GACA,OAAAA,EAAAf,GAAAe,EAAAd,EAAA,KAAA9f,GAAA8f,EAAAc,EAAA,GAAA,IAAAA,EAAA,GAAA,KAAAA,EAAA,GAAA,KAAAA,EAAA,GAAAA,EAAAjgB,KAAA,MAAA,OAGA6f,IACA/gB,EAAA4gB,GAAA1E,IACAvU,EAAAoZ,EAAApZ,GAEAzG,KAAA+f,KAAAjhB,EAAA2H,EAAAzG,KAAA+f,IAIA,IAFAlQ,GADAiQ,EAAA9E,EAAAlE,QAAA6I,GAAA,KAAAtQ,MAAA1C,IACAhN,OAAA,EAEAM,EAAA4P,EAAA5P,IACA8f,GAAAD,EAAA7f,KAAAwG,EAAAtC,QAAAlE,GAAA+f,EAAAE,SAAA7gB,EAAA,YAAAP,EAAAa,OAAAb,EAAAkhB,EAAArgB,OAAAqgB,EAAAH,GAAAK,SAKA,IAAAJ,EAIA,IAFAjQ,GADAiQ,EAAA9E,EAAA3L,MAAAsQ,KACAhgB,OAAA,EAEAM,EAAA4P,EAAA5P,IACA8f,GAAAD,EAAA7f,GAAA+f,EAAA/f,GAIA,OAAA8f,EAAAD,EAAAjQ,IAEA8P,GAAA,WACA,IACAje,EADAsZ,EAAA,yEAGA,IAAAtZ,KAAAgc,GACA1C,GAAA,IAAAtZ,EAAA,MAGA,OAAA,IAAAye,OAAAnF,EAAA,IAAA,MARA,GAUAoF,GAAA,YACAC,GAAA,SAAAjZ,GACA,IACA+X,EADAmB,EAAAlZ,EAAApH,KAAA,KAIA,GAFA2f,GAAAY,UAAA,EAEAZ,GAAAa,KAAAF,GAIA,OAHAnB,EAAAiB,GAAAI,KAAAF,GACAlZ,EAAA,GAAAwY,GAAAxY,EAAA,GAAA+X,GACA/X,EAAA,GAAAwY,GAAAxY,EAAA,GAAA+X,EAAAO,GAAAtY,EAAA,MACA,GAIAkO,IACA5L,EAAA+W,KAAAC,IACA/W,EAAA,IACAC,EAAA,GACAC,EAAAH,IACAI,EAAAD,EAEAG,EADAD,EAAA,IAAA,IASAG,EAAA,SAAAA,EAAAvI,GACA,IAEAgf,EACAC,EACAva,EACAkP,EALAsL,EAAAnX,IAAAI,EACAgX,GAAA,IAAAnf,EAqBA,GAfAkf,EAAAlX,IAAAE,GAAAgX,EAAAjX,KAGA+W,GADAta,GADAyD,GAAA+W,GACAhX,GACAG,GAEA,GAAA8W,KACAvL,IAAAhM,EAAAgM,MACA/L,EAAAnD,EAAA,IAAAkD,EAAAlD,KACAkD,EAAAlD,KAAAA,GAAA,IACA2D,GAAA2W,GAAAA,GAAA5W,EAAA,EAAAA,EAAA4W,GACAC,EAAA,GAGAE,IAAA1X,EAAAC,EAAAa,IAEA0W,EACA,IAAAnX,EAAA,EAAAA,EAAAQ,EAAAtK,OAAA8J,IACAQ,EAAAR,GAAApD,EAAAmD,EAAA+L,EAAA5T,IAKA4H,EAAA,CACAlD,KAAA,EACAkP,MAAA,EACAwL,KAAA,WACA7W,GAAA,IAEA8W,WAAA,SAAAC,GACA,OAAAzX,GAAA,KAAAyX,GAAA,MAEAC,KAAA,WACAlY,KACAF,GAAAoD,MACArD,EAAAC,EAAAlF,OACAmF,EAAAF,EAAAsY,UAAA,GACAnU,GAAAnJ,KAAAA,IACAgF,EAAAuY,eAAAvY,EAAAuY,aAAA,KAAAthB,KAAA+D,GAAAiE,SAEAoF,GAAAD,IAAApE,EAAAwY,mBAAAxY,EAAAhF,MAAAgF,GAAA,IAEAS,EAAAT,EAAAyY,uBAGAlY,GAAAG,EAAAgY,QAEAlY,EAAAC,GAAA,SAAAkY,GACA,OAAAC,WAAAD,EAAAxX,EAAA,IAAAT,EAAAlD,KAAA,EAAA,IAGA8C,EAAA,EAEAe,EAAA,KAGAqX,MAAA,YACAjY,EAAAT,EAAA6Y,qBAAAC,cAAAvY,GACAD,EAAA,EACAE,EAAAwE,IAEA+T,aAAA,SAAAC,EAAAC,GACAnY,EAAAkY,GAAA,IACAjY,EAAApE,KAAAC,IAAAqc,EAAAnY,EAAA,IAEAsX,IAAA,SAAAc,GACAhY,EAAA,KAAAgY,GAAA,KACA/X,EAAA,IAAAT,EAAAlD,KAAA0D,GAEA6S,IAAA,SAAAb,GACA9R,EAAA9F,QAAA4X,GAAA,GAAA9R,EAAAnK,KAAAic,GAEAxD,MAEA9W,OAAA,SAAAsa,GACA,IAAA9b,IACAA,EAAAgK,EAAA9F,QAAA4X,KAAA9R,EAAA6E,OAAA7O,EAAA,IAAAwJ,GAAAxJ,GAAAwJ,KAEAQ,WA5FAA,EAAA,KAgGAsO,GAAA,WACA,OAAApP,GAAAmM,GAAA4L,QAEAc,GAAA,GACAC,GAAA,sBACAC,GAAA,QACAC,GAAA,SAAA/iB,GAUA,IATA,IAKAwY,EACA7X,EACAqiB,EAPA/hB,EAAA,GACAgP,EAAAjQ,EAAAyX,OAAA,EAAAzX,EAAAO,OAAA,GAAA0P,MAAA,KACAgT,EAAAhT,EAAA,GACApP,EAAA,EACA4P,EAAAR,EAAA1P,OAKAM,EAAA4P,EAAA5P,IACAF,EAAAsP,EAAApP,GACA2X,EAAA3X,IAAA4P,EAAA,EAAA9P,EAAAuiB,YAAA,KAAAviB,EAAAJ,OACAyiB,EAAAriB,EAAA8W,OAAA,EAAAe,GACAvX,EAAAgiB,GAAA1L,MAAAyL,GAAAA,EAAAtL,QAAAoL,GAAA,IAAA/hB,QAAAiiB,EACAC,EAAAtiB,EAAA8W,OAAAe,EAAA,GAAAzX,OAGA,OAAAE,GAaA0Z,GAAA,SAAArV,GACA,OAAA,SAAAhD,GACA,OAAA,EAAAgD,EAAA,EAAAhD,KAGA6gB,GAAA,SAAAA,EAAAvO,EAAAwO,GAIA,IAHA,IACA9d,EADAgN,EAAAsC,EAAAyO,OAGA/Q,GACAA,aAAAyE,GACAoM,EAAA7Q,EAAA8Q,IACA9Q,EAAA9K,KAAA8b,UAAAhR,EAAAiR,OAAAjR,EAAAmB,SAAAnB,EAAAiR,QAAAH,IACA9Q,EAAAsC,SACAuO,EAAA7Q,EAAAsC,SAAAwO,IAEA9d,EAAAgN,EAAAkR,MACAlR,EAAAkR,MAAAlR,EAAAmR,OACAnR,EAAAmR,OAAAne,EACAgN,EAAAiR,MAAAH,IAIA9Q,EAAAA,EAAAI,OAGA8G,GAAA,SAAAlU,EAAAoe,GACA,OAAApe,IAAAmH,EAAAnH,GAAAA,EAAAsd,GAAAtd,IAhCA,SAAAlF,GACA,IAPAJ,EACA2jB,EACAC,EACAC,EAIA5T,GAAA7P,EAAA,IAAA6P,MAAA,KACA3K,EAAAsd,GAAA3S,EAAA,IACA,OAAA3K,GAAA2K,EAAA1P,OAAA,GAAA+E,EAAAG,OAAAH,EAAAG,OAAAyT,MAAA,MAAA9Y,EAAA2E,QAAA,KAAA,CAAAge,GAAA9S,EAAA,MATAjQ,EASAI,EARAujB,EAAA3jB,EAAA+E,QAAA,KAAA,EACA6e,EAAA5jB,EAAA+E,QAAA,KACA8e,EAAA7jB,EAAA+E,QAAA,IAAA4e,GACA3jB,EAAA8jB,UAAAH,GAAAE,GAAAA,EAAAD,EAAA5jB,EAAA+E,QAAA,IAAA6e,EAAA,GAAAA,IAKA3T,MAAA,KAAAmQ,IAAAjP,KAAAyR,GAAAmB,KAAAlB,GAAAzB,KAAAhhB,GAAAwiB,GAAAmB,IAAA,GAAA3jB,GAAAkF,EA6BA0e,CAAA1e,KAAAoe,GAEAO,GAAA,SAAAjU,EAAAkU,EAAAjZ,EAAAkZ,QACA,IAAAlZ,IACAA,EAAA,SAAA3I,GACA,OAAA,EAAA4hB,EAAA,EAAA5hB,UAIA,IAAA6hB,IACAA,EAAA,SAAA7hB,GACA,OAAAA,EAAA,GAAA4hB,EAAA,EAAA5hB,GAAA,EAAA,EAAA4hB,EAAA,GAAA,EAAA5hB,IAAA,IAIA,IAKA8hB,EALA9e,EAAA,CACA4e,OAAAA,EACAjZ,QAAAA,EACAkZ,UAAAA,GAaA,OATApU,GAAAC,GAAA,SAAA5P,GAIA,IAAA,IAAAkC,KAHAsgB,GAAAxiB,GAAAwN,GAAAxN,GAAAkF,EACAsd,GAAAwB,EAAAhkB,EAAAikB,eAAApZ,EAEA3F,EACAsd,GAAAwB,GAAA,WAAA9hB,EAAA,MAAA,YAAAA,EAAA,OAAA,WAAAsgB,GAAAxiB,EAAA,IAAAkC,GAAAgD,EAAAhD,MAIAgD,GAEAgf,GAAA,SAAArZ,GACA,OAAA,SAAA3I,GACA,OAAAA,EAAA,IAAA,EAAA2I,EAAA,EAAA,EAAA3I,IAAA,EAAA,GAAA2I,EAAA,GAAA3I,EAAA,KAAA,IAGAiiB,GAAA,SAAAA,EAAAtkB,EAAAukB,EAAAC,GACA,IAAAne,EAAAke,GAAA,EAAAA,EAAA,EACA1d,GAAA2d,IAAAxkB,EAAA,GAAA,OAAAukB,EAAA,EAAAA,EAAA,GACAje,EAAAO,EAAAgF,GAAA1F,KAAAse,KAAA,EAAApe,IAAA,GACA2E,EAAA,SAAA3I,GACA,OAAA,IAAAA,EAAA,EAAAgE,EAAAF,KAAAD,IAAA,GAAA,GAAA7D,GAAAgK,GAAAhK,EAAAiE,GAAAO,GAAA,GAEAxB,EAAA,QAAArF,EAAAgL,EAAA,OAAAhL,EAAA,SAAAqC,GACA,OAAA,EAAA2I,EAAA,EAAA3I,IACAgiB,GAAArZ,GAQA,OANAnE,EAAAgF,EAAAhF,EAEAxB,EAAAG,OAAA,SAAA+e,EAAAC,GACA,OAAAF,EAAAtkB,EAAAukB,EAAAC,IAGAnf,GAEAqf,GAAA,SAAAA,EAAA1kB,EAAA2kB,QACA,IAAAA,IACAA,EAAA,SAGA,IAAA3Z,EAAA,SAAA3I,GACA,OAAAA,IAAAA,EAAAA,IAAAsiB,EAAA,GAAAtiB,EAAAsiB,GAAA,EAAA,GAEAtf,EAAA,QAAArF,EAAAgL,EAAA,OAAAhL,EAAA,SAAAqC,GACA,OAAA,EAAA2I,EAAA,EAAA3I,IACAgiB,GAAArZ,GAMA,OAJA3F,EAAAG,OAAA,SAAAmf,GACA,OAAAD,EAAA1kB,EAAA2kB,IAGAtf,GAGAyK,GAAA,wCAAA,SAAA3P,EAAAS,GACA,IAAAoF,EAAApF,EAAA,EAAAA,EAAA,EAAAA,EAEAojB,GAAA7jB,EAAA,UAAA6F,EAAA,GAAApF,EAAA,SAAAyB,GACA,OAAA8D,KAAAD,IAAA7D,EAAA2D,IACA,SAAA3D,GACA,OAAAA,IACA,SAAAA,GACA,OAAA,EAAA8D,KAAAD,IAAA,EAAA7D,EAAA2D,MACA,SAAA3D,GACA,OAAAA,EAAA,GAAA8D,KAAAD,IAAA,EAAA7D,EAAA2D,GAAA,EAAA,EAAAG,KAAAD,IAAA,GAAA,EAAA7D,GAAA2D,GAAA,QAIA2c,GAAAiC,OAAAC,SAAAlC,GAAAmC,KAAAnC,GAAAiC,OAAAX,OAEAD,GAAA,UAAAM,GAAA,MAAAA,GAAA,OAAAA,MAEAxZ,EAWA,OAVAC,EAAA,GADA3D,EAWA,MAHA4c,GAAA,UAAA,SAAA3hB,GACA,OAAA,EAAA2I,EAAA,EAAA3I,KALA2I,EAAA,SAAA3I,GACA,OAAAA,EAAA0I,EAAAD,EAAAzI,EAAAA,EAAAA,EAHA,kBAGAyI,EAAA3E,KAAAD,IAAA7D,EAAA,IAAA+E,EAAA,GAAA,IAAA/E,EAFA,kBAEAyI,GAAAzI,GAAA,KAAA+E,GAAA/E,EAAA,MAAAyI,EAAA3E,KAAAD,IAAA7D,EAAA,MAAA+E,EAAA,GAAA,UAQA4c,GAAA,QAAA,SAAA3hB,GACA,OAAAA,EAAA8D,KAAAD,IAAA,EAAA,IAAA7D,EAAA,IAAA,KAGA2hB,GAAA,QAAA,SAAA3hB,GACA,QAAA4J,EAAA,EAAA5J,EAAAA,GAAA,MAGA2hB,GAAA,QAAA,SAAA3hB,GACA,OAAA,IAAAA,EAAA,EAAA,EAAA8J,EAAA9J,EAAA0J,MAGAiY,GAAA,OAAAU,GAAA,MAAAA,GAAA,OAAAA,MAEA/B,GAAAoC,YAAApC,GAAAqC,MAAArX,GAAAoX,YAAA,CACAvf,OAAA,SAAAwf,EAAAC,QACA,IAAAD,IACAA,EAAA,GAGA,IAAA3e,EAAA,EAAA2e,EACAne,EAAAme,GAAAC,EAAA,EAAA,GACA3e,EAAA2e,EAAA,EAAA,EAEA,OAAA,SAAA5iB,GACA,QAAAwE,EAAAiO,GAAA,EAFA,UAEAzS,GAAA,GAAAiE,GAAAD,KAIAkF,EAAAlG,KAAAsd,GAAA,YAEA7S,GAAA,sEAAA,SAAA3P,GACA,OAAA6O,IAAA7O,EAAA,IAAAA,EAAA,aAGA,IAAAqP,GAAA,SAAAJ,EAAAE,GACArP,KAAAgD,GAAA+I,IACAoD,EAAAC,MAAApP,KACAA,KAAAmP,OAAAA,EACAnP,KAAAqP,QAAAA,EACArP,KAAA6d,IAAAxO,EAAAA,EAAAwO,IAAAlO,GACA3P,KAAAilB,IAAA5V,EAAAA,EAAAyO,UAAAC,IAEAmH,GAAA,WACA,SAAAA,EAAA5d,GACAtH,KAAAsH,KAAAA,EACAtH,KAAAmV,QAAA7N,EAAAmE,OAAA,GAEAzL,KAAAuT,QAAAjM,EAAAmP,SAAA0O,EAAAA,GAAA,EAAA7d,EAAAmP,QAAA,KACAzW,KAAA0T,QAAApM,EAAA8d,aAAA,EACAplB,KAAAqjB,QAAA/b,EAAA+d,QAAA/d,EAAA8b,UAGApjB,KAAAqT,IAAA,EAEAiD,GAAAtW,MAAAsH,EAAAiE,SAAA,EAAA,GAEAvL,KAAAgC,KAAAsF,EAAAtF,KACA6H,GAAAmM,GAAA4L,OAGA,IAAA0D,EAAAJ,EAAAnc,UAmRA,OAjRAuc,EAAA7Z,MAAA,SAAA3L,GACA,OAAAA,GAAA,IAAAA,GACAE,KAAA+R,QAAA/R,KAAA+R,OAAAwC,mBAAAvU,KAAAulB,UAAAvlB,KAAAgT,OAAAlT,EAAAE,KAAAmV,QACAnV,KAAAmV,OAAArV,EACAE,MAGAA,KAAAmV,QAGAmQ,EAAA/Z,SAAA,SAAAzL,GACA,OAAA0lB,UAAAnlB,OAAAL,KAAAmT,cAAAnT,KAAAuT,QAAA,EAAAzT,GAAAA,EAAAE,KAAA0T,SAAA1T,KAAAuT,QAAAzT,GAAAE,KAAAmT,iBAAAnT,KAAA+S,MAGAuS,EAAAnS,cAAA,SAAArT,GACA,OAAA0lB,UAAAnlB,QAIAL,KAAAiT,OAAA,EACAqD,GAAAtW,KAAAA,KAAAuT,QAAA,EAAAzT,GAAAA,EAAAE,KAAAuT,QAAAvT,KAAA0T,UAAA1T,KAAAuT,QAAA,KAJAvT,KAAAiU,OAOAqR,EAAAhR,UAAA,SAAAmR,EAAA1U,GAGA,GAFAkI,MAEAuM,UAAAnlB,OACA,OAAAL,KAAAyT,OAGA,IAAA1B,EAAA/R,KAAAkS,IAEA,GAAAH,GAAAA,EAAAwC,mBAAAvU,KAAAqT,IAAA,CAKA,IAJAgB,GAAArU,KAAAylB,IAEA1T,EAAAG,KAAAH,EAAAA,QAAA0C,GAAA1C,EAAA/R,MAEA+R,GAAAA,EAAAA,QACAA,EAAAA,OAAAyC,QAAAzC,EAAAiB,QAAAjB,EAAAsB,KAAA,EAAAtB,EAAA0B,OAAA1B,EAAAsB,KAAAtB,EAAAoB,gBAAApB,EAAA0B,SAAA1B,EAAAsB,MACAtB,EAAAuC,UAAAvC,EAAA0B,QAAA,GAGA1B,EAAAA,EAAAA,QAGA/R,KAAA+R,QAAA/R,KAAAkS,IAAAS,qBAAA3S,KAAAqT,IAAA,GAAAoS,EAAAzlB,KAAAiU,OAAAjU,KAAAqT,IAAA,GAAAoS,EAAA,IAAAzlB,KAAAiU,QAAAwR,IACA1Q,GAAA/U,KAAAkS,IAAAlS,KAAAA,KAAAgT,OAAAhT,KAAAmV,QAUA,OANAnV,KAAAyT,SAAAgS,IAAAzlB,KAAA+S,OAAAhC,GAAA/Q,KAAA2U,UAAAzO,KAAAiO,IAAAnU,KAAA8U,UAAAnJ,IAAA8Z,IAAAzlB,KAAA2U,WAAA3U,KAAAsd,KAAAtd,KAAA0lB,cACA1lB,KAAAqT,MAAArT,KAAA2lB,OAAAF,GAEA5U,GAAA7Q,KAAAylB,EAAA1U,IAGA/Q,MAGAslB,EAAAve,KAAA,SAAAjH,EAAAiR,GACA,OAAAyU,UAAAnlB,OAAAL,KAAAsU,UAAApO,KAAAC,IAAAnG,KAAAmT,gBAAArT,EAAAwT,GAAAtT,QAAAA,KAAA+S,KAAA/S,KAAA0T,WAAA5T,EAAAE,KAAA+S,KAAA,GAAAhC,GAAA/Q,KAAAwU,OAGA8Q,EAAA3O,cAAA,SAAA7W,EAAAiR,GACA,OAAAyU,UAAAnlB,OAAAL,KAAAsU,UAAAtU,KAAAmT,gBAAArT,EAAAiR,GAAA/Q,KAAAmT,gBAAAjN,KAAAC,IAAA,EAAAnG,KAAAyT,OAAAzT,KAAAiU,OAAAjU,KAAAqF,OAGAigB,EAAAxI,SAAA,SAAAhd,EAAAiR,GACA,OAAAyU,UAAAnlB,OAAAL,KAAAsU,UAAAtU,KAAAuL,aAAAvL,KAAAqjB,OAAA,EAAArjB,KAAA4lB,YAAA9lB,EAAA,EAAAA,GAAAwT,GAAAtT,MAAA+Q,GAAA/Q,KAAAuL,WAAArF,KAAAC,IAAA,EAAAnG,KAAAwU,MAAAxU,KAAA+S,MAAA/S,KAAAqF,OAGAigB,EAAAM,UAAA,SAAA9lB,EAAAiR,GACA,IAAA6C,EAAA5T,KAAAuL,WAAAvL,KAAA0T,QAEA,OAAA8R,UAAAnlB,OAAAL,KAAAsU,UAAAtU,KAAAwU,OAAA1U,EAAA,GAAA8T,EAAA7C,GAAA/Q,KAAAuT,QAAAC,GAAAxT,KAAAyT,OAAAG,GAAA,EAAA,GAGA0R,EAAAlQ,UAAA,SAAAtV,GACA,IAAA0lB,UAAAnlB,OACA,OAAA,OAAAL,KAAAoU,KAAA,EAAApU,KAAAoU,KAGA,GAAApU,KAAAoU,OAAAtU,EACA,OAAAE,KAGA,IAAA2T,EAAA3T,KAAA+R,QAAA/R,KAAAqT,IAAAU,GAAA/T,KAAA+R,OAAAyC,MAAAxU,MAAAA,KAAAyT,OAQA,OAPAzT,KAAAoU,MAAAtU,GAAA,EACAE,KAAAqT,IAAArT,KAAA6lB,MAAA,OAAA/lB,EAAA,EAAAE,KAAAoU,KAEAlB,GAAAlT,KAAAsU,UAAAO,IAAA7U,KAAAmV,OAAAnV,KAAAiU,MAAAN,IAAA,IAEAO,GAAAlU,MAEAA,MAGAslB,EAAAQ,OAAA,SAAAhmB,GACA,OAAA0lB,UAAAnlB,QAIAL,KAAA6lB,MAAA/lB,IACAE,KAAA6lB,IAAA/lB,EAEAA,GACAE,KAAA2lB,OAAA3lB,KAAAyT,QAAAvN,KAAAiS,KAAAnY,KAAAmV,OAAAnV,KAAA4U,WACA5U,KAAAqT,IAAArT,KAAA4S,KAAA,IAEAqG,KAEAjZ,KAAAqT,IAAArT,KAAAoU,KACApU,KAAAsU,UAAAtU,KAAA+R,SAAA/R,KAAA+R,OAAAwC,kBAAAvU,KAAA4U,UAAA5U,KAAAyT,QAAAzT,KAAA2lB,OAAA,IAAA3lB,KAAA8c,YAAA5W,KAAAiO,IAAAnU,KAAA8U,UAAAnJ,IAAA3L,KAAAyT,QAAA9H,MAIA3L,MAjBAA,KAAA6lB,KAoBAP,EAAAC,UAAA,SAAAzlB,GACA,GAAA0lB,UAAAnlB,OAAA,CACAL,KAAAgT,OAAAlT,EACA,IAAAiS,EAAA/R,KAAA+R,QAAA/R,KAAAkS,IAEA,OADAH,IAAAA,EAAAwD,QAAAvV,KAAA+R,SAAAgD,GAAAhD,EAAA/R,KAAAF,EAAAE,KAAAmV,QACAnV,KAGA,OAAAA,KAAAgT,QAGAsS,EAAAvO,QAAA,SAAAgP,GACA,OAAA/lB,KAAAgT,QAAArG,EAAAoZ,GAAA/lB,KAAAmT,gBAAAnT,KAAAuL,YAAArF,KAAAiO,IAAAnU,KAAAqT,KAAA,IAGAiS,EAAA1Q,QAAA,SAAAoR,GACA,IAAAjU,EAAA/R,KAAA+R,QAAA/R,KAAAkS,IACA,OAAAH,EAAAiU,KAAAhmB,KAAAqT,KAAArT,KAAAuT,SAAAvT,KAAAwU,OAAAxU,KAAA2W,gBAAA,GAAA3W,KAAAyT,QAAAzT,KAAA+S,KAAA/S,KAAA0T,SAAA1T,KAAAqT,IAAAU,GAAAhC,EAAA6C,QAAAoR,GAAAhmB,MAAAA,KAAAyT,OAAAzT,KAAAyT,QAGA6R,EAAAW,WAAA,SAAArR,GAIA,IAHA,IAAA9D,EAAA9Q,KACA+G,EAAAye,UAAAnlB,OAAAuU,EAAA9D,EAAA8D,UAEA9D,GACA/J,EAAA+J,EAAAkC,OAAAjM,GAAA+J,EAAAuC,KAAA,GACAvC,EAAAA,EAAAoB,IAGA,OAAAnL,GAGAue,EAAA7O,OAAA,SAAA3W,GACA,OAAA0lB,UAAAnlB,QACAL,KAAAuT,QAAAzT,IAAAqlB,EAAAA,GAAA,EAAArlB,EACA8W,GAAA5W,QAGA,IAAAA,KAAAuT,QAAA4R,EAAAA,EAAAnlB,KAAAuT,SAGA+R,EAAAF,YAAA,SAAAtlB,GACA,GAAA0lB,UAAAnlB,OAAA,CACA,IAAA0G,EAAA/G,KAAAwU,MAKA,OAJAxU,KAAA0T,QAAA5T,EAEA8W,GAAA5W,MAEA+G,EAAA/G,KAAA+G,KAAAA,GAAA/G,KAGA,OAAAA,KAAA0T,SAGA4R,EAAAD,KAAA,SAAAvlB,GACA,OAAA0lB,UAAAnlB,QACAL,KAAAqjB,MAAAvjB,EACAE,MAGAA,KAAAqjB,OAGAiC,EAAAY,KAAA,SAAAlR,EAAAjE,GACA,OAAA/Q,KAAAsU,UAAAY,GAAAlV,KAAAgV,GAAArI,EAAAoE,KAGAuU,EAAAa,QAAA,SAAAC,EAAArV,GACA,OAAA/Q,KAAAqmB,OAAA/R,UAAA8R,GAAApmB,KAAAmV,OAAA,EAAAxI,EAAAoE,KAGAuU,EAAAe,KAAA,SAAA9M,EAAAxI,GAEA,OADA,MAAAwI,GAAAvZ,KAAAkmB,KAAA3M,EAAAxI,GACA/Q,KAAAsmB,UAAA,GAAAR,QAAA,IAGAR,EAAAiB,QAAA,SAAAhN,EAAAxI,GAEA,OADA,MAAAwI,GAAAvZ,KAAAkmB,KAAA3M,GAAAvZ,KAAAmT,gBAAApC,GACA/Q,KAAAsmB,UAAA,GAAAR,QAAA,IAGAR,EAAAkB,MAAA,SAAAC,EAAA1V,GAEA,OADA,MAAA0V,GAAAzmB,KAAAkmB,KAAAO,EAAA1V,GACA/Q,KAAA8lB,QAAA,IAGAR,EAAAoB,OAAA,WACA,OAAA1mB,KAAA8lB,QAAA,IAGAR,EAAAgB,SAAA,SAAAxmB,GACA,OAAA0lB,UAAAnlB,UACAP,IAAAE,KAAAsmB,YAAAtmB,KAAAoV,WAAApV,KAAAoU,OAAAtU,GAAA,KAAA,IACAE,MAGAA,KAAAoU,KAAA,GAGAkR,EAAAqB,WAAA,WAGA,OAFA3mB,KAAA2U,SAAA3U,KAAA4S,KAAA,EACA5S,KAAA8U,QAAA,KACA9U,MAGAslB,EAAAsB,SAAA,WACA,IAEAhS,EAFA7C,EAAA/R,KAAA+R,QAAA/R,KAAAkS,IACAzL,EAAAzG,KAAAgT,OAEA,QAAAjB,KAAA/R,KAAAqT,KAAArT,KAAA2U,UAAA5C,EAAA6U,aAAAhS,EAAA7C,EAAA6C,SAAA,KAAAnO,GAAAmO,EAAA5U,KAAA+W,SAAA,GAAApL,KAGA2Z,EAAAuB,cAAA,SAAA9mB,EAAA0c,EAAA/E,GACA,IAAApQ,EAAAtH,KAAAsH,KAEA,OAAAke,UAAAnlB,OAAA,GACAoc,GAGAnV,EAAAvH,GAAA0c,EACA/E,IAAApQ,EAAAvH,EAAA,UAAA2X,GACA,aAAA3X,IAAAC,KAAA8mB,UAAArK,WAJAnV,EAAAvH,GAOAC,MAGAsH,EAAAvH,IAGAulB,EAAAyB,KAAA,SAAAC,GACA,IAAA3iB,EAAArE,KACA,OAAA,IAAAinB,SAAA,SAAAC,GACA,IAAAhF,EAAA3V,EAAAya,GAAAA,EAAA5V,GACA+V,EAAA,WACA,IAAAC,EAAA/iB,EAAA0iB,KACA1iB,EAAA0iB,KAAA,KACAxa,EAAA2V,KAAAA,EAAAA,EAAA7d,MAAA6d,EAAA6E,MAAA7E,IAAA7d,KAAAA,EAAA0iB,KAAAK,GACAF,EAAAhF,GACA7d,EAAA0iB,KAAAK,GAGA/iB,EAAAsQ,UAAA,IAAAtQ,EAAAsS,iBAAAtS,EAAAgP,KAAA,IAAAhP,EAAAoP,QAAApP,EAAAgP,IAAA,EACA8T,IAEA9iB,EAAAgjB,MAAAF,MAKA7B,EAAAzI,KAAA,WACAF,GAAA3c,OAGAklB,EArSA,GAwSA7T,GAAA6T,GAAAnc,UAAA,CACAyL,MAAA,EACAxB,OAAA,EACAF,KAAA,EACAW,OAAA,EACAQ,MAAA,EACAhB,OAAA,EACAM,QAAA,EACA8P,OAAA,EACAtR,OAAA,KACA4C,UAAA,EACAjB,QAAA,EACAL,IAAA,EACAnB,IAAA,EACA7M,MAAA,EACAyP,QAAA,KACAuS,MAAA,EACAxB,KAAA,EACAzR,KAAA,IAGA,IAAAyC,GAAA,SAAAyQ,GAGA,SAAAzQ,EAAAvP,EAAA0N,GACA,IAAAuS,EAeA,YAbA,IAAAjgB,IACAA,EAAA,KAGAigB,EAAAD,EAAApO,KAAAlZ,KAAAsH,IAAAtH,MACAmX,OAAA,GACAoQ,EAAAhT,oBAAAjN,EAAAiN,kBACAgT,EAAA5U,qBAAArL,EAAAqL,mBACA4U,EAAAhS,MAAA5I,EAAArF,EAAAkgB,cACAle,GAAAyL,GAAAzN,EAAAyK,QAAAzI,EAAAH,EAAAoe,GAAAvS,GACA1N,EAAAgf,UAAAiB,EAAAhB,UACAjf,EAAAwe,QAAAyB,EAAAzB,QAAA,GACAxe,EAAAsV,eAAAlH,GAAAvM,EAAAoe,GAAAjgB,EAAAsV,eACA2K,EAlBA3e,EAAAiO,EAAAyQ,GAqBA,IAAAG,EAAA5Q,EAAA9N,UAunBA,OArnBA0e,EAAAC,GAAA,SAAAzY,EAAA3H,EAAA0N,GAGA,OAFAyC,GAAA,EAAA+N,UAAAxlB,MAEAA,MAGAynB,EAAAlO,KAAA,SAAAtK,EAAA3H,EAAA0N,GAGA,OAFAyC,GAAA,EAAA+N,UAAAxlB,MAEAA,MAGAynB,EAAAE,OAAA,SAAA1Y,EAAA2Y,EAAAC,EAAA7S,GAGA,OAFAyC,GAAA,EAAA+N,UAAAxlB,MAEAA,MAGAynB,EAAAxC,IAAA,SAAAhW,EAAA3H,EAAA0N,GAMA,OALA1N,EAAAiE,SAAA,EACAjE,EAAAyK,OAAA/R,KACA8R,GAAAxK,GAAA8d,cAAA9d,EAAAmP,OAAA,GACAnP,EAAAwQ,kBAAAxQ,EAAAwQ,gBACA,IAAAG,GAAAhJ,EAAA3H,EAAA4N,GAAAlV,KAAAgV,GAAA,GACAhV,MAGAynB,EAAAvO,KAAA,SAAAuD,EAAA/E,EAAA1C,GACA,OAAAD,GAAA/U,KAAAiY,GAAA6P,YAAA,EAAArL,EAAA/E,GAAA1C,IAGAyS,EAAAM,UAAA,SAAA9Y,EAAA1D,EAAAjE,EAAA0gB,EAAAhT,EAAAiT,EAAAC,GAOA,OANA5gB,EAAAiE,SAAAA,EACAjE,EAAA0gB,QAAA1gB,EAAA0gB,SAAAA,EACA1gB,EAAA6gB,WAAAF,EACA3gB,EAAA8gB,iBAAAF,EACA5gB,EAAAyK,OAAA/R,KACA,IAAAiY,GAAAhJ,EAAA3H,EAAA4N,GAAAlV,KAAAgV,IACAhV,MAGAynB,EAAAY,YAAA,SAAApZ,EAAA1D,EAAAjE,EAAA0gB,EAAAhT,EAAAiT,EAAAC,GAGA,OAFA5gB,EAAAyQ,aAAA,EACAjG,GAAAxK,GAAAwQ,gBAAAnL,EAAArF,EAAAwQ,iBACA9X,KAAA+nB,UAAA9Y,EAAA1D,EAAAjE,EAAA0gB,EAAAhT,EAAAiT,EAAAC,IAGAT,EAAAa,cAAA,SAAArZ,EAAA1D,EAAAqc,EAAAC,EAAAG,EAAAhT,EAAAiT,EAAAC,GAGA,OAFAL,EAAA7P,QAAA4P,EACA9V,GAAA+V,GAAA/P,gBAAAnL,EAAAkb,EAAA/P,iBACA9X,KAAA+nB,UAAA9Y,EAAA1D,EAAAsc,EAAAG,EAAAhT,EAAAiT,EAAAC,IAGAT,EAAA7W,OAAA,SAAA0D,EAAAvD,EAAAC,GACA,IAKAjK,EACAqL,EACApL,EACA4e,EACAhS,EACA2U,EACAC,EACApT,EACAqT,EACAC,EACArD,EACAnC,EAhBAyF,EAAA3oB,KAAAwU,MACAoU,EAAA5oB,KAAAiT,OAAAjT,KAAAmT,gBAAAnT,KAAAiU,MACAyC,EAAA1W,KAAA+S,KACAY,EAAAW,GAAA,EAAA,EAAAnE,GAAAmE,GACAuU,EAAA7oB,KAAA8U,OAAA,GAAAR,EAAA,IAAAtU,KAAA2U,WAAA+B,GAeA,GAFA1W,OAAAsJ,GAAAqK,EAAAiV,GAAAtU,GAAA,IAAAX,EAAAiV,GAEAjV,IAAA3T,KAAAyT,QAAAzC,GAAA6X,EAAA,CAgBA,GAfAF,IAAA3oB,KAAAwU,OAAAkC,IACA/C,GAAA3T,KAAAwU,MAAAmU,EACArU,GAAAtU,KAAAwU,MAAAmU,GAGA5hB,EAAA4M,EACA8U,EAAAzoB,KAAAgT,OAEAuV,IADAnT,EAAApV,KAAAqT,KAGAwV,IACAnS,IAAAiS,EAAA3oB,KAAA8U,SACAR,IAAAvD,KAAA/Q,KAAA8U,OAAAR,IAGAtU,KAAAuT,QAAA,CAIA,GAHA8R,EAAArlB,KAAAqjB,MACAzP,EAAA8C,EAAA1W,KAAA0T,QAEA1T,KAAAuT,SAAA,GAAAe,EAAA,EACA,OAAAtU,KAAAsU,UAAA,IAAAV,EAAAU,EAAAvD,EAAAC,GA2BA,GAxBAjK,EAAAoJ,GAAAwD,EAAAC,GAEAD,IAAAiV,GACAhD,EAAA5lB,KAAAuT,QACAxM,EAAA2P,KAEAkP,KAAAjS,EAAAC,KAEAgS,IAAAjS,EAAAC,IACA7M,EAAA2P,EACAkP,KAGA7e,EAAA2P,IAAA3P,EAAA2P,IAGAgS,EAAAlV,GAAAxT,KAAAyT,OAAAG,IACA+U,GAAA3oB,KAAAyT,QAAAiV,IAAA9C,IAAA8C,EAAA9C,GAEAP,GAAA,EAAAO,IACA7e,EAAA2P,EAAA3P,EACAmc,EAAA,GAGA0C,IAAA8C,IAAA1oB,KAAAoW,MAAA,CACA,IAAA0S,EAAAzD,GAAA,EAAAqD,EACAK,EAAAD,KAAAzD,GAAA,EAAAO,GASA,GARAA,EAAA8C,IAAAI,GAAAA,GACAH,EAAAG,EAAA,EAAApS,EACA1W,KAAAoW,MAAA,EACApW,KAAA4Q,OAAA+X,IAAAzF,EAAA,EAAA/S,GAAAyV,EAAAhS,IAAA7C,GAAA2F,GAAAN,MAAA,EACApW,KAAAyT,OAAAE,GACA5C,GAAA/Q,KAAA+R,QAAAwK,GAAAvc,KAAA,YACAA,KAAAsH,KAAA0hB,gBAAA9F,IAAAljB,KAAA2mB,aAAAvQ,MAAA,GAEAuS,GAAAA,IAAA3oB,KAAAwU,OAAA+T,KAAAvoB,KAAAqT,KAAArT,KAAAsH,KAAA2hB,WAAAjpB,KAAA+R,SAAA/R,KAAA4S,KACA,OAAA5S,KAeA,GAZA0W,EAAA1W,KAAA+S,KACA6V,EAAA5oB,KAAAiU,MAEA8U,IACA/oB,KAAAoW,MAAA,EACAuS,EAAAG,EAAApS,GAAA,KACA1W,KAAA4Q,OAAA+X,GAAA,GACA3oB,KAAAsH,KAAA0hB,gBAAA9F,GAAAljB,KAAA2mB,cAGA3mB,KAAAoW,MAAA,GAEApW,KAAAqT,MAAAkV,EACA,OAAAvoB,KAGAijB,GAAAjjB,KAAAkjB,IAuBA,GAnBAljB,KAAAkpB,YAAAlpB,KAAAmpB,UAAAnpB,KAAAoW,MAAA,IACAoS,EAz+CA,SAAA1X,EAAA6X,EAAA5hB,GACA,IAAAqL,EAEA,GAAArL,EAAA4hB,EAGA,IAFAvW,EAAAtB,EAAAqS,OAEA/Q,GAAAA,EAAAY,QAAAjM,GAAA,CACA,IAAAqL,EAAAW,MAAA,YAAAX,EAAApQ,MAAAoQ,EAAAY,OAAA2V,EACA,OAAAvW,EAGAA,EAAAA,EAAAI,WAKA,IAFAJ,EAAAtB,EAAAsY,MAEAhX,GAAAA,EAAAY,QAAAjM,GAAA,CACA,IAAAqL,EAAAW,MAAA,YAAAX,EAAApQ,MAAAoQ,EAAAY,OAAA2V,EACA,OAAAvW,EAGAA,EAAAA,EAAAG,OAo9CA8W,CAAArpB,KAAAmQ,GAAAwY,GAAAxY,GAAApJ,OAGA4M,GAAA5M,GAAAA,EAAAyhB,EAAAxV,SAIAhT,KAAAyT,OAAAE,EACA3T,KAAAwU,MAAAzN,EACA/G,KAAA4S,MAAAwC,EAEApV,KAAA2U,WACA3U,KAAA8mB,UAAA9mB,KAAAsH,KAAAgiB,SACAtpB,KAAA2U,SAAA,EACA3U,KAAA8U,OAAAR,EACAqU,EAAA,IAGAA,GAAA5hB,IAAAgK,IACAwL,GAAAvc,KAAA,WAEAA,KAAAyT,SAAAE,GACA,OAAA3T,KAIA,GAAA+G,GAAA4hB,GAAArU,GAAA,EAGA,IAFAlC,EAAApS,KAAAmjB,OAEA/Q,GAAA,CAGA,GAFApL,EAAAoL,EAAAI,OAEAJ,EAAAQ,MAAA7L,GAAAqL,EAAAY,SAAAZ,EAAAiB,KAAAmV,IAAApW,EAAA,CACA,GAAAA,EAAAL,SAAA/R,KACA,OAAAA,KAAA4Q,OAAA0D,EAAAvD,EAAAC,GAKA,GAFAoB,EAAAxB,OAAAwB,EAAAiB,IAAA,GAAAtM,EAAAqL,EAAAY,QAAAZ,EAAAiB,KAAAjB,EAAAa,OAAAb,EAAAe,gBAAAf,EAAA6B,QAAAlN,EAAAqL,EAAAY,QAAAZ,EAAAiB,IAAAtC,EAAAC,GAEAjK,IAAA/G,KAAAwU,QAAAxU,KAAAqT,MAAAkV,EAAA,CACAC,EAAA,EACAxhB,IAAA2M,GAAA3T,KAAA8U,QAAA,MACA,OAIA1C,EAAApL,MAEA,CACAoL,EAAApS,KAAAopB,MAGA,IAFA,IAAAG,EAAAjV,EAAA,EAAAA,EAAAvN,EAEAqL,GAAA,CAGA,GAFApL,EAAAoL,EAAAG,OAEAH,EAAAQ,MAAA2W,GAAAnX,EAAAU,OAAAV,EAAAiB,KAAAmV,IAAApW,EAAA,CACA,GAAAA,EAAAL,SAAA/R,KACA,OAAAA,KAAA4Q,OAAA0D,EAAAvD,EAAAC,GAKA,GAFAoB,EAAAxB,OAAAwB,EAAAiB,IAAA,GAAAkW,EAAAnX,EAAAY,QAAAZ,EAAAiB,KAAAjB,EAAAa,OAAAb,EAAAe,gBAAAf,EAAA6B,QAAAsV,EAAAnX,EAAAY,QAAAZ,EAAAiB,IAAAtC,EAAAC,GAEAjK,IAAA/G,KAAAwU,QAAAxU,KAAAqT,MAAAkV,EAAA,CACAC,EAAA,EACAxhB,IAAA2M,GAAA3T,KAAA8U,OAAAyU,GAAA,KAAA5d,GACA,OAIAyG,EAAApL,GAIA,GAAAwhB,IAAAzX,IACA/Q,KAAAwmB,QACAgC,EAAA5X,OAAA7J,GAAA4hB,EAAA,GAAA,MAAA7T,OAAA/N,GAAA4hB,EAAA,GAAA,EAEA3oB,KAAAqT,KAKA,OAJArT,KAAAgT,OAAAyV,EAEAvU,GAAAlU,MAEAA,KAAA4Q,OAAA0D,EAAAvD,EAAAC,GAIAhR,KAAA8mB,YAAA/V,GAAAwL,GAAAvc,KAAA,YAAA,IACA2T,IAAAiV,GAAAA,GAAA5oB,KAAAmT,kBAAAQ,GAAAgV,KAAAF,IAAAzoB,KAAAgT,QAAA9M,KAAAiO,IAAAiB,KAAAlP,KAAAiO,IAAAnU,KAAAqT,MAAArT,KAAAoW,SACA9B,IAAAoC,KAAA/C,IAAAiV,GAAA5oB,KAAAqT,IAAA,IAAAM,GAAA3T,KAAAqT,IAAA,IAAAZ,GAAAzS,KAAA,GAEA+Q,GAAAuD,EAAA,IAAAqU,IAAAhV,IAAAgV,GAAAC,IACArM,GAAAvc,KAAA2T,IAAAiV,GAAAtU,GAAA,EAAA,aAAA,qBAAA,GAEAtU,KAAAqnB,SAAA1T,EAAAiV,GAAA5oB,KAAAoV,YAAA,IAAApV,KAAAqnB,WAKA,OAAArnB,MAGAynB,EAAAnK,IAAA,SAAAlL,EAAA4C,GACA,IAAAwU,EAAAxpB,KAIA,GAFAwM,EAAAwI,KAAAA,EAAAE,GAAAlV,KAAAgV,EAAA5C,MAEAA,aAAA8S,IAAA,CACA,GAAAjY,EAAAmF,GAIA,OAHAA,EAAApC,SAAA,SAAAjP,GACA,OAAAyoB,EAAAlM,IAAAvc,EAAAiU,MAEAhV,KAGA,GAAAsM,EAAA8F,GACA,OAAApS,KAAAypB,SAAArX,EAAA4C,GAGA,IAAAzI,EAAA6F,GAGA,OAAApS,KAFAoS,EAAA6F,GAAA6P,YAAA,EAAA1V,GAMA,OAAApS,OAAAoS,EAAA2C,GAAA/U,KAAAoS,EAAA4C,GAAAhV,MAGAynB,EAAAiC,YAAA,SAAA/F,EAAAgG,EAAAC,EAAAC,QACA,IAAAlG,IACAA,GAAA,QAGA,IAAAgG,IACAA,GAAA,QAGA,IAAAC,IACAA,GAAA,QAGA,IAAAC,IACAA,GAAAne,GAMA,IAHA,IAAA5D,EAAA,GACAsK,EAAApS,KAAAmjB,OAEA/Q,GACAA,EAAAY,QAAA6W,IACAzX,aAAA6F,GACA0R,GAAA7hB,EAAAtH,KAAA4R,IAEAwX,GAAA9hB,EAAAtH,KAAA4R,GACAuR,GAAA7b,EAAAtH,KAAAwY,MAAAlR,EAAAsK,EAAAsX,aAAA,EAAAC,EAAAC,MAIAxX,EAAAA,EAAAI,MAGA,OAAA1K,GAGA2f,EAAAqC,QAAA,SAAA9mB,GAIA,IAHA,IAAA+mB,EAAA/pB,KAAA0pB,YAAA,EAAA,EAAA,GACA/oB,EAAAopB,EAAA1pB,OAEAM,KACA,GAAAopB,EAAAppB,GAAA2G,KAAAtE,KAAAA,EACA,OAAA+mB,EAAAppB,IAKA8mB,EAAAtlB,OAAA,SAAAiQ,GACA,OAAA9F,EAAA8F,GACApS,KAAAgqB,YAAA5X,GAGA7F,EAAA6F,GACApS,KAAAiqB,aAAA7X,IAGAD,GAAAnS,KAAAoS,GAEAA,IAAApS,KAAAyV,UACAzV,KAAAyV,QAAAzV,KAAAopB,OAGAvW,GAAA7S,QAGAynB,EAAAnT,UAAA,SAAA4V,EAAAnZ,GACA,OAAAyU,UAAAnlB,QAIAL,KAAAmpB,SAAA,GAEAnpB,KAAAkS,KAAAlS,KAAAqT,MACArT,KAAAgT,OAAA7C,GAAA6F,GAAAjP,MAAA/G,KAAAqT,IAAA,EAAA6W,EAAAlqB,KAAAqT,KAAArT,KAAAmT,gBAAA+W,IAAAlqB,KAAAqT,OAGAiU,EAAAve,UAAAuL,UAAA4E,KAAAlZ,KAAAkqB,EAAAnZ,GAEA/Q,KAAAmpB,SAAA,EACAnpB,MAZAA,KAAAyT,QAeAgU,EAAAgC,SAAA,SAAAnN,EAAAtH,GAEA,OADAhV,KAAAmX,OAAAmF,GAAApH,GAAAlV,KAAAgV,GACAhV,MAGAynB,EAAAuC,YAAA,SAAA1N,GAEA,cADAtc,KAAAmX,OAAAmF,GACAtc,MAGAynB,EAAA0C,SAAA,SAAAnV,EAAAyH,EAAA/E,GACA,IAAAzQ,EAAAgR,GAAA6P,YAAA,EAAArL,GAAAlO,GAAAmJ,GAGA,OAFAzQ,EAAAjF,KAAA,UACAhC,KAAAkpB,UAAA,EACAnU,GAAA/U,KAAAiH,EAAAiO,GAAAlV,KAAAgV,KAGAyS,EAAA2C,YAAA,SAAApV,GACA,IAAA5C,EAAApS,KAAAmjB,OAGA,IAFAnO,EAAAE,GAAAlV,KAAAgV,GAEA5C,GACAA,EAAAY,SAAAgC,GAAA,YAAA5C,EAAApQ,MACAyQ,GAAAL,GAGAA,EAAAA,EAAAI,OAIAiV,EAAAwC,aAAA,SAAAhb,EAAAob,EAAAC,GAIA,IAHA,IAAAX,EAAA3pB,KAAAuqB,YAAAtb,EAAAqb,GACA3pB,EAAAgpB,EAAAtpB,OAEAM,KACA6pB,KAAAb,EAAAhpB,IAAAgpB,EAAAhpB,GAAAkc,KAAA5N,EAAAob,GAGA,OAAArqB,MAGAynB,EAAA8C,YAAA,SAAAtb,EAAAqb,GAOA,IANA,IAIAG,EAJA3iB,EAAA,GACA4iB,EAAAhb,GAAAT,GACAmD,EAAApS,KAAAmjB,OACAwH,EAAAne,EAAA8d,GAGAlY,GACAA,aAAA6F,GACA7H,GAAAgC,EAAAwY,SAAAF,KAAAC,IAAAH,IAAApY,EAAAuC,UAAAvC,EAAAiB,MAAAjB,EAAA6T,WAAA,IAAAqE,GAAAlY,EAAA6T,WAAA7T,EAAAe,iBAAAmX,GAAAA,GAAAlY,EAAAwU,aACA9e,EAAAtH,KAAA4R,IAEAqY,EAAArY,EAAAmY,YAAAG,EAAAJ,IAAAjqB,QACAyH,EAAAtH,KAAAwY,MAAAlR,EAAA2iB,GAGArY,EAAAA,EAAAI,MAGA,OAAA1K,GAGA2f,EAAAoD,QAAA,SAAA7V,EAAA1N,GACAA,EAAAA,GAAA,GAEA,IAOAwjB,EAPAC,EAAA/qB,KACA+W,EAAA7B,GAAA6V,EAAA/V,GACAgW,EAAA1jB,EACA0Q,EAAAgT,EAAAhT,QACAiT,EAAAD,EAAAE,QACAC,EAAAH,EAAAG,cACArT,EAAAkT,EAAAlT,gBAEArH,EAAAwH,GAAAyP,GAAAqD,EAAA1Z,GAAA,CACAjM,KAAAkC,EAAAlC,MAAA,OACA2Q,MAAA,EACA+B,iBAAA,EACA/Q,KAAAgQ,EACAvL,UAAA,OACAD,SAAAjE,EAAAiE,UAAArF,KAAAiO,KAAA4C,GAAAiB,GAAA,SAAAA,EAAAA,EAAAjR,KAAAgkB,EAAAvW,QAAAuW,EAAA3V,cAAAzJ,EACAuf,QAAA,WAGA,GAFAH,EAAAvE,SAEAsE,EAAA,CACA,IAAAvf,EAAAjE,EAAAiE,UAAArF,KAAAiO,KAAA4C,GAAAiB,GAAA,SAAAA,EAAAA,EAAAjR,KAAAgkB,EAAAvW,QAAAuW,EAAA3V,aACA3E,EAAAsC,OAAAxH,GAAA+K,GAAA7F,EAAAlF,EAAA,EAAA,GAAAqF,OAAAH,EAAA+D,OAAA,GAAA,GACAsW,EAAA,EAGAG,GAAAA,EAAAjS,MAAAvI,EAAA0a,GAAA,MAEA7jB,IAEA,OAAAwQ,EAAArH,EAAAG,OAAA,GAAAH,GAGAgX,EAAA2D,YAAA,SAAAC,EAAAC,EAAAhkB,GACA,OAAAtH,KAAA6qB,QAAAS,EAAAja,GAAA,CACA2G,QAAA,CACAjR,KAAAmO,GAAAlV,KAAAqrB,KAEA/jB,KAGAmgB,EAAA7f,OAAA,WACA,OAAA5H,KAAAyV,SAGAgS,EAAA8D,UAAA,SAAAC,GAKA,YAJA,IAAAA,IACAA,EAAAxrB,KAAAwU,OAGA0H,GAAAlc,KAAAkV,GAAAlV,KAAAwrB,KAGA/D,EAAAgE,cAAA,SAAAC,GAKA,YAJA,IAAAA,IACAA,EAAA1rB,KAAAwU,OAGA0H,GAAAlc,KAAAkV,GAAAlV,KAAA0rB,GAAA,IAGAjE,EAAAkE,aAAA,SAAA7rB,GACA,OAAA0lB,UAAAnlB,OAAAL,KAAAkmB,KAAApmB,GAAA,GAAAE,KAAAyrB,cAAAzrB,KAAAwU,MAAA7I,IAGA8b,EAAAmE,cAAA,SAAArR,EAAAsR,EAAAhC,QACA,IAAAA,IACAA,EAAA,GAOA,IAJA,IAEAznB,EAFAgQ,EAAApS,KAAAmjB,OACAhM,EAAAnX,KAAAmX,OAGA/E,GACAA,EAAAY,QAAA6W,IACAzX,EAAAY,QAAAuH,EACAnI,EAAAU,MAAAyH,GAGAnI,EAAAA,EAAAI,MAGA,GAAAqZ,EACA,IAAAzpB,KAAA+U,EACAA,EAAA/U,IAAAynB,IACA1S,EAAA/U,IAAAmY,GAKA,OAAA1H,GAAA7S,OAGAynB,EAAAd,WAAA,WACA,IAAAvU,EAAApS,KAAAmjB,OAGA,IAFAnjB,KAAAoW,MAAA,EAEAhE,GACAA,EAAAuU,aACAvU,EAAAA,EAAAI,MAGA,OAAA8U,EAAAve,UAAA4d,WAAAzN,KAAAlZ,OAGAynB,EAAAqE,MAAA,SAAAC,QACA,IAAAA,IACAA,GAAA,GAMA,IAHA,IACA/kB,EADAoL,EAAApS,KAAAmjB,OAGA/Q,GACApL,EAAAoL,EAAAI,MACAxS,KAAAmC,OAAAiQ,GACAA,EAAApL,EAKA,OAFAhH,KAAAkS,MAAAlS,KAAAwU,MAAAxU,KAAAyT,OAAAzT,KAAA2lB,OAAA,GACAoG,IAAA/rB,KAAAmX,OAAA,IACAtE,GAAA7S,OAGAynB,EAAAtU,cAAA,SAAArT,GACA,IAIAoH,EACAT,EACAsL,EANAoG,EAAA,EACA9T,EAAArE,KACAoS,EAAA/N,EAAA+kB,MACAX,EAAA/c,EAKA,GAAA8Z,UAAAnlB,OACA,OAAAgE,EAAA+Q,WAAA/Q,EAAAkP,QAAA,EAAAlP,EAAAkH,WAAAlH,EAAA8O,kBAAA9O,EAAAiiB,YAAAxmB,EAAAA,IAGA,GAAAuE,EAAA4O,OAAA,CAGA,IAFAlB,EAAA1N,EAAA0N,OAEAK,GACAlL,EAAAkL,EAAAG,MACAH,EAAAa,QAAAb,EAAAe,iBACA1M,EAAA2L,EAAAY,QAEAyV,GAAApkB,EAAAkR,OAAAnD,EAAAiB,MAAAhP,EAAA+R,OACA/R,EAAA+R,MAAA,EACArB,GAAA1Q,EAAA+N,EAAA3L,EAAA2L,EAAA+C,OAAA,GAAAiB,MAAA,GAEAqS,EAAAhiB,EAGAA,EAAA,GAAA2L,EAAAiB,MACA8E,GAAA1R,IAEAsL,IAAA1N,EAAA6N,KAAAH,GAAAA,EAAAwC,qBACAlQ,EAAA2O,QAAAvM,EAAApC,EAAAgP,IACAhP,EAAAmQ,OAAA/N,EACApC,EAAAoP,QAAAhN,GAGApC,EAAAunB,eAAAnlB,GAAA,GAAA,UACAgiB,EAAA,GAGArW,EAAAU,KAAAqF,GAAA/F,EAAAiB,MAAA8E,EAAA/F,EAAAU,MACAV,EAAAlL,EAGAoP,GAAAjS,EAAAA,IAAAiF,GAAAjF,EAAAmQ,MAAA2D,EAAA9T,EAAAmQ,MAAA2D,EAAA,EAAA,GAEA9T,EAAA4O,OAAA,EAGA,OAAA5O,EAAA4P,OAGA4C,EAAAmV,WAAA,SAAAjlB,GAOA,GANAuC,EAAA+J,MACAxC,GAAAvH,EAAAyK,GAAAhN,EAAAuC,IAEAK,EAAAqM,GAAAC,OAGAD,GAAAC,OAAApH,GAAA,CACAA,IAAA7D,EAAAC,WAAA,IACA,IAAAmH,EAAA9I,EAAA6Z,OACA,KAAA/Q,IAAAA,EAAAiB,MAAArI,EAAAC,WAAA+K,GAAArL,WAAAtK,OAAA,EAAA,CACA,KAAA+R,IAAAA,EAAAiB,KACAjB,EAAAA,EAAAI,MAGAJ,GAAA4D,GAAAiM,WAKApL,EA7oBA,CA8oBAqO,IAEA7T,GAAAwF,GAAA9N,UAAA,CACAqN,MAAA,EACA8S,UAAA,EACAC,SAAA,IAGA,IAkIAqB,GAlIAyB,GAAA,SAAA9c,EAAA5M,EAAAkE,EAAAC,EAAAwlB,EAAAC,EAAAC,GACA,IAGA3L,EACA4L,EACA1L,EACA2L,EACAC,EACAC,EACAC,EACA3kB,EAVA4kB,EAAA,IAAAxO,GAAAle,KAAA8V,IAAA3G,EAAA5M,EAAA,EAAA,EAAAoqB,GAAA,KAAAT,GACA5T,EAAA,EACAsU,EAAA,EA2BA,IAlBAF,EAAApkB,EAAA7B,EACAimB,EAAAG,EAAAnmB,EACAD,GAAA,IAGAgmB,IAFA/lB,GAAA,IAEA7B,QAAA,cACA6B,EAAA8U,GAAA9U,IAGAylB,IAEAA,EADArkB,EAAA,CAAArB,EAAAC,GACAyI,EAAA5M,GACAkE,EAAAqB,EAAA,GACApB,EAAAoB,EAAA,IAGAukB,EAAA5lB,EAAA0K,MAAA7D,KAAA,GAEAmT,EAAAnT,GAAA+K,KAAA3R,IACA4lB,EAAA7L,EAAA,GACA8L,EAAA7lB,EAAAkd,UAAAtL,EAAAmI,EAAAnI,OAEAqI,EACAA,GAAAA,EAAA,GAAA,EACA,UAAA4L,EAAAhV,QAAA,KACAoJ,EAAA,GAGA2L,IAAAD,EAAAO,OACAJ,EAAAtb,WAAAmb,EAAAO,EAAA,KAAA,EACAF,EAAA5W,IAAA,CACAtD,MAAAka,EAAA5W,IACA1T,EAAAmqB,GAAA,IAAAK,EAAAL,EAAA,IACA7Q,EAAA8Q,EACArlB,EAAA,MAAAmlB,EAAAhV,OAAA,GAAApG,WAAAob,EAAA/U,OAAA,KAAA,MAAA+U,EAAAhV,OAAA,IAAA,EAAA,GAAApG,WAAAob,GAAAE,EACAM,EAAAnM,GAAAA,EAAA,EAAAza,KAAAgK,MAAA,GAEAoI,EAAAhL,GAAA2T,WAYA,OARAyL,EAAAvlB,EAAAmR,EAAA5R,EAAArG,OAAAqG,EAAAkd,UAAAtL,EAAA5R,EAAArG,QAAA,GACAqsB,EAAAK,GAAAX,GAEA7e,GAAA2T,KAAAxa,IAAA+lB,KACAC,EAAAG,EAAA,GAGA7sB,KAAA8V,IAAA4W,EACAA,GAEAnP,GAAA,SAAApO,EAAA5M,EAAAkE,EAAAC,EAAA4R,EAAArJ,EAAAwO,EAAA0O,EAAAC,GACA7f,EAAA7F,KAAAA,EAAAA,EAAA4R,GAAA,EAAAnJ,EAAAF,IACA,IAGAyd,EAHAM,EAAA7d,EAAA5M,GACA0qB,EAAA,QAAAxmB,EAAAA,EAAA8F,EAAAygB,GAAAZ,EAAAjd,EAAA5M,EAAAsC,QAAA,SAAA0H,EAAA4C,EAAA,MAAA5M,EAAAgV,OAAA,KAAAhV,EAAA,MAAAA,EAAAgV,OAAA,IAAA6U,GAAAjd,EAAA5M,KAAAyqB,EACAd,EAAA3f,EAAAygB,GAAAZ,EAAAc,GAAAC,GAAAC,GAiBA,GAdA9gB,EAAA5F,MACAA,EAAA7B,QAAA,aACA6B,EAAA8U,GAAA9U,IAGA,MAAAA,EAAA4Q,OAAA,MACAoV,EAAAxb,WAAA+b,GAAA/b,WAAAxK,EAAA6Q,OAAA,KAAA,MAAA7Q,EAAA4Q,OAAA,IAAA,EAAA,IAAAc,GAAA6U,IAAA,KAEA,IAAAP,KACAhmB,EAAAgmB,IAKAO,IAAAvmB,EACA,OAAA2Q,MAAA4V,EAAAvmB,IAAA,KAAAA,IAOAsmB,KAAAzqB,KAAA4M,IAAApB,GAAAxL,EAAAmE,GACAulB,GAAA/S,KAAAlZ,KAAAmP,EAAA5M,EAAA0qB,EAAAvmB,EAAAwlB,EAAAC,GAAAnhB,EAAAmhB,aAAAC,KAPAM,EAAA,IAAAxO,GAAAle,KAAA8V,IAAA3G,EAAA5M,GAAA0qB,GAAA,EAAAvmB,GAAAumB,GAAA,GAAA,kBAAAD,EAAAK,GAAAC,GAAA,EAAApB,GACAE,IAAAM,EAAAK,GAAAX,GACA3O,GAAAiP,EAAAjP,SAAAA,EAAAzd,KAAAmP,GACAnP,KAAA8V,IAAA4W,IAuBAa,GAAA,SAAAvf,EAAA1G,EAAAmJ,EAAA6H,EAAAnJ,EAAAF,GACA,IAAAue,EAAAd,EAAAe,EAAA9sB,EAEA,GAAAgO,GAAAX,KAAA,KAAAwf,EAAA,IAAA7e,GAAAX,IAAAkP,KAAA/N,EAAAqe,EAAA7P,QAAArW,EAAA0G,GAnBA,SAAA1G,EAAAgR,EAAAnJ,EAAAF,EAAAwB,GAGA,GAFAlE,EAAAjF,KAAAA,EAAAomB,GAAApmB,EAAAmJ,EAAA6H,EAAAnJ,EAAAF,KAEAvC,EAAApF,IAAAA,EAAAqmB,OAAArmB,EAAAoR,UAAAzL,EAAA3F,IAAAwF,EAAAxF,GACA,OAAAgF,EAAAhF,GAAAomB,GAAApmB,EAAAmJ,EAAA6H,EAAAnJ,EAAAF,GAAA3H,EAGA,IACAlF,EADAyP,EAAA,GAGA,IAAAzP,KAAAkF,EACAuK,EAAAzP,GAAAsrB,GAAApmB,EAAAlF,GAAAqO,EAAA6H,EAAAnJ,EAAAF,GAGA,OAAA4C,EAKA+b,CAAAtmB,EAAA0G,GAAAsK,EAAAnJ,EAAAF,EAAAwB,GAAAA,EAAA6H,EAAArJ,KACAwB,EAAAqF,IAAA4W,EAAA,IAAAxO,GAAAzN,EAAAqF,IAAA3G,EAAAnB,EAAA,EAAA,EAAAwf,EAAA5c,OAAA4c,EAAA,EAAAA,EAAAK,UAEApd,IAAA7G,GAIA,IAHA6jB,EAAAhd,EAAAiV,UAAAjV,EAAAma,SAAA/lB,QAAAsK,IACAxO,EAAA6sB,EAAArQ,OAAA9c,OAEAM,KACA8sB,EAAAD,EAAArQ,OAAAxc,IAAA+rB,EAKA,OAAAc,GAGA3X,GAAA,SAAAA,EAAApF,EAAA1J,GACA,IAmBA+mB,EACAntB,EACAyB,EACAsqB,EACAvd,EACA4e,EACAC,EACA3e,EACAme,EACAC,EACAnV,EACA2V,EACAC,EA/BA5mB,EAAAmJ,EAAAnJ,KACAlC,EAAAkC,EAAAlC,KACA4S,EAAA1Q,EAAA0Q,QACAF,EAAAxQ,EAAAwQ,gBACA/B,EAAAzO,EAAAyO,KACAuT,EAAAhiB,EAAAgiB,SACA6E,EAAA7mB,EAAA6mB,eACAzR,EAAApV,EAAAoV,cACA3E,EAAAzQ,EAAAyQ,aACAqL,EAAA9b,EAAA8b,SACApR,EAAA1K,EAAA0K,UACAoc,EAAA9mB,EAAA8mB,WACA1X,EAAAjG,EAAAsC,KACAsb,EAAA5d,EAAA6d,SACArf,EAAAwB,EAAAma,SACA7Y,EAAAtB,EAAAsB,OACAwc,EAAAxc,GAAA,WAAAA,EAAA/P,KAAA+P,EAAAA,OAAA6Y,SAAA3b,EACAuf,EAAA,SAAA/d,EAAAge,aAAAplB,EACA0hB,EAAAta,EAAAiE,SA0BA,GAZAqW,KAAA/Y,IAAA5M,KAAAA,EAAA,QACAqL,EAAA6S,MAAAhK,GAAAlU,EAAAkG,EAAAlG,MACAqL,EAAA8S,OAAAH,EAAA3I,GAAAnB,IAAA,IAAA8J,EAAAhe,EAAAge,EAAA9X,EAAAlG,OAAA,EAEAge,GAAA3S,EAAA4S,QAAA5S,EAAA8C,UACA6P,EAAA3S,EAAA8S,OACA9S,EAAA8S,OAAA9S,EAAA6S,MACA7S,EAAA6S,MAAAF,GAGA3S,EAAAie,OAAA3D,KAAAzjB,EAAAyQ,cAEAgT,EAAA,CAMA,GAJAkD,GADA5e,EAAAJ,EAAA,GAAAQ,GAAAR,EAAA,IAAAI,QAAA,IACA/H,EAAA+H,EAAA9M,MACAurB,EAAAnc,GAAArK,EAAAkH,IACA6f,GAAAA,EAAAzd,QAAA,GAAA,GAAAiM,OAEA7E,EAiBA,GAhBAvF,GAAAhC,EAAA6d,SAAArW,GAAAgN,IAAAhW,EAAAoC,GAAA,CACArP,KAAA,UACAwJ,WAAA,EACAuG,OAAAA,EACA+F,iBAAA,EACA/B,KAAApJ,EAAAoJ,GACAiC,QAAA,KACAvM,MAAA,EACA6d,SAAAA,EACA6E,eAAAA,EACAzR,cAAAA,EACAsL,QAAA,GACAhQ,KAEAjR,EAAA,IAAA+Q,IAAAsW,GAAA3d,EAAA6d,SAAA1d,QAAA,GAAA,GAEAkH,GAGA,GAFA/Q,EAAA,IAAAqnB,IAAA3d,EAAA6d,SAAA,GAEA5X,GAAA3P,GAAA,EAEA,YADAA,IAAA0J,EAAAqE,OAAA/N,SAGA,IAAAqnB,IACA3d,EAAA6d,SAAA,QAEA,GAAAvW,GAAArB,EACA,GAAA2X,GACAD,IAAA3d,EAAA6d,SAAA,QAiBA,GAfAvnB,IAAA+Q,GAAA,GACA1V,EAAAiP,GAAA,CACA7F,WAAA,EACAxJ,KAAA,cACA+T,KAAA+B,GAAAnL,EAAAoJ,GACA+B,gBAAAA,EACAkQ,QAAA,EACAjW,OAAAA,GACA+b,GACAG,IAAA7rB,EAAAiN,EAAA9M,MAAA0rB,GAEAxb,GAAAhC,EAAA6d,SAAArW,GAAAgN,IAAAhW,EAAA7M,IAEA2E,EAAA,GAAA0J,EAAA6d,SAAA1d,QAAA,GAAA,GAEAkH,GAEA,IAAA/Q,EACA,YAFA8O,EAAApF,EAAA6d,SAAA3iB,GAUA,IAHA8E,EAAAqF,IAAA,EACAC,EAAAW,GAAA/J,EAAAoJ,IAAAA,IAAAW,EAEA/V,EAAA,EAAAA,EAAAsO,EAAA5O,OAAAM,IAAA,CAiBA,GAfAqtB,GADA7e,EAAAF,EAAAtO,IACAyO,OAAAJ,GAAAC,GAAAtO,GAAAyO,MACAqB,EAAAiV,UAAA/kB,GAAA8sB,EAAA,GACA/e,GAAAsf,EAAAhrB,KAAAyL,GAAApO,QAAAmQ,KACA8H,EAAAiW,IAAAtf,EAAAtO,EAAA4tB,EAAA1pB,QAAAsK,GAEAE,IAAA,KAAAme,EAAA,IAAAne,GAAA6N,KAAA/N,EAAA8e,GAAAH,EAAArd,EAAA6H,EAAAiW,KACA9d,EAAAqF,IAAA4W,EAAA,IAAAxO,GAAAzN,EAAAqF,IAAA3G,EAAAqe,EAAAttB,KAAA,EAAA,EAAAstB,EAAA5c,OAAA4c,EAAA,EAAAA,EAAAK,UAEAL,EAAArQ,OAAAnN,SAAA,SAAA9P,GACAutB,EAAAvtB,GAAAwsB,KAGAc,EAAAK,WAAAE,EAAA,KAGA1e,GAAA4e,EACA,IAAA7rB,KAAA0rB,EACAnf,GAAAvM,KAAAorB,EAAAD,GAAAnrB,EAAA0rB,EAAArd,EAAA6H,EAAAnJ,EAAAof,IACAf,EAAAK,WAAAE,EAAA,GAEAN,EAAArrB,GAAAsqB,EAAAnP,GAAArE,KAAAzI,EAAAtB,EAAA/M,EAAA,MAAA0rB,EAAA1rB,GAAAkW,EAAAiW,EAAA,EAAAjnB,EAAA6kB,cAKA1b,EAAAke,KAAAle,EAAAke,IAAAhuB,IAAA8P,EAAAoM,KAAA1N,EAAAsB,EAAAke,IAAAhuB,IAEA6tB,GAAA/d,EAAAqF,MACA0U,GAAA/Z,EAEAnH,EAAA2gB,aAAA9a,EAAAse,EAAAhd,EAAAwV,WAAAlf,IAEAmnB,GAAAzd,EAAAsB,OACAyY,GAAA,GAGA/Z,EAAAqF,KAAAC,IAAArH,GAAAsf,EAAAhrB,IAAA,GAGA+qB,GAAAa,GAAAne,GACAA,EAAAoe,SAAApe,EAAAoe,QAAApe,GAGAA,EAAAqW,UAAAwC,EACA7Y,EAAAkE,WAAAlE,EAAAke,KAAAle,EAAAqF,OAAAoY,GA6BAR,GAAA,SAAA5tB,EAAA2Q,EAAA9P,EAAAwO,EAAAF,GACA,OAAA1C,EAAAzM,GAAAA,EAAAoZ,KAAAzI,EAAA9P,EAAAwO,EAAAF,GAAA3C,EAAAxM,KAAAA,EAAA+E,QAAA,WAAA2W,GAAA1b,GAAAA,GAEAgvB,GAAA/f,GAAA,iDACAggB,IAAAD,GAAA,mDAAA/e,MAAA,KAEAkI,GAAA,SAAA+W,GAGA,SAAA/W,EAAAhJ,EAAA3H,EAAA0N,EAAAia,GACA,IAAAC,EAEA,iBAAA5nB,IACA0N,EAAAzJ,SAAAjE,EACAA,EAAA0N,EACAA,EAAA,MAIA,IAYA+V,EACApqB,EACAkR,EACAtB,EACAnO,EACA+sB,EACAC,EACAC,EAnBAC,GADAJ,EAAAF,EAAA9V,KAAAlZ,KAAAivB,EAAA3nB,EAAAwK,GAAAxK,KAAAtH,MACAsH,KACAiE,EAAA+jB,EAAA/jB,SACAE,EAAA6jB,EAAA7jB,MACAqM,EAAAwX,EAAAxX,gBACAkQ,EAAAsH,EAAAtH,QACAxc,EAAA8jB,EAAA9jB,UACAwG,EAAAsd,EAAAtd,UACAV,EAAAge,EAAAhe,SACAsL,EAAA0S,EAAA1S,cACAwG,EAAAkM,EAAAlM,SACArR,EAAAzK,EAAAyK,QAAAzI,EACAohB,GAAAzd,EAAAgC,IAAAnC,EAAAmC,GAAAzC,EAAAyC,EAAA,IAAA,WAAA3H,GAAA,CAAA2H,GAAAS,GAAAT,GAaA,GAJAigB,EAAAtE,SAAAF,EAAArqB,OAAA2O,GAAA0b,GAAAvc,GAAA,eAAAc,EAAA,qCAAAjE,EAAAG,iBAAA,GACA+jB,EAAAxJ,UAAA,GACAwJ,EAAAT,WAAAjjB,EAEAwG,GAAAgW,GAAAnb,EAAAtB,IAAAsB,EAAApB,GAAA,CAUA,GATAnE,EAAA4nB,EAAA5nB,MACAyjB,EAAAmE,EAAAxa,SAAA,IAAAmC,GAAA,CACA7U,KAAA,SACAsP,SAAAA,GAAA,MAEAuL,OACAkO,EAAAhZ,OAAAgZ,EAAA7Y,IAAA/I,EAAA+lB,GACAnE,EAAA/X,OAAA,EAEAhB,EACAF,GAAAT,GAAA0Z,EAAAzjB,KAAAgK,SAAA,CACAlM,KAAA,UAGA4iB,EAAA0C,EAAA1a,SAAA,SAAA/I,EAAAtG,GACA,OAAAqR,EAAAhC,SAAA,SAAAiG,EAAAgE,GACA,OAAA8Q,EAAArD,GAAAzgB,EAAAgP,EAAAgE,EAAA,IAAAtZ,EAAAqnB,SAEAhW,EAAAhC,SAAA,SAAAiG,GACA,OAAA8U,EAAArD,GAAAgD,EAAAzU,EAAA,YAEA,CAIA,GAHA1F,EAAAma,EAAArqB,OACA+uB,EAAApH,EAAA3O,GAAA2O,GAAAzZ,GAEA7B,EAAAsb,GACA,IAAA5lB,KAAA4lB,GACA8G,GAAAjqB,QAAAzC,KACAitB,IAAAA,EAAA,IACAA,EAAAjtB,GAAA4lB,EAAA5lB,IAKA,IAAAzB,EAAA,EAAAA,EAAA4P,EAAA5P,IAAA,CAGA,IAAAyB,KAFAyP,EAAA,GAEAvK,EACAynB,GAAAlqB,QAAAzC,GAAA,IACAyP,EAAAzP,GAAAkF,EAAAlF,IAIAyP,EAAAmW,QAAA,EACA5E,IAAAvR,EAAAuR,SAAAA,GACAiM,GAAAvhB,GAAA+D,EAAAwd,GACAF,EAAAzE,EAAA/pB,GACAkR,EAAAtG,UAAAmiB,GAAAniB,EAAApC,EAAA+lB,GAAAvuB,EAAAwuB,EAAAzE,GACA7Y,EAAApG,QAAAiiB,GAAAjiB,EAAAtC,EAAA+lB,GAAAvuB,EAAAwuB,EAAAzE,IAAA,GAAAwE,EAAA/Z,QAEA6S,GAAA,IAAAzX,GAAAsB,EAAApG,QACAyjB,EAAA/Z,OAAA1J,EAAAoG,EAAApG,MACAyjB,EAAAlc,QAAAvH,EACAoG,EAAApG,MAAA,GAGAsf,EAAArD,GAAAyH,EAAAtd,EAAAud,EAAAzuB,EAAAwuB,EAAAzE,IAGAK,EAAAxf,WAAAA,EAAAE,EAAA,EAAAyjB,EAAAxa,SAAA,EAGAnJ,GAAA2jB,EAAA3jB,SAAAA,EAAAwf,EAAAxf,iBAEA2jB,EAAAxa,SAAA,EAuBA,OApBA,IAAAlJ,GAAAnC,IACAmhB,GAAArhB,EAAA+lB,GAEA5lB,EAAA2gB,aAAAS,GAEAF,GAAA,GAGAzV,GAAAhD,EAAA5I,EAAA+lB,GAAAla,GAEA1N,EAAAgf,UAAA4I,EAAA3I,UACAjf,EAAAwe,QAAAoJ,EAAApJ,QAAA,IAEAhO,IAAAvM,IAAAyG,GAAAkd,EAAAlc,SAAA7C,GAAA4B,EAAAyC,QAAA7H,EAAAmL,IAAA1E,GAAAjK,EAAA+lB,KAAA,WAAAnd,EAAA/P,QACAktB,EAAAzb,QAAA,KAEAyb,EAAAte,OAAA1K,KAAAiS,IAAA,GAAA1M,KAGAmR,GAAAlH,GAAAvM,EAAA+lB,GAAAtS,GACAsS,EA5HAtmB,EAAAqP,EAAA+W,GA+HA,IAAAO,EAAAtX,EAAAlP,UA4QA,OA1QAwmB,EAAA3e,OAAA,SAAA0D,EAAAvD,EAAAC,GACA,IAIAjK,EACA2lB,EACA9G,EACAhS,EACA8U,EACAxF,EACA7d,EACAqP,EACA0O,EAZAuF,EAAA3oB,KAAAwU,MACAoU,EAAA5oB,KAAAiU,MACAyC,EAAA1W,KAAA+S,KACAY,EAAAW,EAAAsU,EAAAjd,GAAA2I,GAAA,EAAAsU,EAAAtU,EAAA3I,EAAA,EAAA2I,EAWA,GAAAoC,GAEA,GAAA/C,IAAA3T,KAAAyT,SAAAa,GAAAtD,IAAAhR,KAAA2U,UAAA3U,KAAAyT,QAAAzT,KAAAsuB,UAAAtuB,KAAA8U,OAAA,GAAAR,EAAA,EAAA,CAIA,GAHAvN,EAAA4M,EACAe,EAAA1U,KAAA0U,SAEA1U,KAAAuT,QAAA,CAGA,GAFAK,EAAA8C,EAAA1W,KAAA0T,QAEA1T,KAAAuT,SAAA,GAAAe,EAAA,EACA,OAAAtU,KAAAsU,UAAA,IAAAV,EAAAU,EAAAvD,EAAAC,GA4BA,GAzBAjK,EAAAoJ,GAAAwD,EAAAC,GAEAD,IAAAiV,GACAhD,EAAA5lB,KAAAuT,QACAxM,EAAA2P,KAEAkP,KAAAjS,EAAAC,KAEAgS,IAAAjS,EAAAC,IACA7M,EAAA2P,EACAkP,KAGA7e,EAAA2P,IAAA3P,EAAA2P,KAGAwM,EAAAljB,KAAAqjB,OAAA,EAAAuC,KAGAxC,EAAApjB,KAAAujB,OACAxc,EAAA2P,EAAA3P,GAGA2hB,EAAAlV,GAAAxT,KAAAyT,OAAAG,GAEA7M,IAAA4hB,IAAA3X,GAAAhR,KAAA2U,SACA,OAAA3U,KAGA4lB,IAAA8C,IACAhU,GAAA1U,KAAAujB,QAAAN,GAAAvO,EAAAwO,IAEAljB,KAAAsH,KAAA0hB,eAAA9F,GAAAljB,KAAAoW,QACApW,KAAAoW,MAAApF,EAAA,EACAhR,KAAA4Q,OAAAT,GAAAyD,EAAAgS,IAAA,GAAAe,aAAAvQ,MAAA,IAKA,IAAApW,KAAA2U,SAAA,CACA,GAAAiB,GAAA5V,KAAAsU,EAAA,EAAAA,EAAAvN,EAAAiK,EAAAD,GAEA,OADA/Q,KAAAyT,OAAA,EACAzT,KAGA,GAAA0W,IAAA1W,KAAA+S,KACA,OAAA/S,KAAA4Q,OAAA0D,EAAAvD,EAAAC,GAkBA,GAdAhR,KAAAyT,OAAAE,EACA3T,KAAAwU,MAAAzN,GAEA/G,KAAA4S,MAAA5S,KAAAqT,MACArT,KAAA4S,KAAA,EACA5S,KAAA2Q,MAAA,GAGA3Q,KAAAqF,MAAAA,GAAA+d,GAAApjB,KAAAsjB,OAAAvc,EAAA2P,GAEA1W,KAAA0uB,QACA1uB,KAAAqF,MAAAA,EAAA,EAAAA,GAGA0B,IAAA4hB,IAAA5X,IACAwL,GAAAvc,KAAA,WAEAA,KAAAyT,SAAAE,GACA,OAAA3T,KAMA,IAFA0sB,EAAA1sB,KAAA8V,IAEA4W,GACAA,EAAAnmB,EAAAlB,EAAAqnB,EAAAltB,GACAktB,EAAAA,EAAAla,MAGAkC,GAAAA,EAAA9D,OAAA0D,EAAA,EAAAA,GAAAvN,GAAAmc,GAAA,KAAAxO,EAAA3B,KAAA1N,EAAA0L,EAAAC,IAAAhR,KAAAsuB,WAAAtuB,KAAA8U,OAAAR,GAEAtU,KAAA8mB,YAAA/V,IACAuD,EAAA,GAAAtU,KAAAsuB,UAAAtuB,KAAAsuB,SAAA1d,OAAA0D,GAAA,EAAAtD,GAEAuL,GAAAvc,KAAA,aAGAA,KAAAuT,SAAAqS,IAAA8C,GAAA1oB,KAAAsH,KAAA2hB,WAAAlY,GAAA/Q,KAAA+R,QAAAwK,GAAAvc,KAAA,YAEA2T,IAAA3T,KAAAiU,OAAAN,GAAA3T,KAAAyT,SAAAE,IACAW,EAAA,GAAAtU,KAAAsuB,WAAAtuB,KAAA8mB,WAAA9mB,KAAAsuB,SAAA1d,OAAA0D,GAAA,GAAA,IACAA,IAAAoC,KAAA/C,IAAA3T,KAAAiU,OAAAjU,KAAAqT,IAAA,IAAAM,GAAA3T,KAAAqT,IAAA,IAAAZ,GAAAzS,KAAA,GAEA+Q,GAAAuD,EAAA,IAAAqU,IAAAhV,IAAAgV,IACApM,GAAAvc,KAAA2T,IAAAiV,EAAA,aAAA,qBAAA,GAEA5oB,KAAAqnB,SAAA1T,EAAAiV,GAAA5oB,KAAAoV,YAAA,IAAApV,KAAAqnB,gBAjkFA,SAAA5W,EAAA6D,EAAAvD,EAAAC,GACA,IAIA0b,EACA9G,EACA8C,EANA8G,EAAA/e,EAAApL,MACAA,EAAAiP,EAAA,IAAAA,KAAA7D,EAAAuC,QAAAkD,GAAAzF,KAAAA,EAAAkE,WAAAa,GAAA/E,MAAAA,EAAA4C,IAAA,GAAA5C,EAAAyB,IAAAmB,IAAA,KAAAmC,GAAA/E,IAAA,EAAA,EACA2U,EAAA3U,EAAAiD,QACAC,EAAA,EAiBA,GAZAyR,GAAA3U,EAAA8C,UACAI,EAAAkB,GAAA,EAAApE,EAAAwD,MAAAK,GACAsR,EAAApS,GAAAG,EAAAyR,GACAsD,EAAAlV,GAAA/C,EAAAgD,OAAA2R,GACA3U,EAAA4S,OAAA,EAAAuC,IAAAvgB,EAAA,EAAAA,GAEAugB,IAAA8C,IACA8G,EAAA,EAAAnqB,EACAoL,EAAAnJ,KAAA0hB,eAAAvY,EAAAkE,UAAAlE,EAAAkW,eAIAthB,IAAAmqB,GAAAxe,GAAAP,EAAAqE,SAAAnJ,IAAA2I,GAAA7D,EAAAqE,OAAA,CACA,IAAArE,EAAAkE,UAAAiB,GAAAnF,EAAA6D,EAAAtD,EAAAD,GACA,OAYA,IATA2X,EAAAjY,EAAAqE,OACArE,EAAAqE,OAAAR,IAAAvD,EAAApF,EAAA,GACAoF,IAAAA,EAAAuD,IAAAoU,GACAjY,EAAApL,MAAAA,EACAoL,EAAAie,QAAArpB,EAAA,EAAAA,GACAoL,EAAA+D,MAAA,EACA/D,EAAAgD,OAAAE,EACA+Y,EAAAjc,EAAAqF,IAEA4W,GACAA,EAAAnmB,EAAAlB,EAAAqnB,EAAAltB,GACAktB,EAAAA,EAAAla,MAGA/B,EAAA6d,UAAAha,EAAA,GAAA7D,EAAA6d,SAAA1d,OAAA0D,GAAA,GAAA,GACA7D,EAAAqW,YAAA/V,GAAAwL,GAAA9L,EAAA,YACAkD,GAAAlD,EAAA8C,UAAAxC,GAAAN,EAAAsB,QAAAwK,GAAA9L,EAAA,aAEA6D,GAAA7D,EAAAwD,OAAAK,EAAA,IAAA7D,EAAApL,QAAAA,IACAA,GAAAoN,GAAAhC,EAAA,GAEAM,IACAwL,GAAA9L,EAAApL,EAAA,aAAA,qBAAA,GAEAoL,EAAA4W,OAAA5W,EAAA4W,eAGA5W,EAAAqE,SACArE,EAAAqE,OAAAR,GA+5EAmb,CAAAzvB,KAAAsU,EAAAvD,EAAAC,GAiHA,OAAAhR,MAGAuvB,EAAAtgB,QAAA,WACA,OAAAjP,KAAA4qB,UAGA2E,EAAA5I,WAAA,WAIA,OAHA3mB,KAAA8V,IAAA9V,KAAA2uB,IAAA3uB,KAAAsuB,SAAAtuB,KAAA8mB,UAAA9mB,KAAA2Q,MAAA3Q,KAAAqF,MAAA,EACArF,KAAA0lB,UAAA,GACA1lB,KAAA0U,UAAA1U,KAAA0U,SAAAiS,aACAqI,EAAAjmB,UAAA4d,WAAAzN,KAAAlZ,OAGAuvB,EAAA1S,KAAA,SAAA5N,EAAA3H,GAKA,QAJA,IAAAA,IACAA,EAAA,SAGA2H,GAAA3H,GAAA,QAAAA,GAEA,OADAtH,KAAA2Q,MAAA3Q,KAAA8V,IAAA,EACA9V,KAAA+R,OAAA4K,GAAA3c,MAAAA,KAGA,GAAAA,KAAA0U,SAAA,CACA,IAAAkU,EAAA5oB,KAAA0U,SAAAvB,gBAGA,OAFAnT,KAAA0U,SAAAuV,aAAAhb,EAAA3H,EAAAkjB,KAAA,IAAAA,GAAAljB,KAAAkE,WAAA2X,QAAAxG,GAAA3c,MACAA,KAAA+R,QAAA6W,IAAA5oB,KAAA0U,SAAAvB,iBAAAmD,GAAAtW,KAAAA,KAAA+S,KAAA/S,KAAA0U,SAAAT,MAAA2U,EAAA,EAAA,GACA5oB,KAGA,IAIA0vB,EACAC,EACAC,EACAvF,EACAjoB,EACAsqB,EACA/rB,EAVA+pB,EAAA1qB,KAAA4qB,SACAiF,EAAA5gB,EAAAS,GAAAT,GAAAyb,EACAoF,EAAA9vB,KAAA0lB,UACAqK,EAAA/vB,KAAA8V,IASA,KAAAxO,GAAA,QAAAA,IA7yFA,SAAA0oB,EAAAC,GAIA,IAHA,IAAAtvB,EAAAqvB,EAAA3vB,OACA8Q,EAAAxQ,IAAAsvB,EAAA5vB,OAEA8Q,GAAAxQ,KAAAqvB,EAAArvB,KAAAsvB,EAAAtvB,KAEA,OAAAA,EAAA,EAuyFAuvB,CAAAxF,EAAAmF,GAEA,MADA,QAAAvoB,IAAAtH,KAAA8V,IAAA,GACA6G,GAAA3c,MAqBA,IAlBA0vB,EAAA1vB,KAAA2uB,IAAA3uB,KAAA2uB,KAAA,GAEA,QAAArnB,IACAgF,EAAAhF,KACAlF,EAAA,GAEAyN,GAAAvI,GAAA,SAAApH,GACA,OAAAkC,EAAAlC,GAAA,KAGAoH,EAAAlF,GAGAkF,EAjWA,SAAA2H,EAAA3H,GACA,IAEAuK,EACAzP,EACAzB,EACAqd,EALA3O,EAAAJ,EAAA,GAAAQ,GAAAR,EAAA,IAAAI,QAAA,EACA8gB,EAAA9gB,GAAAA,EAAA2O,QAMA,IAAAmS,EACA,OAAA7oB,EAKA,IAAAlF,KAFAyP,EAAA/D,GAAA,GAAAxG,GAEA6oB,EACA,GAAA/tB,KAAAyP,EAIA,IAFAlR,GADAqd,EAAAmS,EAAA/tB,GAAA2N,MAAA,MACA1P,OAEAM,KACAkR,EAAAmM,EAAArd,IAAAkR,EAAAzP,GAKA,OAAAyP,EAwUAue,CAAA1F,EAAApjB,IAGA3G,EAAA+pB,EAAArqB,OAEAM,KACA,IAAAkvB,EAAAhrB,QAAA6lB,EAAA/pB,IAYA,IAAAyB,KAXAutB,EAAAG,EAAAnvB,GAEA,QAAA2G,GACAooB,EAAA/uB,GAAA2G,EACA+iB,EAAAsF,EACAC,EAAA,KAEAA,EAAAF,EAAA/uB,GAAA+uB,EAAA/uB,IAAA,GACA0pB,EAAA/iB,GAGA+iB,GACAqC,EAAAiD,GAAAA,EAAAvtB,MAGA,SAAAsqB,EAAAltB,IAAA,IAAAktB,EAAAltB,EAAAqd,KAAAza,IACA+P,GAAAnS,KAAA0sB,EAAA,cAGAiD,EAAAvtB,IAGA,QAAAwtB,IACAA,EAAAxtB,GAAA,GAOA,OADApC,KAAA2U,WAAA3U,KAAA8V,KAAAia,GAAApT,GAAA3c,MACAA,MAGAiY,EAAAyP,GAAA,SAAAzY,EAAA3H,GACA,OAAA,IAAA2Q,EAAAhJ,EAAA3H,EAAAke,UAAA,KAGAvN,EAAAsB,KAAA,SAAAtK,EAAA3H,GACA,OAAAmQ,GAAA,EAAA+N,YAGAvN,EAAA6P,YAAA,SAAArc,EAAAgR,EAAA/E,EAAA7J,GACA,OAAA,IAAAoK,EAAAwE,EAAA,EAAA,CACA3E,iBAAA,EACA/B,MAAA,EACAvK,WAAA,EACAC,MAAAA,EACA0c,WAAA1L,EACA4T,kBAAA5T,EACA2L,iBAAA1Q,EACA4Y,wBAAA5Y,EACAgF,cAAA7O,KAIAoK,EAAA0P,OAAA,SAAA1Y,EAAA2Y,EAAAC,GACA,OAAApQ,GAAA,EAAA+N,YAGAvN,EAAAgN,IAAA,SAAAhW,EAAA3H,GAGA,OAFAA,EAAAiE,SAAA,EACAjE,EAAA8d,cAAA9d,EAAAmP,OAAA,GACA,IAAAwB,EAAAhJ,EAAA3H,IAGA2Q,EAAAgS,aAAA,SAAAhb,EAAAob,EAAAC,GACA,OAAAhhB,EAAA2gB,aAAAhb,EAAAob,EAAAC,IAGArS,EA5YA,CA6YAiN,IAEA7T,GAAA4G,GAAAlP,UAAA,CACA6hB,SAAA,GACAja,MAAA,EACA2d,SAAA,EACAK,IAAA,EACAE,QAAA,IAGAhf,GAAA,uCAAA,SAAA3P,GACA+X,GAAA/X,GAAA,WACA,IAAA6qB,EAAA,IAAAlU,GACAa,EAAAa,GAAAW,KAAAsM,UAAA,GAGA,OADA9N,EAAAlI,OAAA,kBAAAtP,EAAA,EAAA,EAAA,EAAA,GACA6qB,EAAA7qB,GAAA8Y,MAAA+R,EAAArT,OAIA,IAAA0V,GAAA,SAAAje,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAnB,GAAAlO,GAEAqtB,GAAA,SAAAhe,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAnB,GAAAlO,IAEAotB,GAAA,SAAA/d,EAAAnB,EAAAlO,EAAAkC,GACA,OAAAmN,EAAAnB,GAAAhM,EAAA+qB,GAAAjtB,IAEAywB,GAAA,SAAAphB,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAqhB,aAAAxiB,EAAAlO,IAEAie,GAAA,SAAA5O,EAAAnB,GACA,OAAAzB,EAAA4C,EAAAnB,IAAAmf,GAAA1gB,EAAA0C,EAAAnB,KAAAmB,EAAAqhB,aAAAD,GAAAnD,IAEAE,GAAA,SAAAjoB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAA8D,KAAAgK,MAAA,KAAAlO,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,IAAA,IAAArD,IAEAqrB,GAAA,SAAAhoB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,KAAAJ,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,GAAArD,IAEA2qB,GAAA,SAAAtnB,EAAArD,GACA,IAAA0qB,EAAA1qB,EAAA8T,IACA4F,EAAA,GAEA,IAAArW,GAAArD,EAAAsG,EACAoT,EAAA1Z,EAAAsG,OACA,GAAA,IAAAjD,GAAArD,EAAA6qB,EACAnR,EAAA1Z,EAAA6qB,MACA,CACA,KAAAH,GACAhR,EAAAgR,EAAAtqB,GAAAsqB,EAAAI,EAAAJ,EAAAI,EAAAJ,EAAAhR,EAAAgR,EAAAvlB,EAAA9B,GAAAa,KAAAgK,MAAA,KAAAwc,EAAAhR,EAAAgR,EAAAvlB,EAAA9B,IAAA,KAAAqW,EACAgR,EAAAA,EAAAla,MAGAkJ,GAAA1Z,EAAAmF,EAGAnF,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAAsZ,EAAA1Z,IAEAqb,GAAA,SAAAhY,EAAArD,GAGA,IAFA,IAAA0qB,EAAA1qB,EAAA8T,IAEA4W,GACAA,EAAAnmB,EAAAlB,EAAAqnB,EAAAltB,GACAktB,EAAAA,EAAAla,OAGAkL,GAAA,SAAAD,EAAAhN,EAAAtB,EAAAnB,GAIA,IAHA,IACAhH,EADA0lB,EAAA1sB,KAAA8V,IAGA4W,GACA1lB,EAAA0lB,EAAAla,MACAka,EAAAtqB,IAAA4L,GAAA0e,EAAAjP,SAAAA,EAAAhN,EAAAtB,GACAud,EAAA1lB,GAGAwW,GAAA,SAAAxP,GAKA,IAJA,IACAyiB,EACAzpB,EAFA0lB,EAAA1sB,KAAA8V,IAIA4W,GACA1lB,EAAA0lB,EAAAla,MAEAka,EAAAtqB,IAAA4L,IAAA0e,EAAAgE,IAAAhE,EAAAgE,KAAA1iB,EACAmE,GAAAnS,KAAA0sB,EAAA,OACAA,EAAAiE,MACAF,EAAA,GAGA/D,EAAA1lB,EAGA,OAAAypB,GAEAG,GAAA,SAAAzhB,EAAAnB,EAAAlO,EAAAkC,GACAA,EAAA6uB,KAAA1hB,EAAAnB,EAAAhM,EAAA8qB,EAAA5T,KAAAlX,EAAAyO,MAAA3Q,EAAAkC,EAAA8uB,IAAA9uB,IAEA4sB,GAAA,SAAA7c,GAOA,IANA,IACA/K,EACA+pB,EACAC,EACAC,EAJAvE,EAAA3a,EAAA+D,IAMA4W,GAAA,CAIA,IAHA1lB,EAAA0lB,EAAAla,MACAue,EAAAC,EAEAD,GAAAA,EAAAG,GAAAxE,EAAAwE,IACAH,EAAAA,EAAAve,OAGAka,EAAAna,MAAAwe,EAAAA,EAAAxe,MAAA0e,GACAvE,EAAAna,MAAAC,MAAAka,EAEAsE,EAAAtE,GAGAA,EAAAla,MAAAue,GACAA,EAAAxe,MAAAma,EAEAuE,EAAAvE,EAGAA,EAAA1lB,EAGA+K,EAAA+D,IAAAkb,GAGA9S,GAAA,WACA,SAAAA,EAAAlX,EAAAmI,EAAA5M,EAAAkE,EAAA0qB,EAAAC,EAAApvB,EAAAkqB,EAAA2B,GACA7tB,KAAAiH,EAAAkI,EACAnP,KAAA0b,EAAAjV,EACAzG,KAAAmH,EAAAgqB,EACAnxB,KAAAoC,EAAAG,EACAvC,KAAAuG,EAAA6qB,GAAA9D,GACAttB,KAAAR,EAAAwC,GAAAhC,KACAA,KAAAilB,IAAAiH,GAAAkB,GACAptB,KAAAkxB,GAAArD,GAAA,EACA7tB,KAAAwS,MAAAxL,EAEAA,IACAA,EAAAuL,MAAAvS,MAcA,OAVAke,EAAAnV,UAEA0U,SAAA,SAAA3b,EAAA2O,EAAAtB,GACAnP,KAAA6wB,KAAA7wB,KAAA6wB,MAAA7wB,KAAAilB,IACAjlB,KAAAilB,IAAA2L,GACA5wB,KAAA8sB,EAAAhrB,EACA9B,KAAA8wB,GAAA3hB,EACAnP,KAAAyQ,MAAAA,GAGAyN,EA3BA,GA8BArO,GAAAd,GAAA,uOAAA,SAAA7O,GACA,OAAAsO,GAAAtO,GAAA,KAGAwN,GAAA2jB,SAAA3jB,GAAA4jB,UAAArZ,GACAvK,GAAA6jB,aAAA7jB,GAAA8jB,YAAA3a,GACAvN,EAAA,IAAAuN,GAAA,CACA2Q,cAAA,EACAlW,SAAAhG,EACAqH,oBAAA,EACA3P,GAAA,OACAuR,mBAAA,IAEAvJ,EAAAmhB,aAAApL,GACA,IAAA3R,GAAA,CACA1K,eAAA,WACA,IAAA,IAAA+sB,EAAAjM,UAAAnlB,OAAAqxB,EAAA,IAAAxkB,MAAAukB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,GAAAnM,UAAAmM,GAGAD,EAAA1hB,SAAA,SAAAzK,GACA,OAAAwX,GAAAxX,OAGAmP,SAAA,SAAApN,GACA,OAAA,IAAAuP,GAAAvP,IAEAijB,YAAA,SAAAtb,EAAAqb,GACA,OAAAhhB,EAAAihB,YAAAtb,EAAAqb,IAEAsH,YAAA,SAAAziB,EAAAnB,EAAA6jB,EAAAC,GACAxlB,EAAA6C,KAAAA,EAAAO,GAAAP,GAAA,IAEA,IAAA4iB,EAAAtiB,GAAAN,GAAA,IAAA0O,IACAmU,EAAAH,EAAAzgB,GAAAH,GAGA,MADA,WAAA4gB,IAAAA,EAAA,IACA1iB,EAAAnB,EAEAgkB,GAAArjB,GAAAX,IAAAW,GAAAX,GAAA6P,KAAAkU,GAAA5iB,EAAAnB,EAAA6jB,EAAAC,IAFA,SAAA9jB,EAAA6jB,EAAAC,GACA,OAAAE,GAAArjB,GAAAX,IAAAW,GAAAX,GAAA6P,KAAAkU,GAAA5iB,EAAAnB,EAAA6jB,EAAAC,KADA3iB,GAIA8iB,YAAA,SAAA9iB,EAAAnB,EAAA6jB,GAGA,IAFA1iB,EAAAO,GAAAP,IAEA9O,OAAA,EAAA,CACA,IAAA6xB,EAAA/iB,EAAA+Q,KAAA,SAAAjZ,GACA,OAAA1C,GAAA0tB,YAAAhrB,EAAA+G,EAAA6jB,MAEAthB,EAAA2hB,EAAA7xB,OACA,OAAA,SAAAP,GAGA,IAFA,IAAAa,EAAA4P,EAEA5P,KACAuxB,EAAAvxB,GAAAb,IAKAqP,EAAAA,EAAA,IAAA,GAEA,IAAA8N,EAAAtO,GAAAX,GACA1K,EAAAmM,GAAAN,GACA/M,EAAAkB,EAAA+L,UAAA/L,EAAA+L,QAAA2O,SAAA,IAAAhQ,IAAAA,EACAke,EAAAjP,EAAA,SAAAnd,GACA,IAAAsC,EAAA,IAAA6a,EACArT,EAAAkM,IAAA,EACA1T,EAAA8a,KAAA/N,EAAA0iB,EAAA/xB,EAAA+xB,EAAA/xB,EAAA8J,EAAA,EAAA,CAAAuF,IACA/M,EAAAwO,OAAA,EAAAxO,GACAwH,EAAAkM,KAAAuH,GAAA,EAAAzT,IACAtG,EAAA2hB,IAAA9V,EAAA/M,GAEA,OAAA6a,EAAAiP,EAAA,SAAApsB,GACA,OAAAosB,EAAA/c,EAAA/M,EAAAyvB,EAAA/xB,EAAA+xB,EAAA/xB,EAAAwD,EAAA,KAGA6uB,WAAA,SAAAljB,GACA,OAAA3F,EAAAihB,YAAAtb,GAAA,GAAA5O,OAAA,GAEAiR,SAAA,SAAAxR,GAEA,OADAA,GAAAA,EAAAsF,OAAAtF,EAAAsF,KAAAkU,GAAAxZ,EAAAsF,KAAAkG,EAAAlG,OACAsM,GAAApG,EAAAxL,GAAA,KAEAyF,OAAA,SAAAzF,GACA,OAAA4R,GAAA1G,EAAAlL,GAAA,KAEAsyB,eAAA,SAAAC,GACA,IAAAnyB,EAAAmyB,EAAAnyB,KACAoyB,EAAAD,EAAAC,OACAC,EAAAF,EAAAE,QACAjhB,EAAA+gB,EAAA/gB,SACAkhB,EAAAH,EAAAG,gBACAD,GAAA,IAAAxiB,MAAA,KAAAC,SAAA,SAAAyiB,GACA,OAAAA,IAAA9jB,GAAA8jB,KAAA/kB,GAAA+kB,IAAAtkB,GAAAjO,EAAA,oBAAAuyB,EAAA,eAGA7jB,GAAA1O,GAAA,SAAA+O,EAAA3H,EAAAyjB,GACA,OAAAuH,EAAA5iB,GAAAT,GAAAoC,GAAA/J,GAAA,GAAAgK,GAAAyZ,IAGAyH,IACA3b,GAAA9N,UAAA7I,GAAA,SAAA+O,EAAA3H,EAAA0N,GACA,OAAAhV,KAAAsd,IAAA1O,GAAA1O,GAAA+O,EAAAvC,EAAApF,GAAAA,GAAA0N,EAAA1N,IAAA,GAAAtH,MAAAgV,MAIAhQ,aAAA,SAAA9E,EAAAkF,GACAsd,GAAAxiB,GAAAoZ,GAAAlU,IAEAF,UAAA,SAAAE,EAAAoe,GACA,OAAAgC,UAAAnlB,OAAAiZ,GAAAlU,EAAAoe,GAAAd,IAEAoH,QAAA,SAAA9mB,GACA,OAAAsG,EAAAwgB,QAAA9mB,IAEA0vB,WAAA,SAAAprB,EAAAqrB,QACA,IAAArrB,IACAA,EAAA,IAGA,IACA8K,EACApL,EAFA+jB,EAAA,IAAAlU,GAAAvP,GAWA,IARAyjB,EAAAxW,kBAAA5H,EAAArF,EAAAiN,mBAEAjL,EAAAnH,OAAA4oB,GAEAA,EAAA7Y,IAAA,EACA6Y,EAAAvW,MAAAuW,EAAAtX,OAAAnK,EAAAkL,MACApC,EAAA9I,EAAA6Z,OAEA/Q,GACApL,EAAAoL,EAAAI,OAEAmgB,IAAAvgB,EAAAW,MAAAX,aAAA6F,IAAA7F,EAAA9K,KAAA6gB,aAAA/V,EAAAwY,SAAA,IACA7V,GAAAgW,EAAA3Y,EAAAA,EAAAY,OAAAZ,EAAA+C,QAGA/C,EAAApL,EAKA,OAFA+N,GAAAzL,EAAAyhB,EAAA,GAEAA,GAEA6H,MAAA,CACAC,KA5oFA,SAAAA,EAAA1sB,EAAAgS,EAAArY,GACA,IAAAgzB,EAAA3a,EAAAhS,EACA,OAAA8G,EAAA9G,GAAAmV,GAAAnV,EAAA0sB,EAAA,EAAA1sB,EAAA9F,QAAA8X,GAAAD,GAAApY,GAAA,SAAAA,GACA,OAAAgzB,GAAAhzB,EAAAqG,GAAA2sB,GAAAA,EAAA3sB,MA0oFA4sB,SAvoFA,SAAAA,EAAA5sB,EAAAgS,EAAArY,GACA,IAAAgzB,EAAA3a,EAAAhS,EACA6sB,EAAA,EAAAF,EACA,OAAA7lB,EAAA9G,GAAAmV,GAAAnV,EAAA4sB,EAAA,EAAA5sB,EAAA9F,OAAA,GAAA8X,GAAAD,GAAApY,GAAA,SAAAA,GAEA,OAAAqG,IADArG,GAAAkzB,GAAAlzB,EAAAqG,GAAA6sB,GAAAA,GAAA,GACAF,EAAAE,EAAAlzB,EAAAA,OAmoFAuZ,WAAAA,GACAjR,OAAAA,GACAwS,KAAAA,GACAqY,UAzpFA,SAAA9sB,EAAAgS,EAAArY,GACA,OAAA6b,GAAAxV,EAAAgS,EAAA,EAAA,EAAArY,IAypFAsY,QAAAA,GACAnQ,MA51FA,SAAA9B,EAAAgS,EAAArY,GACA,OAAAoY,GAAApY,GAAA,SAAAuC,GACA,OAAAwS,GAAA1O,EAAAgS,EAAA9V,OA21FAud,WAAAA,GACAlQ,QAAAA,GACAwjB,SAx0FA,SAAApzB,GAEA,OADAA,EAAA4P,GAAA5P,GAAA,IAAAqO,GAAA,kBAAA,GACA,SAAA9L,GACA,IAAA8wB,EAAArzB,EAAAszB,SAAAtzB,EAAAuzB,eAAAvzB,EACA,OAAA4P,GAAArN,EAAA8wB,EAAAha,iBAAAga,EAAAA,IAAArzB,EAAAqO,GAAA,kBAAA1E,EAAA6pB,cAAA,OAAAxzB,KAq0FA6b,SAAAA,GACA4X,KAhrFA,WACA,IAAA,IAAAC,EAAAhO,UAAAnlB,OAAAozB,EAAA,IAAAvmB,MAAAsmB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,GAAAlO,UAAAkO,GAGA,OAAA,SAAA5zB,GACA,OAAA2zB,EAAAE,QAAA,SAAAtxB,EAAA6f,GACA,OAAAA,EAAA7f,KACAvC,KAyqFA8zB,QAtqFA,SAAA9xB,EAAA+vB,GACA,OAAA,SAAA/xB,GACA,OAAAgC,EAAAoP,WAAApR,KAAA+xB,GAAAzZ,GAAAtY,MAqqFA+zB,YAnnFA,SAAAA,EAAAptB,EAAAC,EAAAoW,EAAAgX,GACA,IAAAhyB,EAAAuV,MAAA5Q,EAAAC,GAAA,EAAA,SAAAtE,GACA,OAAA,EAAAA,GAAAqE,EAAArE,EAAAsE,GAGA,IAAA5E,EAAA,CACA,IAEAM,EACAzB,EACAozB,EACAxjB,EACAyjB,EANAC,EAAA3nB,EAAA7F,GACAytB,EAAA,GASA,IAFA,IAAApX,IAAAgX,EAAA,KAAAhX,EAAA,MAEAmX,EACAxtB,EAAA,CACArE,EAAAqE,GAEAC,EAAA,CACAtE,EAAAsE,QAEA,GAAAuG,EAAAxG,KAAAwG,EAAAvG,GAAA,CAKA,IAJAqtB,EAAA,GACAxjB,EAAA9J,EAAApG,OACA2zB,EAAAzjB,EAAA,EAEA5P,EAAA,EAAAA,EAAA4P,EAAA5P,IACAozB,EAAAvzB,KAAAqzB,EAAAptB,EAAA9F,EAAA,GAAA8F,EAAA9F,KAGA4P,IAEAzO,EAAA,SAAAM,GACAA,GAAAmO,EACA,IAAA5P,EAAAuF,KAAAC,IAAA6tB,IAAA5xB,GACA,OAAA2xB,EAAApzB,GAAAyB,EAAAzB,IAGAmc,EAAApW,OACAotB,IACArtB,EAAAqH,GAAAb,EAAAxG,GAAA,GAAA,GAAAA,IAGA,IAAAstB,EAAA,CACA,IAAA3xB,KAAAsE,EACA6W,GAAArE,KAAAgb,EAAAztB,EAAArE,EAAA,MAAAsE,EAAAtE,IAGAN,EAAA,SAAAM,GACA,OAAAib,GAAAjb,EAAA8xB,KAAAD,EAAAxtB,EAAArE,EAAAqE,KAKA,OAAAyR,GAAA4E,EAAAhb,IA4jFAsX,QAAAA,IAEA+a,QAAAvmB,GACAwmB,QAAAxlB,GACAylB,OAAAre,GACAgW,WAAAnV,GAAAmV,WACAuG,QAAA5jB,GACA2lB,eAAAhrB,EACAvE,KAAA,CACAmZ,UAAAA,GACAtY,QAAA0I,GACA2J,MAAAA,GACApB,SAAAA,GACAqO,UAAAA,GACAqP,SAAA9kB,GACA0C,sBAAAA,GACAqiB,mBAAA,SAAA10B,GACA,OAAAuJ,EAAAvJ,KAKA+P,GAAA,+CAAA,SAAA3P,GACA,OAAAkP,GAAAlP,GAAA+X,GAAA/X,MAGA8V,GAAAsH,IAAAzG,GAAAmV,YAEApiB,EAAAwF,GAAAsY,GAAA,GAAA,CACAnc,SAAA,IAGA,IAAAkpB,GAAA,SAAAjH,EAAAjrB,GAGA,IAFA,IAAAmqB,EAAAc,EAAA1X,IAEA4W,GAAAA,EAAAtqB,IAAAG,GAAAmqB,EAAAgE,KAAAnuB,GAAAmqB,EAAAK,KAAAxqB,GACAmqB,EAAAA,EAAAla,MAGA,OAAAka,GAwBAgI,GAAA,SAAAx0B,EAAAud,GACA,MAAA,CACAvd,KAAAA,EACAyd,QAAA,EACAT,KAAA,SAAA/N,EAAA7H,EAAAmJ,GACAA,EAAAoe,QAAA,SAAApe,GACA,IAAAkkB,EAAAvyB,EAYA,GAVAkK,EAAAhF,KACAqtB,EAAA,GAEA9kB,GAAAvI,GAAA,SAAApH,GACA,OAAAy0B,EAAAz0B,GAAA,KAGAoH,EAAAqtB,GAGAlX,EAAA,CAGA,IAAArb,KAFAuyB,EAAA,GAEArtB,EACAqtB,EAAAvyB,GAAAqb,EAAAnW,EAAAlF,IAGAkF,EAAAqtB,GA/CA,SAAAlkB,EAAAmkB,GACA,IACAxyB,EACAzB,EACA+rB,EAHAzd,EAAAwB,EAAAma,SAKA,IAAAxoB,KAAAwyB,EAGA,IAFAj0B,EAAAsO,EAAA5O,OAEAM,MACA+rB,EAAAjc,EAAAiV,UAAA/kB,GAAAyB,MAEAsqB,EAAAA,EAAAltB,KACAktB,EAAA5W,MACA4W,EAAA+H,GAAA/H,EAAAtqB,IAGAsqB,GAAAA,EAAAjP,UAAAiP,EAAAjP,SAAAmX,EAAAxyB,GAAAqO,EAAAxB,EAAAtO,GAAAyB,IAiCAyyB,CAAApkB,EAAAnJ,OAMA/C,GAAA6K,GAAA1K,eAAA,CACAxE,KAAA,OACAgd,KAAA,SAAA/N,EAAA7H,EAAAmJ,EAAA6H,EAAArJ,GACA,IAAA7M,EAAAsqB,EAEA,IAAAtqB,KAAAkF,GACAolB,EAAA1sB,KAAAsd,IAAAnO,EAAA,gBAAAA,EAAAS,aAAAxN,IAAA,GAAA,GAAAkF,EAAAlF,GAAAkW,EAAArJ,EAAA,EAAA,EAAA7M,MACAsqB,EAAAgE,GAAAtuB,GAEApC,KAAAmd,OAAA3c,KAAA4B,KAGA,CACAlC,KAAA,WACAgd,KAAA,SAAA/N,EAAArP,GAGA,IAFA,IAAAa,EAAAb,EAAAO,OAEAM,KACAX,KAAAsd,IAAAnO,EAAAxO,EAAAwO,EAAAxO,IAAA,EAAAb,EAAAa,MAGA+zB,GAAA,aAAAha,IAAAga,GAAA,aAAAA,GAAA,OAAA9Z,MAAAxL,GACA6I,GAAAzP,QAAAqO,GAAArO,QAAAjE,GAAAiE,QAAA,QACAkB,EAAA,EACAkD,KAAAqM,KACA,IAmBA6b,GACAC,GACAC,GACAC,GACAC,GAEAC,GA4DAC,GArFAC,GAAA3S,GAAA2S,OACAC,GAAA5S,GAAA4S,OACAC,GAAA7S,GAAA6S,OACAC,GAAA9S,GAAA8S,OACAC,GAAA/S,GAAA+S,OACA9Q,GAAAjC,GAAAiC,OACA+Q,GAAAhT,GAAAgT,KACAC,GAAAjT,GAAAiT,MACAC,GAAAlT,GAAAkT,MACAC,GAAAnT,GAAAmT,MACAC,GAAApT,GAAAoT,OACAC,GAAArT,GAAAqT,QACAC,GAAAtT,GAAAsT,KACAlR,GAAApC,GAAAoC,YACAmR,GAAAvT,GAAAuT,OACAC,GAAAxT,GAAAwT,KACAC,GAAAzT,GAAAyT,KACAC,GAAA1T,GAAA0T,KAYAC,GAAA,GACAC,GAAA,IAAApwB,KAAA2F,GACA0qB,GAAArwB,KAAA2F,GAAA,IACA2qB,GAAAtwB,KAAAuwB,MAEAC,GAAA,WACAC,GAAA,yCACAC,GAAA,YACAC,GAAA,CACAC,UAAA,qBACAC,MAAA,gBACAC,MAAA,WAEAC,GAAA,SAAA5xB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAA8D,KAAAgK,MAAA,KAAAlO,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,IAAA,IAAArD,EAAAwY,EAAAxY,IAEAk1B,GAAA,SAAA7xB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAA,IAAAiD,EAAArD,EAAA6qB,EAAA3mB,KAAAgK,MAAA,KAAAlO,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,IAAA,IAAArD,EAAAwY,EAAAxY,IAEAm1B,GAAA,SAAA9xB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAAiD,EAAAa,KAAAgK,MAAA,KAAAlO,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,IAAA,IAAArD,EAAAwY,EAAAxY,EAAAsG,EAAAtG,IAEAo1B,GAAA,SAAA/xB,EAAArD,GACA,IAAAlC,EAAAkC,EAAA0Z,EAAA1Z,EAAAmF,EAAA9B,EACArD,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,KAAAtC,GAAAA,EAAA,GAAA,GAAA,KAAAkC,EAAAwY,EAAAxY,IAEAq1B,GAAA,SAAAhyB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAAiD,EAAArD,EAAA6qB,EAAA7qB,EAAAsG,EAAAtG,IAEAs1B,GAAA,SAAAjyB,EAAArD,GACA,OAAAA,EAAAijB,IAAAjjB,EAAAiF,EAAAjF,EAAAI,EAAA,IAAAiD,EAAArD,EAAAsG,EAAAtG,EAAA6qB,EAAA7qB,IAEAu1B,GAAA,SAAApoB,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAwe,MAAA3f,GAAAlO,GAEA03B,GAAA,SAAAroB,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAwe,MAAA8J,YAAAzpB,EAAAlO,IAEA43B,GAAA,SAAAvoB,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAC,MAAApB,GAAAlO,GAEA63B,GAAA,SAAAxoB,EAAAnB,EAAAlO,GACA,OAAAqP,EAAAC,MAAAwoB,OAAAzoB,EAAAC,MAAAyoB,OAAA/3B,GAEAg4B,GAAA,SAAA3oB,EAAAnB,EAAAlO,EAAAkC,EAAAqD,GACA,IAAA/B,EAAA6L,EAAAC,MACA9L,EAAAs0B,OAAAt0B,EAAAu0B,OAAA/3B,EACAwD,EAAAy0B,gBAAA1yB,EAAA/B,IAEA00B,GAAA,SAAA7oB,EAAAnB,EAAAlO,EAAAkC,EAAAqD,GACA,IAAA/B,EAAA6L,EAAAC,MACA9L,EAAA0K,GAAAlO,EACAwD,EAAAy0B,gBAAA1yB,EAAA/B,IAEA20B,GAAA,YACAC,GAAAD,GAAA,SAEAE,GAAA,SAAAp4B,EAAAq4B,GACA,IAAAvL,EAAAkI,GAAAsD,gBAAAtD,GAAAsD,iBAAAD,GAAA,gCAAA5gB,QAAA,SAAA,QAAAzX,GAAAg1B,GAAAzB,cAAAvzB,GACA,OAAA8sB,EAAAc,MAAAd,EAAAkI,GAAAzB,cAAAvzB,IAEAu4B,GAAA,SAAAA,EAAAnpB,EAAAnB,EAAAuqB,GACA,IAAAC,EAAAC,iBAAAtpB,GACA,OAAAqpB,EAAAxqB,IAAAwqB,EAAAE,iBAAA1qB,EAAAwJ,QAAAkf,GAAA,OAAAvS,gBAAAqU,EAAAE,iBAAA1qB,KAAAuqB,GAAAD,EAAAnpB,EAAAwpB,GAAA3qB,IAAAA,EAAA,IAAA,IAEA4qB,GAAA,qBAAA7oB,MAAA,KACA4oB,GAAA,SAAA3qB,EAAA6qB,EAAAC,GACA,IACApd,GADAmd,GAAA3D,IACAvH,MACAhtB,EAAA,EAEA,GAAAqN,KAAA0N,IAAAod,EACA,OAAA9qB,EAKA,IAFAA,EAAAA,EAAAsJ,OAAA,GAAA2G,cAAAjQ,EAAAuJ,OAAA,GAEA5W,OAAAi4B,GAAAj4B,GAAAqN,KAAA0N,KAEA,OAAA/a,EAAA,EAAA,MAAA,IAAAA,EAAA,KAAAA,GAAA,EAAAi4B,GAAAj4B,GAAA,IAAAqN,GAEAlJ,GAAA,WAnFA,oBAAAR,QAoFAA,OAAAud,WACAiT,GAAAxwB,OACAywB,GAAAD,GAAAjT,SACAmT,GAAAD,GAAAgE,gBACA7D,GAAAiD,GAAA,QAAA,CACAxK,MAAA,IAEAwK,GAAA,OACAF,GAAAU,GAAAV,IACAC,GAAAD,GAAA,SACA/C,GAAAvH,MAAAqL,QAAA,2DACA5D,KAAAuD,GAAA,eACA1D,GAAA,IAGAgE,GAAA,SAAAA,EAAAC,GACA,IAIAC,EAJAC,EAAAjB,GAAA,MAAAn4B,KAAAq5B,iBAAAr5B,KAAAq5B,gBAAAzpB,aAAA,UAAA,8BACA0pB,EAAAt5B,KAAAu5B,WACAC,EAAAx5B,KAAAy5B,YACAC,EAAA15B,KAAA2tB,MAAAqL,QAQA,GALAhE,GAAA2E,YAAAP,GAEAA,EAAAO,YAAA35B,MACAA,KAAA2tB,MAAAiM,QAAA,QAEAV,EACA,IACAC,EAAAn5B,KAAA65B,UACA75B,KAAA85B,UAAA95B,KAAA65B,QACA75B,KAAA65B,QAAAZ,EACA,MAAApM,SACA7sB,KAAA85B,YACAX,EAAAn5B,KAAA85B,aAcA,OAXAR,IACAE,EACAF,EAAAS,aAAA/5B,KAAAw5B,GAEAF,EAAAK,YAAA35B,OAIAg1B,GAAAgF,YAAAZ,GAEAp5B,KAAA2tB,MAAAqL,QAAAU,EACAP,GAEAc,GAAA,SAAA9qB,EAAA+qB,GAGA,IAFA,IAAAv5B,EAAAu5B,EAAA75B,OAEAM,KACA,GAAAwO,EAAAgrB,aAAAD,EAAAv5B,IACA,OAAAwO,EAAAS,aAAAsqB,EAAAv5B,KAIAy5B,GAAA,SAAAjrB,GACA,IAAAkrB,EAEA,IACAA,EAAAlrB,EAAA0qB,UACA,MAAAh2B,GACAw2B,EAAApB,GAAA/f,KAAA/J,GAAA,GAIA,OADAkrB,IAAAA,EAAAt3B,OAAAs3B,EAAAC,SAAAnrB,EAAA0qB,UAAAZ,KAAAoB,EAAApB,GAAA/f,KAAA/J,GAAA,KACAkrB,GAAAA,EAAAt3B,OAAAs3B,EAAA7yB,GAAA6yB,EAAA/0B,EAKA+0B,EALA,CACA7yB,GAAAyyB,GAAA9qB,EAAA,CAAA,IAAA,KAAA,QAAA,EACA7J,GAAA20B,GAAA9qB,EAAA,CAAA,IAAA,KAAA,QAAA,EACApM,MAAA,EACAu3B,OAAA,IAGAC,GAAA,SAAA1N,GACA,SAAAA,EAAA2N,QAAA3N,EAAA0M,aAAA1M,EAAAwM,kBAAAe,GAAAvN,KAEA4N,GAAA,SAAAtrB,EAAAnB,GACA,GAAAA,EAAA,CACA,IAAA2f,EAAAxe,EAAAwe,MAEA3f,KAAAqoB,IAAAroB,IAAAkqB,KACAlqB,EAAAiqB,IAGAtK,EAAA+M,gBACA,OAAA1sB,EAAAuJ,OAAA,EAAA,IAAA,WAAAvJ,EAAAuJ,OAAA,EAAA,KACAvJ,EAAA,IAAAA,GAGA2f,EAAA+M,eAAA1sB,EAAAwJ,QAAAkf,GAAA,OAAAvS,gBAEAwJ,EAAAgN,gBAAA3sB,KAIA4sB,GAAA,SAAApN,EAAAre,EAAAnB,EAAA6sB,EAAAn0B,EAAAo0B,GACA,IAAApO,EAAA,IAAAxO,GAAAsP,EAAA1X,IAAA3G,EAAAnB,EAAA,EAAA,EAAA8sB,EAAAxD,GAAAD,IAOA,OANA7J,EAAA1X,IAAA4W,EACAA,EAAApkB,EAAAuyB,EACAnO,EAAAG,EAAAnmB,EAEA8mB,EAAArQ,OAAA3c,KAAAwN,GAEA0e,GAEAqO,GAAA,CACAC,IAAA,EACAC,IAAA,EACAC,KAAA,GAEAC,GAAA,SAAAA,EAAAhsB,EAAAnB,EAAAlO,EAAA+xB,GACA,IASAuJ,EACArpB,EACAzO,EACA+3B,EAZAC,EAAApqB,WAAApR,IAAA,EACAy7B,GAAAz7B,EAAA,IAAAe,OAAA0W,QAAA+jB,EAAA,IAAAj7B,SAAA,KACAstB,EAAAuH,GAAAvH,MACA6N,EAAA7E,GAAAzV,KAAAlT,GACAytB,EAAA,QAAAtsB,EAAAusB,QAAAvX,cACAwX,GAAAF,EAAA,SAAA,WAAAD,EAAA,QAAA,UACAjhB,EAAA,IACAqhB,EAAA,OAAA/J,EACAgK,EAAA,MAAAhK,EAMA,OAAAA,IAAA0J,IAAAD,GAAAP,GAAAlJ,IAAAkJ,GAAAQ,GACAD,GAGA,OAAAC,IAAAK,IAAAN,EAAAH,EAAAhsB,EAAAnB,EAAAlO,EAAA,OACAu7B,EAAAlsB,EAAAqrB,QAAAD,GAAAprB,IAEA0sB,GAAA,MAAAN,IAAAlF,GAAAroB,MAAAA,EAAAnJ,QAAA,UAKA8oB,EAAA6N,EAAA,QAAA,UAAAjhB,GAAAqhB,EAAAL,EAAA1J,GACA9f,GAAA/D,EAAAnJ,QAAA,UAAA,OAAAgtB,GAAA1iB,EAAAwqB,cAAA8B,EAAAtsB,EAAAA,EAAAoqB,WAEA8B,IACAtpB,GAAA5C,EAAAkqB,iBAAA,IAAAE,YAGAxnB,GAAAA,IAAAgjB,IAAAhjB,EAAA4nB,cACA5nB,EAAAgjB,GAAA+G,OAGAx4B,EAAAyO,EAAA3C,QAEAysB,GAAAv4B,EAAAP,OAAAy4B,GAAAl4B,EAAAyD,OAAAiP,GAAAjP,KACAkJ,GAAAqrB,EAAAh4B,EAAAP,MAAAwX,KAEAshB,GAAA,MAAAN,KAAA5N,EAAA3Y,SAAAsjB,GAAAnpB,EAAA,aACA4C,IAAA5C,IAAAwe,EAAA3Y,SAAA,UACAjD,EAAA4nB,YAAAzE,IACAkG,EAAAlG,GAAAyG,GACA5pB,EAAAioB,YAAA9E,IACAvH,EAAA3Y,SAAA,WAEAwmB,GAAAK,KACAv4B,EAAAmM,GAAAsC,IACAhL,KAAAiP,GAAAjP,KACAzD,EAAAP,MAAAgP,EAAA4pB,IAIA1rB,GAAA2rB,EAAAR,EAAAE,EAAA/gB,EAAA6gB,GAAAE,EAAA/gB,EAAA6gB,EAAAE,EAAA,MAlCAF,EAAAC,EAAAlsB,EAAA0qB,UAAA2B,EAAA,QAAA,UAAArsB,EAAAwsB,GACA1rB,GAAA4rB,EAAAP,EAAAF,EAAA7gB,EAAA+gB,EAAA,IAAAF,MAmCAW,GAAA,SAAA5sB,EAAAnB,EAAA6jB,EAAAC,GACA,IAAAhyB,EAsBA,OArBAm1B,IAAAnwB,KAEAkJ,KAAA6oB,IAAA,cAAA7oB,KACAA,EAAA6oB,GAAA7oB,IAEAnJ,QAAA,OACAmJ,EAAAA,EAAA+B,MAAA,KAAA,IAIAsmB,GAAAroB,IAAA,cAAAA,GACAlO,EAAAk8B,GAAA7sB,EAAA2iB,GACAhyB,EAAA,oBAAAkO,EAAAlO,EAAAkO,GAAAlO,EAAAs5B,IAAAt5B,EAAAm8B,OAAAC,GAAA5D,GAAAnpB,EAAA+oB,KAAA,IAAAp4B,EAAAq8B,QAAA,SAEAr8B,EAAAqP,EAAAwe,MAAA3f,KAEA,SAAAlO,GAAAgyB,KAAAhyB,EAAA,IAAA+E,QAAA,YACA/E,EAAAs8B,GAAApuB,IAAAouB,GAAApuB,GAAAmB,EAAAnB,EAAA6jB,IAAAyG,GAAAnpB,EAAAnB,IAAA2B,GAAAR,EAAAnB,KAAA,YAAAA,EAAA,EAAA,IAIA6jB,MAAA/xB,EAAA,IAAAe,OAAAgE,QAAA,KAAAs2B,GAAAhsB,EAAAnB,EAAAlO,EAAA+xB,GAAAA,EAAA/xB,GAEAu8B,GAAA,SAAAltB,EAAA5M,EAAAkE,EAAAC,GACA,IAAAD,GAAA,SAAAA,EAAA,CACA,IAAArE,EAAAu2B,GAAAp2B,EAAA4M,EAAA,GACAuM,EAAAtZ,GAAAk2B,GAAAnpB,EAAA/M,EAAA,GAEAsZ,GAAAA,IAAAjV,GACAlE,EAAAH,EACAqE,EAAAiV,GACA,gBAAAnZ,IACAkE,EAAA6xB,GAAAnpB,EAAA,mBAIA,IAGArH,EACA2Y,EACA6b,EACA9P,EACA7L,EACA4b,EACAC,EACAlQ,EACAC,EACAkQ,EACAC,EACAC,EAdAjQ,EAAA,IAAAxO,GAAAle,KAAA8V,IAAA3G,EAAAwe,MAAAprB,EAAA,EAAA,EAAAoqB,IACArU,EAAA,EACAsU,EAAA,EAkCA,GApBAF,EAAApkB,EAAA7B,EACAimB,EAAAG,EAAAnmB,EACAD,GAAA,GAGA,UAFAC,GAAA,MAGAyI,EAAAwe,MAAAprB,GAAAmE,EACAA,EAAA4xB,GAAAnpB,EAAA5M,IAAAmE,EACAyI,EAAAwe,MAAAprB,GAAAkE,GAKAsa,GAFAjZ,EAAA,CAAArB,EAAAC,IAKAA,EAAAoB,EAAA,GACAw0B,GAFA71B,EAAAqB,EAAA,IAEAqJ,MAAA9D,IAAA,IACA3G,EAAAyK,MAAA9D,IAAA,IAEAhN,OAAA,CACA,KAAAogB,EAAApT,EAAAgL,KAAA3R,IACA81B,EAAA/b,EAAA,GACA8L,EAAA7lB,EAAAkd,UAAAtL,EAAAmI,EAAAnI,OAEAqI,EACAA,GAAAA,EAAA,GAAA,EACA,UAAA4L,EAAAhV,QAAA,IAAA,UAAAgV,EAAAhV,QAAA,KACAoJ,EAAA,GAGA6b,KAAAD,EAAAD,EAAA1P,MAAA,MACAJ,EAAAtb,WAAAqrB,IAAA,EACAG,EAAAH,EAAAhlB,QAAAiV,EAAA,IAAAnsB,SACAs8B,EAAA,MAAAH,EAAAllB,OAAA,KAAAklB,EAAAllB,OAAA,GAAA,KAAA,KAGAklB,EAAAA,EAAAjlB,OAAA,IAGA+U,EAAApb,WAAAsrB,GACAC,EAAAD,EAAAjlB,QAAA+U,EAAA,IAAAjsB,QACAiY,EAAAjL,EAAA4T,UAAAwb,EAAAp8B,OAEAo8B,IACAA,EAAAA,GAAAzxB,EAAAI,MAAA7I,IAAAm6B,EAEApkB,IAAA5R,EAAArG,SACAqG,GAAA+1B,EACA/P,EAAAG,GAAA4P,IAIAC,IAAAD,IACAjQ,EAAA2O,GAAAhsB,EAAA5M,EAAAg6B,EAAAE,IAAA,GAGA/P,EAAA5W,IAAA,CACAtD,MAAAka,EAAA5W,IACA1T,EAAAmqB,GAAA,IAAAK,EAAAL,EAAA,IACA7Q,EAAA8Q,EACArlB,EAAAw1B,EAAAA,EAAArQ,EAAAA,EAAAE,EACAM,EAAAnM,GAAAA,EAAA,GAAA,WAAApe,EAAA2D,KAAAgK,MAAA,IAKAwc,EAAAvlB,EAAAmR,EAAA5R,EAAArG,OAAAqG,EAAAkd,UAAAtL,EAAA5R,EAAArG,QAAA,QAEAqsB,EAAAnmB,EAAA,YAAAhE,GAAA,SAAAmE,EAAA4wB,GAAAD,GAKA,OAFA9pB,GAAA2T,KAAAxa,KAAAgmB,EAAAG,EAAA,GACA7sB,KAAA8V,IAAA4W,EACAA,GAEAkQ,GAAA,CACAC,IAAA,KACAC,OAAA,OACAxiB,KAAA,KACAyiB,MAAA,OACAljB,OAAA,OAiBAmjB,GAAA,SAAA33B,EAAArD,GACA,GAAAA,EAAAyO,OAAAzO,EAAAyO,MAAA+D,QAAAxS,EAAAyO,MAAAsC,KAAA,CACA,IAIAxQ,EACA06B,EACAt8B,EANAwO,EAAAnN,EAAAiF,EACA0mB,EAAAxe,EAAAwe,MACAtD,EAAAroB,EAAAwY,EACAlX,EAAA6L,EAAAC,MAKA,GAAA,QAAAib,IAAA,IAAAA,EACAsD,EAAAqL,QAAA,GACAiE,EAAA,OAKA,IAFAt8B,GADA0pB,EAAAA,EAAAta,MAAA,MACA1P,SAEAM,GAAA,GACA4B,EAAA8nB,EAAA1pB,GAEA01B,GAAA9zB,KACA06B,EAAA,EACA16B,EAAA,oBAAAA,EAAA21B,GAAAD,IAGAwC,GAAAtrB,EAAA5M,GAIA06B,IACAxC,GAAAtrB,EAAA8oB,IAEA30B,IACAA,EAAA81B,KAAAjqB,EAAAwrB,gBAAA,aAEAqB,GAAA7sB,EAAA,GAEA7L,EAAAwuB,QAAA,MAKAsK,GAAA,CACAc,WAAA,SAAA1P,EAAAre,EAAAnB,EAAAwuB,EAAA/rB,GACA,GAAA,gBAAAA,EAAAzO,KAAA,CACA,IAAA0qB,EAAAc,EAAA1X,IAAA,IAAAoI,GAAAsP,EAAA1X,IAAA3G,EAAAnB,EAAA,EAAA,EAAAgvB,IAOA,OANAtQ,EAAAlS,EAAAgiB,EACA9P,EAAAwE,IAAA,GACAxE,EAAAjc,MAAAA,EAEA+c,EAAArQ,OAAA3c,KAAAwN,GAEA,KAIAmvB,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAC,GAAA,GACAC,GAAA,SAAAv9B,GACA,MAAA,6BAAAA,GAAA,SAAAA,IAAAA,GAEAw9B,GAAA,SAAAnuB,GACA,IAAAouB,EAAAjF,GAAAnpB,EAAA8oB,IAEA,OAAAoF,GAAAE,GAAAJ,GAAAI,EAAAhmB,OAAA,GAAApG,MAAA/D,GAAA8S,IAAAjQ,KAEAutB,GAAA,SAAAruB,EAAAsuB,GACA,IAGA1rB,EACA0nB,EACA9E,EACA+I,EANAp6B,EAAA6L,EAAAC,OAAAK,GAAAN,GACAwe,EAAAxe,EAAAwe,MACAgQ,EAAAL,GAAAnuB,GAMA,OAAA7L,EAAA81B,KAAAjqB,EAAAS,aAAA,aAGA,iBADA+tB,EAAA,EADAhJ,EAAAxlB,EAAAyuB,UAAAC,QAAAC,cAAAH,QACA71B,EAAA6sB,EAAArsB,EAAAqsB,EAAAxtB,EAAAwtB,EAAAn1B,EAAAm1B,EAAA9H,EAAA8H,EAAAzS,IACAxhB,KAAA,KAAAy8B,GAAAQ,GACAA,IAAAR,IAAAhuB,EAAA4uB,cAAA5uB,IAAA6lB,IAAA1xB,EAAA81B,MACAzE,EAAAhH,EAAAiM,QACAjM,EAAAiM,QAAA,SACA7nB,EAAA5C,EAAAoqB,aAEApqB,EAAA4uB,eACAL,EAAA,EACAjE,EAAAtqB,EAAAsqB,YAEAzE,GAAA2E,YAAAxqB,IAGAwuB,EAAAL,GAAAnuB,GACAwlB,EAAAhH,EAAAiM,QAAAjF,EAAA8F,GAAAtrB,EAAA,WAEAuuB,IACAjE,EAAA1nB,EAAAgoB,aAAA5qB,EAAAsqB,GAAA1nB,EAAAA,EAAA4nB,YAAAxqB,GAAA6lB,GAAAgF,YAAA7qB,KAIAsuB,GAAAE,EAAAt9B,OAAA,EAAA,CAAAs9B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,KAAAA,IAEAK,GAAA,SAAA7uB,EAAA8sB,EAAAgC,EAAAC,EAAAC,EAAAC,GACA,IAeA/D,EACAgE,EAEA/4B,EAlBAhC,EAAA6L,EAAAC,MACAuuB,EAAAQ,GAAAX,GAAAruB,GAAA,GACAmvB,EAAAh7B,EAAAi7B,SAAA,EACAC,EAAAl7B,EAAAm7B,SAAA,EACAC,EAAAp7B,EAAAq7B,SAAA,EACAC,EAAAt7B,EAAAu7B,SAAA,EACA/2B,EAAA61B,EAAA,GACAr1B,EAAAq1B,EAAA,GACAx2B,EAAAw2B,EAAA,GACAn+B,EAAAm+B,EAAA,GACAmB,EAAAnB,EAAA,GACAoB,EAAApB,EAAA,GACAqB,EAAA/C,EAAAlsB,MAAA,KACAwuB,EAAArtB,WAAA8tB,EAAA,KAAA,EACAP,EAAAvtB,WAAA8tB,EAAA,KAAA,EAMAf,EAIAN,IAAAR,KAAAkB,EAAAv2B,EAAAtI,EAAA8I,EAAAnB,KAEA7B,EAAAi5B,IAAAj2B,EAAA+1B,GAAAI,GAAA32B,EAAAu2B,IAAAv2B,EAAAi3B,EAAAz2B,EAAAw2B,GAAAT,EACAE,EAFAA,GAAA/+B,EAAA6+B,GAAAI,IAAAt3B,EAAAk3B,IAAAl3B,EAAA43B,EAAAv/B,EAAAs/B,GAAAT,EAGAI,EAAAn5B,IANAi5B,GADAlE,EAAAD,GAAAjrB,IACA3H,IAAAw3B,EAAA,GAAAn6B,QAAA,KAAA05B,EAAA,IAAAlE,EAAAt3B,MAAAw7B,GACAE,EAAApE,EAAA/0B,KAAA05B,EAAA,IAAAA,EAAA,IAAAn6B,QAAA,KAAA45B,EAAA,IAAApE,EAAAC,OAAAmE,IAQAP,IAAA,IAAAA,GAAA56B,EAAA46B,QACAY,EAAAP,EAAAD,EACAS,EAAAN,EAAAD,EACAl7B,EAAAq7B,QAAAD,GAAAI,EAAAh3B,EAAAi3B,EAAA53B,GAAA23B,EACAx7B,EAAAu7B,QAAAD,GAAAE,EAAAx2B,EAAAy2B,EAAAv/B,GAAAu/B,GAEAz7B,EAAAq7B,QAAAr7B,EAAAu7B,QAAA,EAGAv7B,EAAAi7B,QAAAA,EACAj7B,EAAAm7B,QAAAA,EACAn7B,EAAA46B,SAAAA,EACA56B,EAAA24B,OAAAA,EACA34B,EAAA26B,mBAAAA,EACA9uB,EAAAwe,MAAAuK,IAAA,UAEAkG,IACAxD,GAAAwD,EAAA96B,EAAA,UAAAg7B,EAAAC,GAEA3D,GAAAwD,EAAA96B,EAAA,UAAAk7B,EAAAC,GAEA7D,GAAAwD,EAAA96B,EAAA,UAAAo7B,EAAAp7B,EAAAq7B,SAEA/D,GAAAwD,EAAA96B,EAAA,UAAAs7B,EAAAt7B,EAAAu7B,UAGA1vB,EAAAqhB,aAAA,kBAAA+N,EAAA,IAAAE,IAEAzC,GAAA,SAAA7sB,EAAA2iB,GACA,IAAAxuB,EAAA6L,EAAAC,OAAA,IAAAG,GAAAJ,GAEA,GAAA,MAAA7L,IAAAwuB,IAAAxuB,EAAAwuB,QACA,OAAAxuB,EAGA,IAKAkE,EACAlC,EACA25B,EACArH,EACAC,EACAqH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAhB,EACAE,EACAd,EACA6B,EACArzB,EACAE,EACAvE,EACAQ,EACAnB,EACA3H,EACAigC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EApCAxS,EAAAxe,EAAAwe,MACAyS,EAAA98B,EAAAs0B,OAAA,EACAwD,EAAA,KACAJ,EAAA,MACAiB,EAAA3D,GAAAnpB,EAAA+oB,KAAA,IA6KA,OA5IA1wB,EAAAlC,EAAA25B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,EACA3H,EAAAC,EAAA,EACAv0B,EAAA81B,OAAAjqB,EAAAqrB,SAAAD,GAAAprB,IACAwuB,EAAAH,GAAAruB,EAAA7L,EAAA81B,KAEA91B,EAAA81B,MACAuG,IAAAr8B,EAAAwuB,SAAA,YAAAmK,KAAAnK,GAAA3iB,EAAAS,aAAA,mBAEAouB,GAAA7uB,EAAAwwB,GAAA1D,IAAA0D,GAAAr8B,EAAA26B,kBAAA,IAAA36B,EAAA46B,OAAAP,IAGAY,EAAAj7B,EAAAi7B,SAAA,EACAE,EAAAn7B,EAAAm7B,SAAA,EAEAd,IAAAR,KACAr1B,EAAA61B,EAAA,GACAr1B,EAAAq1B,EAAA,GACAx2B,EAAAw2B,EAAA,GACAn+B,EAAAm+B,EAAA,GACAn2B,EAAAi4B,EAAA9B,EAAA,GACAr4B,EAAAo6B,EAAA/B,EAAA,GAEA,IAAAA,EAAAt9B,QACAu3B,EAAA1xB,KAAA+F,KAAAnE,EAAAA,EAAAQ,EAAAA,GACAuvB,EAAA3xB,KAAA+F,KAAAzM,EAAAA,EAAA2H,EAAAA,GACA+3B,EAAAp3B,GAAAQ,EAAAkuB,GAAAluB,EAAAR,GAAAwuB,GAAA,GACA+I,EAAAl4B,GAAA3H,EAAAg3B,GAAArvB,EAAA3H,GAAA82B,GAAA4I,EAAA,KACArH,GAAA3xB,KAAAiO,IAAAjO,KAAAiG,IAAAkzB,EAAA9I,MAEAjzB,EAAA81B,MACA5xB,GAAA+2B,GAAAA,EAAAz2B,EAAA22B,EAAAt3B,GACA7B,GAAAm5B,GAAAF,EAAAj2B,EAAAm2B,EAAAj/B,MAGA2gC,EAAAxC,EAAA,GACAsC,EAAAtC,EAAA,GACAmC,EAAAnC,EAAA,GACAoC,EAAApC,EAAA,GACAqC,EAAArC,EAAA,IACAuC,EAAAvC,EAAA,IACAn2B,EAAAm2B,EAAA,IACAr4B,EAAAq4B,EAAA,IACAsB,EAAAtB,EAAA,IAEAwB,GADAK,EAAAhJ,GAAA2J,EAAAH,IACA1J,GAEAkJ,IAGAG,EAAAF,GAFAtzB,EAAAjG,KAAAiG,KAAAqzB,IAEAM,GADAzzB,EAAAnG,KAAAmG,KAAAmzB,IAEAI,EAAAF,EAAAvzB,EAAA4zB,EAAA1zB,EACAwzB,EAAAM,EAAAh0B,EAAA6zB,EAAA3zB,EACAyzB,EAAAL,GAAApzB,EAAAyzB,EAAA3zB,EACA4zB,EAAAL,GAAArzB,EAAA0zB,EAAA5zB,EACA6zB,EAAAG,GAAA9zB,EAAA2zB,EAAA7zB,EACA+zB,EAAAD,GAAA5zB,EAAA6zB,EAAA/zB,EACAszB,EAAAE,EACAD,EAAAE,EACAO,EAAAN,GAIAT,GADAI,EAAAhJ,IAAArvB,EAAA64B,IACA1J,GAEAkJ,IACArzB,EAAAjG,KAAAiG,KAAAqzB,GAKAU,EAAA1gC,GAJA6M,EAAAnG,KAAAmG,KAAAmzB,IAIAU,EAAA/zB,EACArE,EAJA63B,EAAA73B,EAAAqE,EAAA2zB,EAAAzzB,EAKA/D,EAJAs3B,EAAAt3B,EAAA6D,EAAA4zB,EAAA1zB,EAKAlF,EAJA04B,EAAA14B,EAAAgF,EAAA6zB,EAAA3zB,GAQA6yB,GADAM,EAAAhJ,GAAAluB,EAAAR,IACAwuB,GAEAkJ,IAGAG,EAAA73B,GAFAqE,EAAAjG,KAAAiG,IAAAqzB,IAEAl3B,GADA+D,EAAAnG,KAAAmG,IAAAmzB,IAEAI,EAAAH,EAAAtzB,EAAAuzB,EAAArzB,EACA/D,EAAAA,EAAA6D,EAAArE,EAAAuE,EACAqzB,EAAAA,EAAAvzB,EAAAszB,EAAApzB,EACAvE,EAAA63B,EACAF,EAAAG,GAGAT,GAAAj5B,KAAAiO,IAAAgrB,GAAAj5B,KAAAiO,IAAA+qB,GAAA,QACAC,EAAAD,EAAA,EACAE,EAAA,IAAAA,GAGAxH,EAAA3nB,GAAA/J,KAAA+F,KAAAnE,EAAAA,EAAAQ,EAAAA,EAAAnB,EAAAA,IACA0wB,EAAA5nB,GAAA/J,KAAA+F,KAAAyzB,EAAAA,EAAAS,EAAAA,IACAX,EAAAhJ,GAAAiJ,EAAAC,GACAL,EAAAn5B,KAAAiO,IAAAqrB,GAAA,KAAAA,EAAAlJ,GAAA,EACAiJ,EAAAW,EAAA,GAAAA,EAAA,GAAAA,EAAAA,GAAA,GAGA58B,EAAA81B,MACAuG,EAAAxwB,EAAAS,aAAA,aACAtM,EAAA+8B,SAAAlxB,EAAAqhB,aAAA,YAAA,MAAA6M,GAAA/E,GAAAnpB,EAAA8oB,KACA0H,GAAAxwB,EAAAqhB,aAAA,YAAAmP,KAIAz5B,KAAAiO,IAAAkrB,GAAA,IAAAn5B,KAAAiO,IAAAkrB,GAAA,MACAe,GACAxI,IAAA,EACAyH,GAAAH,GAAA,EAAA,KAAA,IACAA,GAAAA,GAAA,EAAA,KAAA,MAEArH,IAAA,EACAwH,GAAAA,GAAA,EAAA,KAAA,MAIA/7B,EAAAkE,EAAAA,IAAAlE,EAAAg9B,SAAA94B,IAAAlE,EAAAg9B,WAAAp6B,KAAAgK,MAAAf,EAAAoxB,YAAA,KAAAr6B,KAAAgK,OAAA1I,IAAA,GAAA,KAAA2H,EAAAoxB,YAAAj9B,EAAAg9B,SAAA,IAAA,GAAAlF,EACA93B,EAAAgC,EAAAA,IAAAhC,EAAAk9B,SAAAl7B,IAAAhC,EAAAk9B,WAAAt6B,KAAAgK,MAAAf,EAAAsxB,aAAA,KAAAv6B,KAAAgK,OAAA5K,IAAA,GAAA,KAAA6J,EAAAsxB,aAAAn9B,EAAAk9B,SAAA,IAAA,GAAApF,EACA93B,EAAA27B,EAAAA,EAAA7D,EACA93B,EAAAs0B,OAAA3nB,GAAA2nB,GACAt0B,EAAAu0B,OAAA5nB,GAAA4nB,GACAv0B,EAAA47B,SAAAjvB,GAAAivB,GAAAlE,EACA13B,EAAA67B,UAAAlvB,GAAAkvB,GAAAnE,EACA13B,EAAA87B,UAAAnvB,GAAAmvB,GAAApE,EACA13B,EAAA+7B,MAAAA,EAAArE,EACA13B,EAAAg8B,MAAAA,EAAAtE,EACA13B,EAAAo9B,qBAAAnB,EAAAnE,GAEA93B,EAAA64B,QAAAjrB,WAAA+qB,EAAAlsB,MAAA,KAAA,KAAA,KACA4d,EAAAuK,IAAAgE,GAAAD,IAGA34B,EAAAq7B,QAAAr7B,EAAAu7B,QAAA,EACAv7B,EAAA4H,QAAAF,EAAAE,QACA5H,EAAAy0B,gBAAAz0B,EAAA81B,IAAAuH,GAAAvL,GAAAwL,GAAAC,GACAv9B,EAAAwuB,QAAA,EACAxuB,GAEA44B,GAAA,SAAAp8B,GACA,OAAAA,EAAAA,EAAAiQ,MAAA,MAAA,GAAA,IAAAjQ,EAAA,IAEAghC,GAAA,SAAA3xB,EAAA1I,EAAA3G,GACA,IAAA+xB,EAAAzZ,GAAA3R,GACA,OAAAwJ,GAAAiB,WAAAzK,GAAAyK,WAAAiqB,GAAAhsB,EAAA,IAAArP,EAAA,KAAA+xB,KAAAA,GAEAgP,GAAA,SAAAx7B,EAAA/B,GACAA,EAAA27B,EAAA,MACA37B,EAAA87B,UAAA97B,EAAA67B,UAAA,OACA77B,EAAA4H,QAAA,EAEA01B,GAAAv7B,EAAA/B,IAEAy9B,GAAA,OACAC,GAAA,MACAC,GAAA,KACAL,GAAA,SAAAv7B,EAAA/B,GACA,IAAA6S,EAAA7S,GAAAtD,KACAsgC,EAAAnqB,EAAAmqB,SACAE,EAAArqB,EAAAqqB,SACAh5B,EAAA2O,EAAA3O,EACAlC,EAAA6Q,EAAA7Q,EACA25B,EAAA9oB,EAAA8oB,EACAC,EAAA/oB,EAAA+oB,SACAE,EAAAjpB,EAAAipB,UACAD,EAAAhpB,EAAAgpB,UACAE,EAAAlpB,EAAAkpB,MACAC,EAAAnpB,EAAAmpB,MACA1H,EAAAzhB,EAAAyhB,OACAC,EAAA1hB,EAAA0hB,OACA6I,EAAAvqB,EAAAuqB,qBACAx1B,EAAAiL,EAAAjL,QACAiE,EAAAgH,EAAAhH,OACAgtB,EAAAhmB,EAAAgmB,QACA+E,EAAA,GACAC,EAAA,SAAAj2B,GAAA7F,GAAA,IAAAA,IAAA,IAAA6F,EAEA,GAAAixB,IAAAgD,IAAA4B,IAAA3B,IAAA2B,IAAA,CACA,IAGA50B,EAHAqzB,EAAAtuB,WAAAkuB,GAAA7I,GACAuJ,EAAA55B,KAAAmG,IAAAmzB,GACAQ,EAAA95B,KAAAiG,IAAAqzB,GAGAA,EAAAtuB,WAAAiuB,GAAA5I,GACApqB,EAAAjG,KAAAiG,IAAAqzB,GACAh4B,EAAAs5B,GAAA3xB,EAAA3H,EAAAs4B,EAAA3zB,GAAAgwB,GACA72B,EAAAw7B,GAAA3xB,EAAA7J,GAAAY,KAAAmG,IAAAmzB,IAAArD,GACA8C,EAAA6B,GAAA3xB,EAAA8vB,EAAAe,EAAA7zB,GAAAgwB,EAAAA,GAGAuE,IAAAM,KACAE,GAAA,eAAAR,EAAAO,KAGAX,GAAAE,KACAU,GAAA,aAAAZ,EAAA,MAAAE,EAAA,QAGAW,GAAA35B,IAAAw5B,IAAA17B,IAAA07B,IAAA/B,IAAA+B,MACAE,GAAAjC,IAAA+B,IAAAG,EAAA,eAAA35B,EAAA,KAAAlC,EAAA,KAAA25B,EAAA,KAAA,aAAAz3B,EAAA,KAAAlC,EAAA27B,IAGA/B,IAAA6B,KACAG,GAAA,UAAAhC,EAAA+B,IAGA7B,IAAA2B,KACAG,GAAA,WAAA9B,EAAA6B,IAGA9B,IAAA4B,KACAG,GAAA,WAAA/B,EAAA8B,IAGA5B,IAAA0B,IAAAzB,IAAAyB,KACAG,GAAA,QAAA7B,EAAA,KAAAC,EAAA2B,IAGA,IAAArJ,GAAA,IAAAC,IACAqJ,GAAA,SAAAtJ,EAAA,KAAAC,EAAAoJ,IAGA9xB,EAAAwe,MAAAsK,IAAAiJ,GAAA,mBAEAP,GAAA,SAAAt7B,EAAA/B,GACA,IAkBA89B,EACAC,EACA5B,EACAC,EACA/K,EAtBAte,EAAA/S,GAAAtD,KACAsgC,EAAAjqB,EAAAiqB,SACAE,EAAAnqB,EAAAmqB,SACAh5B,EAAA6O,EAAA7O,EACAlC,EAAA+Q,EAAA/Q,EACA45B,EAAA7oB,EAAA6oB,SACAG,EAAAhpB,EAAAgpB,MACAC,EAAAjpB,EAAAipB,MACA1H,EAAAvhB,EAAAuhB,OACAC,EAAAxhB,EAAAwhB,OACA1oB,EAAAkH,EAAAlH,OACAovB,EAAAloB,EAAAkoB,QACAE,EAAApoB,EAAAooB,QACAE,EAAAtoB,EAAAsoB,QACAE,EAAAxoB,EAAAwoB,QACAwB,EAAAhqB,EAAAgqB,SACAvB,EAAA5tB,WAAA1J,GACAu3B,EAAA7tB,WAAA5L,GAOA45B,EAAAhuB,WAAAguB,GACAG,EAAAnuB,WAAAmuB,IACAC,EAAApuB,WAAAouB,MAIAD,GADAC,EAAApuB,WAAAouB,GAEAJ,GAAAI,GAGAJ,GAAAG,GACAH,GAAA3I,GACA8I,GAAA9I,GACA6K,EAAAl7B,KAAAiG,IAAA+yB,GAAAtH,EACAyJ,EAAAn7B,KAAAmG,IAAA6yB,GAAAtH,EACA6H,EAAAv5B,KAAAmG,IAAA6yB,EAAAG,IAAAxH,EACA6H,EAAAx5B,KAAAiG,IAAA+yB,EAAAG,GAAAxH,EAEAwH,IACAC,GAAA/I,GACA5B,EAAAzuB,KAAAo7B,IAAAjC,EAAAC,GAEAG,GADA9K,EAAAzuB,KAAA+F,KAAA,EAAA0oB,EAAAA,GAEA+K,GAAA/K,EAEA2K,IACA3K,EAAAzuB,KAAAo7B,IAAAhC,GAEA8B,GADAzM,EAAAzuB,KAAA+F,KAAA,EAAA0oB,EAAAA,GAEA0M,GAAA1M,IAIAyM,EAAAnxB,GAAAmxB,GACAC,EAAApxB,GAAAoxB,GACA5B,EAAAxvB,GAAAwvB,GACAC,EAAAzvB,GAAAyvB,KAEA0B,EAAAxJ,EACA8H,EAAA7H,EACAwJ,EAAA5B,EAAA,IAGAX,MAAAt3B,EAAA,IAAA3C,QAAA,OAAAk6B,MAAAz5B,EAAA,IAAAT,QAAA,SACAi6B,EAAA3D,GAAAhsB,EAAA,IAAA3H,EAAA,MACAu3B,EAAA5D,GAAAhsB,EAAA,IAAA7J,EAAA,QAGAi5B,GAAAE,GAAAE,GAAAE,KACAC,EAAA7uB,GAAA6uB,EAAAP,GAAAA,EAAA6C,EAAA3C,EAAAgB,GAAAd,GACAI,EAAA9uB,GAAA8uB,EAAAN,GAAAF,EAAA8C,EAAA5C,EAAAiB,GAAAb,KAGAyB,GAAAE,KACA7L,EAAAxlB,EAAA0qB,UACAiF,EAAA7uB,GAAA6uB,EAAAwB,EAAA,IAAA3L,EAAA5xB,OACAg8B,EAAA9uB,GAAA8uB,EAAAyB,EAAA,IAAA7L,EAAA2F,SAGA3F,EAAA,UAAAyM,EAAA,IAAAC,EAAA,IAAA5B,EAAA,IAAAC,EAAA,IAAAZ,EAAA,IAAAC,EAAA,IACA5vB,EAAAqhB,aAAA,YAAAmE,GACA0L,IAAAlxB,EAAAwe,MAAAsK,IAAAtD,IAEA4M,GAAA,SAAA/T,EAAAre,EAAAnB,EAAAwe,EAAAgQ,EAAAG,GACA,IAKA6E,EACA9U,EANA+U,EAAA,IACAxN,EAAA3nB,EAAAkwB,GACAlQ,EAAApb,WAAAsrB,IAAAvI,IAAAuI,EAAA33B,QAAA,OAAAyxB,GAAA,GACAnF,EAAAwL,EAAArQ,EAAAqQ,EAAArQ,EAAAE,EACAkV,EAAAlV,EAAA2E,EAAA,MA4BA,OAxBA8C,IAGA,WAFAuN,EAAAhF,EAAAzsB,MAAA,KAAA,MAGAohB,GAAAsQ,KAEAtQ,EAAA,MACAA,GAAAA,EAAA,EAAAsQ,GAAA,KAIA,OAAAD,GAAArQ,EAAA,EACAA,GAAAA,EAAAsQ,MAAAA,KAAAtQ,EAAAsQ,GAAAA,EACA,QAAAD,GAAArQ,EAAA,IACAA,GAAAA,EAAAsQ,MAAAA,KAAAtQ,EAAAsQ,GAAAA,IAIAjU,EAAA1X,IAAA4W,EAAA,IAAAxO,GAAAsP,EAAA1X,IAAA3G,EAAAnB,EAAAwe,EAAA2E,EAAA+F,IACAxK,EAAAG,EAAA6U,EACAhV,EAAAlS,EAAA,MAEAgT,EAAArQ,OAAA3c,KAAAwN,GAEA0e,GAEAiV,GAAA,SAAAxyB,EAAAyyB,GACA,IAAA,IAAAx/B,KAAAw/B,EACAzyB,EAAA/M,GAAAw/B,EAAAx/B,GAGA,OAAA+M,GAEA0yB,GAAA,SAAArU,EAAA0T,EAAA/xB,GACA,IAGA2yB,EACA1/B,EACAm6B,EACAC,EACAhQ,EACAF,EAEAmQ,EAVAsF,EAAAJ,GAAA,GAAAxyB,EAAAC,OAEAue,EAAAxe,EAAAwe,MA0BA,IAAAvrB,KAhBA2/B,EAAA3I,KACAmD,EAAAptB,EAAAS,aAAA,aACAT,EAAAqhB,aAAA,YAAA,IACA7C,EAAAsK,IAAAiJ,EACAY,EAAA9F,GAAA7sB,EAAA,GAEAsrB,GAAAtrB,EAAA8oB,IAEA9oB,EAAAqhB,aAAA,YAAA+L,KAEAA,EAAA9D,iBAAAtpB,GAAA8oB,IACAtK,EAAAsK,IAAAiJ,EACAY,EAAA9F,GAAA7sB,EAAA,GACAwe,EAAAsK,IAAAsE,GAGAlG,IACAkG,EAAAwF,EAAA3/B,OACAo6B,EAAAsF,EAAA1/B,KA7BA,gDA+BAyC,QAAAzC,GAAA,IAGAoqB,EAFApU,GAAAmkB,MACAE,EAAArkB,GAAAokB,IACArB,GAAAhsB,EAAA/M,EAAAm6B,EAAAE,GAAAvrB,WAAAqrB,GACAjQ,EAAApb,WAAAsrB,GACAhP,EAAA1X,IAAA,IAAAoI,GAAAsP,EAAA1X,IAAAgsB,EAAA1/B,EAAAoqB,EAAAF,EAAAE,EAAAyK,IACAzJ,EAAA1X,IAAA0E,EAAAiiB,GAAA,EAEAjP,EAAArQ,OAAA3c,KAAA4B,IAIAu/B,GAAAG,EAAAC,IAGAlyB,GAAA,+BAAA,SAAA3P,EAAAoY,GACA,IAAArR,EAAA,MACAV,EAAA,QACA+B,EAAA,SACAiI,EAAA,OACA8Z,GAAA/R,EAAA,EAAA,CAAArR,EAAAV,EAAA+B,EAAAiI,GAAA,CAAAtJ,EAAAsJ,EAAAtJ,EAAAV,EAAA+B,EAAA/B,EAAA+B,EAAAiI,IAAA2P,KAAA,SAAA8hB,GACA,OAAA1pB,EAAA,EAAApY,EAAA8hC,EAAA,SAAAA,EAAA9hC,KAGAk8B,GAAA9jB,EAAA,EAAA,SAAApY,EAAAA,GAAA,SAAAstB,EAAAre,EAAAnB,EAAAwuB,EAAA/rB,GACA,IAAA3I,EAAAR,EAEA,GAAAke,UAAAnlB,OAAA,EAKA,OAJAyH,EAAAuiB,EAAAnK,KAAA,SAAA3d,GACA,OAAAw5B,GAAAvO,EAAAjrB,EAAAyL,MAGA,KADA1G,EAAAQ,EAAApH,KAAA,MACAqP,MAAAjI,EAAA,IAAAzH,OAAAyH,EAAA,GAAAR,EAGAQ,GAAA00B,EAAA,IAAAzsB,MAAA,KACAzI,EAAA,GACA+iB,EAAAra,SAAA,SAAAzN,EAAA5B,GACA,OAAA2G,EAAA/E,GAAAuF,EAAAnH,GAAAmH,EAAAnH,IAAAmH,GAAAnH,EAAA,GAAA,EAAA,MAEA6sB,EAAAtQ,KAAA/N,EAAA7H,EAAAmJ,OAIA,IA+LAwxB,GAAA/C,GACAgD,GAhMAC,GAAA,CACAjiC,KAAA,MACAqI,SAAAzD,GACAwK,WAAA,SAAAH,GACA,OAAAA,EAAAwe,OAAAxe,EAAAuJ,UAEAwE,KAAA,SAAA/N,EAAA7H,EAAAmJ,EAAA6H,EAAArJ,GACA,IAGAstB,EACAC,EACAlQ,EACAE,EACAzsB,EACAqiC,EACAhgC,EACAs6B,EACAD,EACAE,EACA0F,EACAC,EACAh/B,EACA46B,EACAnQ,EAtqBAjuB,EACAiQ,EACAvI,EACAlC,EAkpBA+kB,EAAArqB,KAAAmd,OACAwQ,EAAAxe,EAAAwe,MACA3V,EAAAvH,EAAAnJ,KAAA0Q,QAkBA,IAAA5V,KAFA6yB,IAAAnwB,KAEAwC,EACA,GAAA,cAAAlF,IAIAo6B,EAAAl1B,EAAAlF,IAEAuM,GAAAvM,KAAAmrB,GAAAnrB,EAAAkF,EAAAmJ,EAAA6H,EAAAnJ,EAAAF,IAgBA,GAZAlP,SAAAy8B,EACA4F,EAAAhG,GAAAh6B,GAEA,aAAArC,IAEAA,SADAy8B,EAAAA,EAAAtjB,KAAAzI,EAAA6H,EAAAnJ,EAAAF,KAIA,WAAAlP,IAAAy8B,EAAA33B,QAAA,aACA23B,EAAAhhB,GAAAghB,IAGA4F,EACAA,EAAApiC,KAAAmP,EAAA/M,EAAAo6B,EAAA/rB,KAAAsd,EAAA,QACA,GAAA,OAAA3rB,EAAAmV,OAAA,EAAA,GACAglB,GAAA9D,iBAAAtpB,GAAAupB,iBAAAt2B,GAAA,IAAAvB,OACA27B,GAAA,GACAnc,GAAAY,UAAA,EAEAZ,GAAAa,KAAAqb,KACAG,EAAAtkB,GAAAmkB,GACAE,EAAArkB,GAAAokB,IAGAC,EAAAC,IAAAD,IAAAF,EAAApB,GAAAhsB,EAAA/M,EAAAm6B,EAAAE,GAAAA,GAAAC,IAAAF,GAAAE,GACA18B,KAAAsd,IAAAqQ,EAAA,cAAA4O,EAAAC,EAAAlkB,EAAArJ,EAAA,EAAA,EAAA7M,GACAioB,EAAA7pB,KAAA4B,QACA,GAAA,cAAArC,EAAA,CAgCA,GA/BAiY,GAAA5V,KAAA4V,GACAukB,EAAA,mBAAAvkB,EAAA5V,GAAA4V,EAAA5V,GAAA8W,KAAAzI,EAAA6H,EAAAnJ,EAAAF,GAAA+I,EAAA5V,GACAA,KAAA4I,EAAAI,QAAAgN,GAAAmkB,KAAAA,GAAAvxB,EAAAI,MAAAhJ,IACAkK,EAAAiwB,KAAAA,EAAA13B,QAAA,aAAA03B,EAAA/gB,GAAA+gB,IACA,OAAAA,EAAA,IAAAjlB,OAAA,KAAAilB,EAAAR,GAAA5sB,EAAA/M,KAEAm6B,EAAAR,GAAA5sB,EAAA/M,GAGAoqB,EAAAtb,WAAAqrB,IACAI,EAAA,WAAA58B,GAAA,MAAAy8B,EAAAllB,OAAA,KAAAklB,EAAAllB,OAAA,GAAA,KAAA,KACAklB,EAAAA,EAAAjlB,OAAA,IACA+U,EAAApb,WAAAsrB,GAEAp6B,KAAAy0B,KACA,cAAAz0B,IACA,IAAAoqB,GAAA,WAAAuP,GAAA5sB,EAAA,eAAAmd,IACAE,EAAA,GAGAoO,GAAA56B,KAAA2tB,EAAA,aAAAnB,EAAA,UAAA,SAAAF,EAAA,UAAA,UAAAA,IAGA,UAAAlqB,GAAA,cAAAA,KACAA,EAAAy0B,GAAAz0B,IACAyC,QAAA,OAAAzC,EAAAA,EAAA2N,MAAA,KAAA,KAIAsyB,EAAAjgC,KAAAi0B,GAWA,GARAiM,KACAh/B,EAAA6L,EAAAC,OACA2oB,kBAAAzwB,EAAAi7B,gBAAAvG,GAAA7sB,EAAA7H,EAAAi7B,gBACArE,GAAA,IAAA52B,EAAAk7B,cAAAl/B,EAAA46B,QACAoE,EAAAtiC,KAAA8V,IAAA,IAAAoI,GAAAle,KAAA8V,IAAA6X,EAAAsK,GAAA,EAAA,EAAA30B,EAAAy0B,gBAAAz0B,EAAA,GAAA,IACAqtB,IAAA,GAGA,UAAAvuB,EACApC,KAAA8V,IAAA,IAAAoI,GAAAle,KAAA8V,IAAAxS,EAAA,SAAAA,EAAAu0B,QAAA8E,EAAAA,EAAArQ,EAAAA,EAAAhpB,EAAAu0B,SAAA,GACAxN,EAAA7pB,KAAA,SAAA4B,GACAA,GAAA,QACA,CAAA,GAAA,oBAAAA,EAAA,CA3vBA2N,OAAAA,EACAvI,OAAAA,EACAlC,OAAAA,EAFAyK,GADAjQ,EA6vBA08B,GA5vBAzsB,MAAA,KACAvI,EAAAuI,EAAA,GACAzK,EAAAyK,EAAA,IAAA,MAEA,QAAAvI,GAAA,WAAAA,GAAA,SAAAlC,GAAA,UAAAA,IACAxF,EAAA0H,EACAA,EAAAlC,EACAA,EAAAxF,GAGAiQ,EAAA,GAAA6sB,GAAAp1B,IAAAA,EACAuI,EAAA,GAAA6sB,GAAAt3B,IAAAA,EAivBAk3B,EAhvBAzsB,EAAArP,KAAA,KAkvBA4C,EAAA81B,IACA4E,GAAA7uB,EAAAqtB,EAAA,EAAA0B,EAAA,EAAAl+B,QAEAy8B,EAAAvrB,WAAAsrB,EAAAzsB,MAAA,KAAA,KAAA,KACAzM,EAAA64B,SAAAvB,GAAA56B,KAAAsD,EAAA,UAAAA,EAAA64B,QAAAM,GAEA7B,GAAA56B,KAAA2tB,EAAAvrB,EAAA85B,GAAAK,GAAAL,GAAAM,KAGA,SACA,GAAA,cAAAp6B,EAAA,CACA47B,GAAA7uB,EAAAqtB,EAAA,EAAA0B,EAAA,EAAAl+B,MAEA,SACA,GAAAoC,KAAAg7B,GAAA,CACAmE,GAAAvhC,KAAAsD,EAAAlB,EAAAoqB,EAAAgQ,EAAAG,GAEA,SACA,GAAA,iBAAAv6B,EAAA,CACAw4B,GAAA56B,KAAAsD,EAAA,SAAAA,EAAA46B,OAAA1B,GAEA,SACA,GAAA,YAAAp6B,EAAA,CACAkB,EAAAlB,GAAAo6B,EACA,SACA,GAAA,cAAAp6B,EAAA,CACAy/B,GAAA7hC,KAAAw8B,EAAArtB,GAEA,eAEA/M,KAAAurB,IACAvrB,EAAAu2B,GAAAv2B,IAAAA,GAGA,GAAAigC,IAAA/V,GAAA,IAAAA,KAAAE,GAAA,IAAAA,KAAAoK,GAAA1V,KAAAsb,IAAAp6B,KAAAurB,EAEArB,IAAAA,EAAA,IADAoQ,GAAAH,EAAA,IAAAhlB,QAAAiV,EAAA,IAAAnsB,YAEAo8B,EAAArkB,GAAAokB,KAAAp6B,KAAA4I,EAAAI,MAAAJ,EAAAI,MAAAhJ,GAAAs6B,MACAlQ,EAAA2O,GAAAhsB,EAAA/M,EAAAm6B,EAAAE,IACAz8B,KAAA8V,IAAA,IAAAoI,GAAAle,KAAA8V,IAAAusB,EAAA/+B,EAAAqqB,EAAAvrB,EAAAoqB,EAAAmQ,EAAAA,EAAArQ,EAAAA,EAAAE,EAAA6V,GAAA,OAAA5F,GAAA,WAAAr6B,IAAA,IAAAkF,EAAAm7B,UAAAxL,GAAAG,IACAp3B,KAAA8V,IAAA0E,EAAAiiB,GAAA,EAEAC,IAAAD,GAAA,MAAAA,IACAz8B,KAAA8V,IAAAxN,EAAAi0B,EACAv8B,KAAA8V,IAAAvP,EAAA4wB,SAEA,GAAA/0B,KAAAurB,EASA0O,GAAAnjB,KAAAlZ,KAAAmP,EAAA/M,EAAAm6B,EAAAC,OATA,CACA,KAAAp6B,KAAA+M,GAEA,CACApB,GAAA3L,EAAAo6B,GAEA,SAJAx8B,KAAAsd,IAAAnO,EAAA/M,EAAAm6B,GAAAptB,EAAA/M,GAAAo6B,EAAAlkB,EAAArJ,GAUAob,EAAA7pB,KAAA4B,GAIA2rB,GAAAa,GAAA5uB,OAEA6d,IAAAke,GACA/d,QAAA6Y,GACA/Y,UAAA,SAAA3O,EAAAnB,EAAAwf,GACA,IAAAprB,EAAAy0B,GAAA7oB,GAEA,OADA5L,GAAAA,EAAAyC,QAAA,KAAA,IAAAmJ,EAAA5L,GACA4L,KAAAqoB,IAAAroB,IAAAkqB,KAAA/oB,EAAAC,MAAA5H,GAAAu0B,GAAA5sB,EAAA,MAAAqe,GAAA2H,KAAA3H,EAAA,UAAAxf,EAAA2pB,GAAAD,IAAAvC,GAAA3H,GAAA,MAAA,UAAAxf,EAAA8pB,GAAAE,IAAA7oB,EAAAwe,QAAAlhB,EAAA0C,EAAAwe,MAAA3f,IAAAupB,IAAAvpB,EAAAnJ,QAAA,KAAA2yB,GAAAzZ,GAAA5O,EAAAnB,IAEAjJ,KAAA,CACA01B,gBAAAA,GACA+C,WAAAA,KAGAj5B,GAAAquB,MAAA8P,YAAA/J,GAGAuJ,GAAAryB,IADAoyB,GAgBA,+CAfA,KADA/C,GAgBA,4CAfA+C,kFAAA,SAAA/hC,GACAm2B,GAAAn2B,GAAA,KAGA2P,GAAAqvB,IAAA,SAAAh/B,GACA8K,EAAAI,MAAAlL,GAAA,MACAk9B,GAAAl9B,GAAA,KAGA22B,GAAAqL,GAAA,KAAAD,GAAA,IAAA/C,GAEArvB,GAIA,8FAJA,SAAA3P,GACA,IAAA6P,EAAA7P,EAAA6P,MAAA,KACA8mB,GAAA9mB,EAAA,IAAAmyB,GAAAnyB,EAAA,OAIAF,GAAA,gFAAA,SAAA3P,GACA8K,EAAAI,MAAAlL,GAAA,QAGAqE,GAAAG,eAAAy9B,IAEA,IAAAQ,GAAAp+B,GAAAG,eAAAy9B,KAAA59B,GACAq+B,GAAAD,GAAA59B,KAAAkT,MAEAhU,EAAA+xB,KAAAA,GACA/xB,EAAAgyB,OAAAA,GACAhyB,EAAAk+B,UAAAA,GACAl+B,EAAAmyB,KAAAA,GACAnyB,EAAA0xB,MAAAA,GACA1xB,EAAA8xB,QAAAA,GACA9xB,EAAAkyB,KAAAA,GACAlyB,EAAA0gB,OAAAA,GACA1gB,EAAAoxB,OAAAA,GACApxB,EAAAqxB,OAAAA,GACArxB,EAAAsxB,OAAAA,GACAtxB,EAAAuxB,OAAAA,GACAvxB,EAAAwxB,OAAAA,GACAxxB,EAAAyxB,KAAAA,GACAzxB,EAAA2xB,MAAAA,GACA3xB,EAAA4xB,MAAAA,GACA5xB,EAAAiyB,KAAAA,GACAjyB,EAAA6gB,YAAAA,GACA7gB,EAAA6xB,OAAAA,GACA7xB,EAAAstB,aAAA1a,GACA5S,EAAAutB,YAAA3a,GACA5S,EAAAqtB,UAAArZ,GACAhU,EAAAotB,SAAAuR,GACA3+B,EAAAwE,QAAAk6B,GACA1+B,EAAAM,KAAAo+B,GAEA,oBAAA,QAAAr+B,SAAAL,EAAAyE,OAAAC,eAAA1E,EAAA,aAAA,CAAAnE,OAAA,WAAAwE,OAAAmE,WC0OC,SAAU1E,EAAQC,GACE,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,IAC9D,mBAAXG,QAAyBA,OAAOC,IAAMD,OAAOH,IACnDD,EAA+B,oBAAf8+B,WAA6BA,WAAa9+B,GAAUM,MAAay+B,OAAS9+B,IAH7F,CAIEhE,MAAM,WAAe,aAErB,SAAS+iC,EAAkB5zB,EAAQkb,GACjC,IAAK,IAAI1pB,EAAI,EAAGA,EAAI0pB,EAAMhqB,OAAQM,IAAK,CACrC,IAAIqiC,EAAa3Y,EAAM1pB,GACvBqiC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDz6B,OAAOC,eAAewG,EAAQ6zB,EAAWjgB,IAAKigB,IAUlD,SAASI,IAeP,OAdAA,EAAW16B,OAAO26B,QAAU,SAAUl0B,GACpC,IAAK,IAAIxO,EAAI,EAAGA,EAAI6kB,UAAUnlB,OAAQM,IAAK,CACzC,IAAIihC,EAASpc,UAAU7kB,GAEvB,IAAK,IAAIoiB,KAAO6e,EACVl5B,OAAOK,UAAUu6B,eAAepqB,KAAK0oB,EAAQ7e,KAC/C5T,EAAO4T,GAAO6e,EAAO7e,IAK3B,OAAO5T,IAGO6J,MAAMhZ,KAAMwlB,WC7lKhC,SAAS+d,EAASxiC,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIkI,cAAgBP,OAE5B,SAAS86B,EAAOr0B,EAAQs0B,QACL,IAAXt0B,IAAqBA,EAAS,SACtB,IAARs0B,IAAkBA,EAAM,IAC5B/6B,OAAOg7B,KAAKD,GAAKzzB,SAAQ,SAAU+S,QACJ,IAAhB5T,EAAO4T,GACd5T,EAAO4T,GAAO0gB,EAAI1gB,GACbwgB,EAASE,EAAI1gB,KAClBwgB,EAASp0B,EAAO4T,KAChBra,OAAOg7B,KAAKD,EAAI1gB,IAAM1iB,OAAS,GAC/BmjC,EAAOr0B,EAAO4T,GAAM0gB,EAAI1gB,OAKpC,IAAI4gB,EAAc,CACd7H,KAAM,GACN8H,iBAAkB,aAClBC,oBAAqB,aACrBC,cAAe,CACXC,KAAM,aACNC,SAAU,IAEdC,cAAe,WACX,OAAO,MAEX9qB,iBAAkB,WACd,MAAO,IAEX+qB,eAAgB,WACZ,OAAO,MAEXC,YAAa,WACT,MAAO,CACHC,UAAW,eAGnB9Q,cAAe,WACX,MAAO,CACH7I,SAAU,GACV4Z,WAAY,GACZ1W,MAAO,GACP6C,aAAc,aACd8T,qBAAsB,WAClB,MAAO,MAInBjM,gBAAiB,WACb,MAAO,IAEXkM,WAAY,WACR,OAAO,MAEXC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACN3I,OAAQ,GACR4I,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,IAAIC,EAA0B,oBAAbpjB,SAA2BA,SAAW,GAEvD,OADA2hB,EAAOyB,EAAKtB,GACLsB,EAGX,IAAIC,EAAY,CACZrjB,SAAU8hB,EACVwB,UAAW,CACPC,UAAW,IAEfZ,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACN3I,OAAQ,GACR4I,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZM,QAAS,CACLC,aAAc,aACdC,UAAW,aACXC,GAAI,aACJC,KAAM,cAEVC,YAAa,WACT,OAAO1lC,MAEX4jC,iBAAkB,aAClBC,oBAAqB,aACrBpL,iBAAkB,WACd,MAAO,CACHC,iBAAkB,WACd,MAAO,MAInBiN,MAAO,aACPxkB,KAAM,aACNykB,OAAQ,GACRzjB,WAAY,aACZE,aAAc,aACdwjB,WAAY,WACR,MAAO,IAEX7jB,sBAAuB,SAAUvF,GAC7B,MAA0B,oBAAf0F,YACP1F,IACO,MAEJ0F,WAAW1F,EAAU,IAEhC2F,qBAAsB,SAAUpf,GACF,oBAAfmf,YAGXE,aAAarf,KAGrB,SAAS8iC,IACL,IAAIC,EAAwB,oBAAXzhC,OAAyBA,OAAS,GAEnD,OADAk/B,EAAOuC,EAAKb,GACLa,EC/HX,SAASC,EAAgBC,GAIvB,OAHAD,EAAkBt9B,OAAOw9B,eAAiBx9B,OAAOy9B,eAAiB,SAAyBF,GACzF,OAAOA,EAAE/8B,WAAaR,OAAOy9B,eAAeF,KAEvBA,GAGzB,SAASG,EAAgBH,EAAG7jC,GAM1B,OALAgkC,EAAkB19B,OAAOw9B,gBAAkB,SAAyBD,EAAG7jC,GAErE,OADA6jC,EAAE/8B,UAAY9G,EACP6jC,IAGcA,EAAG7jC,GAG5B,SAASikC,IACP,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAtlB,KAAKpY,UAAU29B,SAASxtB,KAAKotB,QAAQC,UAAUplB,KAAM,IAAI,iBAClD,EACP,MAAO0L,GACP,OAAO,GAIX,SAAS8Z,EAAWC,EAAQlV,EAAMmV,GAchC,OAZEF,EADEN,IACWC,QAAQC,UAER,SAAoBK,EAAQlV,EAAMmV,GAC7C,IAAI/+B,EAAI,CAAC,MACTA,EAAEtH,KAAKwY,MAAMlR,EAAG4pB,GAChB,IACIoV,EAAW,IADGC,SAASC,KAAKhuB,MAAM4tB,EAAQ9+B,IAG9C,OADI++B,GAAOT,EAAgBU,EAAUD,EAAM99B,WACpC+9B,IAIO9tB,MAAM,KAAMwM,WAOhC,SAASyhB,EAAiBJ,GACxB,IAAIK,EAAwB,mBAARC,IAAqB,IAAIA,SAAQC,EA8BrD,OA5BAH,EAAmB,SAA0BJ,GAC3C,GAAc,OAAVA,IARmBhkC,EAQkBgkC,GAPqB,IAAzDE,SAASL,SAASxtB,KAAKrW,GAAIgC,QAAQ,kBAOS,OAAOgiC,EAR5D,IAA2BhkC,EAUvB,GAAqB,mBAAVgkC,EACT,MAAM,IAAIQ,UAAU,sDAGtB,QAAsB,IAAXH,EAAwB,CACjC,GAAIA,EAAOI,IAAIT,GAAQ,OAAOK,EAAOrpB,IAAIgpB,GAEzCK,EAAOjiB,IAAI4hB,EAAOU,GAGpB,SAASA,IACP,OAAOZ,EAAWE,EAAOrhB,UAAWwgB,EAAgBhmC,MAAMiJ,aAW5D,OARAs+B,EAAQx+B,UAAYL,OAAOM,OAAO69B,EAAM99B,UAAW,CACjDE,YAAa,CACXnJ,MAAOynC,EACPtE,YAAY,EACZE,UAAU,EACVD,cAAc,KAGXkD,EAAgBmB,EAASV,KAGVA,GAwB1B,IAAIW,EAAoB,SAAUC,GA/GlC,IAAwB5+B,EAAUC,EAkHhC,SAAS0+B,EAAKE,GACZ,IAAIngB,EAhBcxmB,EAChB4mC,EAmBF,OAFApgB,EAAQkgB,EAAOvuB,KAAKF,MAAMyuB,EAAQ,CAACznC,MAAM4nC,OAAOF,KAAW1nC,KAlBzCe,EATtB,SAAgCsD,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI+E,eAAe,6DAG3B,OAAO/E,EAuBQ8E,CAAuBoe,GAlBlCogB,EAAQ5mC,EAAImI,UAChBR,OAAOC,eAAe5H,EAAK,YAAa,CACtC8c,IAAK,WACH,OAAO8pB,GAET1iB,IAAK,SAAanlB,GAChB6nC,EAAMz+B,UAAYpJ,KAabynB,EAGT,OA1HgCze,EAgHX2+B,GAhHC5+B,EAgHP2+B,GA/GNz+B,UAAYL,OAAOM,OAAOF,EAAWC,WAC9CF,EAASE,UAAUE,YAAcJ,EACjCA,EAASK,UAAYJ,EAuHd0+B,EAXe,CAYRP,EAAiB/5B,QAEjC,SAAS26B,EAAUC,QACL,IAARA,IACFA,EAAM,IAGR,IAAIC,EAAM,GAQV,OAPAD,EAAI93B,SAAQ,SAAUmjB,GAChBjmB,MAAMhM,QAAQiyB,GAChB4U,EAAIvnC,KAAKwY,MAAM+uB,EAAKF,EAAU1U,IAE9B4U,EAAIvnC,KAAK2yB,MAGN4U,EAET,SAASC,EAAYF,EAAKrrB,GACxB,OAAOvP,MAAMnE,UAAU3I,OAAO8Y,KAAK4uB,EAAKrrB,GAgC1C,SAAS/c,EAAEwzB,EAAU+U,GACnB,IAAI3jC,EAASwhC,IACTjkB,EAAWmjB,IACX8C,EAAM,GAEV,IAAKG,GAAW/U,aAAoBsU,EAClC,OAAOtU,EAGT,IAAKA,EACH,OAAO,IAAIsU,EAAKM,GAGlB,GAAwB,iBAAb5U,EAAuB,CAChC,IAAIgV,EAAOhV,EAASryB,OAEpB,GAAIqnC,EAAKrjC,QAAQ,MAAQ,GAAKqjC,EAAKrjC,QAAQ,MAAQ,EAAG,CACpD,IAAIsjC,EAAW,MACa,IAAxBD,EAAKrjC,QAAQ,SAAcsjC,EAAW,MACd,IAAxBD,EAAKrjC,QAAQ,SAAcsjC,EAAW,SACd,IAAxBD,EAAKrjC,QAAQ,QAAwC,IAAxBqjC,EAAKrjC,QAAQ,SAAcsjC,EAAW,MACxC,IAA3BD,EAAKrjC,QAAQ,YAAiBsjC,EAAW,SACb,IAA5BD,EAAKrjC,QAAQ,aAAkBsjC,EAAW,UAC9C,IAAIC,EAAavmB,EAASyR,cAAc6U,GACxCC,EAAWC,UAAYH,EAEvB,IAAK,IAAIvnC,EAAI,EAAGA,EAAIynC,EAAW/D,WAAWhkC,OAAQM,GAAK,EACrDmnC,EAAItnC,KAAK4nC,EAAW/D,WAAW1jC,SAGjCmnC,EA7CN,SAAa5U,EAAU+U,GACrB,GAAwB,iBAAb/U,EACT,MAAO,CAACA,GAMV,IAHA,IAAIprB,EAAI,GACJigC,EAAME,EAAQ9uB,iBAAiB+Z,GAE1BvyB,EAAI,EAAGA,EAAIonC,EAAI1nC,OAAQM,GAAK,EACnCmH,EAAEtH,KAAKunC,EAAIpnC,IAGb,OAAOmH,EAiCGwgC,CAAIpV,EAASryB,OAAQonC,GAAWpmB,QAGnC,GAAIqR,EAASxa,UAAYwa,IAAa5uB,GAAU4uB,IAAarR,EAClEimB,EAAItnC,KAAK0yB,QACJ,GAAIhmB,MAAMhM,QAAQgyB,GAAW,CAClC,GAAIA,aAAoBsU,EAAM,OAAOtU,EACrC4U,EAAM5U,EAGR,OAAO,IAAIsU,EAtEb,SAAqBM,GAGnB,IAFA,IAAIS,EAAc,GAET5nC,EAAI,EAAGA,EAAImnC,EAAIznC,OAAQM,GAAK,GACE,IAAjC4nC,EAAY1jC,QAAQijC,EAAInnC,KAAY4nC,EAAY/nC,KAAKsnC,EAAInnC,IAG/D,OAAO4nC,EA+DSC,CAAYV,IAG9BpoC,EAAEmD,GAAK2kC,EAAKz+B,UC7LZ,ICtCI0/B,ECCAC,ECDAC,EHsCEC,EAAU,CACdC,SD8LF,WACE,IAAK,IAAIrV,EAAOhO,UAAUnlB,OAAQyoC,EAAU,IAAI57B,MAAMsmB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFoV,EAAQpV,GAAQlO,UAAUkO,GAG5B,IAAIqV,EAAalB,EAAUiB,EAAQ5oB,KAAI,SAAU/Y,GAC/C,OAAOA,EAAE4I,MAAM,SAOjB,OALA/P,KAAKgQ,SAAQ,SAAUmjB,GACrB,IAAI6V,GAEHA,EAAgB7V,EAAG8V,WAAW3rB,IAAItE,MAAMgwB,EAAeD,MAEnD/oC,MC1MPkpC,YD6MF,WACE,IAAK,IAAIzX,EAAQjM,UAAUnlB,OAAQyoC,EAAU,IAAI57B,MAAMukB,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACvFmX,EAAQnX,GAASnM,UAAUmM,GAG7B,IAAIoX,EAAalB,EAAUiB,EAAQ5oB,KAAI,SAAU/Y,GAC/C,OAAOA,EAAE4I,MAAM,SAOjB,OALA/P,KAAKgQ,SAAQ,SAAUmjB,GACrB,IAAIgW,GAEHA,EAAiBhW,EAAG8V,WAAW9mC,OAAO6W,MAAMmwB,EAAgBJ,MAExD/oC,MCzNPopC,SD2OF,WACE,IAAK,IAAIC,EAAQ7jB,UAAUnlB,OAAQyoC,EAAU,IAAI57B,MAAMm8B,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACvFR,EAAQQ,GAAS9jB,UAAU8jB,GAG7B,IAAIP,EAAalB,EAAUiB,EAAQ5oB,KAAI,SAAU/Y,GAC/C,OAAOA,EAAE4I,MAAM,SAEjB,OAAOi4B,EAAYhoC,MAAM,SAAUmzB,GACjC,OAAO4V,EAAW3oC,QAAO,SAAUmpC,GACjC,OAAOpW,EAAG8V,UAAUO,SAASD,MAC5BlpC,OAAS,KACXA,OAAS,GCtPZopC,YD2NF,WACE,IAAK,IAAIC,EAAQlkB,UAAUnlB,OAAQyoC,EAAU,IAAI57B,MAAMw8B,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACvFb,EAAQa,GAASnkB,UAAUmkB,GAG7B,IAAIZ,EAAalB,EAAUiB,EAAQ5oB,KAAI,SAAU/Y,GAC/C,OAAOA,EAAE4I,MAAM,SAEjB/P,KAAKgQ,SAAQ,SAAUmjB,GACrB4V,EAAW/4B,SAAQ,SAAUu5B,GAC3BpW,EAAG8V,UAAUW,OAAOL,UCpOxBtpC,KDwPF,SAAc4pC,EAAO/pC,GACnB,GAAyB,IAArB0lB,UAAUnlB,QAAiC,iBAAVwpC,EAEnC,OAAI7pC,KAAK,GAAWA,KAAK,GAAG4P,aAAai6B,QACzC,EAIF,IAAK,IAAIlpC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpC,GAAyB,IAArB6kB,UAAUnlB,OAEZL,KAAKW,GAAG6vB,aAAaqZ,EAAO/pC,QAG5B,IAAK,IAAIgqC,KAAYD,EACnB7pC,KAAKW,GAAGmpC,GAAYD,EAAMC,GAC1B9pC,KAAKW,GAAG6vB,aAAasZ,EAAUD,EAAMC,IAK3C,OAAO9pC,MC5QP+pC,WD+QF,SAAoB9pC,GAClB,IAAK,IAAIU,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpCX,KAAKW,GAAGg6B,gBAAgB16B,GAG1B,OAAOD,MCnRP49B,UDwZF,SAAmBA,GACjB,IAAK,IAAIj9B,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpCX,KAAKW,GAAGgtB,MAAMiQ,UAAYA,EAG5B,OAAO59B,MC5ZPgqC,WD+ZF,SAAoBz+B,GAClB,IAAK,IAAI5K,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpCX,KAAKW,GAAGgtB,MAAMsc,mBAAyC,iBAAb1+B,EAAwBA,EAAW,KAAOA,EAGtF,OAAOvL,MCnaPkD,GDsaF,WACE,IAAK,IAAIgnC,EAAQ1kB,UAAUnlB,OAAQqxB,EAAO,IAAIxkB,MAAMg9B,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFzY,EAAKyY,GAAS3kB,UAAU2kB,GAG1B,IAAIC,EAAY1Y,EAAK,GACjB2Y,EAAiB3Y,EAAK,GACtB4Y,EAAW5Y,EAAK,GAChB6Y,EAAU7Y,EAAK,GAWnB,SAAS8Y,EAAgB3d,GACvB,IAAI1d,EAAS0d,EAAE1d,OACf,GAAKA,EAAL,CACA,IAAIs7B,EAAY5d,EAAE1d,OAAOu7B,eAAiB,GAM1C,GAJID,EAAU5lC,QAAQgoB,GAAK,GACzB4d,EAAUE,QAAQ9d,GAGhBntB,EAAEyP,GAAQ7O,GAAG+pC,GAAiBC,EAAStxB,MAAM7J,EAAQs7B,QAIvD,IAHA,IAAIG,EAAWlrC,EAAEyP,GAAQ07B,UAGhBC,EAAI,EAAGA,EAAIF,EAASvqC,OAAQyqC,GAAK,EACpCprC,EAAEkrC,EAASE,IAAIxqC,GAAG+pC,IAAiBC,EAAStxB,MAAM4xB,EAASE,GAAIL,IAKzE,SAASM,EAAYle,GACnB,IAAI4d,EAAY5d,GAAKA,EAAE1d,QAAS0d,EAAE1d,OAAOu7B,eAAsB,GAE3DD,EAAU5lC,QAAQgoB,GAAK,GACzB4d,EAAUE,QAAQ9d,GAGpByd,EAAStxB,MAAMhZ,KAAMyqC,GAnCA,mBAAZ/Y,EAAK,KACd0Y,EAAY1Y,EAAK,GACjB4Y,EAAW5Y,EAAK,GAChB6Y,EAAU7Y,EAAK,GACf2Y,OAAiBjD,GAGdmD,IAASA,GAAU,GAkCxB,IAHA,IACItwB,EADA+wB,EAASZ,EAAUr6B,MAAM,KAGpBpP,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAAG,CACvC,IAAIwyB,EAAKnzB,KAAKW,GAEd,GAAK0pC,EAaH,IAAKpwB,EAAI,EAAGA,EAAI+wB,EAAO3qC,OAAQ4Z,GAAK,EAAG,CACrC,IAAIgxB,EAASD,EAAO/wB,GACfkZ,EAAG+X,oBAAmB/X,EAAG+X,kBAAoB,IAC7C/X,EAAG+X,kBAAkBD,KAAS9X,EAAG+X,kBAAkBD,GAAU,IAElE9X,EAAG+X,kBAAkBD,GAAQzqC,KAAK,CAChC8pC,SAAUA,EACVa,cAAeX,IAGjBrX,EAAGyQ,iBAAiBqH,EAAQT,EAAiBD,QAtB/C,IAAKtwB,EAAI,EAAGA,EAAI+wB,EAAO3qC,OAAQ4Z,GAAK,EAAG,CACrC,IAAI5Y,EAAQ2pC,EAAO/wB,GACdkZ,EAAGiY,gBAAejY,EAAGiY,cAAgB,IACrCjY,EAAGiY,cAAc/pC,KAAQ8xB,EAAGiY,cAAc/pC,GAAS,IACxD8xB,EAAGiY,cAAc/pC,GAAOb,KAAK,CAC3B8pC,SAAUA,EACVa,cAAeJ,IAEjB5X,EAAGyQ,iBAAiBviC,EAAO0pC,EAAaR,IAmB9C,OAAOvqC,MCvfPqrC,ID0fF,WACE,IAAK,IAAIC,EAAQ9lB,UAAUnlB,OAAQqxB,EAAO,IAAIxkB,MAAMo+B,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF7Z,EAAK6Z,GAAS/lB,UAAU+lB,GAG1B,IAAInB,EAAY1Y,EAAK,GACjB2Y,EAAiB3Y,EAAK,GACtB4Y,EAAW5Y,EAAK,GAChB6Y,EAAU7Y,EAAK,GAEI,mBAAZA,EAAK,KACd0Y,EAAY1Y,EAAK,GACjB4Y,EAAW5Y,EAAK,GAChB6Y,EAAU7Y,EAAK,GACf2Y,OAAiBjD,GAGdmD,IAASA,GAAU,GAGxB,IAFA,IAAIS,EAASZ,EAAUr6B,MAAM,KAEpBpP,EAAI,EAAGA,EAAIqqC,EAAO3qC,OAAQM,GAAK,EAGtC,IAFA,IAAIU,EAAQ2pC,EAAOrqC,GAEVsZ,EAAI,EAAGA,EAAIja,KAAKK,OAAQ4Z,GAAK,EAAG,CACvC,IAAIkZ,EAAKnzB,KAAKia,GACVuxB,OAAW,EAQf,IANKnB,GAAkBlX,EAAGiY,cACxBI,EAAWrY,EAAGiY,cAAc/pC,GACnBgpC,GAAkBlX,EAAG+X,oBAC9BM,EAAWrY,EAAG+X,kBAAkB7pC,IAG9BmqC,GAAYA,EAASnrC,OACvB,IAAK,IAAIyqC,EAAIU,EAASnrC,OAAS,EAAGyqC,GAAK,EAAGA,GAAK,EAAG,CAChD,IAAIW,EAAUD,EAASV,GAEnBR,GAAYmB,EAAQnB,WAAaA,GAG1BA,GAAYmB,EAAQnB,UAAYmB,EAAQnB,SAASoB,WAAaD,EAAQnB,SAASoB,YAAcpB,GAFtGnX,EAAG0Q,oBAAoBxiC,EAAOoqC,EAAQN,cAAeZ,GACrDiB,EAASh8B,OAAOs7B,EAAG,IAITR,IACVnX,EAAG0Q,oBAAoBxiC,EAAOoqC,EAAQN,cAAeZ,GACrDiB,EAASh8B,OAAOs7B,EAAG,KAO7B,OAAO9qC,MC7iBP4C,QDolBF,WAGE,IAFA,IAAI0B,EAASwhC,IAEJ6F,EAAQnmB,UAAUnlB,OAAQqxB,EAAO,IAAIxkB,MAAMy+B,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFla,EAAKka,GAASpmB,UAAUomB,GAM1B,IAHA,IAAIZ,EAAStZ,EAAK,GAAG3hB,MAAM,KACvB06B,EAAY/Y,EAAK,GAEZ/wB,EAAI,EAAGA,EAAIqqC,EAAO3qC,OAAQM,GAAK,EAGtC,IAFA,IAAIU,EAAQ2pC,EAAOrqC,GAEVsZ,EAAI,EAAGA,EAAIja,KAAKK,OAAQ4Z,GAAK,EAAG,CACvC,IAAIkZ,EAAKnzB,KAAKia,GAEd,GAAI3V,EAAOohC,YAAa,CACtB,IAAImG,EAAM,IAAIvnC,EAAOohC,YAAYrkC,EAAO,CACtCyqC,OAAQrB,EACRsB,SAAS,EACTC,YAAY,IAEd7Y,EAAGuX,cAAgBhZ,EAAKtxB,QAAO,SAAU4B,EAAMiqC,GAC7C,OAAOA,EAAY,KAErB9Y,EAAG+Y,cAAcL,GACjB1Y,EAAGuX,cAAgB,UACZvX,EAAGuX,eAKhB,OAAO1qC,MCnnBPmsC,cDsnBF,SAAuB1vB,GACrB,IAAI2vB,EAAMpsC,KAYV,OAJIyc,GACF2vB,EAAIlpC,GAAG,iBAPT,SAASmpC,EAAaxf,GAChBA,EAAE1d,SAAWnP,OACjByc,EAASvD,KAAKlZ,KAAM6sB,GACpBuf,EAAIf,IAAI,gBAAiBgB,OAOpBrsC,MCloBPssC,WDmqBF,SAAoBC,GAClB,GAAIvsC,KAAKK,OAAS,EAAG,CACnB,GAAIksC,EAAgB,CAClB,IAAIC,EAAUxsC,KAAKysC,SAEnB,OAAOzsC,KAAK,GAAGugC,YAAcrvB,WAAWs7B,EAAQ9T,iBAAiB,iBAAmBxnB,WAAWs7B,EAAQ9T,iBAAiB,gBAG1H,OAAO14B,KAAK,GAAGugC,YAGjB,OAAO,MC7qBPmM,YD8rBF,SAAqBH,GACnB,GAAIvsC,KAAKK,OAAS,EAAG,CACnB,GAAIksC,EAAgB,CAClB,IAAII,EAAW3sC,KAAKysC,SAEpB,OAAOzsC,KAAK,GAAGygC,aAAevvB,WAAWy7B,EAASjU,iBAAiB,eAAiBxnB,WAAWy7B,EAASjU,iBAAiB,kBAG3H,OAAO14B,KAAK,GAAGygC,aAGjB,OAAO,MCxsBPgM,OD0vBF,WACE,IAAInoC,EAASwhC,IACb,OAAI9lC,KAAK,GAAWsE,EAAOm0B,iBAAiBz4B,KAAK,GAAI,MAC9C,IC5vBPiX,OD0sBF,WACE,GAAIjX,KAAKK,OAAS,EAAG,CACnB,IAAIiE,EAASwhC,IACTjkB,EAAWmjB,IACX7R,EAAKnzB,KAAK,GACV4sC,EAAMzZ,EAAG9Y,wBACTyhB,EAAOja,EAASia,KAChB+Q,EAAY1Z,EAAG0Z,WAAa/Q,EAAK+Q,WAAa,EAC9CC,EAAa3Z,EAAG2Z,YAAchR,EAAKgR,YAAc,EACjDC,EAAY5Z,IAAO7uB,EAASA,EAAO0oC,QAAU7Z,EAAG4Z,UAChDE,EAAa9Z,IAAO7uB,EAASA,EAAO4oC,QAAU/Z,EAAG8Z,WACrD,MAAO,CACLpQ,IAAK+P,EAAI/P,IAAMkQ,EAAYF,EAC3BvyB,KAAMsyB,EAAItyB,KAAO2yB,EAAaH,GAIlC,OAAO,MC1tBPK,ID8vBF,SAAa9iB,EAAOvqB,GAClB,IACIa,EADA2D,EAASwhC,IAGb,GAAyB,IAArBtgB,UAAUnlB,OAAc,CAC1B,GAAqB,iBAAVgqB,EAGJ,CAEL,IAAK1pB,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAChC,IAAK,IAAIysC,KAAS/iB,EAChBrqB,KAAKW,GAAGgtB,MAAMyf,GAAS/iB,EAAM+iB,GAIjC,OAAOptC,KATP,GAAIA,KAAK,GAAI,OAAOsE,EAAOm0B,iBAAiBz4B,KAAK,GAAI,MAAM04B,iBAAiBrO,GAahF,GAAyB,IAArB7E,UAAUnlB,QAAiC,iBAAVgqB,EAAoB,CAEvD,IAAK1pB,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAChCX,KAAKW,GAAGgtB,MAAMtD,GAASvqB,EAGzB,OAAOE,KAGT,OAAOA,MC1xBPH,KD6xBF,SAAc4c,GACZ,OAAKA,GACLzc,KAAKgQ,SAAQ,SAAUmjB,EAAI7a,GACzBmE,EAASzD,MAAMma,EAAI,CAACA,EAAI7a,OAEnBtY,MAJeA,MC7xBtBkoC,KDyyBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOloC,KAAK,GAAKA,KAAK,GAAGqoC,UAAY,KAGvC,IAAK,IAAI1nC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpCX,KAAKW,GAAG0nC,UAAYH,EAGtB,OAAOloC,MCjzBPyC,KDozBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOzC,KAAK,GAAKA,KAAK,GAAGqtC,YAAYxsC,OAAS,KAGhD,IAAK,IAAIF,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpCX,KAAKW,GAAG0sC,YAAc5qC,EAGxB,OAAOzC,MC5zBPM,GD+zBF,SAAY4yB,GACV,IAGIoa,EACA3sC,EAJA2D,EAASwhC,IACTjkB,EAAWmjB,IACX7R,EAAKnzB,KAAK,GAGd,IAAKmzB,QAA0B,IAAbD,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAIC,EAAGoa,QAAS,OAAOpa,EAAGoa,QAAQra,GAClC,GAAIC,EAAGqa,sBAAuB,OAAOra,EAAGqa,sBAAsBta,GAC9D,GAAIC,EAAGsa,kBAAmB,OAAOta,EAAGsa,kBAAkBva,GAGtD,IAFAoa,EAAc5tC,EAAEwzB,GAEXvyB,EAAI,EAAGA,EAAI2sC,EAAYjtC,OAAQM,GAAK,EACvC,GAAI2sC,EAAY3sC,KAAOwyB,EAAI,OAAO,EAGpC,OAAO,EAGT,GAAID,IAAarR,EACf,OAAOsR,IAAOtR,EAGhB,GAAIqR,IAAa5uB,EACf,OAAO6uB,IAAO7uB,EAGhB,GAAI4uB,EAASxa,UAAYwa,aAAoBsU,EAAM,CAGjD,IAFA8F,EAAcpa,EAASxa,SAAW,CAACwa,GAAYA,EAE1CvyB,EAAI,EAAGA,EAAI2sC,EAAYjtC,OAAQM,GAAK,EACvC,GAAI2sC,EAAY3sC,KAAOwyB,EAAI,OAAO,EAGpC,OAAO,EAGT,OAAO,GCr2BP7a,MDw2BF,WACE,IACI3X,EADAyR,EAAQpS,KAAK,GAGjB,GAAIoS,EAAO,CAGT,IAFAzR,EAAI,EAEuC,QAAnCyR,EAAQA,EAAMs7B,kBACG,IAAnBt7B,EAAMsG,WAAgB/X,GAAK,GAGjC,OAAOA,ICl3BTgtC,GDw3BF,SAAYr1B,GACV,QAAqB,IAAVA,EAAuB,OAAOtY,KACzC,IAAIK,EAASL,KAAKK,OAElB,GAAIiY,EAAQjY,EAAS,EACnB,OAAOX,EAAE,IAGX,GAAI4Y,EAAQ,EAAG,CACb,IAAIs1B,EAAcvtC,EAASiY,EAC3B,OAA4B5Y,EAAxBkuC,EAAc,EAAY,GACrB,CAAC5tC,KAAK4tC,KAGjB,OAAOluC,EAAE,CAACM,KAAKsY,MCr4BfhW,ODw4BF,WAIE,IAHA,IAAIurC,EACAhsB,EAAWmjB,IAEN8F,EAAI,EAAGA,EAAItlB,UAAUnlB,OAAQyqC,GAAK,EAAG,CAC5C+C,EAAW/C,EAAI,GAAKtlB,UAAUnlB,QAAUyqC,OAAI1D,EAAY5hB,UAAUslB,GAElE,IAAK,IAAInqC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACpC,GAAwB,iBAAbktC,EAAuB,CAChC,IAAIC,EAAUjsB,EAASyR,cAAc,OAGrC,IAFAwa,EAAQzF,UAAYwF,EAEbC,EAAQC,YACb/tC,KAAKW,GAAGg5B,YAAYmU,EAAQC,iBAEzB,GAAIF,aAAoBrG,EAC7B,IAAK,IAAIvtB,EAAI,EAAGA,EAAI4zB,EAASxtC,OAAQ4Z,GAAK,EACxCja,KAAKW,GAAGg5B,YAAYkU,EAAS5zB,SAG/Bja,KAAKW,GAAGg5B,YAAYkU,GAK1B,OAAO7tC,MCh6BPguC,QDw6BF,SAAiBH,GACf,IACIltC,EACAsZ,EAFA4H,EAAWmjB,IAIf,IAAKrkC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAChC,GAAwB,iBAAbktC,EAAuB,CAChC,IAAIC,EAAUjsB,EAASyR,cAAc,OAGrC,IAFAwa,EAAQzF,UAAYwF,EAEf5zB,EAAI6zB,EAAQzJ,WAAWhkC,OAAS,EAAG4Z,GAAK,EAAGA,GAAK,EACnDja,KAAKW,GAAGo5B,aAAa+T,EAAQzJ,WAAWpqB,GAAIja,KAAKW,GAAG0jC,WAAW,SAE5D,GAAIwJ,aAAoBrG,EAC7B,IAAKvtB,EAAI,EAAGA,EAAI4zB,EAASxtC,OAAQ4Z,GAAK,EACpCja,KAAKW,GAAGo5B,aAAa8T,EAAS5zB,GAAIja,KAAKW,GAAG0jC,WAAW,SAGvDrkC,KAAKW,GAAGo5B,aAAa8T,EAAU7tC,KAAKW,GAAG0jC,WAAW,IAItD,OAAOrkC,MC77BPgH,KDi+BF,SAAcksB,GACZ,OAAIlzB,KAAKK,OAAS,EACZ6yB,EACElzB,KAAK,GAAGiuC,oBAAsBvuC,EAAEM,KAAK,GAAGiuC,oBAAoB3tC,GAAG4yB,GAC1DxzB,EAAE,CAACM,KAAK,GAAGiuC,qBAGbvuC,EAAE,IAGPM,KAAK,GAAGiuC,mBAA2BvuC,EAAE,CAACM,KAAK,GAAGiuC,qBAC3CvuC,EAAE,IAGJA,EAAE,KC9+BTwuC,QDi/BF,SAAiBhb,GACf,IAAIib,EAAU,GACVhb,EAAKnzB,KAAK,GACd,IAAKmzB,EAAI,OAAOzzB,EAAE,IAElB,KAAOyzB,EAAG8a,oBAAoB,CAC5B,IAAIz7B,EAAQ2gB,EAAG8a,mBAEX/a,EACExzB,EAAE8S,GAAOlS,GAAG4yB,IAAWib,EAAQ3tC,KAAKgS,GACnC27B,EAAQ3tC,KAAKgS,GAEpB2gB,EAAK3gB,EAGP,OAAO9S,EAAEyuC,IC//BTjnC,KDkgCF,SAAcgsB,GACZ,GAAIlzB,KAAKK,OAAS,EAAG,CACnB,IAAI8yB,EAAKnzB,KAAK,GAEd,OAAIkzB,EACEC,EAAGib,wBAA0B1uC,EAAEyzB,EAAGib,wBAAwB9tC,GAAG4yB,GACxDxzB,EAAE,CAACyzB,EAAGib,yBAGR1uC,EAAE,IAGPyzB,EAAGib,uBAA+B1uC,EAAE,CAACyzB,EAAGib,yBACrC1uC,EAAE,IAGX,OAAOA,EAAE,KCjhCT2uC,QDohCF,SAAiBnb,GACf,IAAIob,EAAU,GACVnb,EAAKnzB,KAAK,GACd,IAAKmzB,EAAI,OAAOzzB,EAAE,IAElB,KAAOyzB,EAAGib,wBAAwB,CAChC,IAAI77B,EAAQ4gB,EAAGib,uBAEXlb,EACExzB,EAAE6S,GAAOjS,GAAG4yB,IAAWob,EAAQ9tC,KAAK+R,GACnC+7B,EAAQ9tC,KAAK+R,GAEpB4gB,EAAK5gB,EAGP,OAAO7S,EAAE4uC,ICliCTv8B,ODyiCF,SAAgBmhB,GAGd,IAFA,IAAI2X,EAAU,GAELlqC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EACT,OAAvBX,KAAKW,GAAG44B,aACNrG,EACExzB,EAAEM,KAAKW,GAAG44B,YAAYj5B,GAAG4yB,IAAW2X,EAAQrqC,KAAKR,KAAKW,GAAG44B,YAE7DsR,EAAQrqC,KAAKR,KAAKW,GAAG44B,aAK3B,OAAO75B,EAAEmrC,ICrjCTA,QDwjCF,SAAiB3X,GAGf,IAFA,IAAI2X,EAAU,GAELlqC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAGpC,IAFA,IAAI4tC,EAAUvuC,KAAKW,GAAG44B,WAEfgV,GACDrb,EACExzB,EAAE6uC,GAASjuC,GAAG4yB,IAAW2X,EAAQrqC,KAAK+tC,GAE1C1D,EAAQrqC,KAAK+tC,GAGfA,EAAUA,EAAQhV,WAItB,OAAO75B,EAAEmrC,ICxkCT1vB,QD2kCF,SAAiB+X,GACf,IAAI/X,EAAUnb,KAEd,YAAwB,IAAbkzB,EACFxzB,EAAE,KAGNyb,EAAQ7a,GAAG4yB,KACd/X,EAAUA,EAAQ0vB,QAAQ3X,GAAUya,GAAG,IAGlCxyB,ICrlCPvb,KDwlCF,SAAcszB,GAGZ,IAFA,IAAIsb,EAAgB,GAEX7tC,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAAG,CACvC,IACE,IAAI8tC,EAAQzuC,KAAKW,GAAGwY,iBAAiB+Z,GACrC,MAAOwb,GACPzgC,QAAQtH,IAAIusB,GAId,IAAK,IAAIjZ,EAAI,EAAGA,EAAIw0B,EAAMpuC,OAAQ4Z,GAAK,EACrCu0B,EAAchuC,KAAKiuC,EAAMx0B,IAI7B,OAAOva,EAAE8uC,ICvmCT/jB,SD0mCF,SAAkByI,GAGhB,IAFA,IAAIzI,EAAW,GAEN9pB,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAGpC,IAFA,IAAI0jC,EAAarkC,KAAKW,GAAG8pB,SAEhBxQ,EAAI,EAAGA,EAAIoqB,EAAWhkC,OAAQ4Z,GAAK,EACrCiZ,IAAYxzB,EAAE2kC,EAAWpqB,IAAI3Z,GAAG4yB,IACnCzI,EAASjqB,KAAK6jC,EAAWpqB,IAK/B,OAAOva,EAAE+qB,ICtnCTrqB,ODoxBF,SAAgBqc,GAEd,OAAO/c,EADMsoC,EAAYhoC,KAAMyc,KCpxB/Bta,ODwnCF,WACE,IAAK,IAAIxB,EAAI,EAAGA,EAAIX,KAAKK,OAAQM,GAAK,EAChCX,KAAKW,GAAG44B,YAAYv5B,KAAKW,GAAG44B,WAAWS,YAAYh6B,KAAKW,IAG9D,OAAOX,OKxrCT,SAAS2uC,EAASlyB,EAAUhR,GAC1B,YADqC,IAAXA,IAAAA,EAAQ,GAC3B0W,WAAW1F,EAAUhR,GAE9B,SAAS2V,IACP,OAAOD,KAAKC,MAiBd,SAASwtB,EAAazb,EAAIzZ,QAAY,IAAZA,IAAAA,EAAO,KAC/B,IACIikB,EACAkR,EACAC,EAHExqC,EAASwhC,IAKTiJ,EArBR,SAA0B5b,GACxB,IACIxF,EADErpB,EAASwhC,IAYf,OAVIxhC,EAAOm0B,mBACT9K,EAAQrpB,EAAOm0B,iBAAiBtF,EAAI,QAEjCxF,GAASwF,EAAG6b,eACfrhB,EAAQwF,EAAG6b,cAERrhB,IACHA,EAAQwF,EAAGxF,OAGNA,EAQU8K,CAAiBtF,GAwClC,OAtCI7uB,EAAO2qC,kBACTJ,EAAeE,EAASnR,WAAamR,EAASG,iBAC7Bn/B,MAAM,KAAK1P,OAAS,IACnCwuC,EAAeA,EACZ9+B,MAAM,MACNmQ,KAAI,SAACpY,GAAD,OAAOA,EAAE0P,QAAQ,IAAK,QAC1B9W,KAAK,OAIVouC,EAAkB,IAAIxqC,EAAO2qC,gBAAiC,SAAjBJ,EAA0B,GAAKA,IAS5ElR,GAPAmR,EACEC,EAASI,cACTJ,EAASK,YACTL,EAASM,aACTN,EAASO,aACTP,EAASnR,WACTmR,EAASrW,iBAAiB,aAAalhB,QAAQ,aAAc,uBACtCkvB,WAAW32B,MAAM,KAG/B,MAAT2J,IAE0Bm1B,EAAxBvqC,EAAO2qC,gBAAgCH,EAAgBS,IAEhC,KAAlB5R,EAAOt9B,OAA8B6Q,WAAWysB,EAAO,KAE5CzsB,WAAWysB,EAAO,KAE3B,MAATjkB,IAE0Bm1B,EAAxBvqC,EAAO2qC,gBAAgCH,EAAgBU,IAEhC,KAAlB7R,EAAOt9B,OAA8B6Q,WAAWysB,EAAO,KAE5CzsB,WAAWysB,EAAO,KAEjCkR,GAAgB,EAEzB,SAAStL,EAAS0C,GAChB,MACe,iBAANA,GACD,OAANA,GACAA,EAAEh9B,aACiD,WAAnDP,OAAOK,UAAU29B,SAASxtB,KAAK+sB,GAAGv1B,MAAM,GAAI,GAGhD,SAAS8yB,IAKP,IAJA,IAAM9b,EAAKhf,OAAM8c,UAAAnlB,QAAA,OAAA+mC,EAAA5hB,UAAA,IACXiqB,EAAW,CAAC,YAAa,cAAe,aAExCC,EAAgC,oBAAXprC,OAAyBA,OAAOorC,iBAActI,EAChEzmC,EAAI,EAAGA,EAAI6kB,UAAKnlB,OAAQM,GAAK,EAAG,CACvC,IAAMgvC,EAAkBhvC,EAAR,GAAA6kB,UAAAnlB,QAAQM,OAARymC,EAAA5hB,UAAQ7kB,GACxB,GACEgvC,MAAAA,KAEED,GAAeC,aAAsBD,GAGvC,IADA,IAAME,EAAYlnC,OAAOg7B,KAAKh7B,OAAOinC,IAAavvC,QAAO,SAAC2iB,GAAD,OAAS0sB,EAAS5qC,QAAQke,GAAO,KACjF8sB,EAAY,EAAGC,EAAMF,EAAUvvC,OAAQwvC,EAAYC,EAAKD,GAAa,EAAG,CAC/E,IAAME,EAAUH,EAAUC,GACpBG,EAAOtnC,OAAOunC,yBAAyBN,EAAYI,QAC5C3I,IAAT4I,GAAsBA,EAAK/M,aACzBM,EAAS7b,EAAGqoB,KAAaxM,EAASoM,EAAWI,IAC3CJ,EAAWI,GAASG,WACtBxoB,EAAGqoB,GAAWJ,EAAWI,GAEzBvM,EAAO9b,EAAGqoB,GAAUJ,EAAWI,KAEvBxM,EAAS7b,EAAGqoB,KAAaxM,EAASoM,EAAWI,KACvDroB,EAAGqoB,GAAW,GACVJ,EAAWI,GAASG,WACtBxoB,EAAGqoB,GAAWJ,EAAWI,GAEzBvM,EAAO9b,EAAGqoB,GAAUJ,EAAWI,KAGjCroB,EAAGqoB,GAAWJ,EAAWI,KAMnC,OAAOroB,EAGT,SAASyoB,EAAkBrJ,EAAU/lC,GACnC2H,OAAOg7B,KAAK3iC,GAAKiP,SAAQ,SAAC+S,GACpBwgB,EAASxiC,EAAIgiB,KACfra,OAAOg7B,KAAK3iC,EAAIgiB,IAAM/S,SAAQ,SAACogC,GACG,mBAArBrvC,EAAIgiB,GAAKqtB,KAClBrvC,EAAIgiB,GAAKqtB,GAAUrvC,EAAIgiB,GAAKqtB,GAAQpJ,KAAKF,OAI/CA,EAAS/jB,GAAOhiB,EAAIgiB,MAIxB,SAASstB,EAAkBvH,GACzB,YADuC,IAAdA,IAAAA,EAAU,IACnC,IAAWA,EACRjoC,OACA2W,QAAQ,aAAc,QACtBA,QAAQ,KAAM,KAGnB,SAAS84B,EAA0BC,EAAY74B,EAAQ84B,EAAgBC,GACrE,IAAM5uB,EAAWmjB,IAWjB,OAVIwL,GACF9nC,OAAOg7B,KAAK+M,GAAYzgC,SAAQ,SAAC+S,GAC/B,IAAKrL,EAAOqL,KAAwB,IAAhBrL,EAAOg5B,KAAe,CACxC,IAAM7X,EAAUhX,EAASyR,cAAc,OACvCuF,EAAQ0Q,UAAYkH,EAAW1tB,GAC/BwtB,EAAWjuC,OAAOu2B,GAClBnhB,EAAOqL,GAAO8V,MAIbnhB,EHzHT,SAASi5B,IAIP,OAHKlI,IACHA,EA3CJ,WACE,IAAMnkC,EAASwhC,IACTjkB,EAAWmjB,IAEjB,MAAO,CACL4L,SACE,iBAAkBtsC,GACjBA,EAAOusC,eAAiBhvB,aAAoBvd,EAAOusC,eAGtDC,gBACIxsC,EAAOysC,cACT,mBAAoBzsC,EAAO6gC,WAC3B7gC,EAAO6gC,UAAU6L,gBAAkB,EAErCC,SACS,qBAAsB3sC,GAAU,2BAA4BA,EAGrE4sC,gBAAkB,WAChB,IAAIC,GAAkB,EACtB,IACE,IAAMC,EAAO1oC,OAAOC,eAAe,GAAI,UAAW,CAEhDkV,IAFgD,WAG9CszB,GAAkB,KAGtB7sC,EAAOs/B,iBAAiB,sBAAuB,KAAMwN,GACrD,MAAOvkB,IAGT,OAAOskB,EAbS,GAgBlBE,SACS,mBAAoB/sC,GAOnBgtC,IAEL7I,ECiBT,SAAS8I,EAAUC,GAIjB,YAJiC,IAAhBA,IAAAA,EAAY,IACxB9I,IACHA,EA/DJ,SAAA+I,GAAwC,IAAlBrM,QAAkB,IAAAqM,EAAJ,GAAIA,GAAlBrM,UACdqD,EAAUkI,IACVrsC,EAASwhC,IACT4L,EAAWptC,EAAO6gC,UAAUuM,SAC5BC,EAAKvM,GAAa9gC,EAAO6gC,UAAUC,UAEnCsD,EAAS,CACbkJ,KAAK,EACLC,SAAS,GAGLC,EAAcxtC,EAAOshC,OAAO7iC,MAC5BgvC,EAAeztC,EAAOshC,OAAOtL,OAE7BuX,EAAUF,EAAGxgC,MAAM,+BACrB6gC,EAAOL,EAAGxgC,MAAM,wBACd8gC,EAAON,EAAGxgC,MAAM,2BAChB+gC,GAAUF,GAAQL,EAAGxgC,MAAM,8BAC3BghC,EAAuB,UAAbT,EACZU,EAAqB,aAAbV,EAuCZ,OArBGM,GACDI,GACA3J,EAAQmI,OAjBU,CAClB,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAMY/rC,QAAWitC,EAAvB,IAAsCC,IAAmB,KAEzDC,EAAOL,EAAGxgC,MAAM,0BACL6gC,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINP,IAAYM,IACdzJ,EAAO2J,GAAK,UACZ3J,EAAOmJ,SAAU,IAEfG,GAAQE,GAAUD,KACpBvJ,EAAO2J,GAAK,MACZ3J,EAAOkJ,KAAM,GAIRlJ,EAKI4J,CAAWd,IAEf9I,ECrDT,SAAS6J,IAIP,OAHK5J,IACHA,EAfJ,WACE,IAEQgJ,EAFFrtC,EAASwhC,IAKf,MAAO,CACL0M,SAAUluC,EAAO6gC,UAAUC,UAAUj0B,MAAM,SAC3CshC,UALMd,EAAKrtC,EAAO6gC,UAAUC,UAAUjhB,cAC/BwtB,EAAG9sC,QAAQ,WAAa,GAAK8sC,EAAG9sC,QAAQ,UAAY,GAAK8sC,EAAG9sC,QAAQ,WAAa,GAKxF6tC,UAAW,+CAA+CxxB,KAAK5c,EAAO6gC,UAAUC,YAMtEuN,IAELhK,EH0DTjgC,OAAOg7B,KAAKkF,GAAS54B,SAAQ,SAAC4iC,GAC5BlqC,OAAOC,eAAejJ,EAAEmD,GAAI+vC,EAAY,CAAE9yC,MAAO8oC,EAAQgK,GAAazP,UAAU,OK7ElF,IAKA0P,EAAe,CACb3yC,KAAM,SACN8I,OAFa,WAGX,IAAM8pC,EAAS9yC,KACfwjC,EAAOsP,EAAQ,CACbC,OAAQ,CACN9B,SAAU,KACV+B,eAFM,WAGCF,IAAUA,EAAOG,WAAcH,EAAOI,cAC3CJ,EAAOC,OAAO9B,SAAW,IAAIkC,gBAAe,SAACC,GAC3C,IAAQrwC,EAAkB+vC,EAAlB/vC,MAAOu3B,EAAWwY,EAAXxY,OACX+Y,EAAWtwC,EACXuwC,EAAYhZ,EAChB8Y,EAAQpjC,SAAQ,SAAAmG,GAA6C,IAA1Co9B,EAA0Cp9B,EAA1Co9B,eAAgBC,EAA0Br9B,EAA1Bq9B,YAAarkC,EAAagH,EAAbhH,OAC1CA,GAAUA,IAAW2jC,EAAO3f,KAChCkgB,EAAWG,EACPA,EAAYzwC,OACXwwC,EAAe,IAAMA,GAAgBE,WAC1CH,EAAYE,EACRA,EAAYlZ,QACXiZ,EAAe,IAAMA,GAAgBG,cAExCL,IAAatwC,GAASuwC,IAAchZ,GACtCwY,EAAOC,OAAOY,mBAGlBb,EAAOC,OAAO9B,SAAS2C,QAAQd,EAAO3f,MAExC0gB,eAvBM,WAwBAf,EAAOC,OAAO9B,UAAY6B,EAAOC,OAAO9B,SAAS6C,WAAahB,EAAO3f,KACvE2f,EAAOC,OAAO9B,SAAS6C,UAAUhB,EAAO3f,IACxC2f,EAAOC,OAAO9B,SAAW,OAG7B0C,cA7BM,WA8BCb,IAAUA,EAAOG,WAAcH,EAAOI,cAC3CJ,EAAOiB,KAAK,gBACZjB,EAAOiB,KAAK,YAEdC,yBAlCM,WAmCClB,IAAUA,EAAOG,WAAcH,EAAOI,aAC3CJ,EAAOiB,KAAK,0BAKpB7wC,GAAI,CACFga,KADE,SACG41B,GACH,IAAMxuC,EAASwhC,IACXgN,EAAOp7B,OAAOu8B,qBApDkB,IADzBnO,IACMqN,eAqDfL,EAAOC,OAAOC,kBAIhB1uC,EAAOs/B,iBAAiB,SAAUkP,EAAOC,OAAOY,eAGhDrvC,EAAOs/B,iBAAiB,oBAAqBkP,EAAOC,OAAOiB,4BAE7DE,QAbE,SAaMpB,GACN,IAAMxuC,EAASwhC,IACfgN,EAAOC,OAAOc,iBACdvvC,EAAOu/B,oBAAoB,SAAUiP,EAAOC,OAAOY,eACnDrvC,EAAOu/B,oBAAoB,oBAAqBiP,EAAOC,OAAOiB,6BCpE9DG,EAAW,CACfC,OADe,SACRjlC,EAAQklC,QAAc,IAAdA,IAAAA,EAAU,IACvB,IAAM/vC,EAASwhC,IACTgN,EAAS9yC,KAGTixC,EAAW,IADI3sC,EAAOgwC,kBAAoBhwC,EAAOiwC,yBACrB,SAACC,GAIjC,GAAyB,IAArBA,EAAUn0C,OAAd,CAIA,IAAMo0C,EAAiB,WACrB3B,EAAOiB,KAAK,iBAAkBS,EAAU,KAGtClwC,EAAO0d,sBACT1d,EAAO0d,sBAAsByyB,GAE7BnwC,EAAO6d,WAAWsyB,EAAgB,QAVlC3B,EAAOiB,KAAK,iBAAkBS,EAAU,OAc5CvD,EAAS2C,QAAQzkC,EAAQ,CACvBulC,gBAA0C,IAAvBL,EAAQK,YAAoCL,EAAQK,WACvEC,eAAwC,IAAtBN,EAAQM,WAAmCN,EAAQM,UACrEC,mBAAgD,IAA1BP,EAAQO,eAAuCP,EAAQO,gBAG/E9B,EAAO7B,SAAS4D,UAAUr0C,KAAKywC,IAEjC/zB,KAjCe,WAkCb,IAAM41B,EAAS9yC,KACf,GAAK8yC,EAAOrK,QAAQwI,UAAa6B,EAAOp7B,OAAOu5B,SAA/C,CACA,GAAI6B,EAAOp7B,OAAOo9B,eAEhB,IADA,IAAMC,EAAmBjC,EAAOkC,IAAInK,UAC3BlqC,EAAI,EAAGA,EAAIo0C,EAAiB10C,OAAQM,GAAK,EAChDmyC,EAAO7B,SAASmD,OAAOW,EAAiBp0C,IAI5CmyC,EAAO7B,SAASmD,OAAOtB,EAAOkC,IAAI,GAAI,CACpCL,UAAW7B,EAAOp7B,OAAOu9B,uBAI3BnC,EAAO7B,SAASmD,OAAOtB,EAAOoC,WAAW,GAAI,CAAER,YAAY,MAE7DR,QAlDe,WAmDEl0C,KACRixC,SAAS4D,UAAU7kC,SAAQ,SAACihC,GACjCA,EAASkE,gBAFIn1C,KAIRixC,SAAS4D,UAAY,KAIhCO,EAAe,CACbl1C,KAAM,WACNwX,OAAQ,CACNu5B,UAAU,EACV6D,gBAAgB,EAChBG,sBAAsB,GAExBjsC,OAPa,WASXmnC,EADenwC,KACW,CACxBixC,SAAQ7N,EAAA,GACH+Q,EADG,CAENU,UAAW,QAIjB3xC,GAAI,CACFga,KADE,SACG41B,GACHA,EAAO7B,SAAS/zB,QAElBg3B,QAJE,SAIMpB,GACNA,EAAO7B,SAASiD,aC/EP,SAASmB,EAAah0C,GACnC,IAAMyxC,EAAS9yC,KACT6hB,EAAWmjB,IACX1gC,EAASwhC,IAET9jC,EAAO8wC,EAAOwC,gBACZ59B,EAA6Bo7B,EAA7Bp7B,OAAQ69B,EAAqBzC,EAArByC,QAChB,GADqCzC,EAAZ0C,WAGrB1C,EAAO2C,YAAa/9B,EAAOg+B,gCAA/B,CAGA,IAAI7oB,EAAIxrB,EACJwrB,EAAE8oB,gBAAe9oB,EAAIA,EAAE8oB,eAC3B,IAAIC,EAAYl2C,EAAEmtB,EAAE1d,QAEpB,GAAiC,YAA7BuI,EAAOm+B,mBACJD,EAAUz6B,QAAQ23B,EAAOgD,WAAWz1C,OAG3C,GADA2B,EAAK+zC,aAA0B,eAAXlpB,EAAE9sB,KACjBiC,EAAK+zC,gBAAgB,UAAWlpB,IAAiB,IAAZA,EAAEmpB,MAC5C,MAAKh0C,EAAK+zC,cAAgB,WAAYlpB,GAAKA,EAAEopB,OAAS,GACtD,IAAIj0C,EAAKk0C,YAAal0C,EAAKm0C,QAQ3B,KAL+Bz+B,EAAO0+B,gBAA4C,KAA1B1+B,EAAO0+B,gBACnCvpB,EAAE1d,QAAU0d,EAAE1d,OAAOknC,YAAch1C,EAAMi1C,MAAQj1C,EAAMi1C,KAAK,KACtFV,EAAYl2C,EAAE2B,EAAMi1C,KAAK,KAIzB5+B,EAAO6+B,WACPX,EAAUz6B,QACRzD,EAAO8+B,kBAAoB9+B,EAAO8+B,kBAAlC,IAA0D9+B,EAAO0+B,gBACjE,GAEFtD,EAAO2D,YAAa,OAItB,IAAI/+B,EAAOg/B,cACJd,EAAUz6B,QAAQzD,EAAOg/B,cAAc,GAD9C,CAIAnB,EAAQoB,SAAsB,eAAX9pB,EAAE9sB,KAAwB8sB,EAAE+pB,cAAc,GAAGC,MAAQhqB,EAAEgqB,MAC1EtB,EAAQuB,SAAsB,eAAXjqB,EAAE9sB,KAAwB8sB,EAAE+pB,cAAc,GAAGG,MAAQlqB,EAAEkqB,MAC1E,IAAMC,EAASzB,EAAQoB,SACjBM,EAAS1B,EAAQuB,SAIjBI,EAAqBx/B,EAAOw/B,oBAAsBx/B,EAAOy/B,sBACzDC,EAAqB1/B,EAAO0/B,oBAAsB1/B,EAAO2/B,sBAC/D,GACEH,IACCF,GAAUI,GAAsBJ,GAAU1yC,EAAOgzC,WAAaF,GAC/D,CACA,GAA2B,YAAvBF,EAGF,OAFA71C,EAAMk2C,iBAqBV,GAfA/T,EAAOxhC,EAAM,CACXk0C,WAAW,EACXC,SAAS,EACTqB,qBAAqB,EACrBC,iBAAarQ,EACbsQ,iBAAatQ,IAGfmO,EAAQyB,OAASA,EACjBzB,EAAQ0B,OAASA,EACjBj1C,EAAK21C,eAAiBv2B,IACtB0xB,EAAO2D,YAAa,EACpB3D,EAAO8E,aACP9E,EAAO+E,oBAAiBzQ,EACpB1vB,EAAO6K,UAAY,IAAGvgB,EAAK81C,oBAAqB,GACrC,eAAXjrB,EAAE9sB,KAAuB,CAC3B,IAAIw3C,GAAiB,EACjB3B,EAAUt1C,GAAG0B,EAAK+1C,qBAAoBR,GAAiB,GAEzD11B,EAASiiB,eACTpkC,EAAEmiB,EAASiiB,eAAexjC,GAAG0B,EAAK+1C,oBAClCl2B,EAASiiB,gBAAkB8R,EAAU,IAErC/zB,EAASiiB,cAAcC,OAGzB,IAAMiU,EACJT,GAAkBzE,EAAOmF,gBAAkBvgC,EAAOwgC,0BAEjDxgC,EAAOygC,gCAAiCH,GACxCpC,EAAU,GAAGwC,mBAEdvrB,EAAE0qB,iBAGNzE,EAAOiB,KAAK,aAAclnB,KCnGb,SAASwrB,EAAYh3C,GAClC,IAAMwgB,EAAWmjB,IACX8N,EAAS9yC,KACTgC,EAAO8wC,EAAOwC,gBACZ59B,EAAgDo7B,EAAhDp7B,OAAQ69B,EAAwCzC,EAAxCyC,QAAuB+C,EAAiBxF,EAA/ByF,aACzB,GADwDzF,EAAZ0C,QAC5C,CACA,IAAI3oB,EAAIxrB,EAER,GADIwrB,EAAE8oB,gBAAe9oB,EAAIA,EAAE8oB,eACtB3zC,EAAKk0C,WAMV,IAAIl0C,EAAK+zC,cAA2B,cAAXlpB,EAAE9sB,KAA3B,CACA,IAAMy4C,EACO,cAAX3rB,EAAE9sB,MAAwB8sB,EAAE+pB,gBAAkB/pB,EAAE+pB,cAAc,IAAM/pB,EAAE4rB,eAAe,IACjF5B,EAAmB,cAAXhqB,EAAE9sB,KAAuBy4C,EAAY3B,MAAQhqB,EAAEgqB,MACvDE,EAAmB,cAAXlqB,EAAE9sB,KAAuBy4C,EAAYzB,MAAQlqB,EAAEkqB,MAC7D,GAAIlqB,EAAE6rB,wBAGJ,OAFAnD,EAAQyB,OAASH,OACjBtB,EAAQ0B,OAASF,GAGnB,IAAKjE,EAAOmF,eAYV,OAVAnF,EAAO2D,YAAa,OAChBz0C,EAAKk0C,YACP1S,EAAO+R,EAAS,CACdyB,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZ/0C,EAAK21C,eAAiBv2B,MAI1B,GAAIpf,EAAK+zC,cAAgBr+B,EAAOihC,sBAAwBjhC,EAAOkhC,KAC7D,GAAI9F,EAAO+F,cAET,GACG9B,EAAQxB,EAAQ0B,QAAUnE,EAAOgG,WAAahG,EAAOiG,gBACrDhC,EAAQxB,EAAQ0B,QAAUnE,EAAOgG,WAAahG,EAAOkG,eAItD,OAFAh3C,EAAKk0C,WAAY,OACjBl0C,EAAKm0C,SAAU,QAGZ,GACJU,EAAQtB,EAAQyB,QAAUlE,EAAOgG,WAAahG,EAAOiG,gBACrDlC,EAAQtB,EAAQyB,QAAUlE,EAAOgG,WAAahG,EAAOkG,eAEtD,OAGJ,GAAIh3C,EAAK+zC,cAAgBl0B,EAASiiB,eAC5BjX,EAAE1d,SAAW0S,EAASiiB,eAAiBpkC,EAAEmtB,EAAE1d,QAAQ7O,GAAG0B,EAAK+1C,mBAG7D,OAFA/1C,EAAKm0C,SAAU,OACfrD,EAAO2D,YAAa,GAOxB,GAHIz0C,EAAKw1C,qBACP1E,EAAOiB,KAAK,YAAalnB,KAEvBA,EAAE+pB,eAAiB/pB,EAAE+pB,cAAcv2C,OAAS,GAAhD,CAEAk1C,EAAQoB,SAAWE,EACnBtB,EAAQuB,SAAWC,EAEnB,IAAMkC,EAAQ1D,EAAQoB,SAAWpB,EAAQyB,OACnCkC,EAAQ3D,EAAQuB,SAAWvB,EAAQ0B,OACzC,KAAInE,EAAOp7B,OAAO6K,WAAarc,KAAK+F,KAAK/F,KAAAD,IAAAgzC,EAAS,GAAT/yC,KAAAD,IAAaizC,EAAS,IAAKpG,EAAOp7B,OAAO6K,WAAlF,CAIE,IAAI42B,EADN,QAAgC,IAArBn3C,EAAKy1C,YAGX3E,EAAOsG,gBAAkB7D,EAAQuB,WAAavB,EAAQ0B,QACtDnE,EAAO+F,cAAgBtD,EAAQoB,WAAapB,EAAQyB,OAErDh1C,EAAKy1C,aAAc,EAGfwB,EAAQA,EAAQC,EAAQA,GAAS,KACnCC,EAA6D,IAA/CjzC,KAAKuwB,MAAMvwB,KAAKiO,IAAI+kC,GAAQhzC,KAAKiO,IAAI8kC,IAAiB/yC,KAAK2F,GACzE7J,EAAKy1C,YAAc3E,EAAOsG,eACtBD,EAAazhC,EAAOyhC,WACpB,GAAKA,EAAazhC,EAAOyhC,YAYnC,GARIn3C,EAAKy1C,aACP3E,EAAOiB,KAAK,oBAAqBlnB,QAEH,IAArB7qB,EAAK01C,cACVnC,EAAQoB,WAAapB,EAAQyB,QAAUzB,EAAQuB,WAAavB,EAAQ0B,SACtEj1C,EAAK01C,aAAc,IAGnB11C,EAAKy1C,YACPz1C,EAAKk0C,WAAY,OAGnB,GAAKl0C,EAAK01C,YAAV,CAGA5E,EAAO2D,YAAa,GACf/+B,EAAO2hC,SAAWxsB,EAAEmf,YACvBnf,EAAE0qB,iBAEA7/B,EAAO4hC,2BAA6B5hC,EAAOiM,QAC7CkJ,EAAE0sB,kBAGCv3C,EAAKm0C,UACJz+B,EAAOkhC,MACT9F,EAAO0G,UAETx3C,EAAKy3C,eAAiB3G,EAAOlE,eAC7BkE,EAAO4G,cAAc,GACjB5G,EAAO2C,WACT3C,EAAOoC,WAAWtyC,QAAQ,qCAE5BZ,EAAK23C,qBAAsB,GAEvBjiC,EAAOkiC,aAAyC,IAA1B9G,EAAO+G,iBAAqD,IAA1B/G,EAAOgH,gBACjEhH,EAAOiH,eAAc,GAEvBjH,EAAOiB,KAAK,kBAAmBlnB,IAEjCimB,EAAOiB,KAAK,aAAclnB,GAC1B7qB,EAAKm0C,SAAU,EAEf,IAAI6D,EAAOlH,EAAOsG,eAAiBH,EAAQC,EAC3C3D,EAAQyE,KAAOA,EAEfA,GAAQtiC,EAAOuiC,WACX3B,IAAK0B,GAAQA,GAEjBlH,EAAO+E,eAAiBmC,EAAO,EAAI,OAAS,OAC5Ch4C,EAAKk4C,iBAAmBF,EAAOh4C,EAAKy3C,eAEpC,IAAIU,GAAsB,EACtBC,EAAkB1iC,EAAO0iC,gBA4C7B,GA3CI1iC,EAAOihC,sBACTyB,EAAkB,GAEhBJ,EAAO,GAAKh4C,EAAKk4C,iBAAmBpH,EAAOkG,gBAC7CmB,GAAsB,EAClBziC,EAAO2iC,aACTr4C,EAAKk4C,iBACHpH,EAAOkG,eACP,EADA9yC,KAAAD,KAEE6sC,EAAOkG,eAAiBh3C,EAAKy3C,eAAiBO,EAASI,KACpDJ,EAAO,GAAKh4C,EAAKk4C,iBAAmBpH,EAAOiG,iBACpDoB,GAAsB,EAClBziC,EAAO2iC,aACTr4C,EAAKk4C,iBACHpH,EAAOiG,eACP,EADA7yC,KAAAD,IAEC6sC,EAAOiG,eAAiB/2C,EAAKy3C,eAAiBO,EAASI,KAG1DD,IACFttB,EAAE6rB,yBAA0B,IAK3B5F,EAAO+G,gBACkB,SAA1B/G,EAAO+E,gBACP71C,EAAKk4C,iBAAmBl4C,EAAKy3C,iBAE7Bz3C,EAAKk4C,iBAAmBl4C,EAAKy3C,iBAG5B3G,EAAOgH,gBACkB,SAA1BhH,EAAO+E,gBACP71C,EAAKk4C,iBAAmBl4C,EAAKy3C,iBAE7Bz3C,EAAKk4C,iBAAmBl4C,EAAKy3C,gBAE1B3G,EAAOgH,gBAAmBhH,EAAO+G,iBACpC73C,EAAKk4C,iBAAmBl4C,EAAKy3C,gBAI3B/hC,EAAO6K,UAAY,EAAG,CACxB,KAAIrc,KAAKiO,IAAI6lC,GAAQtiC,EAAO6K,WAAavgB,EAAK81C,oBAa5C,YADA91C,EAAKk4C,iBAAmBl4C,EAAKy3C,gBAX7B,IAAKz3C,EAAK81C,mBAQR,OAPA91C,EAAK81C,oBAAqB,EAC1BvC,EAAQyB,OAASzB,EAAQoB,SACzBpB,EAAQ0B,OAAS1B,EAAQuB,SACzB90C,EAAKk4C,iBAAmBl4C,EAAKy3C,oBAC7BlE,EAAQyE,KAAOlH,EAAOsG,eAClB7D,EAAQoB,SAAWpB,EAAQyB,OAC3BzB,EAAQuB,SAAWvB,EAAQ0B,QAShCv/B,EAAO4iC,eAAgB5iC,EAAO2hC,WAG/B3hC,EAAO6iC,UAAY7iC,EAAO8iC,qBAAuB9iC,EAAO+iC,yBAC1D3H,EAAO4H,oBACP5H,EAAO6H,uBAELjjC,EAAO6iC,WAEsB,IAA3Bv4C,EAAK44C,WAAWv6C,QAClB2B,EAAK44C,WAAWp6C,KAAK,CACnBwU,SAAUugC,EAAQzC,EAAOsG,eAAiB,SAAW,UACrDryC,KAAM/E,EAAK21C,iBAGf31C,EAAK44C,WAAWp6C,KAAK,CACnBwU,SAAUugC,EAAQzC,EAAOsG,eAAiB,WAAa,YACvDryC,KAAMqa,OAIV0xB,EAAO+H,eAAe74C,EAAKk4C,kBAE3BpH,EAAOgI,aAAa94C,EAAKk4C,4BA7NnBl4C,EAAK01C,aAAe11C,EAAKy1C,aAC3B3E,EAAOiB,KAAK,oBAAqBlnB,ICZxB,SAASkuB,EAAW15C,GACjC,IAAMyxC,EAAS9yC,KACTgC,EAAO8wC,EAAOwC,gBAEZ59B,EAAkFo7B,EAAlFp7B,OAAQ69B,EAA0EzC,EAA1EyC,QAAuB+C,EAAmDxF,EAAjEyF,aAAmBrD,EAA8CpC,EAA9CoC,WAAY8F,EAAkClI,EAAlCkI,WAAYC,EAAsBnI,EAAtBmI,SACpE,GAD0FnI,EAAZ0C,QAC9E,CACA,IAAI3oB,EAAIxrB,EAMR,GALIwrB,EAAE8oB,gBAAe9oB,EAAIA,EAAE8oB,eACvB3zC,EAAKw1C,qBACP1E,EAAOiB,KAAK,WAAYlnB,GAE1B7qB,EAAKw1C,qBAAsB,GACtBx1C,EAAKk0C,UAMR,OALIl0C,EAAKm0C,SAAWz+B,EAAOkiC,YACzB9G,EAAOiH,eAAc,GAEvB/3C,EAAKm0C,SAAU,OACfn0C,EAAK01C,aAAc,GAKnBhgC,EAAOkiC,YACP53C,EAAKm0C,SACLn0C,EAAKk0C,aACsB,IAA1BpD,EAAO+G,iBAAqD,IAA1B/G,EAAOgH,iBAE1ChH,EAAOiH,eAAc,GAIvB,IAiCImB,EAjCEC,EAAe/5B,IACfg6B,EAAWD,EAAen5C,EAAK21C,eAgBrC,GAbI7E,EAAO2D,aACT3D,EAAOuI,mBAAmBxuB,GAC1BimB,EAAOiB,KAAK,YAAalnB,GACrBuuB,EAAW,KAAOD,EAAen5C,EAAKs5C,cAAgB,KACxDxI,EAAOiB,KAAK,wBAAyBlnB,IAIzC7qB,EAAKs5C,cAAgBl6B,IACrButB,GAAS,WACFmE,EAAOG,YAAWH,EAAO2D,YAAa,OAI1Cz0C,EAAKk0C,YACLl0C,EAAKm0C,UACLrD,EAAO+E,gBACS,IAAjBtC,EAAQyE,MACRh4C,EAAKk4C,mBAAqBl4C,EAAKy3C,eAK/B,OAHAz3C,EAAKk0C,WAAY,EACjBl0C,EAAKm0C,SAAU,OACfn0C,EAAK01C,aAAc,GAcrB,GAXA11C,EAAKk0C,WAAY,EACjBl0C,EAAKm0C,SAAU,EACfn0C,EAAK01C,aAAc,EAIjBwD,EADExjC,EAAO4iC,aACIhC,EAAMxF,EAAOgG,WAAahG,EAAOgG,WAEhC92C,EAAKk4C,kBAGjBxiC,EAAO2hC,QAIX,GAAI3hC,EAAO6iC,SAAX,CACE,GAAIW,GAAcpI,EAAOkG,eAEvB,YADAlG,EAAOyI,QAAQzI,EAAO0I,aAGxB,GAAIN,GAAcpI,EAAOiG,eAMvB,YALIjG,EAAO2I,OAAOp7C,OAAS46C,EAAS56C,OAClCyyC,EAAOyI,QAAQN,EAAS56C,OAAS,GAEjCyyC,EAAOyI,QAAQzI,EAAO2I,OAAOp7C,OAAS,IAK1C,GAAIqX,EAAOgkC,iBAAkB,CAC3B,GAAI15C,EAAK44C,WAAWv6C,OAAS,EAAG,CAC9B,IAAMs7C,EAAgB35C,EAAK44C,WAAWgB,MAChCC,EAAgB75C,EAAK44C,WAAWgB,MAEhCv/B,EAAWs/B,EAAc3mC,SAAW6mC,EAAc7mC,SAClDjO,EAAO40C,EAAc50C,KAAO80C,EAAc90C,KAChD+rC,EAAOgJ,SAAWz/B,EAAWtV,EAC7B+rC,EAAOgJ,UAAY,EACf51C,KAAKiO,IAAI2+B,EAAOgJ,UAAYpkC,EAAOqkC,0BACrCjJ,EAAOgJ,SAAW,IAIhB/0C,EAAO,KAAOqa,IAAQu6B,EAAc50C,KAAO,OAC7C+rC,EAAOgJ,SAAW,QAGpBhJ,EAAOgJ,SAAW,EAEpBhJ,EAAOgJ,UAAYpkC,EAAOskC,8BAE1Bh6C,EAAK44C,WAAWv6C,OAAS,EACzB,IAAI47C,EAAmB,IAAOvkC,EAAOwkC,sBAC/BC,EAAmBrJ,EAAOgJ,SAAWG,EAEvCG,EAActJ,EAAOgG,UAAYqD,EACjC7D,IAAK8D,GAAeA,GAExB,IACIC,EAEAC,EAHAC,GAAW,EAETC,EAA2C,GAA5Bt2C,KAAKiO,IAAI2+B,EAAOgJ,UAAiBpkC,EAAO+kC,4BAE7D,GAAIL,EAActJ,EAAOiG,eACnBrhC,EAAOglC,wBACLN,EAActJ,EAAOiG,gBAAkByD,IACzCJ,EAActJ,EAAOiG,eAAiByD,GAExCH,EAAsBvJ,EAAOiG,eAC7BwD,GAAW,EACXv6C,EAAK23C,qBAAsB,GAE3ByC,EAActJ,EAAOiG,eAEnBrhC,EAAOkhC,MAAQlhC,EAAOilC,iBAAgBL,GAAe,QACpD,GAAIF,EAActJ,EAAOkG,eAC1BthC,EAAOglC,wBACLN,EAActJ,EAAOkG,eAAiBwD,IACxCJ,EAActJ,EAAOkG,eAAiBwD,GAExCH,EAAsBvJ,EAAOkG,eAC7BuD,GAAW,EACXv6C,EAAK23C,qBAAsB,GAE3ByC,EAActJ,EAAOkG,eAEnBthC,EAAOkhC,MAAQlhC,EAAOilC,iBAAgBL,GAAe,QACpD,GAAI5kC,EAAOklC,eAAgB,CAEhC,IADA,IAAIC,EACK5iC,EAAI,EAAGA,EAAIghC,EAAS56C,OAAQ4Z,GAAK,EACxC,GAAIghC,EAAShhC,IAAMmiC,EAAa,CAC9BS,EAAY5iC,EACZ,MAaJmiC,IAJEA,EAJAl2C,KAAKiO,IAAI8mC,EAAS4B,GAAaT,GAC7Bl2C,KAAKiO,IAAI8mC,EAAS4B,EAAY,GAAKT,IACX,SAA1BtJ,EAAO+E,eAEOoD,EAAS4B,GAET5B,EAAS4B,EAAY,IAUvC,GANIP,GACFxJ,EAAOgK,KAAK,iBAAiB,WAC3BhK,EAAO0G,aAIa,IAApB1G,EAAOgJ,UAMT,GAJEG,EADE3D,EACiBpyC,KAAKiO,MAAMioC,EAActJ,EAAOgG,WAAahG,EAAOgJ,UAEpD51C,KAAKiO,KAAKioC,EAActJ,EAAOgG,WAAahG,EAAOgJ,UAEpEpkC,EAAOklC,eAAgB,CAQzB,IAAMG,EAAe72C,KAAKiO,KAAKmkC,GAAO8D,EAAcA,GAAetJ,EAAOgG,WACpEkE,EAAmBlK,EAAOmK,gBAAgBnK,EAAO0I,aAErDS,EADEc,EAAeC,EACEtlC,EAAOwlC,MACjBH,EAAe,EAAIC,EACM,IAAftlC,EAAOwlC,MAEQ,IAAfxlC,EAAOwlC,YAGzB,GAAIxlC,EAAOklC,eAEhB,YADA9J,EAAOqK,iBAILzlC,EAAOglC,wBAA0BH,GACnCzJ,EAAO+H,eAAewB,GACtBvJ,EAAO4G,cAAcuC,GACrBnJ,EAAOgI,aAAasB,GACpBtJ,EAAOsK,iBAAgB,EAAMtK,EAAO+E,gBACpC/E,EAAO2C,WAAY,EACnBP,EAAW/I,eAAc,WAClB2G,IAAUA,EAAOG,WAAcjxC,EAAK23C,sBACzC7G,EAAOiB,KAAK,kBACZjB,EAAO4G,cAAchiC,EAAOwlC,OAC5B/6B,YAAW,WACT2wB,EAAOgI,aAAauB,GACpBnH,EAAW/I,eAAc,WAClB2G,IAAUA,EAAOG,WACtBH,EAAO3G,qBAER,QAEI2G,EAAOgJ,UAChBhJ,EAAO+H,eAAeuB,GACtBtJ,EAAO4G,cAAcuC,GACrBnJ,EAAOgI,aAAasB,GACpBtJ,EAAOsK,iBAAgB,EAAMtK,EAAO+E,gBAC/B/E,EAAO2C,YACV3C,EAAO2C,WAAY,EACnBP,EAAW/I,eAAc,WAClB2G,IAAUA,EAAOG,WACtBH,EAAO3G,sBAIX2G,EAAOiB,KAAK,8BACZjB,EAAO+H,eAAeuB,IAGxBtJ,EAAO4H,oBACP5H,EAAO6H,0BACF,CAAA,GAAIjjC,EAAOklC,eAEhB,YADA9J,EAAOqK,iBAEEzlC,EAAO6iC,UAChBzH,EAAOiB,KAAK,gCAGTr8B,EAAOgkC,kBAAoBN,GAAY1jC,EAAO2lC,gBACjDvK,EAAO+H,iBACP/H,EAAO4H,oBACP5H,EAAO6H,2BA7KX,CAqLA,IAFA,IAAI2C,EAAY,EACZC,EAAYzK,EAAOmK,gBAAgB,GAEjCt8C,EAAI,EACRA,EAAIq6C,EAAW36C,OACfM,GAAKA,EAAI+W,EAAO8lC,mBAAqB,EAAI9lC,EAAO+lC,eAChD,CACA,IAAMziC,EAAYra,EAAI+W,EAAO8lC,mBAAqB,EAAI,EAAI9lC,EAAO+lC,oBACxB,IAA9BzC,EAAWr6C,EAAIqa,GACpBkgC,GAAcF,EAAWr6C,IAAMu6C,EAAaF,EAAWr6C,EAAIqa,KAC7DsiC,EAAY38C,EACZ48C,EAAYvC,EAAWr6C,EAAIqa,GAAaggC,EAAWr6C,IAE5Cu6C,GAAcF,EAAWr6C,KAClC28C,EAAY38C,EACZ48C,EAAYvC,EAAWA,EAAW36C,OAAS,GAAK26C,EAAWA,EAAW36C,OAAS,IAKnF,IAAMgF,GAAS61C,EAAaF,EAAWsC,IAAcC,EAC/CviC,EAAYsiC,EAAY5lC,EAAO8lC,mBAAqB,EAAI,EAAI9lC,EAAO+lC,eAEzE,GAAIrC,EAAW1jC,EAAO2lC,aAAc,CAElC,IAAK3lC,EAAOgmC,WAEV,YADA5K,EAAOyI,QAAQzI,EAAO0I,aAGM,SAA1B1I,EAAO+E,iBACLxyC,GAASqS,EAAOimC,gBAAiB7K,EAAOyI,QAAQ+B,EAAYtiC,GAC3D83B,EAAOyI,QAAQ+B,IAEQ,SAA1BxK,EAAO+E,iBACLxyC,EAAQ,EAAIqS,EAAOimC,gBAAiB7K,EAAOyI,QAAQ+B,EAAYtiC,GAC9D83B,EAAOyI,QAAQ+B,QAEjB,CAEL,IAAK5lC,EAAOkmC,YAEV,YADA9K,EAAOyI,QAAQzI,EAAO0I,aAItB1I,EAAO+K,aACNhxB,EAAE1d,SAAW2jC,EAAO+K,WAAWC,QAAUjxB,EAAE1d,SAAW2jC,EAAO+K,WAAWE,QAQhElxB,EAAE1d,SAAW2jC,EAAO+K,WAAWC,OACxChL,EAAOyI,QAAQ+B,EAAYtiC,GAE3B83B,EAAOyI,QAAQ+B,IATe,SAA1BxK,EAAO+E,gBACT/E,EAAOyI,QAAQ+B,EAAYtiC,GAEC,SAA1B83B,EAAO+E,gBACT/E,EAAOyI,QAAQ+B,OCnTR,SAASU,IACtB,IAAMlL,EAAS9yC,KAEP0X,EAAeo7B,EAAfp7B,OAAQyb,EAAO2f,EAAP3f,GAEhB,IAAIA,GAAyB,IAAnBA,EAAGoN,YAAb,CAGI7oB,EAAOumC,aACTnL,EAAOoL,gBAIT,IAAQrE,EAA6C/G,EAA7C+G,eAAgBC,EAA6BhH,EAA7BgH,eAAgBmB,EAAanI,EAAbmI,SAGxCnI,EAAO+G,gBAAiB,EACxB/G,EAAOgH,gBAAiB,EAExBhH,EAAO8E,aACP9E,EAAOqL,eAEPrL,EAAO6H,uBAEqB,SAAzBjjC,EAAO0mC,eAA4B1mC,EAAO0mC,cAAgB,IAC3DtL,EAAOuL,QACNvL,EAAOwL,cACPxL,EAAOp7B,OAAOilC,eAEf7J,EAAOyI,QAAQzI,EAAO2I,OAAOp7C,OAAS,EAAG,GAAG,GAAO,GAEnDyyC,EAAOyI,QAAQzI,EAAO0I,YAAa,GAAG,GAAO,GAG3C1I,EAAOyL,UAAYzL,EAAOyL,SAASC,SAAW1L,EAAOyL,SAASz4B,QAChEgtB,EAAOyL,SAASE,MAGlB3L,EAAOgH,eAAiBA,EACxBhH,EAAO+G,eAAiBA,EAEpB/G,EAAOp7B,OAAOgnC,eAAiBzD,IAAanI,EAAOmI,UACrDnI,EAAO6L,iBC1CI,SAASC,EAAQ/xB,GAC9B,IAAMimB,EAAS9yC,KACV8yC,EAAO0C,UACP1C,EAAO2D,aACN3D,EAAOp7B,OAAOmnC,eAAehyB,EAAE0qB,iBAC/BzE,EAAOp7B,OAAOonC,0BAA4BhM,EAAO2C,YACnD5oB,EAAE0sB,kBACF1sB,EAAEkyB,8BCPO,SAASC,IACtB,IAAMlM,EAAS9yC,KACP81C,EAAqChD,EAArCgD,UAAWyC,EAA0BzF,EAA1ByF,aACnB,GAD6CzF,EAAZ0C,QACjC,CACA1C,EAAOmM,kBAAoBnM,EAAOgG,UAC9BhG,EAAOsG,eAEPtG,EAAOgG,UADLP,EACiBzC,EAAUoJ,YAAcpJ,EAAUvV,YAAcuV,EAAU7I,YAEzD6I,EAAU7I,WAGhC6F,EAAOgG,WAAahD,EAAU/I,WAGN,IAAtB+F,EAAOgG,YAAkBhG,EAAOgG,UAAY,GAEhDhG,EAAO4H,oBACP5H,EAAO6H,sBAGP,IAAMwE,EAAiBrM,EAAOiG,eAAiBjG,EAAOkG,gBAC/B,IAAnBmG,EACY,GAECrM,EAAOgG,UAAYhG,EAAOkG,gBAAkBmG,KAEzCrM,EAAOh2B,UACzBg2B,EAAO+H,eAAetC,GAAgBzF,EAAOgG,UAAYhG,EAAOgG,WAGlEhG,EAAOiB,KAAK,eAAgBjB,EAAOgG,WAAW,ICtBhD,IAAIsG,GAAqB,EACzB,SAASC,KCkBT,IC5BA/tC,EAAe,CACb4L,MAAM,EACNskB,UAAW,aACXqU,kBAAmB,YACnByJ,aAAc,EACdpC,MAAO,IACP7D,SAAS,EACTkG,sBAAsB,EACtBtL,gBAAgB,EAChBtwB,QAAQ,EACR6sB,gBAAgB,EAChBgF,SAAS,EACTuC,kBAAmB,wDAGnBh1C,MAAO,KACPu3B,OAAQ,KAGRob,gCAAgC,EAGhCtQ,UAAW,KACX/hC,IAAK,KAGL6zC,oBAAoB,EACpBE,mBAAoB,GAGpBmD,UAAU,EACVmB,kBAAkB,EAClBQ,sBAAuB,EACvBQ,wBAAwB,EACxBD,4BAA6B,EAC7BT,8BAA+B,EAC/BY,gBAAgB,EAChBb,wBAAyB,IAGzByD,YAAY,EAGZC,gBAAgB,EAGhBC,kBAAkB,EAGlBptB,OAAQ,QAGR2rB,iBAAa7W,EACbuY,gBAAiB,SAGjBC,aAAc,EACdxB,cAAe,EACfyB,gBAAiB,EACjBC,oBAAqB,SACrBrC,eAAgB,EAChBD,mBAAoB,EACpBb,gBAAgB,EAChBoD,sBAAsB,EACtBC,mBAAoB,EACpBC,kBAAmB,EACnBC,qBAAqB,EACrBC,0BAA0B,EAG1BzB,eAAe,EAGf0B,cAAc,EAGdnG,WAAY,EACZd,WAAY,GACZkH,eAAe,EACfzC,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBN,aAAc,IACd/C,cAAc,EACdrC,gBAAgB,EAChB11B,UAAW,EACX+2B,0BAA0B,EAC1BpB,0BAA0B,EAC1BC,+BAA+B,EAC/BQ,qBAAqB,EAGrB2H,mBAAmB,EAGnBjG,YAAY,EACZD,gBAAiB,IAGjBI,qBAAqB,EACrBC,uBAAuB,EAGvBb,YAAY,EAGZiF,eAAe,EACfC,0BAA0B,EAC1ByB,qBAAqB,EAGrBC,eAAe,EACfC,qBAAqB,EAGrB7H,MAAM,EACN8H,qBAAsB,EACtBC,aAAc,KACdC,wBAAwB,EACxBC,mBAAmB,EAGnB/G,gBAAgB,EAChBD,gBAAgB,EAChBnD,aAAc,KACdH,WAAW,EACXH,eAAgB,oBAChBI,kBAAmB,KAGnBsK,kBAAkB,EAGlBC,uBAAwB,oBACxBC,WAAY,eACZC,gBAAiB,+BACjBC,iBAAkB,sBAClBC,0BAA2B,gCAC3BC,kBAAmB,uBACnBC,oBAAqB,yBACrBC,eAAgB,oBAChBC,wBAAyB,8BACzBC,eAAgB,oBAChBC,wBAAyB,8BACzBC,aAAc,iBAGdC,oBAAoB,EAGpBC,cAAc,GCzHVC,EAAa,CACjBC,QC5Ba,CACbC,UADa,SACHC,GACR,IAAMlb,EAAW9mC,KACZ8mC,EAASmb,SACdv5C,OAAOg7B,KAAKoD,EAASmb,SAASjyC,SAAQ,SAACkyC,GACrC,IAAMh+C,EAAS4iC,EAASmb,QAAQC,GAE5Bh+C,EAAOwT,QACT8rB,EAAOwe,EAAgB99C,EAAOwT,YAKpCyqC,WAba,SAaFC,QAAoB,IAApBA,IAAAA,EAAgB,IACzB,IAAMtb,EAAW9mC,KACZ8mC,EAASmb,SACdv5C,OAAOg7B,KAAKoD,EAASmb,SAASjyC,SAAQ,SAACkyC,GACrC,IAAMh+C,EAAS4iC,EAASmb,QAAQC,GAC1BG,EAAeD,EAAcF,IAAe,GAG9Ch+C,EAAOhB,IAAM4jC,EAAS5jC,IACxBwF,OAAOg7B,KAAKx/B,EAAOhB,IAAI8M,SAAQ,SAACsyC,GAC9Bxb,EAAS5jC,GAAGo/C,EAAiBp+C,EAAOhB,GAAGo/C,OAKvCp+C,EAAO8E,QACT9E,EAAO8E,OAAOg+B,KAAKF,EAAnB5iC,CAA6Bm+C,QDAnCE,cE7Ba,CACbr/C,GADa,SACV8nC,EAAQS,EAAS5d,GAClB,IAAMxpB,EAAOrE,KACb,GAAuB,mBAAZyrC,EAAwB,OAAOpnC,EAC1C,IAAMm+C,EAAS30B,EAAW,UAAY,OAKtC,OAJAmd,EAAOj7B,MAAM,KAAKC,SAAQ,SAAC3O,GACpBgD,EAAKo+C,gBAAgBphD,KAAQgD,EAAKo+C,gBAAgBphD,GAAS,IAChEgD,EAAKo+C,gBAAgBphD,GAAOmhD,GAAQ/W,MAE/BpnC,GAGTy4C,KAZa,SAYR9R,EAAQS,EAAS5d,GACpB,IAAMxpB,EAAOrE,KACb,GAAuB,mBAAZyrC,EAAwB,OAAOpnC,EAC1C,SAASq+C,IACPr+C,EAAKgnC,IAAIL,EAAQ0X,GACbA,EAAYC,uBACPD,EAAYC,eAHO,IAAA,IAAAnvB,EAAAhO,UAAAnlB,OAANqxB,EAAM,IAAAxkB,MAAAsmB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAANhC,EAAMgC,GAAAlO,UAAAkO,GAK5B+X,EAAQzyB,MAAM3U,EAAMqtB,GAGtB,OADAgxB,EAAYC,eAAiBlX,EACtBpnC,EAAKnB,GAAG8nC,EAAQ0X,EAAa70B,IAGtC+0B,MA1Ba,SA0BPnX,EAAS5d,GACb,IAAMxpB,EAAOrE,KACb,GAAuB,mBAAZyrC,EAAwB,OAAOpnC,EAC1C,IAAMm+C,EAAS30B,EAAW,UAAY,OAItC,OAHIxpB,EAAKw+C,mBAAmBh+C,QAAQ4mC,GAAW,GAC7CpnC,EAAKw+C,mBAAmBL,GAAQ/W,GAE3BpnC,GAGTy+C,OApCa,SAoCNrX,GACL,IAAMpnC,EAAOrE,KACb,IAAKqE,EAAKw+C,mBAAoB,OAAOx+C,EACrC,IAAMiU,EAAQjU,EAAKw+C,mBAAmBh+C,QAAQ4mC,GAI9C,OAHInzB,GAAS,GACXjU,EAAKw+C,mBAAmBrzC,OAAO8I,EAAO,GAEjCjU,GAGTgnC,IA9Ca,SA8CTL,EAAQS,GACV,IAAMpnC,EAAOrE,KACb,OAAKqE,EAAKo+C,iBACVzX,EAAOj7B,MAAM,KAAKC,SAAQ,SAAC3O,QACF,IAAZoqC,EACTpnC,EAAKo+C,gBAAgBphD,GAAS,GACrBgD,EAAKo+C,gBAAgBphD,IAC9BgD,EAAKo+C,gBAAgBphD,GAAO2O,SAAQ,SAAC+yC,EAAczqC,IAE/CyqC,IAAiBtX,GAChBsX,EAAaJ,gBAAkBI,EAAaJ,iBAAmBlX,IAEhEpnC,EAAKo+C,gBAAgBphD,GAAOmO,OAAO8I,EAAO,SAK3CjU,GAf2BA,GAkBpC0vC,KAlEa,WAmEX,IAEI/I,EACAhpC,EACAimC,EAJE5jC,EAAOrE,KACb,IAAKqE,EAAKo+C,gBAAiB,OAAOp+C,EAFtB,IAAA,IAAAotB,EAAAjM,UAAAnlB,OAANqxB,EAAM,IAAAxkB,MAAAukB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAND,EAAMC,GAAAnM,UAAAmM,GAMW,iBAAZD,EAAK,IAAmBxkB,MAAMhM,QAAQwwB,EAAK,KACpDsZ,EAAStZ,EAAK,GACd1vB,EAAO0vB,EAAKhhB,MAAM,EAAGghB,EAAKrxB,QAC1B4nC,EAAU5jC,IAEV2mC,EAAStZ,EAAK,GAAGsZ,OACjBhpC,EAAO0vB,EAAK,GAAG1vB,KACfimC,EAAUvW,EAAK,GAAGuW,SAAW5jC,GAE/BrC,EAAK2oC,QAAQ1C,GACb,IAAM+a,EAAc91C,MAAMhM,QAAQ8pC,GAAUA,EAASA,EAAOj7B,MAAM,KAclE,OAZAizC,EAAYhzC,SAAQ,SAAC3O,GACfgD,EAAKw+C,oBAAsBx+C,EAAKw+C,mBAAmBxiD,QACrDgE,EAAKw+C,mBAAmB7yC,SAAQ,SAAC+yC,GAC/BA,EAAa/pC,MAAMivB,EAAnB,CAA6B5mC,GAA7BumC,OAAuC5lC,OAGvCqC,EAAKo+C,iBAAmBp+C,EAAKo+C,gBAAgBphD,IAC/CgD,EAAKo+C,gBAAgBphD,GAAO2O,SAAQ,SAAC+yC,GACnCA,EAAa/pC,MAAMivB,EAASjmC,SAI3BqC,IFlET4+C,OGtBa,CACbrL,WCTa,WACb,IACI70C,EACAu3B,EAFEwY,EAAS9yC,KAGTg1C,EAAMlC,EAAOkC,IAEjBjyC,OADiC,IAAxB+vC,EAAOp7B,OAAO3U,OAAiD,OAAxB+vC,EAAOp7B,OAAO3U,MACtD+vC,EAAOp7B,OAAO3U,MAEdiyC,EAAI,GAAGkO,YAGf5oB,OADkC,IAAzBwY,EAAOp7B,OAAO4iB,QAAmD,OAAzBwY,EAAOp7B,OAAO4iB,OACtDwY,EAAOp7B,OAAO4iB,OAEd0a,EAAI,GAAGmO,aAEH,IAAVpgD,GAAe+vC,EAAOsG,gBAA+B,IAAX9e,GAAgBwY,EAAO+F,eAKtE91C,EACEA,EACAkd,SAAS+0B,EAAI7H,IAAI,iBAAmB,EAAG,IACvCltB,SAAS+0B,EAAI7H,IAAI,kBAAoB,EAAG,IAC1C7S,EACEA,EACAra,SAAS+0B,EAAI7H,IAAI,gBAAkB,EAAG,IACtCltB,SAAS+0B,EAAI7H,IAAI,mBAAqB,EAAG,IAEvChtB,OAAO9I,MAAMtU,KAAQA,EAAQ,GAC7Bod,OAAO9I,MAAMijB,KAASA,EAAS,GAEnCkJ,EAAOsP,EAAQ,CACb/vC,MAAAA,EACAu3B,OAAAA,EACA8oB,KAAMtQ,EAAOsG,eAAiBr2C,EAAQu3B,MDzBxC6jB,aEVa,WACb,IAAMrL,EAAS9yC,KACf,SAASqjD,EAAkBr1C,GACzB,OAAI8kC,EAAOsG,eACFprC,EAGF,CACLjL,MAAS,SACTugD,aAAc,cACdC,iBAAkB,eAClBC,cAAe,aACfC,eAAgB,gBAChBC,eAAgB,cAChBC,gBAAiB,iBACjBC,YAAe,gBACf51C,GAEJ,SAAS61C,EAA0BC,EAAMxnC,GACvC,OAAOpL,WAAW4yC,EAAKprB,iBAAiB2qB,EAAkB/mC,KAAW,GAGvE,IAAM5E,EAASo7B,EAAOp7B,OAEdw9B,EAA8DpC,EAA9DoC,WAAkB6O,EAA4CjR,EAAlDsQ,KAAgC9K,EAAkBxF,EAAhCyF,aAAmByL,EAAalR,EAAbkR,SACnDC,EAAYnR,EAAOoR,SAAWxsC,EAAOwsC,QAAQ1O,QAC7C2O,EAAuBF,EAAYnR,EAAOoR,QAAQzI,OAAOp7C,OAASyyC,EAAO2I,OAAOp7C,OAChFo7C,EAASvG,EAAWzqB,SAAX,IAAwBqoB,EAAOp7B,OAAOspC,YAC/CoD,EAAeH,EAAYnR,EAAOoR,QAAQzI,OAAOp7C,OAASo7C,EAAOp7C,OACnE46C,EAAW,GACTD,EAAa,GACbiC,EAAkB,GAEpBoH,EAAe3sC,EAAOsoC,mBACE,mBAAjBqE,IACTA,EAAe3sC,EAAOsoC,mBAAmB9mC,KAAK45B,IAGhD,IAAIwR,EAAc5sC,EAAOuoC,kBACE,mBAAhBqE,IACTA,EAAc5sC,EAAOuoC,kBAAkB/mC,KAAK45B,IAG9C,IAAMyR,EAAyBzR,EAAOmI,SAAS56C,OACzCmkD,EAA2B1R,EAAOkI,WAAW36C,OAE/Cu/C,EAAeloC,EAAOkoC,aACtB6E,GAAiBJ,EACjBK,EAAgB,EAChBpsC,EAAQ,EACZ,QAA0B,IAAfyrC,EAAX,CAaA,IAAIY,EAoBAC,EA9BwB,iBAAjBhF,GAA6BA,EAAa/6C,QAAQ,MAAQ,IACnE+6C,EAAgB1uC,WAAW0uC,EAAapoC,QAAQ,IAAK,KAAO,IAAOusC,GAGrEjR,EAAO+R,aAAejF,EAGlBtH,EAAKmD,EAAOtO,IAAI,CAAE2X,WAAY,GAAIC,UAAW,KAC5CtJ,EAAOtO,IAAI,CAAEyW,YAAa,GAAIoB,aAAc,KAG7CttC,EAAOmoC,gBAAkB,IAKzB8E,EAHAz+C,KAAK4N,MAAMswC,EAAe1sC,EAAOmoC,mBACjCuE,EAAetR,EAAOp7B,OAAOmoC,gBAEJuE,EAGvBl+C,KAAK++C,KAAKb,EAAe1sC,EAAOmoC,iBAAmBnoC,EAAOmoC,gBAEjC,SAAzBnoC,EAAO0mC,eAA2D,QAA/B1mC,EAAOooC,sBAC5C6E,EAAyBz+C,KAAKiS,IAC5BwsC,EACAjtC,EAAO0mC,cAAgB1mC,EAAOmoC,mBAUpC,IAHA,IAyIIqF,EAKuBC,EAMKC,EApJ1BvF,EAAkBnoC,EAAOmoC,gBACzBwF,EAAeV,EAAyB9E,EACxCyF,EAAiBp/C,KAAK4N,MAAMswC,EAAe1sC,EAAOmoC,iBAC/Cl/C,EAAI,EAAGA,EAAIyjD,EAAczjD,GAAK,EAAG,CACxCikD,EAAY,EACZ,IAAMW,EAAQ9J,EAAO9N,GAAGhtC,GACxB,GAAI+W,EAAOmoC,gBAAkB,EAAG,CAE9B,IAAI2F,OAAkB,EAClBC,OAAM,EACNC,OAAG,EACP,GAAmC,QAA/BhuC,EAAOooC,qBAAiCpoC,EAAO+lC,eAAiB,EAAG,CACrE,IAAMkI,EAAaz/C,KAAK4N,MAAMnT,GAAK+W,EAAO+lC,eAAiB/lC,EAAOmoC,kBAC5D+F,EAAoBjlD,EAAI+W,EAAOmoC,gBAAkBnoC,EAAO+lC,eAAiBkI,EACzEE,EACW,IAAfF,EACIjuC,EAAO+lC,eACPv3C,KAAKC,IACHD,KAAK++C,MACFb,EAAeuB,EAAa9F,EAAkBnoC,EAAO+lC,gBACpDoC,GAEJnoC,EAAO+lC,gBAKf+H,GAFAC,EAASG,GADTF,EAAMx/C,KAAK4N,MAAM8xC,EAAoBC,IACFA,EAAiBF,EAAajuC,EAAO+lC,gBAEzCiI,EAAMf,EAA0B9E,EAC/D0F,EAAMpY,IAAI,CACR2Y,4BAA6BN,EAC7BO,yBAA0BP,EAC1BQ,iBAAkBR,EAClBS,gBAAiBT,EACjBU,MAAOV,QAE+B,WAA/B9tC,EAAOooC,qBAEhB4F,EAAM/kD,GADN8kD,EAASv/C,KAAK4N,MAAMnT,EAAIk/C,IACLA,GACf4F,EAASH,GAAmBG,IAAWH,GAAkBI,IAAQ7F,EAAkB,KACrF6F,GAAO,IACI7F,IACT6F,EAAM,EACND,GAAU,IAKdA,EAAS9kD,GADT+kD,EAAMx/C,KAAK4N,MAAMnT,EAAI0kD,IACFA,EAErBE,EAAMpY,IACJkW,EAAkB,cACV,IAARqC,EAAYhuC,EAAOkoC,cAAmBloC,EAAOkoC,aAAjC,KAAoD,IAGpE,GAA6B,SAAzB2F,EAAMpY,IAAI,WAAd,CAEA,GAA6B,SAAzBz1B,EAAO0mC,cAA0B,CACnC,IAAM+H,EAAc1tB,iBAAiB8sB,EAAM,IACrCa,EAAmBb,EAAM,GAAG53B,MAAMiQ,UAClCyoB,EAAyBd,EAAM,GAAG53B,MAAMuhB,gBAO9C,GANIkX,IACFb,EAAM,GAAG53B,MAAMiQ,UAAY,QAEzByoB,IACFd,EAAM,GAAG53B,MAAMuhB,gBAAkB,QAE/Bx3B,EAAO0oC,aACTwE,EAAY9R,EAAOsG,eAAiBmM,EAAMjZ,YAAW,GAAQiZ,EAAM7Y,aAAY,OAC1E,CAEL,IAAM3pC,EAAQ8gD,EAA0BsC,EAAa,SAC/CG,EAAczC,EAA0BsC,EAAa,gBACrDI,EAAe1C,EAA0BsC,EAAa,iBACtDrB,EAAajB,EAA0BsC,EAAa,eACpDvC,EAAcC,EAA0BsC,EAAa,gBACrDK,EAAYL,EAAYztB,iBAAiB,cAC/C,GAAI8tB,GAA2B,eAAdA,EACf5B,EAAY7hD,EAAQ+hD,EAAalB,MAC5B,CACL,IAAA6C,EAAqClB,EAAM,GAAnCrC,EAARuD,EAAQvD,YACR0B,EACE7hD,EACAujD,EACAC,EACAzB,EACAlB,GANF6C,EAAqBlmB,YAOJ2iB,IAGjBkD,IACFb,EAAM,GAAG53B,MAAMiQ,UAAYwoB,GAEzBC,IACFd,EAAM,GAAG53B,MAAMuhB,gBAAkBmX,GAE/B3uC,EAAO0oC,eAAcwE,EAAY1+C,KAAK4N,MAAM8wC,SAEhDA,GAAab,GAAcrsC,EAAO0mC,cAAgB,GAAKwB,GAAgBloC,EAAO0mC,cAC1E1mC,EAAO0oC,eAAcwE,EAAY1+C,KAAK4N,MAAM8wC,IAE5CnJ,EAAO96C,KACT86C,EAAO96C,GAAGgtB,MAAM01B,EAAkB,UAAeuB,EAAjD,MAGAnJ,EAAO96C,KACT86C,EAAO96C,GAAG+lD,gBAAkB9B,GAE9B3H,EAAgBz8C,KAAKokD,GAEjBltC,EAAOilC,gBACT8H,EAAgBA,EAAgBG,EAAY,EAAIF,EAAgB,EAAI9E,EAC9C,IAAlB8E,GAA6B,IAAN/jD,IACzB8jD,EAAgBA,EAAgBV,EAAa,EAAInE,GACzC,IAANj/C,IAAS8jD,EAAgBA,EAAgBV,EAAa,EAAInE,GAC1D15C,KAAKiO,IAAIswC,GAAiB,OAAUA,EAAgB,GACpD/sC,EAAO0oC,eAAcqE,EAAgBv+C,KAAK4N,MAAM2wC,IAChDnsC,EAAQZ,EAAO+lC,gBAAmB,GAAGxC,EAASz6C,KAAKikD,GACvDzJ,EAAWx6C,KAAKikD,KAEZ/sC,EAAO0oC,eAAcqE,EAAgBv+C,KAAK4N,MAAM2wC,KAEjDnsC,EAAQpS,KAAKC,IAAI2sC,EAAOp7B,OAAO8lC,mBAAoBllC,IAClDw6B,EAAOp7B,OAAO+lC,gBAChB,GAEAxC,EAASz6C,KAAKikD,GAChBzJ,EAAWx6C,KAAKikD,GAChBA,EAAgBA,EAAgBG,EAAYhF,GAG9C9M,EAAO+R,aAAeD,EAAYhF,EAElC8E,EAAgBE,EAEhBtsC,GAAS,GAQX,GANAw6B,EAAO+R,YAAc3+C,KAAKiS,IAAI26B,EAAO+R,YAAad,GAAcO,EAG5DhM,GAAO0L,IAA+B,UAAlBtsC,EAAO4a,QAAwC,cAAlB5a,EAAO4a,SAC1D4iB,EAAW/H,IAAI,CAAEpqC,MAAU+vC,EAAO+R,YAAcntC,EAAOkoC,aAAjC,OAEpBloC,EAAO+nC,eACTvK,EAAW/H,MAAXgY,EAAA,IACG9B,EAAkB,UAAcvQ,EAAO+R,YAAcntC,EAAOkoC,aAD/D,KAAAuF,IAKF,GAAIztC,EAAOmoC,gBAAkB,EAO3B,GANA/M,EAAO+R,aAAeD,EAAYltC,EAAOkoC,cAAgB+E,EACzD7R,EAAO+R,YACL3+C,KAAK++C,KAAKnS,EAAO+R,YAAcntC,EAAOmoC,iBAAmBnoC,EAAOkoC,aAClE1K,EAAW/H,MAAXiY,EAAA,IACG/B,EAAkB,UAAcvQ,EAAO+R,YAAcntC,EAAOkoC,aAD/D,KAAAwF,IAGI1tC,EAAOilC,eAAgB,CACzBuI,EAAgB,GAChB,IAAK,IAAIvkD,EAAI,EAAGA,EAAIs6C,EAAS56C,OAAQM,GAAK,EAAG,CAC3C,IAAIgmD,EAAiB1L,EAASt6C,GAC1B+W,EAAO0oC,eAAcuG,EAAiBzgD,KAAK4N,MAAM6yC,IACjD1L,EAASt6C,GAAKmyC,EAAO+R,YAAc5J,EAAS,IAAIiK,EAAc1kD,KAAKmmD,GAEzE1L,EAAWiK,EAKf,IAAKxtC,EAAOilC,eAAgB,CAC1BuI,EAAgB,GAChB,IAAK,IAAIvkD,EAAI,EAAGA,EAAIs6C,EAAS56C,OAAQM,GAAK,EAAG,CAC3C,IAAIgmD,GAAiB1L,EAASt6C,GAC1B+W,EAAO0oC,eAAcuG,GAAiBzgD,KAAK4N,MAAM6yC,KACjD1L,EAASt6C,IAAMmyC,EAAO+R,YAAcd,GACtCmB,EAAc1kD,KAAKmmD,IAGvB1L,EAAWiK,EAGTh/C,KAAK4N,MAAMg/B,EAAO+R,YAAcd,GAAc79C,KAAK4N,MAAMmnC,EAASA,EAAS56C,OAAS,IACpF,GAEA46C,EAASz6C,KAAKsyC,EAAO+R,YAAcd,GAKvC,GAFwB,IAApB9I,EAAS56C,SAAc46C,EAAW,CAAC,IAEX,IAAxBvjC,EAAOkoC,aAAoB,CAAA,IAAAgH,GACvB7jC,GAAM+vB,EAAOsG,gBAAkBd,EAAM,aAAe+K,EAAkB,eAC5E5H,EACGr7C,QAAO,SAACymD,EAAGC,GACV,OAAKpvC,EAAO2hC,SACRyN,IAAerL,EAAOp7C,OAAS,KAKpC8sC,MARHyZ,GAAA,IAQU7jC,IAAS68B,EARnB,KAAAgH,KAWF,GAAIlvC,EAAOilC,gBAAkBjlC,EAAOqoC,qBAAsB,CACxD,IAAIgH,GAAgB,EACpB9J,EAAgBjtC,SAAQ,SAACg3C,GACvBD,IAAiBC,GAAkBtvC,EAAOkoC,aAAeloC,EAAOkoC,aAAe,MAGjF,IAAMqH,IADNF,IAAiBrvC,EAAOkoC,cACQmE,EAChC9I,EAAWA,EAAS/6B,KAAI,SAACtF,GACvB,OAAIA,EAAO,GAAWypC,EAClBzpC,EAAOqsC,GAAgBA,GAAU3C,EAC9B1pC,KAIX,GAAIlD,EAAOyoC,yBAA0B,CACnC,IAAI4G,GAAgB,EAKpB,GAJA9J,EAAgBjtC,SAAQ,SAACg3C,GACvBD,IAAiBC,GAAkBtvC,EAAOkoC,aAAeloC,EAAOkoC,aAAe,OAEjFmH,IAAiBrvC,EAAOkoC,cACJmE,EAAY,CAC9B,IAAMmD,IAAmBnD,EAAagD,IAAiB,EACvD9L,EAASjrC,SAAQ,SAAC4K,EAAMusC,GACtBlM,EAASkM,GAAavsC,EAAOssC,MAE/BlM,EAAWhrC,SAAQ,SAAC4K,EAAMusC,GACxBnM,EAAWmM,GAAavsC,EAAOssC,OAKrC1jB,EAAOsP,EAAQ,CACb2I,OAAAA,EACAR,SAAAA,EACAD,WAAAA,EACAiC,gBAAAA,IAGEmH,IAAiBD,GACnBrR,EAAOiB,KAAK,sBAEVkH,EAAS56C,SAAWkkD,IAClBzR,EAAOp7B,OAAOgnC,eAAe5L,EAAO6L,gBACxC7L,EAAOiB,KAAK,yBAEViH,EAAW36C,SAAWmkD,GACxB1R,EAAOiB,KAAK,2BAGVr8B,EAAO8iC,qBAAuB9iC,EAAO+iC,wBACvC3H,EAAOsU,uBFnUTC,iBGba,SAA0BnK,GACvC,IAIIv8C,EAJEmyC,EAAS9yC,KACTsnD,EAAe,GACfrD,EAAYnR,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QACtDlC,EAAY,EAEK,iBAAV4J,EACTpK,EAAO4G,cAAcwD,IACF,IAAVA,GACTpK,EAAO4G,cAAc5G,EAAOp7B,OAAOwlC,OAGrC,IAAMqK,EAAkB,SAACjvC,GACvB,OAAI2rC,EACKnR,EAAO2I,OAAOr7C,QACnB,SAAC+yB,GAAD,OAAQlT,SAASkT,EAAGvjB,aAAa,2BAA4B,MAAQ0I,KACrE,GAEGw6B,EAAO2I,OAAO9N,GAAGr1B,GAAO,IAGjC,GAAoC,SAAhCw6B,EAAOp7B,OAAO0mC,eAA4BtL,EAAOp7B,OAAO0mC,cAAgB,EAC1E,GAAItL,EAAOp7B,OAAOilC,eAChB7J,EAAO0U,cAAc3nD,MAAK,SAAC0lD,GACzB+B,EAAa9mD,KAAK+kD,WAGpB,IAAK5kD,EAAI,EAAGA,EAAIuF,KAAK++C,KAAKnS,EAAOp7B,OAAO0mC,eAAgBz9C,GAAK,EAAG,CAC9D,IAAM2X,EAAQw6B,EAAO0I,YAAc76C,EACnC,GAAI2X,EAAQw6B,EAAO2I,OAAOp7C,SAAW4jD,EAAW,MAChDqD,EAAa9mD,KAAK+mD,EAAgBjvC,SAItCgvC,EAAa9mD,KAAK+mD,EAAgBzU,EAAO0I,cAI3C,IAAK76C,EAAI,EAAGA,EAAI2mD,EAAajnD,OAAQM,GAAK,EACxC,QAA+B,IAApB2mD,EAAa3mD,GAAoB,CAC1C,IAAM25B,EAASgtB,EAAa3mD,GAAG8/B,aAC/B6S,EAAYhZ,EAASgZ,EAAYhZ,EAASgZ,EAK1CA,GAAWR,EAAOoC,WAAW/H,IAAI,SAAamG,EAAnC,OHhCf8T,mBIda,WAGb,IAFA,IACM3L,EADSz7C,KACOy7C,OACb96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EACtC86C,EAAO96C,GAAG8mD,kBAHGznD,KAGwBo5C,eACjCqC,EAAO96C,GAAG+mD,WACVjM,EAAO96C,GAAGgnD,WJShBC,qBKba,SAA8B9O,QAA2C,IAA3CA,IAAAA,EAAa94C,MAAQA,KAAK84C,WAAc,GACnF,IAAMhG,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAEd+jC,EAA8B3I,EAA9B2I,OAAsBnD,EAAQxF,EAAtByF,aAEhB,GAAsB,IAAlBkD,EAAOp7C,OAAX,MAC2C,IAAhCo7C,EAAO,GAAGgM,mBAAmC3U,EAAOsU,qBAE/D,IAAIS,GAAgB/O,EAChBR,IAAKuP,EAAe/O,GAGxB2C,EAAOvS,YAAYxxB,EAAO0pC,mBAE1BtO,EAAOgV,qBAAuB,GAC9BhV,EAAO0U,cAAgB,GAEvB,IAAK,IAAI7mD,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAAG,CACzC,IAAM4kD,EAAQ9J,EAAO96C,GACfonD,GACHF,GACEnwC,EAAOilC,eAAiB7J,EAAOkG,eAAiB,GACjDuM,EAAMkC,oBACPlC,EAAMmB,gBAAkBhvC,EAAOkoC,cAClC,GAAIloC,EAAO+iC,uBAA0B/iC,EAAOilC,gBAAkBjlC,EAAO8nC,WAAa,CAChF,IAAMwI,IAAgBH,EAAetC,EAAMkC,mBACrCQ,EAAaD,EAAclV,EAAOmK,gBAAgBt8C,IAErDqnD,GAAe,GAAKA,EAAclV,EAAOsQ,KAAO,GAChD6E,EAAa,GAAKA,GAAcnV,EAAOsQ,MACvC4E,GAAe,GAAKC,GAAcnV,EAAOsQ,QAE1CtQ,EAAO0U,cAAchnD,KAAK+kD,GAC1BzS,EAAOgV,qBAAqBtnD,KAAKG,GACjC86C,EAAO9N,GAAGhtC,GAAGkoC,SAASnxB,EAAO0pC,oBAGjCmE,EAAMzoC,SAAWw7B,GAAOyP,EAAgBA,EAE1CjV,EAAO0U,cAAgB9nD,EAAEozC,EAAO0U,iBL1BhC3M,eMda,SAAwB/B,GACrC,IAAMhG,EAAS9yC,KACf,QAAyB,IAAd84C,EAA2B,CACpC,IAAMoP,EAAapV,EAAOyF,cAAgB,EAAI,EAE9CO,EAAahG,GAAUA,EAAOgG,WAAahG,EAAOgG,UAAYoP,GAAe,EAE/E,IAAMxwC,EAASo7B,EAAOp7B,OAChBynC,EAAiBrM,EAAOiG,eAAiBjG,EAAOkG,eAChDl8B,EAAiCg2B,EAAjCh2B,SAAUwhC,EAAuBxL,EAAvBwL,YAAaD,EAAUvL,EAAVuL,MACvB8J,EAAe7J,EACf8J,EAAS/J,EACQ,IAAnBc,GACFriC,EAAW,EACXwhC,GAAc,EACdD,GAAQ,IAGRC,GADAxhC,GAAYg8B,EAAYhG,EAAOkG,gBAAkBmG,IACvB,EAC1Bd,EAAQvhC,GAAY,GAEtB0mB,EAAOsP,EAAQ,CACbh2B,SAAAA,EACAwhC,YAAAA,EACAD,MAAAA,KAIA3mC,EAAO8iC,qBACP9iC,EAAO+iC,uBACN/iC,EAAOilC,gBAAkBjlC,EAAO8nC,aAEjC1M,EAAO8U,qBAAqB9O,GAE1BwF,IAAgB6J,GAClBrV,EAAOiB,KAAK,yBAEVsK,IAAU+J,GACZtV,EAAOiB,KAAK,oBAEToU,IAAiB7J,GAAiB8J,IAAW/J,IAChDvL,EAAOiB,KAAK,YAGdjB,EAAOiB,KAAK,WAAYj3B,IN7BxB69B,oBOjBa,WACb,IASI0N,EATEvV,EAAS9yC,KAEPy7C,EAAuD3I,EAAvD2I,OAAQ/jC,EAA+Co7B,EAA/Cp7B,OAAQw9B,EAAuCpC,EAAvCoC,WAAYsG,EAA2B1I,EAA3B0I,YAAa8M,EAAcxV,EAAdwV,UAC3CrE,EAAYnR,EAAOoR,SAAWxsC,EAAOwsC,QAAQ1O,QAEnDiG,EAAOvS,YACFxxB,EAAOwpC,iBADZ,IACgCxpC,EAAO4pC,eADvC,IACyD5pC,EAAO8pC,eADhE,IACkF9pC,EAAOypC,0BADzF,IACsHzpC,EAAO6pC,wBAD7H,IACwJ7pC,EAAO+pC,0BAK7J4G,EADEpE,EACYnR,EAAOoC,WAAWt1C,KAAlB,IACR8X,EAAOspC,WADC,6BACsCxF,EADtC,MAIAC,EAAO9N,GAAG6N,IAId3S,SAASnxB,EAAOwpC,kBAExBxpC,EAAOkhC,OAELyP,EAAYjf,SAAS1xB,EAAO2pC,qBAC9BnM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,SAEkCtpC,EAAO2pC,oBAFzC,8BAE0FiH,EAF1F,MAIGzf,SAASnxB,EAAOypC,2BAEnBjM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,IAE6BtpC,EAAO2pC,oBAFpC,6BAEoFiH,EAFpF,MAIGzf,SAASnxB,EAAOypC,4BAIvB,IAAItE,EAAYwL,EACbna,QADa,IACDx2B,EAAOspC,YACnBrT,GAAG,GACH9E,SAASnxB,EAAO4pC,gBACf5pC,EAAOkhC,MAA6B,IAArBiE,EAAUx8C,SAC3Bw8C,EAAYpB,EAAO9N,GAAG,IACZ9E,SAASnxB,EAAO4pC,gBAG5B,IAAIiH,EAAYF,EACbha,QADa,IACD32B,EAAOspC,YACnBrT,GAAG,GACH9E,SAASnxB,EAAO8pC,gBACf9pC,EAAOkhC,MAA6B,IAArB2P,EAAUloD,SAC3BkoD,EAAY9M,EAAO9N,IAAI,IACb9E,SAASnxB,EAAO8pC,gBAExB9pC,EAAOkhC,OAELiE,EAAUzT,SAAS1xB,EAAO2pC,qBAC5BnM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,SAGMtpC,EAAO2pC,oBAHb,8BAIkCxE,EAAU58C,KAAK,2BAJjD,MAMG4oC,SAASnxB,EAAO6pC,yBAEnBrM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,IAGMtpC,EAAO2pC,oBAHb,6BAIiCxE,EAAU58C,KAAK,2BAJhD,MAMG4oC,SAASnxB,EAAO6pC,yBAEjBgH,EAAUnf,SAAS1xB,EAAO2pC,qBAC5BnM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,SAGMtpC,EAAO2pC,oBAHb,8BAIkCkH,EAAUtoD,KAAK,2BAJjD,MAMG4oC,SAASnxB,EAAO+pC,yBAEnBvM,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,IAGMtpC,EAAO2pC,oBAHb,6BAIiCkH,EAAUtoD,KAAK,2BAJhD,MAMG4oC,SAASnxB,EAAO+pC,0BAGvB3O,EAAO0V,qBP3EP9N,kBQhBa,SAA2B+N,GACxC,IAWItB,EAXErU,EAAS9yC,KACT84C,EAAYhG,EAAOyF,aAAezF,EAAOgG,WAAahG,EAAOgG,UAEjEkC,EAMElI,EANFkI,WACAC,EAKEnI,EALFmI,SACAvjC,EAIEo7B,EAJFp7B,OACagxC,EAGX5V,EAHF0I,YACWmN,EAET7V,EAFFwV,UACWM,EACT9V,EADFqU,UAEE3L,EAAciN,EAElB,QAA2B,IAAhBjN,EAA6B,CACtC,IAAK,IAAI76C,EAAI,EAAGA,EAAIq6C,EAAW36C,OAAQM,GAAK,OACT,IAAtBq6C,EAAWr6C,EAAI,GAEtBm4C,GAAakC,EAAWr6C,IACxBm4C,EAAYkC,EAAWr6C,EAAI,IAAMq6C,EAAWr6C,EAAI,GAAKq6C,EAAWr6C,IAAM,EAEtE66C,EAAc76C,EACLm4C,GAAakC,EAAWr6C,IAAMm4C,EAAYkC,EAAWr6C,EAAI,KAClE66C,EAAc76C,EAAI,GAEXm4C,GAAakC,EAAWr6C,KACjC66C,EAAc76C,GAId+W,EAAOwoC,sBACL1E,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAG7E,GAAIP,EAASp2C,QAAQi0C,IAAc,EACjCqO,EAAYlM,EAASp2C,QAAQi0C,OACxB,CACL,IAAM+P,EAAO3iD,KAAKC,IAAIuR,EAAO8lC,mBAAoBhC,GACjD2L,EAAY0B,EAAO3iD,KAAK4N,OAAO0nC,EAAcqN,GAAQnxC,EAAO+lC,gBAG9D,GADI0J,GAAalM,EAAS56C,SAAQ8mD,EAAYlM,EAAS56C,OAAS,GAC5Dm7C,IAAgBkN,EAApB,CASA,IAAMJ,EAAYroC,SAChB6yB,EAAO2I,OAAO9N,GAAG6N,GAAav7C,KAAK,4BAA8Bu7C,EACjE,IAGFhY,EAAOsP,EAAQ,CACbqU,UAAAA,EACAmB,UAAAA,EACAI,cAAAA,EACAlN,YAAAA,IAEF1I,EAAOiB,KAAK,qBACZjB,EAAOiB,KAAK,mBACR4U,IAAsBL,GACxBxV,EAAOiB,KAAK,oBAEVjB,EAAOI,aAAeJ,EAAOp7B,OAAOiqC,qBACtC7O,EAAOiB,KAAK,oBAzBRoT,IAAcyB,IAChB9V,EAAOqU,UAAYA,EACnBrU,EAAOiB,KAAK,qBR1BhBsH,mBSjBa,SAA4BxuB,GACzC,IAIIi6B,EAJEhU,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAChB6tC,EAAQ7lD,EAAEmtB,EAAE1d,QAAQgM,QAAZ,IAAwBzD,EAAOspC,YAAc,GACvD8H,GAAa,EAGjB,GAAIvD,EACF,IAAK,IAAI5kD,EAAI,EAAGA,EAAImyC,EAAO2I,OAAOp7C,OAAQM,GAAK,EAC7C,GAAImyC,EAAO2I,OAAO96C,KAAO4kD,EAAO,CAC9BuD,GAAa,EACbhC,EAAanmD,EACb,MAKN,IAAI4kD,IAASuD,EAUX,OAFAhW,EAAOiW,kBAAe3hB,OACtB0L,EAAOkW,kBAAe5hB,GARtB0L,EAAOiW,aAAexD,EAClBzS,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QAC1C1C,EAAOkW,aAAe/oC,SAASvgB,EAAE6lD,GAAOtlD,KAAK,2BAA4B,IAEzE6yC,EAAOkW,aAAelC,EAQxBpvC,EAAO6oC,0BACiBnZ,IAAxB0L,EAAOkW,cACPlW,EAAOkW,eAAiBlW,EAAO0I,aAE/B1I,EAAOyN,wBZHTzH,Ua3Ba,CACblK,aCLa,SAA4Bl1B,QAAwC,IAAxCA,IAAAA,EAAO1Z,KAAKo5C,eAAiB,IAAM,KAC5E,IAAMtG,EAAS9yC,KAEP0X,EAAqDo7B,EAArDp7B,OAAsB4gC,EAA+BxF,EAA7CyF,aAAmBO,EAA0BhG,EAA1BgG,UAAW5D,EAAepC,EAAfoC,WAE9C,GAAIx9B,EAAOgoC,iBACT,OAAOpH,GAAOQ,EAAYA,EAE5B,GAAIphC,EAAO2hC,QACT,OAAOP,EAGT,IAAIoB,EAAmBtL,EAAasG,EAAW,GAAIx7B,GAGnD,OAFI4+B,IAAK4B,GAAoBA,GAEtBA,GAAoB,GDT3BY,aERa,SAAsBhC,EAAWmQ,GAC9C,IAAMnW,EAAS9yC,KACOs4C,EAAiDxF,EAA/DyF,aAAmB7gC,EAA4Co7B,EAA5Cp7B,OAAQw9B,EAAoCpC,EAApCoC,WAAYY,EAAwBhD,EAAxBgD,UAAWh5B,EAAag2B,EAAbh2B,SACtDtV,EAAI,EACJlC,EAAI,EAGJwtC,EAAOsG,eACT5xC,EAAI8wC,GAAOQ,EAAYA,EAEvBxzC,EAAIwzC,EAGFphC,EAAO0oC,eACT54C,EAAItB,KAAK4N,MAAMtM,GACflC,EAAIY,KAAK4N,MAAMxO,IAGboS,EAAO2hC,QACTvD,EAAUhD,EAAOsG,eAAiB,aAAe,aAAetG,EAAOsG,gBAAkB5xC,GAAKlC,EACpFoS,EAAOgoC,kBACjBxK,EAAWtX,UAAX,eAAoCp2B,EAApC,OAA4ClC,EAA5C,YAEFwtC,EAAOmM,kBAAoBnM,EAAOgG,UAClChG,EAAOgG,UAAYhG,EAAOsG,eAAiB5xC,EAAIlC,EAI/C,IAAM65C,EAAiBrM,EAAOiG,eAAiBjG,EAAOkG,gBAC/B,IAAnBmG,EACY,GAECrG,EAAYhG,EAAOkG,gBAAkBmG,KAElCriC,GAClBg2B,EAAO+H,eAAe/B,GAGxBhG,EAAOiB,KAAK,eAAgBjB,EAAOgG,UAAWmQ,IF7B9CjQ,aGTa,WACb,OAAQh5C,KAAKi7C,SAAS,IHStBlC,aIVa,WACb,OAAQ/4C,KAAKi7C,SAASj7C,KAAKi7C,SAAS56C,OAAS,IJU7C6oD,YKXa,SACbpQ,EACAoE,EACAiM,EACAC,EACAC,QACA,IALAvQ,IAAAA,EAAY,QAKZ,IAJAoE,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAIpB,IAHAiM,IAAAA,GAAe,QAGf,IAFAC,IAAAA,GAAkB,GAGlB,IAAMtW,EAAS9yC,KAEP0X,EAAsBo7B,EAAtBp7B,OAAQo+B,EAAchD,EAAdgD,UAEhB,GAAIhD,EAAO2C,WAAa/9B,EAAOg+B,+BAC7B,OAAO,EAGT,IAEI4T,EAFEtQ,EAAelG,EAAOkG,eACtBD,EAAejG,EAAOiG,eAS5B,GAPiDuQ,EAA7CF,GAAmBtQ,EAAYE,EAA6BA,EACvDoQ,GAAmBtQ,EAAYC,EAA6BA,EACjDD,EAGpBhG,EAAO+H,eAAeyO,GAElB5xC,EAAO2hC,QAAS,CAClB,IAK0BkQ,EALpBC,EAAM1W,EAAOsG,eACnB,GAAc,IAAV8D,EACFpH,EAAU0T,EAAM,aAAe,cAAgBF,OAG/C,GAAIxT,EAAU2T,SACZ3T,EAAU2T,WAAVF,EAAA,IACGC,EAAM,OAAS,QAASF,EAD3BC,EAEEG,SAAU,SAFZH,SAKAzT,EAAU0T,EAAM,aAAe,cAAgBF,EAGnD,OAAO,EAiDT,OA9Cc,IAAVpM,GACFpK,EAAO4G,cAAc,GACrB5G,EAAOgI,aAAawO,GAChBH,IACFrW,EAAOiB,KAAK,wBAAyBmJ,EAAOmM,GAC5CvW,EAAOiB,KAAK,oBAGdjB,EAAO4G,cAAcwD,GACrBpK,EAAOgI,aAAawO,GAChBH,IACFrW,EAAOiB,KAAK,wBAAyBmJ,EAAOmM,GAC5CvW,EAAOiB,KAAK,oBAETjB,EAAO2C,YACV3C,EAAO2C,WAAY,EACd3C,EAAO6W,oCACV7W,EAAO6W,kCAAoC,SAAuB98B,GAC3DimB,IAAUA,EAAOG,WAClBpmB,EAAE1d,SAAWnP,OACjB8yC,EAAOoC,WAAW,GAAGrR,oBACnB,gBACAiP,EAAO6W,mCAET7W,EAAOoC,WAAW,GAAGrR,oBACnB,sBACAiP,EAAO6W,mCAET7W,EAAO6W,kCAAoC,YACpC7W,EAAO6W,kCACVR,GACFrW,EAAOiB,KAAK,oBAIlBjB,EAAOoC,WAAW,GAAGtR,iBACnB,gBACAkP,EAAO6W,mCAET7W,EAAOoC,WAAW,GAAGtR,iBACnB,sBACAkP,EAAO6W,sCAKN,IlBvDP3f,WmB9Ba,CACb0P,cCLa,SAAuBnuC,EAAU09C,GAC9C,IAAMnW,EAAS9yC,KAEV8yC,EAAOp7B,OAAO2hC,SACjBvG,EAAOoC,WAAWlL,WAAWz+B,GAG/BunC,EAAOiB,KAAK,gBAAiBxoC,EAAU09C,IDDvC7L,gBENa,SAAyB+L,EAAqB3nB,QAAW,IAAhC2nB,IAAAA,GAAe,GACrD,IAAMrW,EAAS9yC,KACPw7C,EAAuC1I,EAAvC0I,YAAa9jC,EAA0Bo7B,EAA1Bp7B,OAAQgxC,EAAkB5V,EAAlB4V,cAC7B,IAAIhxC,EAAO2hC,QAAX,CACI3hC,EAAO8nC,YACT1M,EAAOuU,mBAGT,IAAIuC,EAAMpoB,EASV,GARKooB,IAC8BA,EAA7BpO,EAAckN,EAAqB,OAC9BlN,EAAckN,EAAqB,OACjC,SAGb5V,EAAOiB,KAAK,mBAERoV,GAAgB3N,IAAgBkN,EAAe,CACjD,GAAY,UAARkB,EAEF,YADA9W,EAAOiB,KAAK,6BAGdjB,EAAOiB,KAAK,8BACA,SAAR6V,EACF9W,EAAOiB,KAAK,4BAEZjB,EAAOiB,KAAK,+BFnBhB5H,cGPa,SAAuBgd,EAAqB3nB,QAAW,IAAhC2nB,IAAAA,GAAe,GACnD,IAAMrW,EAAS9yC,KACPw7C,EAAuC1I,EAAvC0I,YAAakN,EAA0B5V,EAA1B4V,cAAehxC,EAAWo7B,EAAXp7B,OAEpC,GADAo7B,EAAO2C,WAAY,GACf/9B,EAAO2hC,QAAX,CACAvG,EAAO4G,cAAc,GAErB,IAAIkQ,EAAMpoB,EASV,GARKooB,IAC8BA,EAA7BpO,EAAckN,EAAqB,OAC9BlN,EAAckN,EAAqB,OACjC,SAGb5V,EAAOiB,KAAK,iBAERoV,GAAgB3N,IAAgBkN,EAAe,CACjD,GAAY,UAARkB,EAEF,YADA9W,EAAOiB,KAAK,2BAGdjB,EAAOiB,KAAK,4BACA,SAAR6V,EACF9W,EAAOiB,KAAK,0BAEZjB,EAAOiB,KAAK,8BtBUhBwR,MuB3Ba,CACbhK,QCTa,SACbjjC,EACA4kC,EACAiM,EACAE,EACAQ,GAEA,QADA,IALAvxC,IAAAA,EAAQ,QAKR,IAJA4kC,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAIpB,IAHAiM,IAAAA,GAAe,GAIM,iBAAV7wC,GAAuC,iBAAVA,EACtC,MAAM,IAAIwxC,MAAJ,kFAC8ExxC,EAD9E,YAKR,GAAqB,iBAAVA,EAAoB,CAK7B,IAAMyxC,EAAgB9pC,SAAS3H,EAAO,IAStC,IAFsB0xC,SAASD,GAG7B,MAAM,IAAID,MAAJ,sEACkExxC,EADlE,YAORA,EAAQyxC,EAGV,IAAMjX,EAAS9yC,KACX8mD,EAAaxuC,EACbwuC,EAAa,IAAGA,EAAa,GAEjC,IACEpvC,EAQEo7B,EARFp7B,OACAujC,EAOEnI,EAPFmI,SACAD,EAMElI,EANFkI,WACA0N,EAKE5V,EALF4V,cACAlN,EAIE1I,EAJF0I,YACclD,EAGZxF,EAHFyF,aACAzC,EAEEhD,EAFFgD,UACAN,EACE1C,EADF0C,QAGF,GACG1C,EAAO2C,WAAa/9B,EAAOg+B,iCAC1BF,IAAY6T,IAAaQ,EAE3B,OAAO,EAGT,IAAMhB,EAAO3iD,KAAKC,IAAI2sC,EAAOp7B,OAAO8lC,mBAAoBsJ,GACpDK,EAAY0B,EAAO3iD,KAAK4N,OAAOgzC,EAAa+B,GAAQ/V,EAAOp7B,OAAO+lC,gBAClE0J,GAAalM,EAAS56C,SAAQ8mD,EAAYlM,EAAS56C,OAAS,IAE3Dm7C,GAAe9jC,EAAO4nC,cAAgB,MAAQoJ,GAAiB,IAAMS,GACxErW,EAAOiB,KAAK,0BAGd,IA8CIvS,EA9CEsX,GAAamC,EAASkM,GAM5B,GAHArU,EAAO+H,eAAe/B,GAGlBphC,EAAOwoC,oBACT,IAAK,IAAIv/C,EAAI,EAAGA,EAAIq6C,EAAW36C,OAAQM,GAAK,EAAG,CAC7C,IAAMspD,GAAuB/jD,KAAK4N,MAAkB,IAAZglC,GAClCoR,EAAiBhkD,KAAK4N,MAAsB,IAAhBknC,EAAWr6C,IACvCwpD,EAAqBjkD,KAAK4N,MAA0B,IAApBknC,EAAWr6C,EAAI,SACpB,IAAtBq6C,EAAWr6C,EAAI,GAEtBspD,GAAuBC,GACvBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAEnFpD,EAAanmD,EAEbspD,GAAuBC,GACvBD,EAAsBE,IAEtBrD,EAAanmD,EAAI,GAEVspD,GAAuBC,IAChCpD,EAAanmD,GAKnB,GAAImyC,EAAOI,aAAe4T,IAAetL,EAAa,CACpD,IACG1I,EAAO+G,gBACRf,EAAYhG,EAAOgG,WACnBA,EAAYhG,EAAOkG,eAEnB,OAAO,EAET,IACGlG,EAAOgH,gBACRhB,EAAYhG,EAAOgG,WACnBA,EAAYhG,EAAOiG,iBAEdyC,GAAe,KAAOsL,EAAY,OAAO,EAUlD,GAL8BtlB,EAA1BslB,EAAatL,EAAyB,OACjCsL,EAAatL,EAAyB,OAC9B,QAGZlD,IAAQQ,IAAchG,EAAOgG,YAAgBR,GAAOQ,IAAchG,EAAOgG,UAc5E,OAbAhG,EAAO4H,kBAAkBoM,GAErBpvC,EAAO8nC,YACT1M,EAAOuU,mBAETvU,EAAO6H,sBACe,UAAlBjjC,EAAO4a,QACTwgB,EAAOgI,aAAahC,GAEJ,UAAdtX,IACFsR,EAAOsK,gBAAgB+L,EAAc3nB,GACrCsR,EAAO3G,cAAcgd,EAAc3nB,KAE9B,EAET,GAAI9pB,EAAO2hC,QAAS,CAClB,IAS0BkQ,EATpBC,EAAM1W,EAAOsG,eACfnyC,GAAK6xC,EAIT,GAHIR,IACFrxC,EAAI6uC,EAAUoJ,YAAcpJ,EAAUvV,YAAct5B,GAExC,IAAVi2C,EACFpH,EAAU0T,EAAM,aAAe,aAAeviD,OAG9C,GAAI6uC,EAAU2T,SACZ3T,EAAU2T,WAAVF,EAAA,IACGC,EAAM,OAAS,OAAQviD,EAD1BsiD,EAEEG,SAAU,SAFZH,SAKAzT,EAAU0T,EAAM,aAAe,aAAeviD,EAGlD,OAAO,EA6CT,OA1Cc,IAAVi2C,GACFpK,EAAO4G,cAAc,GACrB5G,EAAOgI,aAAahC,GACpBhG,EAAO4H,kBAAkBoM,GACzBhU,EAAO6H,sBACP7H,EAAOiB,KAAK,wBAAyBmJ,EAAOmM,GAC5CvW,EAAOsK,gBAAgB+L,EAAc3nB,GACrCsR,EAAO3G,cAAcgd,EAAc3nB,KAEnCsR,EAAO4G,cAAcwD,GACrBpK,EAAOgI,aAAahC,GACpBhG,EAAO4H,kBAAkBoM,GACzBhU,EAAO6H,sBACP7H,EAAOiB,KAAK,wBAAyBmJ,EAAOmM,GAC5CvW,EAAOsK,gBAAgB+L,EAAc3nB,GAChCsR,EAAO2C,YACV3C,EAAO2C,WAAY,EACd3C,EAAOsX,gCACVtX,EAAOsX,8BAAgC,SAAuBv9B,GACvDimB,IAAUA,EAAOG,WAClBpmB,EAAE1d,SAAWnP,OACjB8yC,EAAOoC,WAAW,GAAGrR,oBACnB,gBACAiP,EAAOsX,+BAETtX,EAAOoC,WAAW,GAAGrR,oBACnB,sBACAiP,EAAOsX,+BAETtX,EAAOsX,8BAAgC,YAChCtX,EAAOsX,8BACdtX,EAAO3G,cAAcgd,EAAc3nB,MAGvCsR,EAAOoC,WAAW,GAAGtR,iBAAiB,gBAAiBkP,EAAOsX,+BAC9DtX,EAAOoC,WAAW,GAAGtR,iBACnB,sBACAkP,EAAOsX,kCAKN,GD9LPC,YEVa,SACb/xC,EACA4kC,EACAiM,EACAE,QACA,IAJA/wC,IAAAA,EAAQ,QAIR,IAHA4kC,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAGpB,IAFAiM,IAAAA,GAAe,GAGf,IAAMrW,EAAS9yC,KACXsqD,EAAWhyC,EAKf,OAJIw6B,EAAOp7B,OAAOkhC,OAChB0R,GAAYxX,EAAO6N,cAGd7N,EAAOyI,QAAQ+O,EAAUpN,EAAOiM,EAAcE,IFDrDkB,UGVa,SAAmBrN,EAA2BiM,EAAqBE,QAAU,IAA1DnM,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAAsC,IAA/BiM,IAAAA,GAAe,GAC1E,IAAMrW,EAAS9yC,KACP0X,EAA+Bo7B,EAA/Bp7B,OAAQ+9B,EAAuB3C,EAAvB2C,UAChB,IADuC3C,EAAZ0C,QACb,OAAO1C,EACrB,IAAM93B,EAAY83B,EAAO0I,YAAc9jC,EAAO8lC,mBAAqB,EAAI9lC,EAAO+lC,eAC9E,GAAI/lC,EAAOkhC,KAAM,CACf,GAAInD,GAAa/9B,EAAOmpC,kBAAmB,OAAO,EAClD/N,EAAO0G,UAEP1G,EAAO0X,YAAc1X,EAAOoC,WAAW,GAAGpI,WAE5C,OAAOgG,EAAOyI,QAAQzI,EAAO0I,YAAcxgC,EAAWkiC,EAAOiM,EAAcE,IHA3EoB,UIXa,SAAmBvN,EAA2BiM,EAAqBE,QAAU,IAA1DnM,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAAsC,IAA/BiM,IAAAA,GAAe,GAC1E,IAAMrW,EAAS9yC,KACP0X,EAAmEo7B,EAAnEp7B,OAAQ+9B,EAA2D3C,EAA3D2C,UAAWwF,EAAgDnI,EAAhDmI,SAAUD,EAAsClI,EAAtCkI,WAAYzC,EAA0BzF,EAA1ByF,aACjD,IAD2EzF,EAAZ0C,QACjD,OAAO1C,EAErB,GAAIp7B,EAAOkhC,KAAM,CACf,GAAInD,GAAa/9B,EAAOmpC,kBAAmB,OAAO,EAClD/N,EAAO0G,UAEP1G,EAAO0X,YAAc1X,EAAOoC,WAAW,GAAGpI,WAG5C,SAAS7Z,EAAUxyB,GACjB,OAAIA,EAAM,GAAWyF,KAAK4N,MAAM5N,KAAKiO,IAAI1T,IAClCyF,KAAK4N,MAAMrT,GAEpB,IASIiqD,EATET,EAAsBh3B,EALVslB,EAAezF,EAAOgG,WAAahG,EAAOgG,WAMtD6R,EAAqB1P,EAAS/6B,KAAI,SAACzf,GAAD,OAASwyB,EAAUxyB,MAEvDmqD,EAAW3P,EAAS0P,EAAmB9lD,QAAQolD,GAAuB,GAW1E,YAVwB,IAAbW,GAA4BlzC,EAAO2hC,SAC5C4B,EAASjrC,SAAQ,SAAC4K,IACXgwC,GAAYX,GAAuBrvC,IAAMgwC,EAAWhwC,WAIrC,IAAbgwC,IACTF,EAAY1P,EAAWn2C,QAAQ+lD,IACf,IAAGF,EAAY5X,EAAO0I,YAAc,GAE/C1I,EAAOyI,QAAQmP,EAAWxN,EAAOiM,EAAcE,IJlBtDwB,WKZa,SAAoB3N,EAA2BiM,EAAqBE,GAEjF,YAF2F,IAA1DnM,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAAsC,IAA/BiM,IAAAA,GAAe,GAC5DnpD,KACDu7C,QADCv7C,KACcw7C,YAAa0B,EAAOiM,EAAcE,ILW/DlM,eMba,SACbD,EACAiM,EACAE,EACA9mC,QACA,IAJA26B,IAAAA,EAAQl9C,KAAK0X,OAAOwlC,YAIpB,IAHAiM,IAAAA,GAAe,QAGf,IADA5mC,IAAAA,EAAY,IAEZ,IAAMuwB,EAAS9yC,KACXsY,EAAQw6B,EAAO0I,YACbqN,EAAO3iD,KAAKC,IAAI2sC,EAAOp7B,OAAO8lC,mBAAoBllC,GAClD6uC,EAAY0B,EAAO3iD,KAAK4N,OAAOwE,EAAQuwC,GAAQ/V,EAAOp7B,OAAO+lC,gBAE7D3E,EAAYhG,EAAOyF,aAAezF,EAAOgG,WAAahG,EAAOgG,UAEnE,GAAIA,GAAahG,EAAOmI,SAASkM,GAAY,CAG3C,IAAM2D,EAAchY,EAAOmI,SAASkM,GAEhCrO,EAAYgS,GADChY,EAAOmI,SAASkM,EAAY,GACH2D,GAAevoC,IACvDjK,GAASw6B,EAAOp7B,OAAO+lC,oBAEpB,CAGL,IAAMmN,EAAW9X,EAAOmI,SAASkM,EAAY,GAEzCrO,EAAY8R,IADI9X,EAAOmI,SAASkM,GACOyD,GAAYroC,IACrDjK,GAASw6B,EAAOp7B,OAAO+lC,gBAM3B,OAHAnlC,EAAQpS,KAAKiS,IAAIG,EAAO,GACxBA,EAAQpS,KAAKC,IAAImS,EAAOw6B,EAAOkI,WAAW36C,OAAS,GAE5CyyC,EAAOyI,QAAQjjC,EAAO4kC,EAAOiM,EAAcE,INnBlD9I,oBOZa,WACb,IAMI+H,EANExV,EAAS9yC,KACP0X,EAAuBo7B,EAAvBp7B,OAAQw9B,EAAepC,EAAfoC,WAEVkJ,EACqB,SAAzB1mC,EAAO0mC,cAA2BtL,EAAOiY,uBAAyBrzC,EAAO0mC,cACvE4M,EAAelY,EAAOkW,aAE1B,GAAItxC,EAAOkhC,KAAM,CACf,GAAI9F,EAAO2C,UAAW,OACtB6S,EAAYroC,SAASvgB,EAAEozC,EAAOiW,cAAc9oD,KAAK,2BAA4B,IACzEyX,EAAOilC,eAEPqO,EAAelY,EAAO6N,aAAevC,EAAgB,GACrD4M,EAAelY,EAAO2I,OAAOp7C,OAASyyC,EAAO6N,aAAevC,EAAgB,GAE5EtL,EAAO0G,UACPwR,EAAe9V,EACZzqB,SADY,IAEP/S,EAAOspC,WAFA,6BAEuCsH,EAFvC,WAE2D5wC,EAAO2pC,oBAFlE,KAIZ1T,GAAG,GACHr1B,QAEHq2B,GAAS,WACPmE,EAAOyI,QAAQyP,OAGjBlY,EAAOyI,QAAQyP,GAERA,EAAelY,EAAO2I,OAAOp7C,OAAS+9C,GAC/CtL,EAAO0G,UACPwR,EAAe9V,EACZzqB,SADY,IAEP/S,EAAOspC,WAFA,6BAEuCsH,EAFvC,WAE2D5wC,EAAO2pC,oBAFlE,KAIZ1T,GAAG,GACHr1B,QAEHq2B,GAAS,WACPmE,EAAOyI,QAAQyP,OAGjBlY,EAAOyI,QAAQyP,QAGjBlY,EAAOyI,QAAQyP,K9BbjBpS,K+BhCa,CACbqS,WCFa,WACb,IAAMnY,EAAS9yC,KACT6hB,EAAWmjB,IACTttB,EAAuBo7B,EAAvBp7B,OAAQw9B,EAAepC,EAAfoC,WAEhBA,EAAWzqB,SAAX,IAAwB/S,EAAOspC,WAA/B,IAA6CtpC,EAAO2pC,qBAAuBl/C,SAE3E,IAAIs5C,EAASvG,EAAWzqB,SAAX,IAAwB/S,EAAOspC,YAE5C,GAAItpC,EAAOkpC,uBAAwB,CACjC,IAAMsK,EAAiBxzC,EAAO+lC,eAAkBhC,EAAOp7C,OAASqX,EAAO+lC,eACvE,GAAIyN,IAAmBxzC,EAAO+lC,eAAgB,CAC5C,IAAK,IAAI98C,EAAI,EAAGA,EAAIuqD,EAAgBvqD,GAAK,EAAG,CAC1C,IAAMwqD,EAAYzrD,EAAEmiB,EAASyR,cAAc,QAAQuV,SAC9CnxB,EAAOspC,WADM,IACQtpC,EAAOupC,iBAEjC/L,EAAW5yC,OAAO6oD,GAEpB1P,EAASvG,EAAWzqB,SAAX,IAAwB/S,EAAOspC,aAIf,SAAzBtpC,EAAO0mC,eAA6B1mC,EAAOipC,eAAcjpC,EAAOipC,aAAelF,EAAOp7C,QAE1FyyC,EAAO6N,aAAez6C,KAAK++C,KAAK/zC,WAAWwG,EAAOipC,cAAgBjpC,EAAO0mC,cAAe,KACxFtL,EAAO6N,cAAgBjpC,EAAOgpC,qBAC1B5N,EAAO6N,aAAelF,EAAOp7C,SAC/ByyC,EAAO6N,aAAelF,EAAOp7C,QAG/B,IAAM+qD,EAAgB,GAChBC,EAAe,GACrB5P,EAAO57C,MAAK,SAACszB,EAAI7a,GACf,IAAMitC,EAAQ7lD,EAAEyzB,GACZ7a,EAAQw6B,EAAO6N,cACjB0K,EAAa7qD,KAAK2yB,GAEhB7a,EAAQmjC,EAAOp7C,QAAUiY,GAASmjC,EAAOp7C,OAASyyC,EAAO6N,cAC3DyK,EAAc5qD,KAAK2yB,GAErBoyB,EAAMtlD,KAAK,0BAA2BqY,MAExC,IAAK,IAAI3X,EAAI,EAAGA,EAAI0qD,EAAahrD,OAAQM,GAAK,EAC5Cu0C,EAAW5yC,OAAO5C,EAAE2rD,EAAa1qD,GAAG2qD,WAAU,IAAOziB,SAASnxB,EAAO2pC,sBAEvE,IAAK,IAAI1gD,EAAIyqD,EAAc/qD,OAAS,EAAGM,GAAK,EAAGA,GAAK,EAClDu0C,EAAWlH,QAAQtuC,EAAE0rD,EAAczqD,GAAG2qD,WAAU,IAAOziB,SAASnxB,EAAO2pC,uBD3CzE7H,QENa,WACb,IAAM1G,EAAS9yC,KAEf8yC,EAAOiB,KAAK,iBAEZ,IASIuW,EARF9O,EAOE1I,EAPF0I,YACAC,EAME3I,EANF2I,OACAkF,EAKE7N,EALF6N,aACA7G,EAIEhH,EAJFgH,eACAD,EAGE/G,EAHF+G,eACAoB,EAEEnI,EAFFmI,SACc3C,EACZxF,EADFyF,aAGFzF,EAAOgH,gBAAiB,EACxBhH,EAAO+G,gBAAiB,EAExB,IACMG,GADiBiB,EAASO,GACH1I,EAAOlE,eAGpC,GAAI4M,EAAcmF,EAChB2J,EAAW7O,EAAOp7C,OAAwB,EAAfsgD,EAAmBnF,EAC9C8O,GAAY3J,EACS7N,EAAOyI,QAAQ+O,EAAU,GAAG,GAAO,IAC3B,IAATtQ,GAClBlH,EAAOgI,cAAcxC,GAAOxF,EAAOgG,UAAYhG,EAAOgG,WAAakB,QAEhE,GAAIwB,GAAeC,EAAOp7C,OAASsgD,EAAc,CAEtD2J,GAAY7O,EAAOp7C,OAASm7C,EAAcmF,EAC1C2J,GAAY3J,EACS7N,EAAOyI,QAAQ+O,EAAU,GAAG,GAAO,IAC3B,IAATtQ,GAClBlH,EAAOgI,cAAcxC,GAAOxF,EAAOgG,UAAYhG,EAAOgG,WAAakB,GAGvElH,EAAOgH,eAAiBA,EACxBhH,EAAO+G,eAAiBA,EAExB/G,EAAOiB,KAAK,YFlCZwX,YGPa,WACb,IAAMzY,EAAS9yC,KACPk1C,EAA+BpC,EAA/BoC,WAAYx9B,EAAmBo7B,EAAnBp7B,OAAQ+jC,EAAW3I,EAAX2I,OAC5BvG,EACGzqB,SADH,IAEQ/S,EAAOspC,WAFf,IAE6BtpC,EAAO2pC,oBAFpC,KAE4D3pC,EAAOspC,WAFnE,IAEiFtpC,EAAOupC,iBAErF9+C,SACHs5C,EAAO1R,WAAW,6BlC6BlB6P,WmClCa,CACbG,cCJa,SAAuByR,GACpC,IAAM1Y,EAAS9yC,KACf,KACE8yC,EAAOrK,QAAQmI,QACdkC,EAAOp7B,OAAO2oC,eACdvN,EAAOp7B,OAAOgnC,eAAiB5L,EAAO2Y,UACvC3Y,EAAOp7B,OAAO2hC,SAJhB,CAOA,IAAMlmB,EAAK2f,EAAO3f,GAClBA,EAAGxF,MAAM+9B,OAAS,OAClBv4B,EAAGxF,MAAM+9B,OAASF,EAAS,mBAAqB,eAChDr4B,EAAGxF,MAAM+9B,OAASF,EAAS,eAAiB,YAC5Cr4B,EAAGxF,MAAM+9B,OAASF,EAAS,WAAa,SDRxCG,gBELa,WACb,IAAM7Y,EAAS9yC,KAEb8yC,EAAOrK,QAAQmI,OACdkC,EAAOp7B,OAAOgnC,eAAiB5L,EAAO2Y,UACvC3Y,EAAOp7B,OAAO2hC,UAIhBvG,EAAO3f,GAAGxF,MAAM+9B,OAAS,MrC6BzBE,asChCa,CACbC,YCPa,SAAqBpQ,GAClC,IAAM3I,EAAS9yC,KACPk1C,EAAuBpC,EAAvBoC,WAAYx9B,EAAWo7B,EAAXp7B,OAIpB,GAHIA,EAAOkhC,MACT9F,EAAOyY,cAEa,iBAAX9P,GAAuB,WAAYA,EAC5C,IAAK,IAAI96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClC86C,EAAO96C,IAAIu0C,EAAW5yC,OAAOm5C,EAAO96C,SAG1Cu0C,EAAW5yC,OAAOm5C,GAEhB/jC,EAAOkhC,MACT9F,EAAOmY,aAEHvzC,EAAOu5B,UAAY6B,EAAOrK,QAAQwI,UACtC6B,EAAOmQ,UDTT6I,aERa,SAAsBrQ,GACnC,IAAM3I,EAAS9yC,KACP0X,EAAoCo7B,EAApCp7B,OAAQw9B,EAA4BpC,EAA5BoC,WAAYsG,EAAgB1I,EAAhB0I,YAExB9jC,EAAOkhC,MACT9F,EAAOyY,cAET,IAAI9C,EAAiBjN,EAAc,EACnC,GAAsB,iBAAXC,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClC86C,EAAO96C,IAAIu0C,EAAWlH,QAAQyN,EAAO96C,IAE3C8nD,EAAiBjN,EAAcC,EAAOp7C,YAEtC60C,EAAWlH,QAAQyN,GAEjB/jC,EAAOkhC,MACT9F,EAAOmY,aAEHvzC,EAAOu5B,UAAY6B,EAAOrK,QAAQwI,UACtC6B,EAAOmQ,SAETnQ,EAAOyI,QAAQkN,EAAgB,GAAG,IFblCsD,SGTa,SAAkBzzC,EAAOmjC,GACtC,IAAM3I,EAAS9yC,KACPk1C,EAAoCpC,EAApCoC,WAAYx9B,EAAwBo7B,EAAxBp7B,OAChBs0C,EADwClZ,EAAhB0I,YAExB9jC,EAAOkhC,OACToT,GAAqBlZ,EAAO6N,aAC5B7N,EAAOyY,cACPzY,EAAO2I,OAASvG,EAAWzqB,SAAX,IAAwB/S,EAAOspC,aAEjD,IAAMiL,EAAanZ,EAAO2I,OAAOp7C,OACjC,GAAIiY,GAAS,EACXw6B,EAAOgZ,aAAarQ,QAGtB,GAAInjC,GAAS2zC,EACXnZ,EAAO+Y,YAAYpQ,OADrB,CAOA,IAHA,IAAIgN,EAAiBuD,EAAoB1zC,EAAQ0zC,EAAoB,EAAIA,EAEnEE,EAAe,GACZvrD,EAAIsrD,EAAa,EAAGtrD,GAAK2X,EAAO3X,GAAK,EAAG,CAC/C,IAAMwrD,EAAerZ,EAAO2I,OAAO9N,GAAGhtC,GACtCwrD,EAAahqD,SACb+pD,EAAavhB,QAAQwhB,GAGvB,GAAsB,iBAAX1Q,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClC86C,EAAO96C,IAAIu0C,EAAW5yC,OAAOm5C,EAAO96C,IAE1C8nD,EACEuD,EAAoB1zC,EAAQ0zC,EAAoBvQ,EAAOp7C,OAAS2rD,OAElE9W,EAAW5yC,OAAOm5C,GAGpB,IAAK,IAAI96C,EAAI,EAAGA,EAAIurD,EAAa7rD,OAAQM,GAAK,EAC5Cu0C,EAAW5yC,OAAO4pD,EAAavrD,IAG7B+W,EAAOkhC,MACT9F,EAAOmY,aAEHvzC,EAAOu5B,UAAY6B,EAAOrK,QAAQwI,UACtC6B,EAAOmQ,SAELvrC,EAAOkhC,KACT9F,EAAOyI,QAAQkN,EAAiB3V,EAAO6N,aAAc,GAAG,GAExD7N,EAAOyI,QAAQkN,EAAgB,GAAG,KHxCpC2D,YIVa,SAAqBC,GAClC,IAAMvZ,EAAS9yC,KACP0X,EAAoCo7B,EAApCp7B,OAAQw9B,EAA4BpC,EAA5BoC,WAEZ8W,EAFwClZ,EAAhB0I,YAGxB9jC,EAAOkhC,OACToT,GAAqBlZ,EAAO6N,aAC5B7N,EAAOyY,cACPzY,EAAO2I,OAASvG,EAAWzqB,SAAX,IAAwB/S,EAAOspC,aAEjD,IACIsL,EADA7D,EAAiBuD,EAGrB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAI1rD,EAAI,EAAGA,EAAI0rD,EAAchsD,OAAQM,GAAK,EAC7C2rD,EAAgBD,EAAc1rD,GAC1BmyC,EAAO2I,OAAO6Q,IAAgBxZ,EAAO2I,OAAO9N,GAAG2e,GAAenqD,SAC9DmqD,EAAgB7D,IAAgBA,GAAkB,GAExDA,EAAiBviD,KAAKiS,IAAIswC,EAAgB,QAE1C6D,EAAgBD,EACZvZ,EAAO2I,OAAO6Q,IAAgBxZ,EAAO2I,OAAO9N,GAAG2e,GAAenqD,SAC9DmqD,EAAgB7D,IAAgBA,GAAkB,GACtDA,EAAiBviD,KAAKiS,IAAIswC,EAAgB,GAGxC/wC,EAAOkhC,MACT9F,EAAOmY,aAGHvzC,EAAOu5B,UAAY6B,EAAOrK,QAAQwI,UACtC6B,EAAOmQ,SAELvrC,EAAOkhC,KACT9F,EAAOyI,QAAQkN,EAAiB3V,EAAO6N,aAAc,GAAG,GAExD7N,EAAOyI,QAAQkN,EAAgB,GAAG,IJ1BpC8D,gBKXa,WAIb,IAHA,IAEMF,EAAgB,GACb1rD,EAAI,EAAGA,EAHDX,KAGYy7C,OAAOp7C,OAAQM,GAAK,EAC7C0rD,EAAc7rD,KAAKG,GAJNX,KAMRosD,YAAYC,K3CgCnBrhB,OHmGa,CACbwhB,aA/HF,WACE,IAAM1Z,EAAS9yC,KACT6hB,EAAWmjB,IACTttB,EAAwDo7B,EAAxDp7B,OAAQ+0C,EAAgD3Z,EAAhD2Z,YAAat5B,EAAmC2f,EAAnC3f,GAAI2iB,EAA+BhD,EAA/BgD,UAAWpN,EAAoBoK,EAApBpK,OAAQD,EAAYqK,EAAZrK,QAEpDqK,EAAOuC,aAAeA,EAAarO,KAAK8L,GACxCA,EAAOuF,YAAcA,EAAYrR,KAAK8L,GACtCA,EAAOiI,WAAaA,EAAW/T,KAAK8L,GAChCp7B,EAAO2hC,UACTvG,EAAOkM,SAAWA,EAAShY,KAAK8L,IAGlCA,EAAO8L,QAAUA,EAAQ5X,KAAK8L,GAE9B,IAAMvI,IAAY7yB,EAAOiM,OAGzB,IAAK8kB,EAAQmI,OAASnI,EAAQqI,cAC5B3d,EAAGyQ,iBAAiB6oB,EAAYhmD,MAAOqsC,EAAOuC,cAAc,GAC5DxzB,EAAS+hB,iBAAiB6oB,EAAYC,KAAM5Z,EAAOuF,YAAa9N,GAChE1oB,EAAS+hB,iBAAiB6oB,EAAY/lD,IAAKosC,EAAOiI,YAAY,OACzD,CACL,GAAItS,EAAQmI,MAAO,CACjB,IAAMM,IACkB,eAAtBub,EAAYhmD,QAA0BgiC,EAAQyI,kBAAmBx5B,EAAOopC,mBACpE,CAAE6L,SAAS,EAAMpiB,SAAS,GAEhCpX,EAAGyQ,iBAAiB6oB,EAAYhmD,MAAOqsC,EAAOuC,aAAcnE,GAC5D/d,EAAGyQ,iBACD6oB,EAAYC,KACZ5Z,EAAOuF,YACP5P,EAAQyI,gBAAkB,CAAEyb,SAAS,EAAOpiB,QAAAA,GAAYA,GAE1DpX,EAAGyQ,iBAAiB6oB,EAAY/lD,IAAKosC,EAAOiI,WAAY7J,GACpDub,EAAYG,QACdz5B,EAAGyQ,iBAAiB6oB,EAAYG,OAAQ9Z,EAAOiI,WAAY7J,GAExDkO,IACHv9B,EAAS+hB,iBAAiB,aAAcyb,GACxCD,GAAqB,IAItB1nC,EAAO2oC,gBAAkB3X,EAAOkJ,MAAQlJ,EAAOmJ,SAC/Cn6B,EAAO2oC,gBAAkB5X,EAAQmI,OAASlI,EAAOkJ,OAElDze,EAAGyQ,iBAAiB,YAAakP,EAAOuC,cAAc,GACtDxzB,EAAS+hB,iBAAiB,YAAakP,EAAOuF,YAAa9N,GAC3D1oB,EAAS+hB,iBAAiB,UAAWkP,EAAOiI,YAAY,KAIxDrjC,EAAOmnC,eAAiBnnC,EAAOonC,2BACjC3rB,EAAGyQ,iBAAiB,QAASkP,EAAO8L,SAAS,GAE3ClnC,EAAO2hC,SACTvD,EAAUlS,iBAAiB,SAAUkP,EAAOkM,UAI1CtnC,EAAO6nC,qBACTzM,EAAO5vC,GACLwlC,EAAOkJ,KAAOlJ,EAAOmJ,QACjB,0CACA,wBACJmM,GACA,GAGFlL,EAAO5vC,GAAG,iBAAkB86C,GAAU,IA2DxC6O,aAvDF,WACE,IAAM/Z,EAAS9yC,KACT6hB,EAAWmjB,IAETttB,EAAwDo7B,EAAxDp7B,OAAQ+0C,EAAgD3Z,EAAhD2Z,YAAat5B,EAAmC2f,EAAnC3f,GAAI2iB,EAA+BhD,EAA/BgD,UAAWpN,EAAoBoK,EAApBpK,OAAQD,EAAYqK,EAAZrK,QAE9C8B,IAAY7yB,EAAOiM,OAGzB,IAAK8kB,EAAQmI,OAASnI,EAAQqI,cAC5B3d,EAAG0Q,oBAAoB4oB,EAAYhmD,MAAOqsC,EAAOuC,cAAc,GAC/DxzB,EAASgiB,oBAAoB4oB,EAAYC,KAAM5Z,EAAOuF,YAAa9N,GACnE1oB,EAASgiB,oBAAoB4oB,EAAY/lD,IAAKosC,EAAOiI,YAAY,OAC5D,CACL,GAAItS,EAAQmI,MAAO,CACjB,IAAMM,IACkB,iBAAtBub,EAAYhmD,QAA4BgiC,EAAQyI,kBAAmBx5B,EAAOopC,mBACtE,CAAE6L,SAAS,EAAMpiB,SAAS,GAEhCpX,EAAG0Q,oBAAoB4oB,EAAYhmD,MAAOqsC,EAAOuC,aAAcnE,GAC/D/d,EAAG0Q,oBAAoB4oB,EAAYC,KAAM5Z,EAAOuF,YAAa9N,GAC7DpX,EAAG0Q,oBAAoB4oB,EAAY/lD,IAAKosC,EAAOiI,WAAY7J,GACvDub,EAAYG,QACdz5B,EAAG0Q,oBAAoB4oB,EAAYG,OAAQ9Z,EAAOiI,WAAY7J,IAI/Dx5B,EAAO2oC,gBAAkB3X,EAAOkJ,MAAQlJ,EAAOmJ,SAC/Cn6B,EAAO2oC,gBAAkB5X,EAAQmI,OAASlI,EAAOkJ,OAElDze,EAAG0Q,oBAAoB,YAAaiP,EAAOuC,cAAc,GACzDxzB,EAASgiB,oBAAoB,YAAaiP,EAAOuF,YAAa9N,GAC9D1oB,EAASgiB,oBAAoB,UAAWiP,EAAOiI,YAAY,KAI3DrjC,EAAOmnC,eAAiBnnC,EAAOonC,2BACjC3rB,EAAG0Q,oBAAoB,QAASiP,EAAO8L,SAAS,GAG9ClnC,EAAO2hC,SACTvD,EAAUjS,oBAAoB,SAAUiP,EAAOkM,UAIjDlM,EAAOzH,IACL3C,EAAOkJ,KAAOlJ,EAAOmJ,QACjB,0CACA,wBACJmM,KG9FFC,Y4CrCa,CAAEC,cCDF,WACb,IAAMpL,EAAS9yC,KACPw7C,EAA4D1I,EAA5D0I,YAAatI,EAA+CJ,EAA/CI,YAArB4Z,EAAoEha,EAAlC6N,aAAAA,OAAlC,IAAAmM,EAAiD,EAAjDA,EAAoDp1C,EAAgBo7B,EAAhBp7B,OAAQs9B,EAAQlC,EAARkC,IACtDiJ,EAAcvmC,EAAOumC,YAC3B,GAAKA,KAAgBA,GAAmD,IAApCv1C,OAAOg7B,KAAKua,GAAa59C,QAA7D,CAGA,IAAM0sD,EAAaja,EAAOka,cAAc/O,EAAanL,EAAOp7B,OAAOioC,gBAAiB7M,EAAO3f,IAE3F,GAAK45B,GAAcja,EAAOma,oBAAsBF,EAAhD,CAEA,IAAMG,EAAuBH,KAAc9O,EAAcA,EAAY8O,QAAc3lB,EAC/E8lB,GACF,CACE,gBACA,eACA,iBACA,qBACA,mBACAl9C,SAAQ,SAACm9C,GACT,IAAMC,EAAaF,EAAqBC,QACd,IAAfC,IAITF,EAAqBC,GAHT,kBAAVA,GAA6C,SAAfC,GAAwC,SAAfA,EAEtC,kBAAVD,EACqBj8C,WAAWk8C,GAEXntC,SAASmtC,EAAY,IAJrB,WASpC,IAAMC,EAAmBH,GAAwBpa,EAAOwa,eAClDC,EAAc71C,EAAOmoC,gBAAkB,EACvC2N,EAAaH,EAAiBxN,gBAAkB,EAEhD4N,EAAa/1C,EAAO89B,QAEtB+X,IAAgBC,GAClBxY,EAAI9L,YACCxxB,EAAOqpC,uBADZ,YAC8CrpC,EAAOqpC,uBADrD,mBAGAjO,EAAO4a,yBACGH,GAAeC,IACzBxY,EAAInM,SAAYnxB,EAAOqpC,uBAAvB,YAC6C,WAAzCsM,EAAiBvN,qBACnB9K,EAAInM,SAAYnxB,EAAOqpC,uBAAvB,mBAEFjO,EAAO4a,wBAGT,IAAMC,EACJN,EAAiB7rB,WAAa6rB,EAAiB7rB,YAAc9pB,EAAO8pB,UAChEosB,EACJl2C,EAAOkhC,OAASyU,EAAiBjP,gBAAkB1mC,EAAO0mC,eAAiBuP,GAEzEA,GAAoBza,GACtBJ,EAAO+a,kBAGTrqB,EAAOsP,EAAOp7B,OAAQ21C,GAEtB,IAAMS,EAAYhb,EAAOp7B,OAAO89B,QAEhChS,EAAOsP,EAAQ,CACbmF,eAAgBnF,EAAOp7B,OAAOugC,eAC9B4B,eAAgB/G,EAAOp7B,OAAOmiC,eAC9BC,eAAgBhH,EAAOp7B,OAAOoiC,iBAG5B2T,IAAeK,EACjBhb,EAAOib,WACGN,GAAcK,GACxBhb,EAAOkb,SAGTlb,EAAOma,kBAAoBF,EAE3Bja,EAAOiB,KAAK,oBAAqBsZ,GAE7BO,GAAe1a,IACjBJ,EAAOyY,cACPzY,EAAOmY,aACPnY,EAAOqL,eACPrL,EAAOyI,QAAQC,EAAcmF,EAAe7N,EAAO6N,aAAc,GAAG,IAGtE7N,EAAOiB,KAAK,aAAcsZ,MDtFIL,cEDjB,SAAuB/O,EAAazsC,EAAiBy8C,GAClE,QAD+E,IAA9Bz8C,IAAAA,EAAO,UACnDysC,IAAyB,cAATzsC,GAAyBy8C,GAA9C,CACA,IAAIlB,GAAa,EAEXzoD,EAASwhC,IACTooB,EAAyB,WAAT18C,EAAoBlN,EAAO6pD,YAAcF,EAAY9K,aAErE57C,EAASmB,OAAOg7B,KAAKua,GAAa/9B,KAAI,SAACkuC,GAC3C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMvpD,QAAQ,KAAY,CACzD,IAAMwpD,EAAWn9C,WAAWk9C,EAAM72C,OAAO,IAEzC,MAAO,CAAEzX,MADKouD,EAAgBG,EACdD,MAAAA,GAElB,MAAO,CAAEtuD,MAAOsuD,EAAOA,MAAAA,MAGzB7mD,EAAOc,MAAK,SAACP,EAAGQ,GAAJ,OAAU2X,SAASnY,EAAEhI,MAAO,IAAMmgB,SAAS3X,EAAExI,MAAO,OAChE,IAAK,IAAIa,EAAI,EAAGA,EAAI4G,EAAOlH,OAAQM,GAAK,EAAG,CACzC,IAAA2tD,EAAyB/mD,EAAO5G,GAAxBytD,EAARE,EAAQF,MAAOtuD,EAAfwuD,EAAexuD,MACF,WAAT0R,EACElN,EAAOuhC,WAAP,eAAiC/lC,EAAjC,OAA6CytC,UAC/Cwf,EAAaqB,GAENtuD,GAASmuD,EAAY/K,cAC9B6J,EAAaqB,GAGjB,OAAOrB,GAAc,S9CYrBpO,cFba,CAAEA,cA5BjB,WACE,IAAM7L,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAChB62C,EAAYzb,EAAO2Y,SACnB+C,EACJ1b,EAAO2I,OAAOp7C,OAAS,GACvBqX,EAAOsoC,mBACLtoC,EAAOkoC,cAAgB9M,EAAO2I,OAAOp7C,OAAS,GAC9CyyC,EAAO2I,OAAO,GAAGlb,YAAcuS,EAAO2I,OAAOp7C,OAE7CqX,EAAOsoC,oBAAsBtoC,EAAOuoC,mBAAqBuO,EAC3D1b,EAAO2Y,SAAW+C,GAAqB1b,EAAOsQ,KAE9CtQ,EAAO2Y,SAAsC,IAA3B3Y,EAAOmI,SAAS56C,OAGpCyyC,EAAO+G,gBAAkB/G,EAAO2Y,SAChC3Y,EAAOgH,gBAAkBhH,EAAO2Y,SAG5B8C,IAAczb,EAAO2Y,UAAU3Y,EAAOiB,KAAKjB,EAAO2Y,SAAW,OAAS,UAEtE8C,GAAaA,IAAczb,EAAO2Y,WACpC3Y,EAAOuL,OAAQ,EACXvL,EAAO+K,YAAY/K,EAAO+K,WAAWoF,YEkB3Cna,Q+CvCa,CAAE2lB,WCaF,WACb,IAjBsBrb,EAASsb,EACzBC,EAgBA7b,EAAS9yC,KACP+oC,EAAkD+J,EAAlD/J,WAAYrxB,EAAsCo7B,EAAtCp7B,OAAQ4gC,EAA8BxF,EAA9BwF,IAAKtD,EAAyBlC,EAAzBkC,IAAKtM,EAAoBoK,EAApBpK,OAAQD,EAAYqK,EAAZrK,QAExCmmB,GApBgBxb,EAoBU,CAC9B,cACA17B,EAAO8pB,UACP,CAAEqtB,iBAAkBpmB,EAAQqI,gBAAkBrI,EAAQmI,OACtD,CAAEke,YAAap3C,EAAO6iC,UACtB,CAAEwU,WAAcr3C,EAAO8nC,YACvB,CAAElH,IAAOA,GACT,CAAE0W,SAAYt3C,EAAOmoC,gBAAkB,GACvC,CAAEoP,kBAAmBv3C,EAAOmoC,gBAAkB,GAAoC,WAA/BnoC,EAAOooC,qBAC1D,CAAEjO,QAAWnJ,EAAOmJ,SACpB,CAAED,IAAOlJ,EAAOkJ,KAChB,CAAEsd,WAAYx3C,EAAO2hC,UA/BQqV,EAgC5Bh3C,EAAOqpC,uBA/BJ4N,EAAgB,GACtBvb,EAAQpjC,SAAQ,SAACm/C,GACK,iBAATA,EACTzmD,OAAOg7B,KAAKyrB,GAAMn/C,SAAQ,SAAC+4B,GACrBomB,EAAKpmB,IACP4lB,EAAcnuD,KAAKkuD,EAAS3lB,MAGP,iBAATomB,GAChBR,EAAcnuD,KAAKkuD,EAASS,MAGzBR,GAoBP5lB,EAAWvoC,KAAXwY,MAAA+vB,EAAmB6lB,GACnB5Z,EAAInM,SAAS,GAAAjB,OAAImB,GAAYroC,KAAK,MAClCoyC,EAAO4a,wBDhCoB0B,cEHd,WACb,IAAMtc,EAAS9yC,KACPg1C,EAAoBlC,EAApBkC,IAAKjM,EAAe+J,EAAf/J,WAEbiM,EAAI9L,YAAYH,EAAWroC,KAAK,MAChCoyC,EAAO4a,yBjDsCP2B,OkDxCa,CACbC,UCDa,SAAmBC,EAAS9rB,EAAK+rB,EAAQC,EAAOC,EAAkBjzC,GAC/E,IACIkzC,EADErrD,EAASwhC,IAEf,SAAS8pB,IACHnzC,GAAUA,IAEE/c,EAAE6vD,GAASx9C,OAAO,WAAW,IAE3Bw9C,EAAQM,UAAaH,EAmBvCE,IAlBInsB,IACFksB,EAAQ,IAAIrrD,EAAOqhC,OACbmqB,OAASF,EACfD,EAAMI,QAAUH,EACZH,IACFE,EAAMF,MAAQA,GAEZD,IACFG,EAAMH,OAASA,GAEb/rB,IACFksB,EAAMlsB,IAAMA,IAGdmsB,KDrBJpP,cELa,WACb,IAAM1N,EAAS9yC,KAEf,SAAS4vD,IACH,MAAO9c,GAA8CA,IAAUA,EAAOG,iBAC9C7L,IAAxB0L,EAAOkd,eAA4Bld,EAAOkd,cAAgB,GAC1Dld,EAAOkd,eAAiBld,EAAOmd,aAAa5vD,SAC1CyyC,EAAOp7B,OAAO+oC,qBAAqB3N,EAAOmQ,SAC9CnQ,EAAOiB,KAAK,iBANhBjB,EAAOmd,aAAend,EAAOkC,IAAIp1C,KAAK,OAStC,IAAK,IAAIe,EAAI,EAAGA,EAAImyC,EAAOmd,aAAa5vD,OAAQM,GAAK,EAAG,CACtD,IAAM4uD,EAAUzc,EAAOmd,aAAatvD,GACpCmyC,EAAOwc,UACLC,EACAA,EAAQW,YAAcX,EAAQ3/C,aAAa,OAC3C2/C,EAAQC,QAAUD,EAAQ3/C,aAAa,UACvC2/C,EAAQE,OAASF,EAAQ3/C,aAAa,UACtC,EACAggD,OpD2BAO,EAAmB,GAEnBrtB,EAAAA,WACJ,SAAAA,IAAqB,IACnB,IAAI3P,EACAzb,EAFe8b,EAAAhO,UAAAnlB,OAANqxB,EAAM,IAAAxkB,MAAAsmB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAANhC,EAAMgC,GAAAlO,UAAAkO,GAiBnB,GAbkB,IAAhBhC,EAAKrxB,QACLqxB,EAAK,GAAGzoB,aACiD,WAAzDP,OAAOK,UAAU29B,SAASxtB,KAAKwY,EAAK,IAAIhhB,MAAM,GAAI,GAElDgH,EAASga,EAAK,IAEbyB,EAAczB,EADV,GACAha,EAAUga,EADV,IAGFha,IAAQA,EAAS,IAEtBA,EAAS8rB,EAAO,GAAI9rB,GAChByb,IAAOzb,EAAOyb,KAAIzb,EAAOyb,GAAKA,GAE9Bzb,EAAOyb,IAAMzzB,EAAEgY,EAAOyb,IAAI9yB,OAAS,EAAG,CACxC,IAAM+vD,EAAU,GAKhB,OAJA1wD,EAAEgY,EAAOyb,IAAItzB,MAAK,SAACouD,GACjB,IAAMoC,EAAY7sB,EAAO,GAAI9rB,EAAQ,CAAEyb,GAAI86B,IAC3CmC,EAAQ5vD,KAAK,IAAIsiC,EAAOutB,OAEnBD,EAIT,IAAMtd,EAAS9yC,KACf8yC,EAAO5C,YAAa,EACpB4C,EAAOrK,QAAUkI,IACjBmC,EAAOpK,OAAS6I,EAAU,CAAEnM,UAAW1tB,EAAO0tB,YAC9C0N,EAAOnK,QAAU4J,IAEjBO,EAAO2P,gBAAkB,GACzB3P,EAAO+P,mBAAqB,QAEE,IAAnB/P,EAAOmP,UAChBnP,EAAOmP,QAAU,IAEnBv5C,OAAOg7B,KAAKoP,EAAOmP,SAASjyC,SAAQ,SAACkyC,GACnC,IAAMh+C,EAAS4uC,EAAOmP,QAAQC,GAC9B,GAAIh+C,EAAOwT,OAAQ,CACjB,IAAM44C,EAAkB5nD,OAAOg7B,KAAKx/B,EAAOwT,QAAQ,GAC7C2qC,EAAen+C,EAAOwT,OAAO44C,GACnC,GAA4B,iBAAjBjO,GAA8C,OAAjBA,EAAuB,OAO/D,GALE,CAAC,aAAc,aAAc,aAAax9C,QAAQyrD,IAAoB,IAC1C,IAA5B54C,EAAO44C,KAEP54C,EAAO44C,GAAmB,CAAE5f,MAAM,MAE9B4f,KAAmB54C,MAAU,YAAa2qC,GAAe,QAC/B,IAA5B3qC,EAAO44C,KACT54C,EAAO44C,GAAmB,CAAE9a,SAAS,IAGF,iBAA5B99B,EAAO44C,IACZ,YAAa54C,EAAO44C,KAEtB54C,EAAO44C,GAAiB9a,SAAU,GAE/B99B,EAAO44C,KAAkB54C,EAAO44C,GAAmB,CAAE9a,SAAS,QAKvE,IAgEU5E,EACF2f,EAjEFC,EAAehtB,EAAO,GAAIlyB,GAuIhC,OAtIAwhC,EAAOiP,UAAUyO,GAGjB1d,EAAOp7B,OAAS8rB,EAAO,GAAIgtB,EAAcL,EAAkBz4C,GAC3Do7B,EAAOwa,eAAiB9pB,EAAO,GAAIsP,EAAOp7B,QAC1Co7B,EAAO2d,aAAejtB,EAAO,GAAI9rB,GAG7Bo7B,EAAOp7B,QAAUo7B,EAAOp7B,OAAOxU,IACjCwF,OAAOg7B,KAAKoP,EAAOp7B,OAAOxU,IAAI8M,SAAQ,SAAC0gD,GACrC5d,EAAO5vC,GAAGwtD,EAAW5d,EAAOp7B,OAAOxU,GAAGwtD,OAGtC5d,EAAOp7B,QAAUo7B,EAAOp7B,OAAOkrC,OACjC9P,EAAO8P,MAAM9P,EAAOp7B,OAAOkrC,OAI7B9P,EAAOpzC,EAAIA,EAGX8jC,EAAOsP,EAAQ,CACb0C,QAAS1C,EAAOp7B,OAAO89B,QACvBriB,GAAAA,EAGA4V,WAAY,GAGZ0S,OAAQ/7C,IACRs7C,WAAY,GACZC,SAAU,GACVgC,gBAAiB,GAGjB7D,aAda,WAeX,MAAmC,eAA5BtG,EAAOp7B,OAAO8pB,WAEvBqX,WAjBa,WAkBX,MAAmC,aAA5B/F,EAAOp7B,OAAO8pB,WAIvBga,YAAa,EACb8M,UAAW,EAGXhK,aAAa,EACbD,OAAO,EAGPvF,UAAW,EACXmG,kBAAmB,EACnBniC,SAAU,EACVg/B,SAAU,EACVrG,WAAW,EAGXoE,eAAgB/G,EAAOp7B,OAAOmiC,eAC9BC,eAAgBhH,EAAOp7B,OAAOoiC,eAG9B2S,aACQ7b,EAAQ,CAAC,aAAc,YAAa,WAAY,eAClD2f,EAAU,CAAC,YAAa,YAAa,WACrCzd,EAAOrK,QAAQqI,gBACjByf,EAAU,CAAC,cAAe,cAAe,cAE3Czd,EAAO6d,iBAAmB,CACxBlqD,MAAOmqC,EAAM,GACb8b,KAAM9b,EAAM,GACZlqC,IAAKkqC,EAAM,GACXgc,OAAQhc,EAAM,IAEhBkC,EAAO8d,mBAAqB,CAC1BnqD,MAAO8pD,EAAQ,GACf7D,KAAM6D,EAAQ,GACd7pD,IAAK6pD,EAAQ,IAERzd,EAAOrK,QAAQmI,QAAUkC,EAAOp7B,OAAO2oC,cAC1CvN,EAAO6d,iBACP7d,EAAO8d,oBAEbtb,gBAAiB,CACfY,eAAW9O,EACX+O,aAAS/O,EACToQ,yBAAqBpQ,EACrBuQ,oBAAgBvQ,EAChBqQ,iBAAarQ,EACb8S,sBAAkB9S,EAClBqS,oBAAgBrS,EAChB0Q,wBAAoB1Q,EAEpB2Q,kBAAmBjF,EAAOp7B,OAAOqgC,kBAEjCuD,cAAel6B,IACfyvC,kBAAczpB,EAEdwT,WAAY,GACZjB,yBAAqBvS,EACrB2O,kBAAc3O,EACdsQ,iBAAatQ,GAIfqP,YAAY,EAGZwB,eAAgBnF,EAAOp7B,OAAOugC,eAE9B1C,QAAS,CACPyB,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACVkD,KAAM,GAIRiW,aAAc,GACdD,aAAc,IAIhBld,EAAOqP,aAEPrP,EAAOiB,KAAK,WAGRjB,EAAOp7B,OAAOwF,MAChB41B,EAAO51B,OAIF41B,EnB8sTP,IAp3JoBge,EAAaC,EAAYC,EAo3JzC1rC,EAASwd,EAAO/5B,UAsYpB,OApYAuc,EmB7sTF0oC,OAAA,WACE,IAAMlb,EAAS9yC,KACX8yC,EAAO0C,UACX1C,EAAO0C,SAAU,EACb1C,EAAOp7B,OAAOkiC,YAChB9G,EAAOiH,gBAETjH,EAAOiB,KAAK,YnBktTZzuB,EmB/sTFyoC,QAAA,WACE,IAAMjb,EAAS9yC,KACV8yC,EAAO0C,UACZ1C,EAAO0C,SAAU,EACb1C,EAAOp7B,OAAOkiC,YAChB9G,EAAO6Y,kBAET7Y,EAAOiB,KAAK,anBotTZzuB,EmBjtTF2rC,YAAA,SAAYn0C,EAAUogC,GACpB,IAAMpK,EAAS9yC,KACf8c,EAAW5W,KAAKC,IAAID,KAAKiS,IAAI2E,EAAU,GAAI,GAC3C,IAAM3W,EAAM2sC,EAAOkG,eAEb5lB,GADM0f,EAAOiG,eACI5yC,GAAO2W,EAAW3W,EACzC2sC,EAAOoW,YAAY91B,OAA0B,IAAV8pB,EAAwB,EAAIA,GAC/DpK,EAAO4H,oBACP5H,EAAO6H,uBnBotTPr1B,EmBjtTFooC,qBAAA,WACE,IAAM5a,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAOkqC,cAAiB9O,EAAO3f,GAA3C,CACA,IAAM2V,EAAUgK,EAAO3f,GAAGoW,UAAUx5B,MAAM,KAAK3P,QAAO,SAACmpC,GACrD,OAC4C,IAA1CA,EAAU1kC,QAAQ,qBAC0C,IAA5D0kC,EAAU1kC,QAAQiuC,EAAOp7B,OAAOqpC,2BAGpCjO,EAAOiB,KAAK,oBAAqBjL,EAAQpoC,KAAK,QnBitT9C4kB,EmB9sTF4rC,gBAAA,SAAgBC,GACd,IAAMre,EAAS9yC,KAEf,OAAOmxD,EAAQ5nB,UACZx5B,MAAM,KACN3P,QAAO,SAACmpC,GACP,OACwC,IAAtCA,EAAU1kC,QAAQ,iBAC8B,IAAhD0kC,EAAU1kC,QAAQiuC,EAAOp7B,OAAOspC,eAGnCtgD,KAAK,MnB0sTR4kB,EmBvsTFkjC,kBAAA,WACE,IAAM1V,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAOkqC,cAAiB9O,EAAO3f,GAA3C,CACA,IAAMi+B,EAAU,GAChBte,EAAO2I,OAAO57C,MAAK,SAACsxD,GAClB,IAAMpoB,EAAa+J,EAAOoe,gBAAgBC,GAC1CC,EAAQ5wD,KAAK,CAAE2wD,QAAAA,EAASpoB,WAAAA,IACxB+J,EAAOiB,KAAK,cAAeod,EAASpoB,MAEtC+J,EAAOiB,KAAK,gBAAiBqd,KnB6sT7B9rC,EmB1sTFylC,qBAAA,WACE,IAAMjY,EAAS9yC,KACP0X,EAA8Do7B,EAA9Dp7B,OAAQ+jC,EAAsD3I,EAAtD2I,OAAQT,EAA8ClI,EAA9CkI,WAAkB+I,EAA4BjR,EAAlCsQ,KAAkB5H,EAAgB1I,EAAhB0I,YAClD6V,EAAM,EACV,GAAI35C,EAAOilC,eAAgB,CAGzB,IAFA,IACI2U,EADA1M,EAAYnJ,EAAOD,GAAakL,gBAE3B/lD,EAAI66C,EAAc,EAAG76C,EAAI86C,EAAOp7C,OAAQM,GAAK,EAChD86C,EAAO96C,KAAO2wD,IAEhBD,GAAO,GADPzM,GAAanJ,EAAO96C,GAAG+lD,iBAEP3C,IAAYuN,GAAY,IAG5C,IAAK,IAAI3wD,EAAI66C,EAAc,EAAG76C,GAAK,EAAGA,GAAK,EACrC86C,EAAO96C,KAAO2wD,IAEhBD,GAAO,GADPzM,GAAanJ,EAAO96C,GAAG+lD,iBAEP3C,IAAYuN,GAAY,SAI5C,IAAK,IAAI3wD,EAAI66C,EAAc,EAAG76C,EAAI86C,EAAOp7C,OAAQM,GAAK,EAChDq6C,EAAWr6C,GAAKq6C,EAAWQ,GAAeuI,IAC5CsN,GAAO,GAIb,OAAOA,GnBqtTP/rC,EmBltTF29B,OAAA,WACE,IAAMnQ,EAAS9yC,KACf,GAAK8yC,IAAUA,EAAOG,UAAtB,CACA,IAAQgI,EAAqBnI,EAArBmI,SAAUvjC,EAAWo7B,EAAXp7B,OAEdA,EAAOumC,aACTnL,EAAOoL,gBAETpL,EAAO8E,aACP9E,EAAOqL,eACPrL,EAAO+H,iBACP/H,EAAO6H,sBAaH7H,EAAOp7B,OAAO6iC,UAChBO,IACIhI,EAAOp7B,OAAO8nC,YAChB1M,EAAOuU,sBAI0B,SAAhCvU,EAAOp7B,OAAO0mC,eAA4BtL,EAAOp7B,OAAO0mC,cAAgB,IACzEtL,EAAOuL,QACNvL,EAAOp7B,OAAOilC,eAEF7J,EAAOyI,QAAQzI,EAAO2I,OAAOp7C,OAAS,EAAG,GAAG,GAAO,GAEnDyyC,EAAOyI,QAAQzI,EAAO0I,YAAa,GAAG,GAAO,KAG1DV,IAGApjC,EAAOgnC,eAAiBzD,IAAanI,EAAOmI,UAC9CnI,EAAO6L,gBAET7L,EAAOiB,KAAK,UAjCZ,SAAS+G,IACP,IAAMyW,EAAiBze,EAAOyF,cAAmC,EAApBzF,EAAOgG,UAAiBhG,EAAOgG,UACtEwQ,EAAepjD,KAAKC,IACxBD,KAAKiS,IAAIo5C,EAAgBze,EAAOiG,gBAChCjG,EAAOkG,gBAETlG,EAAOgI,aAAawO,GACpBxW,EAAO4H,oBACP5H,EAAO6H,wBnB+uTTr1B,EmBntTFuoC,gBAAA,SAAgB2D,EAAcC,QAAmB,IAAnBA,IAAAA,GAAa,GACzC,IAAM3e,EAAS9yC,KACT0xD,EAAmB5e,EAAOp7B,OAAO8pB,UAKvC,OAJKgwB,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAGhEF,IAAiBE,GACC,eAAjBF,GAAkD,aAAjBA,IAKpC1e,EAAOkC,IACJ9L,YADH,GACkB4J,EAAOp7B,OAAOqpC,uBAAyB2Q,GACtD7oB,SAFH,GAEeiK,EAAOp7B,OAAOqpC,uBAAyByQ,GACtD1e,EAAO4a,uBAEP5a,EAAOp7B,OAAO8pB,UAAYgwB,EAE1B1e,EAAO2I,OAAO57C,MAAK,SAACsxD,GACG,aAAjBK,EACFL,EAAQxjC,MAAM5qB,MAAQ,GAEtBouD,EAAQxjC,MAAM2M,OAAS,MAI3BwY,EAAOiB,KAAK,mBACR0d,GAAY3e,EAAOmQ,UAnBdnQ,GnBwuTTxtB,EmBhtTFqsC,MAAA,SAAMx+B,GACJ,IAAM2f,EAAS9yC,KACf,GAAI8yC,EAAO8e,QAAS,OAAO,EAG3B,IAAM5c,EAAMt1C,EAAEyzB,GAAM2f,EAAOp7B,OAAOyb,IAGlC,KAFAA,EAAK6hB,EAAI,IAGP,OAAO,EAGT7hB,EAAG2f,OAASA,EAEZ,IAAM+e,EAAqB,WACzB,MAAA,KAAY/e,EAAOp7B,OAAOgqC,cAAgB,IAAI7gD,OAAOkP,MAAM,KAAKrP,KAAK,MAanEw0C,EAVe,WACjB,GAAI/hB,GAAMA,EAAGkjB,YAAcljB,EAAGkjB,WAAWpS,cAAe,CACtD,IAAM8D,EAAMroC,EAAEyzB,EAAGkjB,WAAWpS,cAAc4tB,MAG1C,OADA9pB,EAAItd,SAAW,SAAC4pB,GAAD,OAAaW,EAAIvqB,SAAS4pB,IAClCtM,EAET,OAAOiN,EAAIvqB,SAASonC,KAGLC,GACjB,GAA0B,IAAtB5c,EAAW70C,QAAgByyC,EAAOp7B,OAAO84B,eAAgB,CAC3D,IACMj1B,EADWypB,IACQ1R,cAAc,OACvC4hB,EAAax1C,EAAE6b,GACfA,EAAQguB,UAAYuJ,EAAOp7B,OAAOgqC,aAClC1M,EAAI1yC,OAAOiZ,GACXy5B,EAAIvqB,SAAJ,IAAiBqoB,EAAOp7B,OAAOspC,YAAcnhD,MAAK,SAACsxD,GACjDjc,EAAW5yC,OAAO6uD,MAmBtB,OAfA3tB,EAAOsP,EAAQ,CACbkC,IAAAA,EACA7hB,GAAAA,EACA+hB,WAAAA,EACAY,UAAWZ,EAAW,GACtB0c,SAAS,EAGTtZ,IAA8B,QAAzBnlB,EAAGy2B,IAAIzlC,eAAoD,QAAzB6wB,EAAI7H,IAAI,aAC/CoL,aAC8B,eAA5BzF,EAAOp7B,OAAO8pB,YACY,QAAzBrO,EAAGy2B,IAAIzlC,eAAoD,QAAzB6wB,EAAI7H,IAAI,cAC7C6W,SAAwC,gBAA9B9O,EAAW/H,IAAI,cAGpB,GnBotTP7nB,EmBjtTFpI,KAAA,SAAKiW,GACH,IAAM2f,EAAS9yC,KACf,OAAI8yC,EAAOI,cAGK,IADAJ,EAAO6e,MAAMx+B,KAG7B2f,EAAOiB,KAAK,cAGRjB,EAAOp7B,OAAOumC,aAChBnL,EAAOoL,gBAITpL,EAAO2b,aAGH3b,EAAOp7B,OAAOkhC,MAChB9F,EAAOmY,aAITnY,EAAO8E,aAGP9E,EAAOqL,eAEHrL,EAAOp7B,OAAOgnC,eAChB5L,EAAO6L,gBAIL7L,EAAOp7B,OAAOkiC,YAAc9G,EAAO0C,SACrC1C,EAAOiH,gBAGLjH,EAAOp7B,OAAO8oC,eAChB1N,EAAO0N,gBAIL1N,EAAOp7B,OAAOkhC,KAChB9F,EAAOyI,QACLzI,EAAOp7B,OAAO4nC,aAAexM,EAAO6N,aACpC,EACA7N,EAAOp7B,OAAOiqC,oBACd,GACA,GAGF7O,EAAOyI,QAAQzI,EAAOp7B,OAAO4nC,aAAc,EAAGxM,EAAOp7B,OAAOiqC,oBAAoB,GAAO,GAIzF7O,EAAO0Z,eAGP1Z,EAAOI,aAAc,EAGrBJ,EAAOiB,KAAK,QACZjB,EAAOiB,KAAK,cA5DmBjB,GnBowT/BxtB,EmBnsTF4uB,QAAA,SAAQ6d,EAAuBC,QAAoB,IAA3CD,IAAAA,GAAiB,QAA0B,IAApBC,IAAAA,GAAc,GAC3C,IZhjBIC,EYgjBEnf,EAAS9yC,KACP0X,EAAoCo7B,EAApCp7B,OAAQs9B,EAA4BlC,EAA5BkC,IAAKE,EAAuBpC,EAAvBoC,WAAYuG,EAAW3I,EAAX2I,OAEjC,YAA6B,IAAlB3I,EAAOp7B,QAA0Bo7B,EAAOG,YAInDH,EAAOiB,KAAK,iBAGZjB,EAAOI,aAAc,EAGrBJ,EAAO+Z,eAGHn1C,EAAOkhC,MACT9F,EAAOyY,cAILyG,IACFlf,EAAOsc,gBACPpa,EAAIjL,WAAW,SACfmL,EAAWnL,WAAW,SAClB0R,GAAUA,EAAOp7C,QACnBo7C,EACGvS,YACC,CACExxB,EAAO0pC,kBACP1pC,EAAOwpC,iBACPxpC,EAAO4pC,eACP5pC,EAAO8pC,gBACP9gD,KAAK,MAERqpC,WAAW,SACXA,WAAW,4BAIlB+I,EAAOiB,KAAK,WAGZrrC,OAAOg7B,KAAKoP,EAAO2P,iBAAiBzyC,SAAQ,SAAC0gD,GAC3C5d,EAAOzH,IAAIqlB,OAGU,IAAnBqB,IACFjf,EAAOkC,IAAI,GAAGlC,OAAS,KZhmBrBmf,EYimBUnf,EZhmBhBpqC,OAAOg7B,KAAKuuB,GAAQjiD,SAAQ,SAAC+S,GAC3B,IACEkvC,EAAOlvC,GAAO,KACd,MAAO8J,IAGT,WACSolC,EAAOlvC,GACd,MAAO8J,SY0lBTimB,EAAOG,WAAY,GA/CV,MnBqvTTnQ,EmBjsTKovB,eAAP,SAAsBC,GACpB3uB,EAAO2sB,EAAkBgC,InBosTzBrvB,EmBzrTKsvB,cAAP,SAAqBluD,GACd4+B,EAAO/5B,UAAUk5C,UAASnf,EAAO/5B,UAAUk5C,QAAU,IAC1D,IAAM/hD,EAAOgE,EAAOhE,MAAWwI,OAAOg7B,KAAKZ,EAAO/5B,UAAUk5C,SAAS5hD,OAAxD,IAAkE+gB,IAC/E0hB,EAAO/5B,UAAUk5C,QAAQ/hD,GAAQgE,GnB4rTjC4+B,EmBzrTKuvB,IAAP,SAAWnuD,GACT,OAAIgJ,MAAMhM,QAAQgD,IAChBA,EAAO8L,SAAQ,SAAC8c,GAAD,OAAOgW,EAAOsvB,cAActlC,MACpCgW,IAETA,EAAOsvB,cAAcluD,GACd4+B,InBi9IaguB,EA8uKPhuB,EA9uKgCkuB,EA8uKlB,CAAC,CAC1BjuC,IAAK,mBACLlF,ImBrtTJ,WACE,OAAOsyC,InButTJ,CACDptC,IAAK,WACLlF,ImBttTJ,WACE,OAAOvM,MnBg+I0By/C,EA8uKZ,OA7uKLhuB,EAAkB+tB,EAAY/nD,UAAWgoD,GACrDC,GAAajuB,EAAkB+tB,EAAaE,GAwvKzCluB,EmB9xULA,GAulBNp6B,OAAOg7B,KAAKme,GAAY7xC,SAAQ,SAACsiD,GAC/B5pD,OAAOg7B,KAAKme,EAAWyQ,IAAiBtiD,SAAQ,SAACuiD,GAC/CzvB,EAAO/5B,UAAUwpD,GAAe1Q,EAAWyQ,GAAgBC,SAI/DzvB,EAAOuvB,IAAI,CAACxf,EAAQsB,IqD1oBpB,IAAMqe,EAAU,CACdvP,OADc,SACPjyC,GACL,IAAM8hC,EAAS9yC,KACfyyD,EAA0D3f,EAAOp7B,OAAzD0mC,EAARqU,EAAQrU,cAAeX,EAAvBgV,EAAuBhV,eAAgBd,EAAvC8V,EAAuC9V,eACvC+V,EAA4C5f,EAAOp7B,OAAOwsC,QAAlDyO,EAARD,EAAQC,gBAAiBC,EAAzBF,EAAyBE,eACzBC,EAOI/f,EAAOoR,QANH4O,EADRD,EACEt5C,KACIw5C,EAFNF,EAEEnrC,GACA+zB,EAHFoX,EAGEpX,OACYuX,EAJdH,EAIE7X,WACAiY,EALFJ,EAKEI,YACQC,EANVL,EAME57C,OAEF67B,EAAO4H,oBACP,IAEIyY,EAIAC,EACAC,EAPE7X,EAAc1I,EAAO0I,aAAe,EAGjB2X,EAArBrgB,EAAOyF,aAA2B,QACpBzF,EAAOsG,eAAiB,OAAS,MAI/CuD,GACFyW,EAAcltD,KAAK4N,MAAMsqC,EAAgB,GAAKX,EAAiBmV,EAC/DS,EAAentD,KAAK4N,MAAMsqC,EAAgB,GAAKX,EAAiBkV,IAEhES,EAAchV,GAAiBX,EAAiB,GAAKmV,EACrDS,EAAe5V,EAAiBkV,GAElC,IAAMp5C,EAAOrT,KAAKiS,KAAKqjC,GAAe,GAAK6X,EAAc,GACnD3rC,EAAKxhB,KAAKC,KAAKq1C,GAAe,GAAK4X,EAAa3X,EAAOp7C,OAAS,GAChE4W,GAAU67B,EAAOkI,WAAWzhC,IAAS,IAAMu5B,EAAOkI,WAAW,IAAM,GASzE,SAASsY,IACPxgB,EAAOqL,eACPrL,EAAO+H,iBACP/H,EAAO6H,sBACH7H,EAAO/8B,MAAQ+8B,EAAOp7B,OAAO3B,KAAKy/B,SACpC1C,EAAO/8B,KAAKw9C,OAIhB,GAhBA/vB,EAAOsP,EAAOoR,QAAS,CACrB3qC,KAAAA,EACAmO,GAAAA,EACAzQ,OAAAA,EACA+jC,WAAYlI,EAAOkI,aAYjB8X,IAAiBv5C,GAAQw5C,IAAerrC,IAAO1W,EAKjD,OAJI8hC,EAAOkI,aAAegY,GAAsB/7C,IAAWi8C,GACzDpgB,EAAO2I,OAAOtO,IAAIgmB,EAAel8C,EAAjC,WAEF67B,EAAO+H,iBAGT,GAAI/H,EAAOp7B,OAAOwsC,QAAQsP,eAgBxB,OAfA1gB,EAAOp7B,OAAOwsC,QAAQsP,eAAet6C,KAAK45B,EAAQ,CAChD77B,OAAAA,EACAsC,KAAAA,EACAmO,GAAAA,EACA+zB,OAAS,WAEP,IADA,IAAMgY,EAAiB,GACd9yD,EAAI4Y,EAAM5Y,GAAK+mB,EAAI/mB,GAAK,EAC/B8yD,EAAejzD,KAAKi7C,EAAO96C,IAE7B,OAAO8yD,EALA,UAQP3gB,EAAOp7B,OAAOwsC,QAAQwP,sBACxBJ,KAIJ,IAAMK,EAAiB,GACjBC,EAAgB,GACtB,GAAI5iD,EACF8hC,EAAOoC,WAAWt1C,KAAlB,IAA2BkzC,EAAOp7B,OAAOspC,YAAc7+C,cAEvD,IAAK,IAAIxB,EAAImyD,EAAcnyD,GAAKoyD,EAAYpyD,GAAK,GAC3CA,EAAI4Y,GAAQ5Y,EAAI+mB,IAClBorB,EAAOoC,WACJt1C,KADH,IACYkzC,EAAOp7B,OAAOspC,WAD1B,6BACiErgD,EADjE,MAEGwB,SAIT,IAAK,IAAIxB,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClCA,GAAK4Y,GAAQ5Y,GAAK+mB,SACM,IAAfqrC,GAA8B/hD,EACvC4iD,EAAcpzD,KAAKG,IAEfA,EAAIoyD,GAAYa,EAAcpzD,KAAKG,GACnCA,EAAImyD,GAAca,EAAenzD,KAAKG,KAIhDizD,EAAc5jD,SAAQ,SAACsI,GACrBw6B,EAAOoC,WAAW5yC,OAAO2wD,EAAYxX,EAAOnjC,GAAQA,OAEtDq7C,EACGtrD,MAAK,SAACP,EAAGQ,GAAJ,OAAUA,EAAIR,KACnBkI,SAAQ,SAACsI,GACRw6B,EAAOoC,WAAWlH,QAAQilB,EAAYxX,EAAOnjC,GAAQA,OAEzDw6B,EAAOoC,WAAWzqB,SAAS,iBAAiB0iB,IAAIgmB,EAAel8C,EAA/D,MACAq8C,KAEFL,YA5Gc,SA4GF1N,EAAOjtC,GACjB,IAAMw6B,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOwsC,QAC7B,GAAIxsC,EAAOpU,OAASwvC,EAAOoR,QAAQ5gD,MAAMgV,GACvC,OAAOw6B,EAAOoR,QAAQ5gD,MAAMgV,GAE9B,IAAMu7C,EAAWn8C,EAAOu7C,YACpBvzD,EAAEgY,EAAOu7C,YAAY/5C,KAAK45B,EAAQyS,EAAOjtC,IACzC5Y,EAAC,eACgBozC,EAAOp7B,OAAOspC,WAD9B,8BACsE1oC,EADtE,KACgFitC,EADhF,UAKL,OAFKsO,EAAS5zD,KAAK,4BAA4B4zD,EAAS5zD,KAAK,0BAA2BqY,GACpFZ,EAAOpU,QAAOwvC,EAAOoR,QAAQ5gD,MAAMgV,GAASu7C,GACzCA,GAEThI,YA3Hc,SA2HFpQ,GACV,IAAM3I,EAAS9yC,KACf,GAAsB,iBAAXy7C,GAAuB,WAAYA,EAC5C,IAAK,IAAI96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClC86C,EAAO96C,IAAImyC,EAAOoR,QAAQzI,OAAOj7C,KAAKi7C,EAAO96C,SAGnDmyC,EAAOoR,QAAQzI,OAAOj7C,KAAKi7C,GAE7B3I,EAAOoR,QAAQjB,QAAO,IAExB6I,aAtIc,SAsIDrQ,GACX,IAAM3I,EAAS9yC,KACTw7C,EAAc1I,EAAO0I,YACvBiN,EAAiBjN,EAAc,EAC/BsY,EAAoB,EAExB,GAAI5mD,MAAMhM,QAAQu6C,GAAS,CACzB,IAAK,IAAI96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAClC86C,EAAO96C,IAAImyC,EAAOoR,QAAQzI,OAAO9Q,QAAQ8Q,EAAO96C,IAEtD8nD,EAAiBjN,EAAcC,EAAOp7C,OACtCyzD,EAAoBrY,EAAOp7C,YAE3ByyC,EAAOoR,QAAQzI,OAAO9Q,QAAQ8Q,GAEhC,GAAI3I,EAAOp7B,OAAOwsC,QAAQ5gD,MAAO,CAC/B,IAAMA,EAAQwvC,EAAOoR,QAAQ5gD,MACvBywD,EAAW,GACjBrrD,OAAOg7B,KAAKpgC,GAAO0M,SAAQ,SAACgkD,GAC1B,IAAMC,EAAY3wD,EAAM0wD,GAClBE,EAAgBD,EAAUh0D,KAAK,2BACjCi0D,GACFD,EAAUh0D,KAAK,0BAA2BggB,SAASi0C,EAAe,IAAM,GAE1EH,EAAS9zC,SAAS+zC,EAAa,IAAMF,GAAqBG,KAE5DnhB,EAAOoR,QAAQ5gD,MAAQywD,EAEzBjhB,EAAOoR,QAAQjB,QAAO,GACtBnQ,EAAOyI,QAAQkN,EAAgB,IAEjC2D,YArKc,SAqKFC,GACV,IAAMvZ,EAAS9yC,KACf,GAAI,MAAOqsD,EAAX,CACA,IAAI7Q,EAAc1I,EAAO0I,YACzB,GAAItuC,MAAMhM,QAAQmrD,GAChB,IAAK,IAAI1rD,EAAI0rD,EAAchsD,OAAS,EAAGM,GAAK,EAAGA,GAAK,EAClDmyC,EAAOoR,QAAQzI,OAAOjsC,OAAO68C,EAAc1rD,GAAI,GAC3CmyC,EAAOp7B,OAAOwsC,QAAQ5gD,cACjBwvC,EAAOoR,QAAQ5gD,MAAM+oD,EAAc1rD,IAExC0rD,EAAc1rD,GAAK66C,IAAaA,GAAe,GACnDA,EAAct1C,KAAKiS,IAAIqjC,EAAa,QAGtC1I,EAAOoR,QAAQzI,OAAOjsC,OAAO68C,EAAe,GACxCvZ,EAAOp7B,OAAOwsC,QAAQ5gD,cACjBwvC,EAAOoR,QAAQ5gD,MAAM+oD,GAE1BA,EAAgB7Q,IAAaA,GAAe,GAChDA,EAAct1C,KAAKiS,IAAIqjC,EAAa,GAEtC1I,EAAOoR,QAAQjB,QAAO,GACtBnQ,EAAOyI,QAAQC,EAAa,KAE9B+Q,gBA7Lc,WA8LZ,IAAMzZ,EAAS9yC,KACf8yC,EAAOoR,QAAQzI,OAAS,GACpB3I,EAAOp7B,OAAOwsC,QAAQ5gD,QACxBwvC,EAAOoR,QAAQ5gD,MAAQ,IAEzBwvC,EAAOoR,QAAQjB,QAAO,GACtBnQ,EAAOyI,QAAQ,EAAG,KAItB4Y,EAAe,CACbj0D,KAAM,UACNwX,OAAQ,CACNwsC,QAAS,CACP1O,SAAS,EACTiG,OAAQ,GACRn4C,OAAO,EACP2vD,YAAa,KACbO,eAAgB,KAChBE,sBAAsB,EACtBf,gBAAiB,EACjBC,eAAgB,IAGpB5pD,OAda,WAgBXmnC,EADenwC,KACW,CACxBkkD,QAAO9gB,EAAA,GACFovB,EADE,CAEL/W,OAJWz7C,KAII0X,OAAOwsC,QAAQzI,OAC9Bn4C,MAAO,QAIbJ,GAAI,CACFkxD,WADE,SACSthB,GACT,GAAKA,EAAOp7B,OAAOwsC,QAAQ1O,QAA3B,CACA1C,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,WACA,IAAMsT,EAAkB,CACtB7Z,qBAAqB,GAEvBhX,EAAOsP,EAAOp7B,OAAQ28C,GACtB7wB,EAAOsP,EAAOwa,eAAgB+G,GAEzBvhB,EAAOp7B,OAAO4nC,cACjBxM,EAAOoR,QAAQjB,WAGnBnI,aAdE,SAcWhI,GACNA,EAAOp7B,OAAOwsC,QAAQ1O,SAC3B1C,EAAOoR,QAAQjB,YC9OfqR,EAAW,CACfC,OADe,SACRlzD,GACL,IAAMyxC,EAAS9yC,KACf,GAAK8yC,EAAO0C,QAAZ,CACA,IAAMlxC,EAASwhC,IACTjkB,EAAWmjB,IACKsT,EAAQxF,EAAtByF,aACJ1rB,EAAIxrB,EACJwrB,EAAE8oB,gBAAe9oB,EAAIA,EAAE8oB,eAC3B,IAAM6e,EAAK3nC,EAAE4nC,SAAW5nC,EAAE6nC,SACpBC,EAAa7hB,EAAOp7B,OAAOk9C,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IACG1hB,EAAO+G,iBACN/G,EAAOsG,gBAAkB4b,GACxBliB,EAAO+F,cAAgBqc,GACxBJ,GAEF,OAAO,EAET,IACGhiB,EAAOgH,iBACNhH,EAAOsG,gBAAkB2b,GAAiBjiB,EAAO+F,cAAgBoc,GAAcJ,GAEjF,OAAO,EAET,KAAIhoC,EAAEsoC,UAAYtoC,EAAEuoC,QAAUvoC,EAAEwoC,SAAWxoC,EAAEyoC,SAI3CzzC,EAASiiB,eACTjiB,EAASiiB,cAAcE,WAC4B,UAAlDniB,EAASiiB,cAAcE,SAAS7f,eACmB,aAAlDtC,EAASiiB,cAAcE,SAAS7f,gBAJpC,CAQA,GACE2uB,EAAOp7B,OAAOk9C,SAASW,iBACtBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GACvE,CACA,IAAIM,GAAS,EAEb,GACE1iB,EAAOkC,IAAInK,QAAX,IAAuBiI,EAAOp7B,OAAOspC,YAAc3gD,OAAS,GACQ,IAApEyyC,EAAOkC,IAAInK,QAAX,IAAuBiI,EAAOp7B,OAAOwpC,kBAAoB7gD,OAEzD,OAGF,IAAM20C,EAAMlC,EAAOkC,IACbygB,EAAczgB,EAAI,GAAGkO,YACrBwS,EAAe1gB,EAAI,GAAGmO,aACtBwS,EAAcrxD,EAAOgzC,WACrBse,EAAetxD,EAAO6pD,YACtB0H,EAAe/iB,EAAOkC,IAAI/9B,SAC5BqhC,IAAKud,EAAav7C,MAAQw4B,EAAOkC,IAAI,GAAG/H,YAO5C,IANA,IAAM6oB,EAAc,CAClB,CAACD,EAAav7C,KAAMu7C,EAAah5B,KACjC,CAACg5B,EAAav7C,KAAOm7C,EAAaI,EAAah5B,KAC/C,CAACg5B,EAAav7C,KAAMu7C,EAAah5B,IAAM64B,GACvC,CAACG,EAAav7C,KAAOm7C,EAAaI,EAAah5B,IAAM64B,IAE9C/0D,EAAI,EAAGA,EAAIm1D,EAAYz1D,OAAQM,GAAK,EAAG,CAC9C,IAAMytD,EAAQ0H,EAAYn1D,GAC1B,GAAIytD,EAAM,IAAM,GAAKA,EAAM,IAAMuH,GAAevH,EAAM,IAAM,GAAKA,EAAM,IAAMwH,EAAc,CACzF,GAAiB,IAAbxH,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCoH,GAAS,GAGb,IAAKA,EAAQ,OAEX1iB,EAAOsG,iBACLyb,GAAYC,GAAcC,GAAeC,KACvCnoC,EAAE0qB,eAAgB1qB,EAAE0qB,iBACnB1qB,EAAEkpC,aAAc,KAEjBjB,GAAcE,KAAkB1c,IAAUuc,GAAYE,IAAgBzc,IAC1ExF,EAAOyX,cACHsK,GAAYE,KAAiBzc,IAAUwc,GAAcE,IAAiB1c,IAC1ExF,EAAO2X,eAELoK,GAAYC,GAAcG,GAAaC,KACrCroC,EAAE0qB,eAAgB1qB,EAAE0qB,iBACnB1qB,EAAEkpC,aAAc,IAEnBjB,GAAcI,IAAapiB,EAAOyX,aAClCsK,GAAYI,IAAWniB,EAAO2X,aAEpC3X,EAAOiB,KAAK,WAAYygB,MAG1BxG,OAlGe,WAmGb,IAAMlb,EAAS9yC,KACT6hB,EAAWmjB,IACb8N,EAAO8hB,SAASpf,UACpB91C,EAAEmiB,GAAU3e,GAAG,UAAW4vC,EAAO8hB,SAASL,QAC1CzhB,EAAO8hB,SAASpf,SAAU,IAE5BuY,QAzGe,WA0Gb,IAAMjb,EAAS9yC,KACT6hB,EAAWmjB,IACZ8N,EAAO8hB,SAASpf,UACrB91C,EAAEmiB,GAAUwpB,IAAI,UAAWyH,EAAO8hB,SAASL,QAC3CzhB,EAAO8hB,SAASpf,SAAU,KAI9BwgB,EAAe,CACb91D,KAAM,WACNwX,OAAQ,CACNk9C,SAAU,CACRpf,SAAS,EACT+f,gBAAgB,EAChBZ,YAAY,IAGhB3rD,OATa,WAWXmnC,EADenwC,KACW,CACxB40D,SAAQxxB,EAAA,CACNoS,SAAS,GACN8e,MAITpxD,GAAI,CACFga,KADE,SACG41B,GACCA,EAAOp7B,OAAOk9C,SAASpf,SACzB1C,EAAO8hB,SAAS5G,UAGpB9Z,QANE,SAMMpB,GACFA,EAAO8hB,SAASpf,SAClB1C,EAAO8hB,SAAS7G,aCnHxB,IAAMkI,EAAa,CACjBC,eAAgB90C,IAChB+0C,yBAAqB/uB,EACrBgvB,kBAAmB,GACnB/0D,MAJiB,WAMf,OADeykC,IACJX,UAAUC,UAAUvgC,QAAQ,YAAc,EAAU,iBA/BnE,WACE,IAAMgd,EAAWmjB,IACX0rB,EAAY,UACd2F,EAAc3F,KAAa7uC,EAE/B,IAAKw0C,EAAa,CAChB,IAAMx9B,EAAUhX,EAASyR,cAAc,OACvCuF,EAAQrI,aAAakgC,EAAW,WAChC2F,EAA4C,mBAAvBx9B,EAAO,QAe9B,OAXGw9B,GACDx0C,EAASy0C,gBACTz0C,EAASy0C,eAAeC,aAGuB,IAA/C10C,EAASy0C,eAAeC,WAAW,GAAI,MAGvCF,EAAcx0C,EAASy0C,eAAeC,WAAW,eAAgB,QAG5DF,EASEG,GAAqB,QAAU,cAExCvjC,UATiB,SASPpG,GAER,IAII4pC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EA0DT,MAvDI,WAAY/pC,IACd6pC,EAAK7pC,EAAEif,QAEL,eAAgBjf,IAClB6pC,GAAM7pC,EAAEgqC,WAAa,KAEnB,gBAAiBhqC,IACnB6pC,GAAM7pC,EAAEiqC,YAAc,KAEpB,gBAAiBjqC,IACnB4pC,GAAM5pC,EAAEkqC,YAAc,KAIpB,SAAUlqC,GAAKA,EAAEnT,OAASmT,EAAEmqC,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EA7BmB,GA6BdF,EACLG,EA9BmB,GA8BdF,EAED,WAAY7pC,IACd+pC,EAAK/pC,EAAEoqC,QAEL,WAAYpqC,IACd8pC,EAAK9pC,EAAEqqC,QAGLrqC,EAAEsoC,WAAawB,IAEjBA,EAAKC,EACLA,EAAK,IAGFD,GAAMC,IAAO/pC,EAAEsqC,YACE,IAAhBtqC,EAAEsqC,WAEJR,GA/CgB,GAgDhBC,GAhDgB,KAmDhBD,GAlDgB,IAmDhBC,GAnDgB,MAwDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAGd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,IAGZY,iBAnFiB,WAoFAx3D,KACHw1C,UADGx1C,KAERy3D,cAAe,IAExBC,iBAxFiB,WAyFA13D,KACHw1C,UADGx1C,KAERy3D,cAAe,IAExBlD,OA7FiB,SA6FVlzD,GACL,IAAIwrB,EAAIxrB,EAEFyxC,EAAS9yC,KACf,GAAK8yC,EAAO0C,QAAZ,CACA,IAAM99B,EAASo7B,EAAOp7B,OAAOigD,WAEzB7kB,EAAOp7B,OAAO2hC,SAChBxsB,EAAE0qB,iBAGJ,IAAIpoC,EAAS2jC,EAAOkC,IAIpB,GAH8C,cAA1ClC,EAAOp7B,OAAOigD,WAAWC,eAC3BzoD,EAASzP,EAAEozC,EAAOp7B,OAAOigD,WAAWC,gBAEjC9kB,EAAO2kB,eAAiBtoD,EAAO,GAAGq6B,SAAS3c,EAAE1d,UAAYuI,EAAOmgD,eACnE,OAAO,EAELhrC,EAAE8oB,gBAAe9oB,EAAIA,EAAE8oB,eAC3B,IAAImiB,EAAQ,EACNC,EAAYjlB,EAAOyF,cAAgB,EAAI,EAEvCv2C,EAAOi0D,EAAWhjC,UAAUpG,GAElC,GAAInV,EAAOsgD,YACT,GAAIllB,EAAOsG,eAAgB,CACzB,KAAIlzC,KAAKiO,IAAInS,EAAKs1D,QAAUpxD,KAAKiO,IAAInS,EAAKu1D,SACrC,OAAO,EADuCO,GAAS91D,EAAKs1D,OAASS,MAErE,CAAA,KAAI7xD,KAAKiO,IAAInS,EAAKu1D,QAAUrxD,KAAKiO,IAAInS,EAAKs1D,SAC5C,OAAO,EAD8CQ,GAAS91D,EAAKu1D,YAGxEO,EACE5xD,KAAKiO,IAAInS,EAAKs1D,QAAUpxD,KAAKiO,IAAInS,EAAKu1D,SAAWv1D,EAAKs1D,OAASS,GAAa/1D,EAAKu1D,OAGrF,GAAc,IAAVO,EAAa,OAAO,EAEpBpgD,EAAOugD,SAAQH,GAASA,GAG5B,IAAII,EAAYplB,EAAOlE,eAAiBkpB,EAAQpgD,EAAOygD,YAkBvD,GAhBID,GAAaplB,EAAOkG,iBAAgBkf,EAAYplB,EAAOkG,gBACvDkf,GAAaplB,EAAOiG,iBAAgBmf,EAAYplB,EAAOiG,mBASrCjG,EAAOp7B,OAAOkhC,QAE9Bsf,IAAcplB,EAAOkG,gBAAkBkf,IAAcplB,EAAOiG,kBAEvCjG,EAAOp7B,OAAOiM,QAAQkJ,EAAE0sB,kBAE9CzG,EAAOp7B,OAAO6iC,SA0CZ,CAOL,IAAM6d,EAAW,CACfrxD,KAAMqa,IACN02C,MAAO5xD,KAAKiO,IAAI2jD,GAChBt2B,UAAWt7B,KAAKmyD,KAAKP,IAEf3B,EAAwBrjB,EAAO6kB,WAA/BxB,oBACFmC,EACJnC,GACAiC,EAASrxD,KAAOovD,EAAoBpvD,KAAO,KAC3CqxD,EAASN,OAAS3B,EAAoB2B,OACtCM,EAAS52B,YAAc20B,EAAoB30B,UAC7C,IAAK82B,EAAmB,CACtBxlB,EAAO6kB,WAAWxB,yBAAsB/uB,EAEpC0L,EAAOp7B,OAAOkhC,MAChB9F,EAAO0G,UAET,IAAIxkC,EAAW89B,EAAOlE,eAAiBkpB,EAAQpgD,EAAOygD,YAChDhQ,EAAerV,EAAOwL,YACtB8J,EAAStV,EAAOuL,MAetB,GAbIrpC,GAAY89B,EAAOkG,iBAAgBhkC,EAAW89B,EAAOkG,gBACrDhkC,GAAY89B,EAAOiG,iBAAgB/jC,EAAW89B,EAAOiG,gBAEzDjG,EAAO4G,cAAc,GACrB5G,EAAOgI,aAAa9lC,GACpB89B,EAAO+H,iBACP/H,EAAO4H,oBACP5H,EAAO6H,wBAEDwN,GAAgBrV,EAAOwL,cAAkB8J,GAAUtV,EAAOuL,QAC9DvL,EAAO6H,sBAGL7H,EAAOp7B,OAAOklC,eAAgB,CAYhCv6B,aAAaywB,EAAO6kB,WAAWY,SAC/BzlB,EAAO6kB,WAAWY,aAAUnxB,EAC5B,IAAMgvB,EAAoBtjB,EAAO6kB,WAAWvB,kBACxCA,EAAkB/1D,QAAU,IAC9B+1D,EAAkBx1C,QAEpB,IAAM43C,EAAYpC,EAAkB/1D,OAChC+1D,EAAkBA,EAAkB/1D,OAAS,QAC7C+mC,EACEqxB,EAAarC,EAAkB,GAErC,GADAA,EAAkB51D,KAAK43D,GAErBI,IACCJ,EAASN,MAAQU,EAAUV,OAASM,EAAS52B,YAAcg3B,EAAUh3B,WAGtE40B,EAAkB5mD,OAAO,QACpB,GACL4mD,EAAkB/1D,QAAU,IAC5B+3D,EAASrxD,KAAO0xD,EAAW1xD,KAAO,KAClC0xD,EAAWX,MAAQM,EAASN,OAAS,GACrCM,EAASN,OAAS,EAClB,CAOA,IAAMY,EAAkBZ,EAAQ,EAAI,GAAM,GAC1ChlB,EAAO6kB,WAAWxB,oBAAsBiC,EACxChC,EAAkB5mD,OAAO,GACzBsjC,EAAO6kB,WAAWY,QAAU5pB,GAAS,WACnCmE,EAAOqK,eAAerK,EAAOp7B,OAAOwlC,OAAO,OAAM9V,EAAWsxB,KAC3D,GAEA5lB,EAAO6kB,WAAWY,UAIrBzlB,EAAO6kB,WAAWY,QAAU5pB,GAAS,WAEnCmE,EAAO6kB,WAAWxB,oBAAsBiC,EACxChC,EAAkB5mD,OAAO,GACzBsjC,EAAOqK,eAAerK,EAAOp7B,OAAOwlC,OAAO,OAAM9V,EAHzB,MAIvB,MAWP,GANKkxB,GAAmBxlB,EAAOiB,KAAK,SAAUlnB,GAG1CimB,EAAOp7B,OAAO6mC,UAAYzL,EAAOp7B,OAAOihD,8BAC1C7lB,EAAOyL,SAASqa,OAEd5jD,IAAa89B,EAAOkG,gBAAkBhkC,IAAa89B,EAAOiG,eAAgB,OAAO,OAvJ5D,CAE3B,IAAMqf,EAAW,CACfrxD,KAAMqa,IACN02C,MAAO5xD,KAAKiO,IAAI2jD,GAChBt2B,UAAWt7B,KAAKmyD,KAAKP,GACrBn9C,IAAKtZ,GAID+0D,EAAoBtjB,EAAO6kB,WAAWvB,kBACxCA,EAAkB/1D,QAAU,GAC9B+1D,EAAkBx1C,QAEpB,IAAM43C,EAAYpC,EAAkB/1D,OAChC+1D,EAAkBA,EAAkB/1D,OAAS,QAC7C+mC,EAuBJ,GAtBAgvB,EAAkB51D,KAAK43D,GAQnBI,GAEAJ,EAAS52B,YAAcg3B,EAAUh3B,WACjC42B,EAASN,MAAQU,EAAUV,OAC3BM,EAASrxD,KAAOyxD,EAAUzxD,KAAO,MAEjC+rC,EAAO6kB,WAAWkB,cAAcT,GAGlCtlB,EAAO6kB,WAAWkB,cAAcT,GAK9BtlB,EAAO6kB,WAAWmB,cAAcV,GAClC,OAAO,EAqHX,OAFIvrC,EAAE0qB,eAAgB1qB,EAAE0qB,iBACnB1qB,EAAEkpC,aAAc,GACd,IAET8C,cAtTiB,SAsTHT,GACZ,IAAMtlB,EAAS9yC,KACTsE,EAASwhC,IAEf,QACE9lC,KAAK0X,OAAOigD,WAAWoB,gBACvBX,EAASN,MAAQ93D,KAAK0X,OAAOigD,WAAWoB,oBAOxC/4D,KAAK0X,OAAOigD,WAAWqB,eACvB53C,IAAQ0xB,EAAO6kB,WAAWzB,eAAiBl2D,KAAK0X,OAAOigD,WAAWqB,iBAShEZ,EAASN,OAAS,GAAK12C,IAAQ0xB,EAAO6kB,WAAWzB,eAAiB,KAgBlEkC,EAAS52B,UAAY,EACjBsR,EAAOuL,QAASvL,EAAOp7B,OAAOkhC,MAAU9F,EAAO2C,YACnD3C,EAAOyX,YACPzX,EAAOiB,KAAK,SAAUqkB,EAASz9C,MAEtBm4B,EAAOwL,cAAexL,EAAOp7B,OAAOkhC,MAAU9F,EAAO2C,YAChE3C,EAAO2X,YACP3X,EAAOiB,KAAK,SAAUqkB,EAASz9C,MAGjCm4B,EAAO6kB,WAAWzB,gBAAiB,IAAI5xD,EAAO6c,MAAO83C,WAE9C,MAETH,cA3WiB,SA2WHV,GACZ,IAAMtlB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOigD,WAC7B,GAAIS,EAAS52B,UAAY,GACvB,GAAIsR,EAAOuL,QAAUvL,EAAOp7B,OAAOkhC,MAAQlhC,EAAOmgD,eAEhD,OAAO,OAEJ,GAAI/kB,EAAOwL,cAAgBxL,EAAOp7B,OAAOkhC,MAAQlhC,EAAOmgD,eAE7D,OAAO,EAET,OAAO,GAET7J,OAzXiB,WA0Xf,IAAMlb,EAAS9yC,KACTqB,EAAQ40D,EAAW50D,QACzB,GAAIyxC,EAAOp7B,OAAO2hC,QAEhB,OADAvG,EAAOgD,UAAUjS,oBAAoBxiC,EAAOyxC,EAAO6kB,WAAWpD,SACvD,EAET,IAAKlzD,EAAO,OAAO,EACnB,GAAIyxC,EAAO6kB,WAAWniB,QAAS,OAAO,EACtC,IAAIrmC,EAAS2jC,EAAOkC,IAQpB,MAP8C,cAA1ClC,EAAOp7B,OAAOigD,WAAWC,eAC3BzoD,EAASzP,EAAEozC,EAAOp7B,OAAOigD,WAAWC,eAEtCzoD,EAAOjM,GAAG,aAAc4vC,EAAO6kB,WAAWH,kBAC1CroD,EAAOjM,GAAG,aAAc4vC,EAAO6kB,WAAWD,kBAC1CvoD,EAAOjM,GAAG7B,EAAOyxC,EAAO6kB,WAAWpD,QACnCzhB,EAAO6kB,WAAWniB,SAAU,GACrB,GAETuY,QA5YiB,WA6Yf,IAAMjb,EAAS9yC,KACTqB,EAAQ40D,EAAW50D,QACzB,GAAIyxC,EAAOp7B,OAAO2hC,QAEhB,OADAvG,EAAOgD,UAAUlS,iBAAiBviC,EAAOyxC,EAAO6kB,WAAWpD,SACpD,EAET,IAAKlzD,EAAO,OAAO,EACnB,IAAKyxC,EAAO6kB,WAAWniB,QAAS,OAAO,EACvC,IAAIrmC,EAAS2jC,EAAOkC,IAMpB,MAL8C,cAA1ClC,EAAOp7B,OAAOigD,WAAWC,eAC3BzoD,EAASzP,EAAEozC,EAAOp7B,OAAOigD,WAAWC,eAEtCzoD,EAAOk8B,IAAIhqC,EAAOyxC,EAAO6kB,WAAWpD,QACpCzhB,EAAO6kB,WAAWniB,SAAU,GACrB,ICtbL0jB,EAAa,CACjBC,SADiB,SACRnkB,EAAKokB,GACZpkB,EAAIokB,EAAW,WAAa,eAAep5D,KAAK0X,OAAOmmC,WAAWwb,eAC9DrkB,EAAI,IAAyB,WAAnBA,EAAI,GAAGtZ,UAAsBsZ,EAAI,GAAGokB,SAAWA,IAE/DnW,OALiB,WAOf,IAAMnQ,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOmmC,WACvBsb,EAAWrmB,EAAO+K,WAAWsb,SAEnC,IAAIrmB,EAAOp7B,OAAOkhC,KAAlB,CACA,IAAA0gB,EAA6BxmB,EAAO+K,WAA5B0b,EAARD,EAAQC,QAASC,EAAjBF,EAAiBE,QAEbA,GAAWA,EAAQn5D,OAAS,IAC1ByyC,EAAOwL,YACT6a,EAASK,GAAS,GAElBL,EAASK,GAAS,GAEhB1mB,EAAOp7B,OAAOgnC,eAAiB5L,EAAO0C,SACxCgkB,EAAQ1mB,EAAO2Y,SAAW,WAAa,eAAe/zC,EAAO+hD,YAG7DF,GAAWA,EAAQl5D,OAAS,IAC1ByyC,EAAOuL,MACT8a,EAASI,GAAS,GAElBJ,EAASI,GAAS,GAEhBzmB,EAAOp7B,OAAOgnC,eAAiB5L,EAAO0C,SACxC+jB,EAAQzmB,EAAO2Y,SAAW,WAAa,eAAe/zC,EAAO+hD,cAInEC,YAnCiB,SAmCL7sC,GACV,IAAMimB,EAAS9yC,KACf6sB,EAAE0qB,iBACEzE,EAAOwL,cAAgBxL,EAAOp7B,OAAOkhC,MACzC9F,EAAO2X,aAETkP,YAzCiB,SAyCL9sC,GACV,IAAMimB,EAAS9yC,KACf6sB,EAAE0qB,iBACEzE,EAAOuL,QAAUvL,EAAOp7B,OAAOkhC,MACnC9F,EAAOyX,aAETrtC,KA/CiB,WAgDf,IAcIq8C,EACAC,EAfE1mB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOmmC,YAE7B/K,EAAOp7B,OAAOmmC,WAAavN,EACzBwC,EAAOkC,IACPlC,EAAOp7B,OAAOmmC,WACd/K,EAAOp7B,OAAO84B,eACd,CACEsN,OAAQ,qBACRC,OAAQ,uBAGNrmC,EAAOomC,QAAUpmC,EAAOqmC,UAI1BrmC,EAAOomC,SACTyb,EAAU75D,EAAEgY,EAAOomC,QAEjBhL,EAAOp7B,OAAO4oC,mBACW,iBAAlB5oC,EAAOomC,QACdyb,EAAQl5D,OAAS,GACyB,IAA1CyyC,EAAOkC,IAAIp1C,KAAK8X,EAAOomC,QAAQz9C,SAE/Bk5D,EAAUzmB,EAAOkC,IAAIp1C,KAAK8X,EAAOomC,UAGjCpmC,EAAOqmC,SACTyb,EAAU95D,EAAEgY,EAAOqmC,QAEjBjL,EAAOp7B,OAAO4oC,mBACW,iBAAlB5oC,EAAOqmC,QACdyb,EAAQn5D,OAAS,GACyB,IAA1CyyC,EAAOkC,IAAIp1C,KAAK8X,EAAOqmC,QAAQ19C,SAE/Bm5D,EAAU1mB,EAAOkC,IAAIp1C,KAAK8X,EAAOqmC,UAIjCwb,GAAWA,EAAQl5D,OAAS,GAC9Bk5D,EAAQr2D,GAAG,QAAS4vC,EAAO+K,WAAW8b,aAEpCH,GAAWA,EAAQn5D,OAAS,GAC9Bm5D,EAAQt2D,GAAG,QAAS4vC,EAAO+K,WAAW6b,aAGxCl2B,EAAOsP,EAAO+K,WAAY,CACxB0b,QAAAA,EACAzb,OAAQyb,GAAWA,EAAQ,GAC3BC,QAAAA,EACAzb,OAAQyb,GAAWA,EAAQ,KAGxB1mB,EAAO0C,UACN+jB,GAASA,EAAQ1wB,SAASnxB,EAAO+hD,WACjCD,GAASA,EAAQ3wB,SAASnxB,EAAO+hD,cAGzCvlB,QA1GiB,WA2Gf,IAAMpB,EAAS9yC,KACf45D,EAA6B9mB,EAAO+K,WAA5B0b,EAARK,EAAQL,QAASC,EAAjBI,EAAiBJ,QACbD,GAAWA,EAAQl5D,SACrBk5D,EAAQluB,IAAI,QAASyH,EAAO+K,WAAW8b,aACvCJ,EAAQrwB,YAAY4J,EAAOp7B,OAAOmmC,WAAWwb,gBAE3CG,GAAWA,EAAQn5D,SACrBm5D,EAAQnuB,IAAI,QAASyH,EAAO+K,WAAW6b,aACvCF,EAAQtwB,YAAY4J,EAAOp7B,OAAOmmC,WAAWwb,kBC9G7CQ,EAAa,CACjB5W,OADiB,WAGf,IAAMnQ,EAAS9yC,KACTs4C,EAAMxF,EAAOwF,IACb5gC,EAASo7B,EAAOp7B,OAAOoiD,WAC7B,GACGpiD,EAAOyb,IACP2f,EAAOgnB,WAAW3mC,IAClB2f,EAAOgnB,WAAW9kB,KACc,IAAjClC,EAAOgnB,WAAW9kB,IAAI30C,OAJxB,CAOA,IAMI+yB,EANEgxB,EACJtR,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QACpC1C,EAAOoR,QAAQzI,OAAOp7C,OACtByyC,EAAO2I,OAAOp7C,OACd20C,EAAMlC,EAAOgnB,WAAW9kB,IAGxBhiB,EAAQ8f,EAAOp7B,OAAOkhC,KACxB1yC,KAAK++C,MAAMb,EAAqC,EAAtBtR,EAAO6N,cAAoB7N,EAAOp7B,OAAO+lC,gBACnE3K,EAAOmI,SAAS56C,OAgBpB,GAfIyyC,EAAOp7B,OAAOkhC,OAChBxlB,EAAUltB,KAAK++C,MACZnS,EAAO0I,YAAc1I,EAAO6N,cAAgB7N,EAAOp7B,OAAO+lC,iBAE/C2G,EAAe,EAA0B,EAAtBtR,EAAO6N,eACtCvtB,GAAWgxB,EAAqC,EAAtBtR,EAAO6N,cAE/BvtB,EAAUJ,EAAQ,IAAGI,GAAWJ,GAChCI,EAAU,GAAsC,YAAjC0f,EAAOp7B,OAAOqiD,iBAA8B3mC,EAAUJ,EAAQI,IAEjFA,OADqC,IAArB0f,EAAOqU,UACbrU,EAAOqU,UAEPrU,EAAO0I,aAAe,EAIhB,YAAhB9jC,EAAO3X,MACP+yC,EAAOgnB,WAAWE,SAClBlnB,EAAOgnB,WAAWE,QAAQ35D,OAAS,EACnC,CACA,IACI45D,EACAh5C,EACAi5C,EAHEF,EAAUlnB,EAAOgnB,WAAWE,QA2BlC,GAvBItiD,EAAOyiD,iBACTrnB,EAAOgnB,WAAWM,WAAaJ,EAC5BrsB,GAAG,GACHmF,EAAOsG,eAAiB,aAAe,gBAAe,GACzDpE,EAAI7H,IACF2F,EAAOsG,eAAiB,QAAU,SAC/BtG,EAAOgnB,WAAWM,YAAc1iD,EAAO2iD,mBAAqB,GAFjE,MAII3iD,EAAO2iD,mBAAqB,QAA8BjzB,IAAzB0L,EAAO4V,gBAC1C5V,EAAOgnB,WAAWQ,oBAAsBlnC,EAAU0f,EAAO4V,cACrD5V,EAAOgnB,WAAWQ,mBAAqB5iD,EAAO2iD,mBAAqB,EACrEvnB,EAAOgnB,WAAWQ,mBAAqB5iD,EAAO2iD,mBAAqB,EAC1DvnB,EAAOgnB,WAAWQ,mBAAqB,IAChDxnB,EAAOgnB,WAAWQ,mBAAqB,IAG3CL,EAAa7mC,EAAU0f,EAAOgnB,WAAWQ,mBAEzCJ,IADAj5C,EAAYg5C,GAAc/zD,KAAKC,IAAI6zD,EAAQ35D,OAAQqX,EAAO2iD,oBAAsB,IACxDJ,GAAc,GAExCD,EAAQ9wB,YACHxxB,EAAO6iD,kBADZ,IACiC7iD,EAAO6iD,kBADxC,SACkE7iD,EAAO6iD,kBADzE,cACwG7iD,EAAO6iD,kBAD/G,SACyI7iD,EAAO6iD,kBADhJ,cAC+K7iD,EAAO6iD,kBADtL,SAGIvlB,EAAI30C,OAAS,EACf25D,EAAQn6D,MAAK,SAAC26D,GACZ,IAAMC,EAAU/6D,EAAE86D,GACZE,EAAcD,EAAQniD,QACxBoiD,IAAgBtnC,GAClBqnC,EAAQ5xB,SAASnxB,EAAO6iD,mBAEtB7iD,EAAOyiD,iBACLO,GAAeT,GAAcS,GAAez5C,GAC9Cw5C,EAAQ5xB,SAAYnxB,EAAO6iD,kBAA3B,SAEEG,IAAgBT,GAClBQ,EACGvzD,OACA2hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGrzD,OACA2hC,SAAYnxB,EAAO6iD,kBAJtB,cAMEG,IAAgBz5C,GAClBw5C,EACGzzD,OACA6hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGvzD,OACA6hC,SAAYnxB,EAAO6iD,kBAJtB,sBAQD,CACL,IAAME,EAAUT,EAAQrsB,GAAGva,GACrBsnC,EAAcD,EAAQniD,QAE5B,GADAmiD,EAAQ5xB,SAASnxB,EAAO6iD,mBACpB7iD,EAAOyiD,eAAgB,CAGzB,IAFA,IAAMQ,EAAwBX,EAAQrsB,GAAGssB,GACnCW,EAAuBZ,EAAQrsB,GAAG1sB,GAC/BtgB,EAAIs5D,EAAYt5D,GAAKsgB,EAAWtgB,GAAK,EAC5Cq5D,EAAQrsB,GAAGhtC,GAAGkoC,SAAYnxB,EAAO6iD,kBAAjC,SAEF,GAAIznB,EAAOp7B,OAAOkhC,KAChB,GAAI8hB,GAAeV,EAAQ35D,OAASqX,EAAO2iD,mBAAoB,CAC7D,IAAK,IAAI15D,EAAI+W,EAAO2iD,mBAAoB15D,GAAK,EAAGA,GAAK,EACnDq5D,EAAQrsB,GAAGqsB,EAAQ35D,OAASM,GAAGkoC,SAAYnxB,EAAO6iD,kBAAlD,SAEFP,EACGrsB,GAAGqsB,EAAQ35D,OAASqX,EAAO2iD,mBAAqB,GAChDxxB,SAAYnxB,EAAO6iD,kBAFtB,cAIAI,EACGzzD,OACA2hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGrzD,OACA2hC,SAAYnxB,EAAO6iD,kBAJtB,cAKAK,EACG5zD,OACA6hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGvzD,OACA6hC,SAAYnxB,EAAO6iD,kBAJtB,mBAOFI,EACGzzD,OACA2hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGrzD,OACA2hC,SAAYnxB,EAAO6iD,kBAJtB,cAKAK,EACG5zD,OACA6hC,SAAYnxB,EAAO6iD,kBAFtB,SAGGvzD,OACA6hC,SAAYnxB,EAAO6iD,kBAJtB,eAQN,GAAI7iD,EAAOyiD,eAAgB,CACzB,IAAMU,EAAuB30D,KAAKC,IAAI6zD,EAAQ35D,OAAQqX,EAAO2iD,mBAAqB,GAC5ES,GACHhoB,EAAOgnB,WAAWM,WAAaS,EAAuB/nB,EAAOgnB,WAAWM,YAAc,EACvFF,EAAWpnB,EAAOgnB,WAAWM,WACzBjH,EAAa7a,EAAM,QAAU,OACnC0hB,EAAQ7sB,IAAI2F,EAAOsG,eAAiB+Z,EAAa,MAAU2H,EAA3D,OASJ,GANoB,aAAhBpjD,EAAO3X,OACTi1C,EACGp1C,KAAKywC,EAAkB34B,EAAOqjD,eAC9Bt4D,KAAKiV,EAAOsjD,sBAAsB5nC,EAAU,IAC/C4hB,EAAIp1C,KAAKywC,EAAkB34B,EAAOujD,aAAax4D,KAAKiV,EAAOwjD,oBAAoBloC,KAE7D,gBAAhBtb,EAAO3X,KAAwB,CACjC,IAAIo7D,EAEFA,EADEzjD,EAAO0jD,oBACctoB,EAAOsG,eAAiB,WAAa,aAErCtG,EAAOsG,eAAiB,aAAe,WAEhE,IAAMriB,GAAS3D,EAAU,GAAKJ,EAC1B4E,EAAS,EACTC,EAAS,EACgB,eAAzBsjC,EACFvjC,EAASb,EAETc,EAASd,EAEXie,EACGp1C,KAAKywC,EAAkB34B,EAAO2jD,uBAC9Bz9B,UAFH,6BAE0ChG,EAF1C,YAE4DC,EAF5D,KAGGmS,WAAW8I,EAAOp7B,OAAOwlC,OAEV,WAAhBxlC,EAAO3X,MAAqB2X,EAAO4jD,cACrCtmB,EAAI9M,KAAKxwB,EAAO4jD,aAAaxoB,EAAQ1f,EAAU,EAAGJ,IAClD8f,EAAOiB,KAAK,mBAAoBiB,EAAI,KAEpClC,EAAOiB,KAAK,mBAAoBiB,EAAI,IAElClC,EAAOp7B,OAAOgnC,eAAiB5L,EAAO0C,SACxCR,EAAIlC,EAAO2Y,SAAW,WAAa,eAAe/zC,EAAO+hD,aAG7D7oD,OA1LiB,WA4Lf,IAAMkiC,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOoiD,WAC7B,GACGpiD,EAAOyb,IACP2f,EAAOgnB,WAAW3mC,IAClB2f,EAAOgnB,WAAW9kB,KACc,IAAjClC,EAAOgnB,WAAW9kB,IAAI30C,OAJxB,CAOA,IAAM+jD,EACJtR,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QACpC1C,EAAOoR,QAAQzI,OAAOp7C,OACtByyC,EAAO2I,OAAOp7C,OAEd20C,EAAMlC,EAAOgnB,WAAW9kB,IAC1BumB,EAAiB,GACrB,GAAoB,YAAhB7jD,EAAO3X,KAAoB,CAC7B,IAAIy7D,EAAkB1oB,EAAOp7B,OAAOkhC,KAChC1yC,KAAK++C,MAAMb,EAAqC,EAAtBtR,EAAO6N,cAAoB7N,EAAOp7B,OAAO+lC,gBACnE3K,EAAOmI,SAAS56C,OAChByyC,EAAOp7B,OAAO6iC,WAAazH,EAAOp7B,OAAOkhC,MAAQ4iB,EAAkBpX,IACrEoX,EAAkBpX,GAEpB,IAAK,IAAIzjD,EAAI,EAAGA,EAAI66D,EAAiB76D,GAAK,EACpC+W,EAAO+jD,aACTF,GAAkB7jD,EAAO+jD,aAAaviD,KAAK45B,EAAQnyC,EAAG+W,EAAOgkD,aAE7DH,GAAc,IAAQ7jD,EAAOikD,cAAf,WAAuCjkD,EAAOgkD,YAA9C,OAAgEhkD,EAAOikD,cAAvE,IAGlB3mB,EAAI9M,KAAKqzB,GAETzoB,EAAOgnB,WAAWE,QAAUhlB,EAAIp1C,KAAKywC,EAAkB34B,EAAOgkD,cAE5C,aAAhBhkD,EAAO3X,OAEPw7D,EADE7jD,EAAOkkD,eACQlkD,EAAOkkD,eAAe1iD,KAAK45B,EAAQp7B,EAAOqjD,aAAcrjD,EAAOujD,YAG9E,gBAAgBvjD,EAAOqjD,aAAvB,4BAEgBrjD,EAAOujD,WAFvB,YAIJjmB,EAAI9M,KAAKqzB,IAES,gBAAhB7jD,EAAO3X,OAEPw7D,EADE7jD,EAAOmkD,kBACQnkD,EAAOmkD,kBAAkB3iD,KAAK45B,EAAQp7B,EAAO2jD,sBAEhD,gBAAmB3jD,EAAO2jD,qBAA1B,YAEhBrmB,EAAI9M,KAAKqzB,IAES,WAAhB7jD,EAAO3X,MACT+yC,EAAOiB,KAAK,mBAAoBjB,EAAOgnB,WAAW9kB,IAAI,MAG1D93B,KArPiB,WAsPf,IAAM41B,EAAS9yC,KACf8yC,EAAOp7B,OAAOoiD,WAAaxpB,EACzBwC,EAAOkC,IACPlC,EAAOp7B,OAAOoiD,WACdhnB,EAAOp7B,OAAO84B,eACd,CAAErd,GAAI,sBAER,IAAMzb,EAASo7B,EAAOp7B,OAAOoiD,WAC7B,GAAKpiD,EAAOyb,GAAZ,CAEA,IAAI6hB,EAAMt1C,EAAEgY,EAAOyb,IACA,IAAf6hB,EAAI30C,SAEJyyC,EAAOp7B,OAAO4oC,mBAA0C,iBAAd5oC,EAAOyb,IAAmB6hB,EAAI30C,OAAS,IACnF20C,EAAMlC,EAAOkC,IAAIp1C,KAAK8X,EAAOyb,KAGX,YAAhBzb,EAAO3X,MAAsB2X,EAAOokD,WACtC9mB,EAAInM,SAASnxB,EAAOqkD,gBAGtB/mB,EAAInM,SAASnxB,EAAOskD,cAAgBtkD,EAAO3X,MAEvB,YAAhB2X,EAAO3X,MAAsB2X,EAAOyiD,iBACtCnlB,EAAInM,SAAJ,GAAgBnxB,EAAOskD,cAAgBtkD,EAAO3X,KAA9C,YACA+yC,EAAOgnB,WAAWQ,mBAAqB,EACnC5iD,EAAO2iD,mBAAqB,IAC9B3iD,EAAO2iD,mBAAqB,IAGZ,gBAAhB3iD,EAAO3X,MAA0B2X,EAAO0jD,qBAC1CpmB,EAAInM,SAASnxB,EAAOukD,0BAGlBvkD,EAAOokD,WACT9mB,EAAI9xC,GAAG,QAASmtC,EAAkB34B,EAAOgkD,cAAc,SAAiB7uC,GACtEA,EAAE0qB,iBACF,IAAIj/B,EAAQ5Y,EAAEM,MAAMsY,QAAUw6B,EAAOp7B,OAAO+lC,eACxC3K,EAAOp7B,OAAOkhC,OAAMtgC,GAASw6B,EAAO6N,cACxC7N,EAAOyI,QAAQjjC,MAInBkrB,EAAOsP,EAAOgnB,WAAY,CACxB9kB,IAAAA,EACA7hB,GAAI6hB,EAAI,KAGLlC,EAAO0C,SACVR,EAAInM,SAASnxB,EAAO+hD,cAGxBvlB,QA1SiB,WA2Sf,IAAMpB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOoiD,WAC7B,GACGpiD,EAAOyb,IACP2f,EAAOgnB,WAAW3mC,IAClB2f,EAAOgnB,WAAW9kB,KACc,IAAjClC,EAAOgnB,WAAW9kB,IAAI30C,OAJxB,CAOA,IAAM20C,EAAMlC,EAAOgnB,WAAW9kB,IAE9BA,EAAI9L,YAAYxxB,EAAOwkD,aACvBlnB,EAAI9L,YAAYxxB,EAAOskD,cAAgBtkD,EAAO3X,MAC1C+yC,EAAOgnB,WAAWE,SAASlnB,EAAOgnB,WAAWE,QAAQ9wB,YAAYxxB,EAAO6iD,mBACxE7iD,EAAOokD,WACT9mB,EAAI3J,IAAI,QAASgF,EAAkB34B,EAAOgkD,iBC9T1CS,GAAY,CAChBrhB,aADgB,WAEd,IAAMhI,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAO0kD,UAAUjpC,IAAO2f,EAAOspB,UAAUjpC,GAArD,CACA,IAAQipC,EAA2CtpB,EAA3CspB,UAAyB9jB,EAAkBxF,EAAhCyF,aAAmBz7B,EAAag2B,EAAbh2B,SAC9Bu/C,EAAsCD,EAAtCC,SAAUC,EAA4BF,EAA5BE,UAAWC,EAAiBH,EAAjBG,QAASvnB,EAAQonB,EAARpnB,IAChCt9B,EAASo7B,EAAOp7B,OAAO0kD,UAEzBI,EAAUH,EACVI,GAAUH,EAAYD,GAAYv/C,EAClCw7B,GACFmkB,GAAUA,GACG,GACXD,EAAUH,EAAWI,EACrBA,EAAS,IACCA,EAASJ,EAAWC,IAC9BE,EAAUF,EAAYG,GAEfA,EAAS,GAClBD,EAAUH,EAAWI,EACrBA,EAAS,GACAA,EAASJ,EAAWC,IAC7BE,EAAUF,EAAYG,GAEpB3pB,EAAOsG,gBACTmjB,EAAQ3+B,UAAR,eAAiC6+B,EAAjC,aACAF,EAAQ,GAAG5uC,MAAM5qB,MAAWy5D,EAA5B,OAEAD,EAAQ3+B,UAAR,oBAAsC6+B,EAAtC,UACAF,EAAQ,GAAG5uC,MAAM2M,OAAYkiC,EAA7B,MAEE9kD,EAAOvU,OACTkf,aAAaywB,EAAOspB,UAAU7D,SAC9BvjB,EAAI,GAAGrnB,MAAM+uC,QAAU,EACvB5pB,EAAOspB,UAAU7D,QAAUp2C,YAAW,WACpC6yB,EAAI,GAAGrnB,MAAM+uC,QAAU,EACvB1nB,EAAIhL,WAAW,OACd,QAGP0P,cAxCgB,SAwCFnuC,GACZ,IAAMunC,EAAS9yC,KACV8yC,EAAOp7B,OAAO0kD,UAAUjpC,IAAO2f,EAAOspB,UAAUjpC,IACrD2f,EAAOspB,UAAUG,QAAQvyB,WAAWz+B,IAEtCqsC,WA7CgB,WA8Cd,IAAM9E,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAO0kD,UAAUjpC,IAAO2f,EAAOspB,UAAUjpC,GAArD,CAEA,IAAQipC,EAActpB,EAAdspB,UACAG,EAAiBH,EAAjBG,QAASvnB,EAAQonB,EAARpnB,IAEjBunB,EAAQ,GAAG5uC,MAAM5qB,MAAQ,GACzBw5D,EAAQ,GAAG5uC,MAAM2M,OAAS,GAC1B,IAII+hC,EAJEC,EAAYxpB,EAAOsG,eAAiBpE,EAAI,GAAGzU,YAAcyU,EAAI,GAAGvU,aAEhEk8B,EAAU7pB,EAAOsQ,KAAOtQ,EAAO+R,YAC/B+X,EAAcD,GAAWL,EAAYxpB,EAAOsQ,MAGhDiZ,EADuC,SAArCvpB,EAAOp7B,OAAO0kD,UAAUC,SACfC,EAAYK,EAEZ18C,SAAS6yB,EAAOp7B,OAAO0kD,UAAUC,SAAU,IAGpDvpB,EAAOsG,eACTmjB,EAAQ,GAAG5uC,MAAM5qB,MAAWs5D,EAA5B,KAEAE,EAAQ,GAAG5uC,MAAM2M,OAAY+hC,EAA7B,KAIArnB,EAAI,GAAGrnB,MAAMiM,QADX+iC,GAAW,EACU,OAEA,GAErB7pB,EAAOp7B,OAAO0kD,UAAUj5D,OAC1B6xC,EAAI,GAAGrnB,MAAM+uC,QAAU,GAEzBl5B,EAAO44B,EAAW,CAChBE,UAAAA,EACAK,QAAAA,EACAC,YAAAA,EACAP,SAAAA,IAEEvpB,EAAOp7B,OAAOgnC,eAAiB5L,EAAO0C,SACxC4mB,EAAUpnB,IAAIlC,EAAO2Y,SAAW,WAAa,eAC3C3Y,EAAOp7B,OAAO0kD,UAAU3C,aAI9BoD,mBA3FgB,SA2FGhwC,GAEjB,OADe7sB,KACJo5C,eACS,eAAXvsB,EAAE9sB,MAAoC,cAAX8sB,EAAE9sB,KAChC8sB,EAAE+pB,cAAc,GAAGkmB,QACnBjwC,EAAEiwC,QAEU,eAAXjwC,EAAE9sB,MAAoC,cAAX8sB,EAAE9sB,KAChC8sB,EAAE+pB,cAAc,GAAGmmB,QACnBlwC,EAAEkwC,SAERC,gBAtGgB,SAsGAnwC,GACd,IAIIowC,EAJEnqB,EAAS9yC,KACPo8D,EAAiCtpB,EAAjCspB,UAAyB9jB,EAAQxF,EAAtByF,aACXvD,EAA2ConB,EAA3CpnB,IAAKqnB,EAAsCD,EAAtCC,SAAUC,EAA4BF,EAA5BE,UAAWY,EAAiBd,EAAjBc,aAGlCD,GACGb,EAAUS,mBAAmBhwC,GAC5BmoB,EAAI/9B,SAAS67B,EAAOsG,eAAiB,OAAS,QAC5B,OAAjB8jB,EAAwBA,EAAeb,EAAW,KACpDC,EAAYD,GACfY,EAAgB/2D,KAAKiS,IAAIjS,KAAKC,IAAI82D,EAAe,GAAI,GACjD3kB,IACF2kB,EAAgB,EAAIA,GAGtB,IAAMjoD,EACJ89B,EAAOkG,gBAAkBlG,EAAOiG,eAAiBjG,EAAOkG,gBAAkBikB,EAE5EnqB,EAAO+H,eAAe7lC,GACtB89B,EAAOgI,aAAa9lC,GACpB89B,EAAO4H,oBACP5H,EAAO6H,uBAETwiB,YA9HgB,SA8HJtwC,GACV,IAAMimB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAO0kD,UACrBA,EAA0BtpB,EAA1BspB,UAAWlnB,EAAepC,EAAfoC,WACXF,EAAiBonB,EAAjBpnB,IAAKunB,EAAYH,EAAZG,QACbzpB,EAAOspB,UAAUlmB,WAAY,EAC7BpD,EAAOspB,UAAUc,aACfrwC,EAAE1d,SAAWotD,EAAQ,IAAM1vC,EAAE1d,SAAWotD,EACpCH,EAAUS,mBAAmBhwC,GAC7BA,EAAE1d,OAAOkL,wBAAwBy4B,EAAOsG,eAAiB,OAAS,OAClE,KACNvsB,EAAE0qB,iBACF1qB,EAAE0sB,kBAEFrE,EAAWlL,WAAW,KACtBuyB,EAAQvyB,WAAW,KACnBoyB,EAAUY,gBAAgBnwC,GAE1BxK,aAAaywB,EAAOspB,UAAUgB,aAE9BpoB,EAAIhL,WAAW,GACXtyB,EAAOvU,MACT6xC,EAAI7H,IAAI,UAAW,GAEjB2F,EAAOp7B,OAAO2hC,SAChBvG,EAAOoC,WAAW/H,IAAI,mBAAoB,QAE5C2F,EAAOiB,KAAK,qBAAsBlnB,IAEpCwwC,WA3JgB,SA2JLxwC,GACT,IAAMimB,EAAS9yC,KACPo8D,EAA0BtpB,EAA1BspB,UAAWlnB,EAAepC,EAAfoC,WACXF,EAAiBonB,EAAjBpnB,IAAKunB,EAAYH,EAAZG,QAERzpB,EAAOspB,UAAUlmB,YAClBrpB,EAAE0qB,eAAgB1qB,EAAE0qB,iBACnB1qB,EAAEkpC,aAAc,EACrBqG,EAAUY,gBAAgBnwC,GAC1BqoB,EAAWlL,WAAW,GACtBgL,EAAIhL,WAAW,GACfuyB,EAAQvyB,WAAW,GACnB8I,EAAOiB,KAAK,oBAAqBlnB,KAEnCywC,UAzKgB,SAyKNzwC,GACR,IAAMimB,EAAS9yC,KAET0X,EAASo7B,EAAOp7B,OAAO0kD,UACrBA,EAA0BtpB,EAA1BspB,UAAWlnB,EAAepC,EAAfoC,WACXF,EAAQonB,EAARpnB,IAEHlC,EAAOspB,UAAUlmB,YACtBpD,EAAOspB,UAAUlmB,WAAY,EACzBpD,EAAOp7B,OAAO2hC,UAChBvG,EAAOoC,WAAW/H,IAAI,mBAAoB,IAC1C+H,EAAWlL,WAAW,KAEpBtyB,EAAOvU,OACTkf,aAAaywB,EAAOspB,UAAUgB,aAC9BtqB,EAAOspB,UAAUgB,YAAczuB,GAAS,WACtCqG,EAAI7H,IAAI,UAAW,GACnB6H,EAAIhL,WAAW,OACd,MAEL8I,EAAOiB,KAAK,mBAAoBlnB,GAC5BnV,EAAO6lD,eACTzqB,EAAOqK,mBAGXqgB,gBAlMgB,WAmMd,IAAM1qB,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAO0kD,UAAUjpC,GAA7B,CACA,IAAMtR,EAAWmjB,IACTo3B,EAAqEtpB,EAArEspB,UAAWzL,EAA0D7d,EAA1D6d,iBAAkBC,EAAwC9d,EAAxC8d,mBAAoBl5C,EAAoBo7B,EAApBp7B,OAAQ+wB,EAAYqK,EAAZrK,QAE3Dt5B,EADMitD,EAAUpnB,IACH,GACbyoB,KACJh1B,EAAQyI,kBAAmBx5B,EAAOopC,mBAC9B,CAAE6L,SAAS,EAAOpiB,SAAS,GAE3B2G,KACJzI,EAAQyI,kBAAmBx5B,EAAOopC,mBAC9B,CAAE6L,SAAS,EAAMpiB,SAAS,GAE3Bp7B,IACAs5B,EAAQmI,OAiBXzhC,EAAOy0B,iBAAiB+sB,EAAiBlqD,MAAOqsC,EAAOspB,UAAUe,YAAaM,GAC9EtuD,EAAOy0B,iBAAiB+sB,EAAiBjE,KAAM5Z,EAAOspB,UAAUiB,WAAYI,GAC5EtuD,EAAOy0B,iBAAiB+sB,EAAiBjqD,IAAKosC,EAAOspB,UAAUkB,UAAWpsB,KAlB1E/hC,EAAOy0B,iBACLgtB,EAAmBnqD,MACnBqsC,EAAOspB,UAAUe,YACjBM,GAEF57C,EAAS+hB,iBACPgtB,EAAmBlE,KACnB5Z,EAAOspB,UAAUiB,WACjBI,GAEF57C,EAAS+hB,iBACPgtB,EAAmBlqD,IACnBosC,EAAOspB,UAAUkB,UACjBpsB,OAQNwsB,iBAxOgB,WAyOd,IAAM5qB,EAAS9yC,KACf,GAAK8yC,EAAOp7B,OAAO0kD,UAAUjpC,GAA7B,CACA,IAAMtR,EAAWmjB,IACTo3B,EAAqEtpB,EAArEspB,UAAWzL,EAA0D7d,EAA1D6d,iBAAkBC,EAAwC9d,EAAxC8d,mBAAoBl5C,EAAoBo7B,EAApBp7B,OAAQ+wB,EAAYqK,EAAZrK,QAE3Dt5B,EADMitD,EAAUpnB,IACH,GACbyoB,KACJh1B,EAAQyI,kBAAmBx5B,EAAOopC,mBAC9B,CAAE6L,SAAS,EAAOpiB,SAAS,GAE3B2G,KACJzI,EAAQyI,kBAAmBx5B,EAAOopC,mBAC9B,CAAE6L,SAAS,EAAMpiB,SAAS,GAE3Bp7B,IACAs5B,EAAQmI,OAiBXzhC,EAAO00B,oBACL8sB,EAAiBlqD,MACjBqsC,EAAOspB,UAAUe,YACjBM,GAEFtuD,EAAO00B,oBACL8sB,EAAiBjE,KACjB5Z,EAAOspB,UAAUiB,WACjBI,GAEFtuD,EAAO00B,oBAAoB8sB,EAAiBjqD,IAAKosC,EAAOspB,UAAUkB,UAAWpsB,KA1B7E/hC,EAAO00B,oBACL+sB,EAAmBnqD,MACnBqsC,EAAOspB,UAAUe,YACjBM,GAEF57C,EAASgiB,oBACP+sB,EAAmBlE,KACnB5Z,EAAOspB,UAAUiB,WACjBI,GAEF57C,EAASgiB,oBACP+sB,EAAmBlqD,IACnBosC,EAAOspB,UAAUkB,UACjBpsB,OAgBNh0B,KAtRgB,WAuRd,IAAM41B,EAAS9yC,KACPo8D,EAA8BtpB,EAA9BspB,UAAgBuB,EAAc7qB,EAAnBkC,IACnBlC,EAAOp7B,OAAO0kD,UAAY9rB,EACxBqtB,EACA7qB,EAAOp7B,OAAO0kD,UACdtpB,EAAOp7B,OAAO84B,eACd,CAAErd,GAAI,qBAER,IAAMzb,EAASo7B,EAAOp7B,OAAO0kD,UAC7B,GAAK1kD,EAAOyb,GAAZ,CAEA,IAAI6hB,EAAMt1C,EAAEgY,EAAOyb,IAEjB2f,EAAOp7B,OAAO4oC,mBACO,iBAAd5oC,EAAOyb,IACd6hB,EAAI30C,OAAS,GACwB,IAArCs9D,EAAU/9D,KAAK8X,EAAOyb,IAAI9yB,SAE1B20C,EAAM2oB,EAAU/9D,KAAK8X,EAAOyb,KAG9B,IAAIopC,EAAUvnB,EAAIp1C,KAAJ,IAAakzC,EAAOp7B,OAAO0kD,UAAUwB,WAC5B,IAAnBrB,EAAQl8D,SACVk8D,EAAU78D,EAAC,eAAgBozC,EAAOp7B,OAAO0kD,UAAUwB,UAAxC,YACX5oB,EAAI1yC,OAAOi6D,IAGb/4B,EAAO44B,EAAW,CAChBpnB,IAAAA,EACA7hB,GAAI6hB,EAAI,GACRunB,QAAAA,EACAsB,OAAQtB,EAAQ,KAGd7kD,EAAOomD,WACT1B,EAAUoB,kBAGRxoB,GACFA,EAAIlC,EAAO0C,QAAU,cAAgB,YAAY1C,EAAOp7B,OAAO0kD,UAAU3C,aAG7EvlB,QAjUgB,WAkUCl0C,KACRo8D,UAAUsB,qBCpUfK,GAAW,CACfC,aADe,SACF7qC,EAAIrW,GACf,IACQw7B,EADOt4C,KACPs4C,IAEFtD,EAAMt1C,EAAEyzB,GACR4kC,EAAYzf,GAAO,EAAI,EAEvBl2C,EAAI4yC,EAAI/0C,KAAK,yBAA2B,IAC1CuH,EAAIwtC,EAAI/0C,KAAK,0BACbqF,EAAI0vC,EAAI/0C,KAAK,0BACX82B,EAAQie,EAAI/0C,KAAK,8BACjBy8D,EAAU1nB,EAAI/0C,KAAK,gCAwBzB,GAtBIuH,GAAKlC,GACPkC,EAAIA,GAAK,IACTlC,EAAIA,GAAK,KAdItF,KAeGo5C,gBAChB5xC,EAAIpF,EACJkD,EAAI,MAEJA,EAAIlD,EACJoF,EAAI,KAIJA,EADEA,EAAE3C,QAAQ,MAAQ,EACbob,SAASzY,EAAG,IAAMsV,EAAWi7C,EAAnC,IAEMvwD,EAAIsV,EAAWi7C,EAArB,KAGDzyD,EADEA,EAAET,QAAQ,MAAQ,EACbob,SAAS3a,EAAG,IAAMwX,EAAxB,IAEMxX,EAAIwX,EAAV,KAGC,MAAO4/C,EAA6C,CACtD,IAAMuB,EAAiBvB,GAAWA,EAAU,IAAM,EAAIx2D,KAAKiO,IAAI2I,IAC/Dk4B,EAAI,GAAGrnB,MAAM+uC,QAAUuB,EAEzB,GAAI,MAAOlnC,EACTie,EAAIpX,UAAJ,eAA6Bp2B,EAA7B,KAAmClC,EAAnC,cACK,CACL,IAAM44D,EAAennC,GAASA,EAAQ,IAAM,EAAI7wB,KAAKiO,IAAI2I,IACzDk4B,EAAIpX,UAAJ,eAA6Bp2B,EAA7B,KAAmClC,EAAnC,gBAAoD44D,EAApD,OAGJpjB,aA/Ce,WAgDb,IAAMhI,EAAS9yC,KACPg1C,EAAoClC,EAApCkC,IAAKyG,EAA+B3I,EAA/B2I,OAAQ3+B,EAAuBg2B,EAAvBh2B,SAAUm+B,EAAanI,EAAbmI,SAC/BjG,EACGvqB,SACC,4IAED5qB,MAAK,SAACszB,GACL2f,EAAOqrB,SAASH,aAAa7qC,EAAIrW,MAErC2+B,EAAO57C,MAAK,SAACsxD,EAASrK,GACpB,IAAIiB,EAAgBoJ,EAAQr0C,SACxBg2B,EAAOp7B,OAAO+lC,eAAiB,GAAqC,SAAhC3K,EAAOp7B,OAAO0mC,gBACpD2J,GAAiB7hD,KAAK++C,KAAK6B,EAAa,GAAKhqC,GAAYm+B,EAAS56C,OAAS,IAE7E0nD,EAAgB7hD,KAAKC,IAAID,KAAKiS,IAAI4vC,GAAgB,GAAI,GACtDroD,EAAEyxD,GACCvxD,KACC,4IAEDC,MAAK,SAACszB,GACL2f,EAAOqrB,SAASH,aAAa7qC,EAAI40B,UAIzCrO,cAxEe,SAwEDnuC,QAA8B,IAA9BA,IAAAA,EAAWvL,KAAK0X,OAAOwlC,OACpBl9C,KACPg1C,IAELp1C,KACC,4IAEDC,MAAK,SAACu+D,GACL,IAAMC,EAAc3+D,EAAE0+D,GAClBE,EACFr+C,SAASo+C,EAAYp+D,KAAK,iCAAkC,KAAOsL,EACpD,IAAbA,IAAgB+yD,EAAmB,GACvCD,EAAYr0B,WAAWs0B,QCnFzBC,GAAO,CAEXC,0BAFW,SAEe3xC,GACxB,GAAIA,EAAE+pB,cAAcv2C,OAAS,EAAG,OAAO,EACvC,IAAMo+D,EAAK5xC,EAAE+pB,cAAc,GAAGC,MACxB6nB,EAAK7xC,EAAE+pB,cAAc,GAAGG,MACxB4nB,EAAK9xC,EAAE+pB,cAAc,GAAGC,MACxB+nB,EAAK/xC,EAAE+pB,cAAc,GAAGG,MAE9B,OADiB7wC,KAAK+F,KAAK/F,KAAAD,IAAC04D,EAAKF,EAAO,GAAbv4D,KAAAD,IAAkB24D,EAAKF,EAAO,KAI3DG,eAZW,SAYIhyC,GACb,IAAMimB,EAAS9yC,KACTyoC,EAAUqK,EAAOrK,QACjB/wB,EAASo7B,EAAOp7B,OAAOonD,KACvBA,EAAOhsB,EAAOgsB,KACZC,EAAYD,EAAZC,QAGR,GAFAD,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,GACnBx2B,EAAQ4I,SAAU,CACrB,GAAe,eAAXxkB,EAAE9sB,MAAqC,eAAX8sB,EAAE9sB,MAAyB8sB,EAAE+pB,cAAcv2C,OAAS,EAClF,OAEFy+D,EAAKE,oBAAqB,EAC1BD,EAAQG,WAAaX,GAAKC,0BAA0B3xC,GAEjDkyC,EAAQlL,UAAakL,EAAQlL,SAASxzD,SACzC0+D,EAAQlL,SAAWn0D,EAAEmtB,EAAE1d,QAAQgM,QAAZ,IAAwB23B,EAAOp7B,OAAOspC,YACzB,IAA5B+d,EAAQlL,SAASxzD,SAAc0+D,EAAQlL,SAAW/gB,EAAO2I,OAAO9N,GAAGmF,EAAO0I,cAC9EujB,EAAQI,SAAWJ,EAAQlL,SAASj0D,KAAK,kDACzCm/D,EAAQK,aAAeL,EAAQI,SAASptD,OAAjB,IAA4B2F,EAAO2nD,gBAC1DN,EAAQO,SAAWP,EAAQK,aAAan/D,KAAK,qBAAuByX,EAAO4nD,SACvC,IAAhCP,EAAQK,aAAa/+D,SAKvB0+D,EAAQI,UACVJ,EAAQI,SAASn1B,WAAW,GAE9B8I,EAAOgsB,KAAKS,WAAY,GAPpBR,EAAQI,cAAW/3B,GASzBo4B,gBA3CW,SA2CK3yC,GACd,IAAMimB,EAAS9yC,KACTyoC,EAAUqK,EAAOrK,QACjB/wB,EAASo7B,EAAOp7B,OAAOonD,KACvBA,EAAOhsB,EAAOgsB,KACdC,EAAUD,EAAKC,QACrB,IAAKt2B,EAAQ4I,SAAU,CACrB,GAAe,cAAXxkB,EAAE9sB,MAAoC,cAAX8sB,EAAE9sB,MAAwB8sB,EAAE+pB,cAAcv2C,OAAS,EAChF,OAEFy+D,EAAKG,kBAAmB,EACxBF,EAAQU,UAAYlB,GAAKC,0BAA0B3xC,GAGhDkyC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS9+D,QAItCooC,EAAQ4I,SACVytB,EAAK/nC,MAAQlK,EAAEkK,MAAQ+nC,EAAKZ,aAE5BY,EAAK/nC,MAASgoC,EAAQU,UAAYV,EAAQG,WAAcJ,EAAKZ,aAE3DY,EAAK/nC,MAAQgoC,EAAQO,WACvBR,EAAK/nC,MAAQgoC,EAAQO,SAAW,EAAnBp5D,KAAAD,IAAwB64D,EAAK/nC,MAAQgoC,EAAQO,SAAW,EAAM,KAEzER,EAAK/nC,MAAQrf,EAAO22C,WACtByQ,EAAK/nC,MAAQrf,EAAO22C,SAAW,EAAlBnoD,KAAAD,IAAuByR,EAAO22C,SAAWyQ,EAAK/nC,MAAQ,EAAM,KAE3EgoC,EAAQI,SAASvhC,UAAjB,4BAAuDkhC,EAAK/nC,MAA5D,MAdiB,kBAAXlK,EAAE9sB,MAA0B++D,EAAKD,eAAehyC,IAgBxD6yC,aA1EW,SA0EE7yC,GACX,IAAMimB,EAAS9yC,KACT0oC,EAASoK,EAAOpK,OAChBD,EAAUqK,EAAOrK,QACjB/wB,EAASo7B,EAAOp7B,OAAOonD,KACvBA,EAAOhsB,EAAOgsB,KACZC,EAAYD,EAAZC,QACR,IAAKt2B,EAAQ4I,SAAU,CACrB,IAAKytB,EAAKE,qBAAuBF,EAAKG,iBACpC,OAEF,GACa,aAAXpyC,EAAE9sB,MACU,aAAX8sB,EAAE9sB,MAAuB8sB,EAAE4rB,eAAep4C,OAAS,IAAMqoC,EAAOmJ,QAEjE,OAEFitB,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,EAErBF,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS9+D,SAC1Cy+D,EAAK/nC,MAAQ7wB,KAAKiS,IAAIjS,KAAKC,IAAI24D,EAAK/nC,MAAOgoC,EAAQO,UAAW5nD,EAAO22C,UACrE0Q,EAAQI,SACLn1B,WAAW8I,EAAOp7B,OAAOwlC,OACzBtf,UAFH,4BAEyCkhC,EAAK/nC,MAF9C,KAGA+nC,EAAKZ,aAAeY,EAAK/nC,MACzB+nC,EAAKS,WAAY,EACE,IAAfT,EAAK/nC,QAAagoC,EAAQlL,cAAWzsB,KAE3CiO,aAvGW,SAuGExoB,GACX,IACM6b,EADS1oC,KACO0oC,OAChBo2B,EAFS9+D,KAEK8+D,KACZC,EAAmBD,EAAnBC,QAASpP,EAAUmP,EAAVnP,MACZoP,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS9+D,SACtCsvD,EAAMzZ,YACNxN,EAAOmJ,SAAWhlB,EAAEmf,YAAYnf,EAAE0qB,iBACtCoY,EAAMzZ,WAAY,EAClByZ,EAAMgQ,aAAan4D,EAAe,eAAXqlB,EAAE9sB,KAAwB8sB,EAAE+pB,cAAc,GAAGC,MAAQhqB,EAAEgqB,MAC9E8Y,EAAMgQ,aAAar6D,EAAe,eAAXunB,EAAE9sB,KAAwB8sB,EAAE+pB,cAAc,GAAGG,MAAQlqB,EAAEkqB,SAEhFsB,YAnHW,SAmHCxrB,GACV,IAAMimB,EAAS9yC,KACT8+D,EAAOhsB,EAAOgsB,KACZC,EAA6BD,EAA7BC,QAASpP,EAAoBmP,EAApBnP,MAAO7T,EAAagjB,EAAbhjB,SACxB,GAAKijB,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS9+D,SAC1CyyC,EAAO2D,YAAa,EACfkZ,EAAMzZ,WAAc6oB,EAAQlL,UAAjC,CAEKlE,EAAMxZ,UACTwZ,EAAM5sD,MAAQg8D,EAAQI,SAAS,GAAG5+B,YAClCovB,EAAMr1B,OAASykC,EAAQI,SAAS,GAAG1+B,aACnCkvB,EAAM3Y,OAASpI,EAAamwB,EAAQK,aAAa,GAAI,MAAQ,EAC7DzP,EAAM1Y,OAASrI,EAAamwB,EAAQK,aAAa,GAAI,MAAQ,EAC7DL,EAAQa,WAAab,EAAQlL,SAAS,GAAGtzB,YACzCw+B,EAAQc,YAAcd,EAAQlL,SAAS,GAAGpzB,aAC1Cs+B,EAAQK,aAAap1B,WAAW,GAC5B8I,EAAOwF,MACTqX,EAAM3Y,QAAU2Y,EAAM3Y,OACtB2Y,EAAM1Y,QAAU0Y,EAAM1Y,SAI1B,IAAM6oB,EAAcnQ,EAAM5sD,MAAQ+7D,EAAK/nC,MACjCgpC,EAAepQ,EAAMr1B,OAASwkC,EAAK/nC,MAEzC,KAAI+oC,EAAcf,EAAQa,YAAcG,EAAehB,EAAQc,aAA/D,CAUA,GARAlQ,EAAMqQ,KAAO95D,KAAKC,IAAI44D,EAAQa,WAAa,EAAIE,EAAc,EAAG,GAChEnQ,EAAMsQ,MAAQtQ,EAAMqQ,KACpBrQ,EAAMuQ,KAAOh6D,KAAKC,IAAI44D,EAAQc,YAAc,EAAIE,EAAe,EAAG,GAClEpQ,EAAMwQ,MAAQxQ,EAAMuQ,KAEpBvQ,EAAMyQ,eAAe54D,EAAe,cAAXqlB,EAAE9sB,KAAuB8sB,EAAE+pB,cAAc,GAAGC,MAAQhqB,EAAEgqB,MAC/E8Y,EAAMyQ,eAAe96D,EAAe,cAAXunB,EAAE9sB,KAAuB8sB,EAAE+pB,cAAc,GAAGG,MAAQlqB,EAAEkqB,OAE1E4Y,EAAMxZ,UAAY2oB,EAAKS,UAAW,CACrC,GACEzsB,EAAOsG,iBACLlzC,KAAK4N,MAAM67C,EAAMqQ,QAAU95D,KAAK4N,MAAM67C,EAAM3Y,SAC5C2Y,EAAMyQ,eAAe54D,EAAImoD,EAAMgQ,aAAan4D,GAC3CtB,KAAK4N,MAAM67C,EAAMsQ,QAAU/5D,KAAK4N,MAAM67C,EAAM3Y,SAC3C2Y,EAAMyQ,eAAe54D,EAAImoD,EAAMgQ,aAAan4D,GAGhD,YADAmoD,EAAMzZ,WAAY,GAGpB,IACGpD,EAAOsG,iBACNlzC,KAAK4N,MAAM67C,EAAMuQ,QAAUh6D,KAAK4N,MAAM67C,EAAM1Y,SAC5C0Y,EAAMyQ,eAAe96D,EAAIqqD,EAAMgQ,aAAar6D,GAC3CY,KAAK4N,MAAM67C,EAAMwQ,QAAUj6D,KAAK4N,MAAM67C,EAAM1Y,SAC3C0Y,EAAMyQ,eAAe96D,EAAIqqD,EAAMgQ,aAAar6D,GAGhD,YADAqqD,EAAMzZ,WAAY,GAIlBrpB,EAAEmf,YACJnf,EAAE0qB,iBAEJ1qB,EAAE0sB,kBAEFoW,EAAMxZ,SAAU,EAChBwZ,EAAMhZ,SAAWgZ,EAAMyQ,eAAe54D,EAAImoD,EAAMgQ,aAAan4D,EAAImoD,EAAM3Y,OACvE2Y,EAAM7Y,SAAW6Y,EAAMyQ,eAAe96D,EAAIqqD,EAAMgQ,aAAar6D,EAAIqqD,EAAM1Y,OAEnE0Y,EAAMhZ,SAAWgZ,EAAMqQ,OACzBrQ,EAAMhZ,SAAWgZ,EAAMqQ,KAAO,EAAb95D,KAAAD,IAAkB0pD,EAAMqQ,KAAOrQ,EAAMhZ,SAAW,EAAM,KAErEgZ,EAAMhZ,SAAWgZ,EAAMsQ,OACzBtQ,EAAMhZ,SAAWgZ,EAAMsQ,KAAO,EAAb/5D,KAAAD,IAAkB0pD,EAAMhZ,SAAWgZ,EAAMsQ,KAAO,EAAM,KAGrEtQ,EAAM7Y,SAAW6Y,EAAMuQ,OACzBvQ,EAAM7Y,SAAW6Y,EAAMuQ,KAAO,EAAbh6D,KAAAD,IAAkB0pD,EAAMuQ,KAAOvQ,EAAM7Y,SAAW,EAAM,KAErE6Y,EAAM7Y,SAAW6Y,EAAMwQ,OACzBxQ,EAAM7Y,SAAW6Y,EAAMwQ,KAAO,EAAbj6D,KAAAD,IAAkB0pD,EAAM7Y,SAAW6Y,EAAMwQ,KAAO,EAAM,KAIpErkB,EAASukB,gBAAevkB,EAASukB,cAAgB1Q,EAAMyQ,eAAe54D,GACtEs0C,EAASwkB,gBAAexkB,EAASwkB,cAAgB3Q,EAAMyQ,eAAe96D,GACtEw2C,EAASnzB,WAAUmzB,EAASnzB,SAAWxH,KAAKC,OACjD06B,EAASt0C,GACNmoD,EAAMyQ,eAAe54D,EAAIs0C,EAASukB,gBAAkBl/C,KAAKC,MAAQ06B,EAASnzB,UAAY,EACzFmzB,EAASx2C,GACNqqD,EAAMyQ,eAAe96D,EAAIw2C,EAASwkB,gBAAkBn/C,KAAKC,MAAQ06B,EAASnzB,UAAY,EACrFziB,KAAKiO,IAAIw7C,EAAMyQ,eAAe54D,EAAIs0C,EAASukB,eAAiB,IAAGvkB,EAASt0C,EAAI,GAC5EtB,KAAKiO,IAAIw7C,EAAMyQ,eAAe96D,EAAIw2C,EAASwkB,eAAiB,IAAGxkB,EAASx2C,EAAI,GAChFw2C,EAASukB,cAAgB1Q,EAAMyQ,eAAe54D,EAC9Cs0C,EAASwkB,cAAgB3Q,EAAMyQ,eAAe96D,EAC9Cw2C,EAASnzB,SAAWxH,KAAKC,MAEzB29C,EAAQK,aAAaxhC,UAArB,eAA8C+xB,EAAMhZ,SAApD,OAAmEgZ,EAAM7Y,SAAzE,YAEFiE,WAnNW,WAoNT,IACM+jB,EADS9+D,KACK8+D,KACZC,EAA6BD,EAA7BC,QAASpP,EAAoBmP,EAApBnP,MAAO7T,EAAagjB,EAAbhjB,SACxB,GAAKijB,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS9+D,OAA1C,CACA,IAAKsvD,EAAMzZ,YAAcyZ,EAAMxZ,QAG7B,OAFAwZ,EAAMzZ,WAAY,OAClByZ,EAAMxZ,SAAU,GAGlBwZ,EAAMzZ,WAAY,EAClByZ,EAAMxZ,SAAU,EAChB,IAAIoqB,EAAoB,IACpBC,EAAoB,IAClBC,EAAoB3kB,EAASt0C,EAAI+4D,EACjCG,EAAe/Q,EAAMhZ,SAAW8pB,EAChCE,EAAoB7kB,EAASx2C,EAAIk7D,EACjCI,EAAejR,EAAM7Y,SAAW6pB,EAGnB,IAAf7kB,EAASt0C,IACX+4D,EAAoBr6D,KAAKiO,KAAKusD,EAAe/Q,EAAMhZ,UAAYmF,EAASt0C,IACvD,IAAfs0C,EAASx2C,IACXk7D,EAAoBt6D,KAAKiO,KAAKysD,EAAejR,EAAM7Y,UAAYgF,EAASx2C,IAC1E,IAAM22C,EAAmB/1C,KAAKiS,IAAIooD,EAAmBC,GAErD7Q,EAAMhZ,SAAW+pB,EACjB/Q,EAAM7Y,SAAW8pB,EAGjB,IAAMd,EAAcnQ,EAAM5sD,MAAQ+7D,EAAK/nC,MACjCgpC,EAAepQ,EAAMr1B,OAASwkC,EAAK/nC,MACzC44B,EAAMqQ,KAAO95D,KAAKC,IAAI44D,EAAQa,WAAa,EAAIE,EAAc,EAAG,GAChEnQ,EAAMsQ,MAAQtQ,EAAMqQ,KACpBrQ,EAAMuQ,KAAOh6D,KAAKC,IAAI44D,EAAQc,YAAc,EAAIE,EAAe,EAAG,GAClEpQ,EAAMwQ,MAAQxQ,EAAMuQ,KACpBvQ,EAAMhZ,SAAWzwC,KAAKiS,IAAIjS,KAAKC,IAAIwpD,EAAMhZ,SAAUgZ,EAAMsQ,MAAOtQ,EAAMqQ,MACtErQ,EAAM7Y,SAAW5wC,KAAKiS,IAAIjS,KAAKC,IAAIwpD,EAAM7Y,SAAU6Y,EAAMwQ,MAAOxQ,EAAMuQ,MAEtEnB,EAAQK,aACLp1B,WAAWiS,GACXre,UAFH,eAE4B+xB,EAAMhZ,SAFlC,OAEiDgZ,EAAM7Y,SAFvD,WAIF+pB,gBA9PW,WA+PT,IAAM/tB,EAAS9yC,KACT8+D,EAAOhsB,EAAOgsB,KACZC,EAAYD,EAAZC,QACJA,EAAQlL,UAAY/gB,EAAO4V,gBAAkB5V,EAAO0I,cAClDujB,EAAQI,UACVJ,EAAQI,SAASvhC,UAAU,+BAEzBmhC,EAAQK,cACVL,EAAQK,aAAaxhC,UAAU,sBAGjCkhC,EAAK/nC,MAAQ,EACb+nC,EAAKZ,aAAe,EAEpBa,EAAQlL,cAAWzsB,EACnB23B,EAAQI,cAAW/3B,EACnB23B,EAAQK,kBAAeh4B,IAI3BwC,OAnRW,SAmRJ/c,GACL,IACMiyC,EADS9+D,KACK8+D,KAEhBA,EAAK/nC,OAAwB,IAAf+nC,EAAK/nC,MAErB+nC,EAAKgC,MAGLhC,EAAKiC,GAAGl0C,IAGZk0C,GA/RW,SA+RRl0C,GACD,IAgCIm0C,EACAC,EAGAhoB,EACAC,EACAgoB,EACAC,EACAC,EACAC,EACAvB,EACAC,EACAuB,EACAC,EACAC,EACAC,EACA7B,EACAC,EAjDE/sB,EAAS9yC,KACTsE,EAASwhC,IAETg5B,EAAOhsB,EAAOgsB,KACdpnD,EAASo7B,EAAOp7B,OAAOonD,KACrBC,EAAmBD,EAAnBC,QAASpP,EAAUmP,EAAVnP,OAEZoP,EAAQlL,WACPhnC,GAAKA,EAAE1d,SACT4vD,EAAQlL,SAAWn0D,EAAEmtB,EAAE1d,QAAQgM,QAAZ,IAAwB23B,EAAOp7B,OAAOspC,aAEtD+d,EAAQlL,WACP/gB,EAAOp7B,OAAOwsC,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,SAAW1C,EAAOoR,QACnE6a,EAAQlL,SAAW/gB,EAAOoC,WAAWzqB,SAAlB,IAA+BqoB,EAAOp7B,OAAOwpC,kBAEhE6d,EAAQlL,SAAW/gB,EAAO2I,OAAO9N,GAAGmF,EAAO0I,cAI/CujB,EAAQI,SAAWJ,EAAQlL,SAASj0D,KAAK,kDACzCm/D,EAAQK,aAAeL,EAAQI,SAASptD,OAAjB,IAA4B2F,EAAO2nD,iBAGzDN,EAAQI,UACmB,IAA5BJ,EAAQI,SAAS9+D,QAChB0+D,EAAQK,cACuB,IAAhCL,EAAQK,aAAa/+D,UAIvB0+D,EAAQlL,SAAShrB,SAAjB,GAA6BnxB,EAAOgqD,uBAqBA,IAAzB/R,EAAMgQ,aAAan4D,GAAqBqlB,GACjDm0C,EAAoB,aAAXn0C,EAAE9sB,KAAsB8sB,EAAE4rB,eAAe,GAAG5B,MAAQhqB,EAAEgqB,MAC/DoqB,EAAoB,aAAXp0C,EAAE9sB,KAAsB8sB,EAAE4rB,eAAe,GAAG1B,MAAQlqB,EAAEkqB,QAE/DiqB,EAASrR,EAAMgQ,aAAan4D,EAC5By5D,EAAStR,EAAMgQ,aAAar6D,GAG9Bw5D,EAAK/nC,MAAQgoC,EAAQK,aAAan/D,KAAK,qBAAuByX,EAAO4nD,SACrER,EAAKZ,aAAea,EAAQK,aAAan/D,KAAK,qBAAuByX,EAAO4nD,SACxEzyC,GACF+yC,EAAab,EAAQlL,SAAS,GAAGtzB,YACjCs/B,EAAcd,EAAQlL,SAAS,GAAGpzB,aAGlCwY,EAFU8lB,EAAQlL,SAAS58C,SAASqD,KAAOhW,EAAO4oC,QAEhC0yB,EAAa,EAAIoB,EACnC9nB,EAFU6lB,EAAQlL,SAAS58C,SAAS4lB,IAAMv4B,EAAO0oC,QAE/B6yB,EAAc,EAAIoB,EAEpCG,EAAarC,EAAQI,SAAS,GAAG5+B,YACjC8gC,EAActC,EAAQI,SAAS,GAAG1+B,aAClCq/B,EAAcsB,EAAatC,EAAK/nC,MAChCgpC,EAAesB,EAAcvC,EAAK/nC,MAIlCyqC,IAFAF,EAAgBp7D,KAAKC,IAAIy5D,EAAa,EAAIE,EAAc,EAAG,IAG3D2B,IAFAF,EAAgBr7D,KAAKC,IAAI05D,EAAc,EAAIE,EAAe,EAAG,KAI7DmB,EAAajoB,EAAQ6lB,EAAK/nC,OAGTuqC,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IANfL,EAAajoB,EAAQ4lB,EAAK/nC,OASTwqC,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAEfpC,EAAQK,aACLp1B,WAAW,KACXpM,UAFH,eAE4BsjC,EAF5B,OAE6CC,EAF7C,SAGApC,EAAQI,SAASn1B,WAAW,KAAKpM,UAAjC,4BAAuEkhC,EAAK/nC,MAA5E,OAEF+pC,IAxYW,WAyYT,IAAMhuB,EAAS9yC,KAET8+D,EAAOhsB,EAAOgsB,KACdpnD,EAASo7B,EAAOp7B,OAAOonD,KACrBC,EAAYD,EAAZC,QAEHA,EAAQlL,WACP/gB,EAAOp7B,OAAOwsC,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,SAAW1C,EAAOoR,QACnE6a,EAAQlL,SAAW/gB,EAAOoC,WAAWzqB,SAAlB,IAA+BqoB,EAAOp7B,OAAOwpC,kBAEhE6d,EAAQlL,SAAW/gB,EAAO2I,OAAO9N,GAAGmF,EAAO0I,aAE7CujB,EAAQI,SAAWJ,EAAQlL,SAASj0D,KAAK,kDACzCm/D,EAAQK,aAAeL,EAAQI,SAASptD,OAAjB,IAA4B2F,EAAO2nD,iBAGzDN,EAAQI,UACmB,IAA5BJ,EAAQI,SAAS9+D,QAChB0+D,EAAQK,cACuB,IAAhCL,EAAQK,aAAa/+D,SAIvBy+D,EAAK/nC,MAAQ,EACb+nC,EAAKZ,aAAe,EACpBa,EAAQK,aAAap1B,WAAW,KAAKpM,UAAU,sBAC/CmhC,EAAQI,SAASn1B,WAAW,KAAKpM,UAAU,+BAC3CmhC,EAAQlL,SAAS3qB,YAAjB,GAAgCxxB,EAAOgqD,kBACvC3C,EAAQlL,cAAWzsB,IAGrBu6B,eAxaW,SAwaInf,GACb,IAAM1P,EAAS9yC,KACT8+D,EAAOhsB,EAAOgsB,KACG5rC,EAAuC4rC,EAAtD8C,cAA0CjV,EAAYmS,EAA7B5tB,gBACjC4B,EAAOoC,WAAWsN,GAAQ,eAAgBtvB,EAAU4rC,EAAKD,eAAgBlS,GACzE7Z,EAAOoC,WAAWsN,GAAQ,gBAAiBtvB,EAAU4rC,EAAKU,gBAAiB7S,GAC3E7Z,EAAOoC,WAAWsN,GAAQ,aAActvB,EAAU4rC,EAAKY,aAAc/S,IAEvEkV,eAhbW,WAibL7hE,KAAK8+D,KAAKgD,kBACd9hE,KAAK8+D,KAAKgD,iBAAkB,EAC5B9hE,KAAK8+D,KAAK6C,eAAe,QAE3BI,gBArbW,WAsbJ/hE,KAAK8+D,KAAKgD,kBACf9hE,KAAK8+D,KAAKgD,iBAAkB,EAC5B9hE,KAAK8+D,KAAK6C,eAAe,SAG3B3T,OA3bW,WA4bT,IAAMlb,EAAS9yC,KACTyoC,EAAUqK,EAAOrK,QACjBq2B,EAAOhsB,EAAOgsB,KACpB,IAAIA,EAAKtpB,QAAT,CACAspB,EAAKtpB,SAAU,EAEf,IAAMtE,IACyB,eAA7B4B,EAAO2Z,YAAYhmD,QACnBgiC,EAAQyI,kBACR4B,EAAOp7B,OAAOopC,mBACV,CAAE6L,SAAS,EAAMpiB,SAAS,GAE1By3B,GAA4Bv5B,EAAQyI,iBACtC,CAAEyb,SAAS,EAAOpiB,SAAS,GAGzBq3B,EAAa,IAAO9uB,EAAOp7B,OAAOspC,WAExClO,EAAOgsB,KAAK5tB,gBAAkBA,EAC9B4B,EAAOgsB,KAAK8C,cAAgBA,EAGxBn5B,EAAQ4I,UACVyB,EAAOoC,WAAWhyC,GAAG4vC,EAAO2Z,YAAYhmD,MAAOqsC,EAAOgsB,KAAK+C,eAAgB3wB,GAC3E4B,EAAOoC,WAAWhyC,GAAG4vC,EAAO2Z,YAAY/lD,IAAKosC,EAAOgsB,KAAKiD,gBAAiB7wB,IACpC,eAA7B4B,EAAO2Z,YAAYhmD,QAC5BqsC,EAAOoC,WAAWhyC,GAChB4vC,EAAO2Z,YAAYhmD,MACnBm7D,EACA9C,EAAKD,eACL3tB,GAEF4B,EAAOoC,WAAWhyC,GAChB4vC,EAAO2Z,YAAYC,KACnBkV,EACA9C,EAAKU,gBACLwC,GAEFlvB,EAAOoC,WAAWhyC,GAChB4vC,EAAO2Z,YAAY/lD,IACnBk7D,EACA9C,EAAKY,aACLxuB,GAEE4B,EAAO2Z,YAAYG,QACrB9Z,EAAOoC,WAAWhyC,GAChB4vC,EAAO2Z,YAAYG,OACnBgV,EACA9C,EAAKY,aACLxuB,IAMN4B,EAAOoC,WAAWhyC,GAChB4vC,EAAO2Z,YAAYC,KADrB,IAEM5Z,EAAOp7B,OAAOonD,KAAKO,eACvBP,EAAKzmB,YACL2pB,KAGJjU,QA1fW,WA2fT,IAAMjb,EAAS9yC,KACT8+D,EAAOhsB,EAAOgsB,KACpB,GAAKA,EAAKtpB,QAAV,CACA,IAAM/M,EAAUqK,EAAOrK,QAEvBqK,EAAOgsB,KAAKtpB,SAAU,EAEtB,IAAMtE,IACyB,eAA7B4B,EAAO2Z,YAAYhmD,QACnBgiC,EAAQyI,kBACR4B,EAAOp7B,OAAOopC,mBACV,CAAE6L,SAAS,EAAMpiB,SAAS,GAE1By3B,GAA4Bv5B,EAAQyI,iBACtC,CAAEyb,SAAS,EAAOpiB,SAAS,GAGzBq3B,EAAa,IAAO9uB,EAAOp7B,OAAOspC,WAGpCvY,EAAQ4I,UACVyB,EAAOoC,WAAW7J,IAAIyH,EAAO2Z,YAAYhmD,MAAOqsC,EAAOgsB,KAAK+C,eAAgB3wB,GAC5E4B,EAAOoC,WAAW7J,IAAIyH,EAAO2Z,YAAY/lD,IAAKosC,EAAOgsB,KAAKiD,gBAAiB7wB,IACrC,eAA7B4B,EAAO2Z,YAAYhmD,QAC5BqsC,EAAOoC,WAAW7J,IAChByH,EAAO2Z,YAAYhmD,MACnBm7D,EACA9C,EAAKD,eACL3tB,GAEF4B,EAAOoC,WAAW7J,IAChByH,EAAO2Z,YAAYC,KACnBkV,EACA9C,EAAKU,gBACLwC,GAEFlvB,EAAOoC,WAAW7J,IAChByH,EAAO2Z,YAAY/lD,IACnBk7D,EACA9C,EAAKY,aACLxuB,GAEE4B,EAAO2Z,YAAYG,QACrB9Z,EAAOoC,WAAW7J,IAChByH,EAAO2Z,YAAYG,OACnBgV,EACA9C,EAAKY,aACLxuB,IAMN4B,EAAOoC,WAAW7J,IAChByH,EAAO2Z,YAAYC,KADrB,IAEM5Z,EAAOp7B,OAAOonD,KAAKO,eACvBP,EAAKzmB,YACL2pB,MCpjBAC,GAAO,CACXC,YADW,SACC5pD,EAAO6pD,QAAwB,IAAxBA,IAAAA,GAAkB,GACnC,IAAMrvB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAO3B,KAC7B,QAAqB,IAAVuC,GACkB,IAAzBw6B,EAAO2I,OAAOp7C,OAAlB,CACA,IAEMwzD,EAFY/gB,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QAGtD1C,EAAOoC,WAAWzqB,SAAlB,IACMqoB,EAAOp7B,OAAOspC,WADpB,6BAC2D1oC,EAD3D,MAGAw6B,EAAO2I,OAAO9N,GAAGr1B,GAEf8pD,EAAUvO,EAASj0D,KAAT,IACV8X,EAAO2qD,aADG,SACkB3qD,EAAO4qD,YADzB,UAC8C5qD,EAAO6qD,aADrD,MAId1O,EAASzqB,SAAS1xB,EAAO2qD,eACxBxO,EAASzqB,SAAS1xB,EAAO4qD,cACzBzO,EAASzqB,SAAS1xB,EAAO6qD,eAE1BH,EAAQ5hE,KAAKqzD,EAAS,IAED,IAAnBuO,EAAQ/hE,QAEZ+hE,EAAQviE,MAAK,SAAC0vD,GACZ,IAAM4P,EAAWz/D,EAAE6vD,GACnB4P,EAASt2B,SAASnxB,EAAO6qD,cAEzB,IAAMC,EAAarD,EAASl/D,KAAK,mBAC3BwjC,EAAM07B,EAASl/D,KAAK,YACpBuvD,EAAS2P,EAASl/D,KAAK,eACvBwvD,EAAQ0P,EAASl/D,KAAK,cACtBwiE,EAAatD,EAASptD,OAAO,WAEnC+gC,EAAOwc,UAAU6P,EAAS,GAAI17B,GAAO++B,EAAYhT,EAAQC,GAAO,GAAO,WACrE,GACE,MAAO3c,GAENA,KACAA,GAAWA,EAAOp7B,UACnBo7B,EAAOG,UALT,CAsCA,GA9BIuvB,GACFrD,EAAShyB,IAAI,mBAAb,QAAyCq1B,EAAzC,MACArD,EAASp1B,WAAW,qBAEhBylB,IACF2P,EAASl/D,KAAK,SAAUuvD,GACxB2P,EAASp1B,WAAW,gBAElB0lB,IACF0P,EAASl/D,KAAK,QAASwvD,GACvB0P,EAASp1B,WAAW,eAElB04B,EAAWpiE,QACboiE,EAAWh4C,SAAS,UAAU5qB,MAAK,SAAC6iE,GAClC,IAAMC,EAAUjjE,EAAEgjE,GAEdC,EAAQ1iE,KAAK,iBACf0iE,EAAQ1iE,KAAK,SAAU0iE,EAAQ1iE,KAAK,gBACpC0iE,EAAQ54B,WAAW,mBAIrBtG,IACF07B,EAASl/D,KAAK,MAAOwjC,GACrB07B,EAASp1B,WAAW,cAIxBo1B,EAASt2B,SAASnxB,EAAO4qD,aAAap5B,YAAYxxB,EAAO6qD,cACzD1O,EAASj0D,KAAT,IAAkB8X,EAAOkrD,gBAAkBzgE,SACvC2wC,EAAOp7B,OAAOkhC,MAAQupB,EAAiB,CACzC,IAAMU,EAAqBhP,EAAS5zD,KAAK,2BACzC,GAAI4zD,EAASzqB,SAAS0J,EAAOp7B,OAAO2pC,qBAAsB,CACxD,IAAMyhB,EAAgBhwB,EAAOoC,WAAWzqB,SAAlB,6BACSo4C,EADT,WACsC/vB,EAAOp7B,OAAO2pC,oBADpD,KAGtBvO,EAAO/8B,KAAKmsD,YAAYY,EAAcxqD,SAAS,OAC1C,CACL,IAAMyqD,EAAkBjwB,EAAOoC,WAAWzqB,SAAlB,IAClBqoB,EAAOp7B,OAAO2pC,oBADI,6BAC4CwhB,EAD5C,MAGxB/vB,EAAO/8B,KAAKmsD,YAAYa,EAAgBzqD,SAAS,IAGrDw6B,EAAOiB,KAAK,iBAAkB8f,EAAS,GAAIsL,EAAS,IAChDrsB,EAAOp7B,OAAO8nC,YAChB1M,EAAOuU,uBAIXvU,EAAOiB,KAAK,gBAAiB8f,EAAS,GAAIsL,EAAS,SAGvD5L,KAlGW,WAmGT,IAAMzgB,EAAS9yC,KACPk1C,EAA0DpC,EAA1DoC,WAAoBsb,EAAsC1d,EAA9Cp7B,OAAsB+jC,EAAwB3I,EAAxB2I,OAAQD,EAAgB1I,EAAhB0I,YAC5CyI,EAAYnR,EAAOoR,SAAWsM,EAAatM,QAAQ1O,QACnD99B,EAAS84C,EAAaz6C,KAExBqoC,EAAgBoS,EAAapS,cAKjC,SAAS4kB,EAAW1qD,GAClB,GAAI2rC,GACF,GACE/O,EAAWzqB,SAAX,IAAwB+lC,EAAaxP,WAArC,6BAA4E1oC,EAA5E,MACGjY,OAEH,OAAO,OAEJ,GAAIo7C,EAAOnjC,GAAQ,OAAO,EACjC,OAAO,EAGT,SAASwuC,EAAWqK,GAClB,OAAIlN,EACKvkD,EAAEyxD,GAASlxD,KAAK,2BAElBP,EAAEyxD,GAAS74C,QAIpB,GAxBsB,SAAlB8lC,IACFA,EAAgB,GAsBbtL,EAAO/8B,KAAKktD,qBAAoBnwB,EAAO/8B,KAAKktD,oBAAqB,GAClEnwB,EAAOp7B,OAAO+iC,sBAChBvF,EAAWzqB,SAAX,IAAwB+lC,EAAapP,mBAAqBvhD,MAAK,SAACsxD,GAC9D,IAAM74C,EAAQ2rC,EAAYvkD,EAAEyxD,GAASlxD,KAAK,2BAA6BP,EAAEyxD,GAAS74C,QAClFw6B,EAAO/8B,KAAKmsD,YAAY5pD,WAErB,GAAI8lC,EAAgB,EACzB,IAAK,IAAIz9C,EAAI66C,EAAa76C,EAAI66C,EAAc4C,EAAez9C,GAAK,EAC1DqiE,EAAWriE,IAAImyC,EAAO/8B,KAAKmsD,YAAYvhE,QAG7CmyC,EAAO/8B,KAAKmsD,YAAY1mB,GAE1B,GAAI9jC,EAAOwrD,aACT,GAAI9kB,EAAgB,GAAM1mC,EAAOyrD,oBAAsBzrD,EAAOyrD,mBAAqB,EAAI,CAMrF,IALA,IAAM5oD,EAAS7C,EAAOyrD,mBAChB9R,EAAMjT,EACNglB,EAAWl9D,KAAKC,IAAIq1C,EAAc6V,EAAMnrD,KAAKiS,IAAIoC,EAAQ82C,GAAM5V,EAAOp7C,QACtEgjE,EAAWn9D,KAAKiS,IAAIqjC,EAAct1C,KAAKiS,IAAIk5C,EAAK92C,GAAS,GAEtD5Z,EAAI66C,EAAc4C,EAAez9C,EAAIyiE,EAAUziE,GAAK,EACvDqiE,EAAWriE,IAAImyC,EAAO/8B,KAAKmsD,YAAYvhE,GAG7C,IAAK,IAAIA,EAAI0iE,EAAU1iE,EAAI66C,EAAa76C,GAAK,EACvCqiE,EAAWriE,IAAImyC,EAAO/8B,KAAKmsD,YAAYvhE,OAExC,CACL,IAAMk8C,EAAY3H,EAAWzqB,SAAX,IAAwB+lC,EAAalP,gBACnDzE,EAAUx8C,OAAS,GAAGyyC,EAAO/8B,KAAKmsD,YAAYpb,EAAWjK,IAE7D,IAAM0L,EAAYrT,EAAWzqB,SAAX,IAAwB+lC,EAAahP,gBACnD+G,EAAUloD,OAAS,GAAGyyC,EAAO/8B,KAAKmsD,YAAYpb,EAAWyB,MAInE+a,kBApKW,WAqKT,IAAMh/D,EAASwhC,IACTgN,EAAS9yC,KACf,GAAK8yC,IAAUA,EAAOG,UAAtB,CACA,IAAMswB,EAAiBzwB,EAAOp7B,OAAO3B,KAAKytD,iBACtC9jE,EAAEozC,EAAOp7B,OAAO3B,KAAKytD,kBACrB9jE,EAAE4E,GACAm/D,EAAWF,EAAe,KAAOj/D,EACjCo/D,EAAqBD,EAAWn/D,EAAOgzC,WAAaisB,EAAe,GAAGhjC,YACtEojC,EAAsBF,EAAWn/D,EAAO6pD,YAAcoV,EAAe,GAAG9iC,aACxEo1B,EAAe/iB,EAAOkC,IAAI/9B,SAG5Bu+C,GAAS,EAFiB1iB,EAAtByF,eAICsd,EAAav7C,MAAQw4B,EAAOkC,IAAI,GAAG/H,YAO5C,IANA,IAAM6oB,EAAc,CAClB,CAACD,EAAav7C,KAAMu7C,EAAah5B,KACjC,CAACg5B,EAAav7C,KAAOw4B,EAAO/vC,MAAO8yD,EAAah5B,KAChD,CAACg5B,EAAav7C,KAAMu7C,EAAah5B,IAAMiW,EAAOxY,QAC9C,CAACu7B,EAAav7C,KAAOw4B,EAAO/vC,MAAO8yD,EAAah5B,IAAMiW,EAAOxY,SAEtD35B,EAAI,EAAGA,EAAIm1D,EAAYz1D,OAAQM,GAAK,EAAG,CAC9C,IAAMytD,EAAQ0H,EAAYn1D,GAC1B,GACEytD,EAAM,IAAM,GACZA,EAAM,IAAMsV,GACZtV,EAAM,IAAM,GACZA,EAAM,IAAMuV,EACZ,CACA,GAAiB,IAAbvV,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCoH,GAAS,GAIb,IAAMtkB,IACyB,eAA7B4B,EAAO2Z,YAAYhmD,QACnBqsC,EAAOrK,QAAQyI,kBACf4B,EAAOp7B,OAAOopC,mBACV,CAAE6L,SAAS,EAAMpiB,SAAS,GAG5BirB,GACF1iB,EAAO/8B,KAAKw9C,OACZgQ,EAAel4B,IAAI,SAAUyH,EAAO/8B,KAAKutD,kBAAmBpyB,IAClD4B,EAAO/8B,KAAK6tD,wBACtB9wB,EAAO/8B,KAAK6tD,uBAAwB,EACpCL,EAAergE,GAAG,SAAU4vC,EAAO/8B,KAAKutD,kBAAmBpyB,OCpN3D2yB,GAAa,CACjBC,aAAc,SAAsBt8D,EAAGlC,GACrC,IACM89D,EACAC,EACAU,EAqBFC,EACAC,EAzBEC,EAIG,SAACC,EAAO1jE,GAGb,IAFA4iE,GAAY,EACZD,EAAWe,EAAM9jE,OACV+iE,EAAWC,EAAW,GAEvBc,EADJJ,EAASX,EAAWC,GAAa,IACb5iE,EAClB4iE,EAAWU,EAEXX,EAAWW,EAGf,OAAOX,GAyBX,OAtBApjE,KAAKwH,EAAIA,EACTxH,KAAKsF,EAAIA,EACTtF,KAAKihB,UAAYzZ,EAAEnH,OAAS,EAO5BL,KAAK6zB,YAAc,SAAqB8qC,GACtC,OAAKA,GAGLsF,EAAKC,EAAalkE,KAAKwH,EAAGm3D,GAC1BqF,EAAKC,EAAK,GAKNtF,EAAK3+D,KAAKwH,EAAEw8D,KAAQhkE,KAAKsF,EAAE2+D,GAAMjkE,KAAKsF,EAAE0+D,KAAShkE,KAAKwH,EAAEy8D,GAAMjkE,KAAKwH,EAAEw8D,IAAOhkE,KAAKsF,EAAE0+D,IATvE,GAYXhkE,MAGTokE,uBA7CiB,SA6CMj9D,GACrB,IAAM2rC,EAAS9yC,KACV8yC,EAAOuxB,WAAWC,SACrBxxB,EAAOuxB,WAAWC,OAASxxB,EAAOp7B,OAAOkhC,KACrC,IAAIirB,GAAWC,aAAahxB,EAAOkI,WAAY7zC,EAAE6zC,YACjD,IAAI6oB,GAAWC,aAAahxB,EAAOmI,SAAU9zC,EAAE8zC,YAGvDH,aArDiB,SAqDJA,EAAcmO,GACzB,IAEIf,EACAqc,EAHEzxB,EAAS9yC,KACTwkE,EAAa1xB,EAAOuxB,WAAWI,QAG/B3hC,EAASgQ,EAAO7pC,YACtB,SAASy7D,EAAuBv9D,GAK9B,IAAM2xC,EAAYhG,EAAOyF,cAAgBzF,EAAOgG,UAAYhG,EAAOgG,UAC/B,UAAhChG,EAAOp7B,OAAO2sD,WAAWM,KAC3B7xB,EAAOuxB,WAAWD,uBAAuBj9D,GAGzCo9D,GAAuBzxB,EAAOuxB,WAAWC,OAAOzwC,aAAailB,IAG1DyrB,GAAuD,cAAhCzxB,EAAOp7B,OAAO2sD,WAAWM,KACnDzc,GACG/gD,EAAE4xC,eAAiB5xC,EAAE6xC,iBAAmBlG,EAAOiG,eAAiBjG,EAAOkG,gBAC1EurB,GAAuBzrB,EAAYhG,EAAOkG,gBAAkBkP,EAAa/gD,EAAE6xC,gBAGzElG,EAAOp7B,OAAO2sD,WAAWO,UAC3BL,EAAsBp9D,EAAE4xC,eAAiBwrB,GAE3Cp9D,EAAE0zC,eAAe0pB,GACjBp9D,EAAE2zC,aAAaypB,EAAqBzxB,GACpC3rC,EAAEuzC,oBACFvzC,EAAEwzC,sBAEJ,GAAIztC,MAAMhM,QAAQsjE,GAChB,IAAK,IAAI7jE,EAAI,EAAGA,EAAI6jE,EAAWnkE,OAAQM,GAAK,EACtC6jE,EAAW7jE,KAAOsoD,GAAgBub,EAAW7jE,aAAcmiC,GAC7D4hC,EAAuBF,EAAW7jE,SAG7B6jE,aAAsB1hC,GAAUmmB,IAAiBub,GAC1DE,EAAuBF,IAG3B9qB,cAhGiB,SAgGHnuC,EAAU09C,GACtB,IAGItoD,EAHEmyC,EAAS9yC,KACT8iC,EAASgQ,EAAO7pC,YAChBu7D,EAAa1xB,EAAOuxB,WAAWI,QAErC,SAASI,EAAwB19D,GAC/BA,EAAEuyC,cAAcnuC,EAAUunC,GACT,IAAbvnC,IACFpE,EAAEi2C,kBACEj2C,EAAEuQ,OAAO8nC,YACX7Q,GAAS,WACPxnC,EAAEkgD,sBAGNlgD,EAAE+tC,WAAW/I,eAAc,WACpBq4B,IACDr9D,EAAEuQ,OAAOkhC,MAAwC,UAAhC9F,EAAOp7B,OAAO2sD,WAAWM,IAC5Cx9D,EAAEqyC,UAEJryC,EAAEglC,qBAIR,GAAIj/B,MAAMhM,QAAQsjE,GAChB,IAAK7jE,EAAI,EAAGA,EAAI6jE,EAAWnkE,OAAQM,GAAK,EAClC6jE,EAAW7jE,KAAOsoD,GAAgBub,EAAW7jE,aAAcmiC,GAC7D+hC,EAAwBL,EAAW7jE,SAG9B6jE,aAAsB1hC,GAAUmmB,IAAiBub,GAC1DK,EAAwBL,KC9HxBM,GAAO,CACXC,gBADW,SACK3hB,QAAW,IAAXA,IAAAA,EAAO,IAErB,MAAO,IAAI3sC,OAAO2sC,GAAM5rC,QAAQ,MADb,WAAA,OAAMtR,KAAKgK,MAAM,GAAKhK,KAAKkC,UAAUs+B,SAAS,QAGnEs+B,gBALW,SAKKhwB,GAEd,OADAA,EAAI/0C,KAAK,WAAY,KACd+0C,GAETiwB,mBATW,SASQjwB,GAEjB,OADAA,EAAI/0C,KAAK,WAAY,MACd+0C,GAETkwB,UAbW,SAaDlwB,EAAKmwB,GAEb,OADAnwB,EAAI/0C,KAAK,OAAQklE,GACVnwB,GAETowB,qBAjBW,SAiBUpwB,EAAKqwB,GAExB,OADArwB,EAAI/0C,KAAK,uBAAwBolE,GAC1BrwB,GAETswB,cArBW,SAqBGtwB,EAAKuwB,GAEjB,OADAvwB,EAAI/0C,KAAK,gBAAiBslE,GACnBvwB,GAETwwB,WAzBW,SAyBAxwB,EAAK14B,GAEd,OADA04B,EAAI/0C,KAAK,aAAcqc,GAChB04B,GAETywB,QA7BW,SA6BHzwB,EAAKhyC,GAEX,OADAgyC,EAAI/0C,KAAK,KAAM+C,GACRgyC,GAET0wB,UAjCW,SAiCD1wB,EAAK2wB,GAEb,OADA3wB,EAAI/0C,KAAK,YAAa0lE,GACf3wB,GAET4wB,UArCW,SAqCD5wB,GAER,OADAA,EAAI/0C,KAAK,iBAAiB,GACnB+0C,GAET6wB,SAzCW,SAyCF7wB,GAEP,OADAA,EAAI/0C,KAAK,iBAAiB,GACnB+0C,GAET8wB,kBA7CW,SA6COj5C,GAChB,GAAkB,KAAdA,EAAE4nC,SAAgC,KAAd5nC,EAAE4nC,QAA1B,CACA,IAAM3hB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOquD,KACvBnwB,EAAYl2C,EAAEmtB,EAAE1d,QAClB2jC,EAAO+K,YAAc/K,EAAO+K,WAAW0b,SAAW3jB,EAAUt1C,GAAGwyC,EAAO+K,WAAW0b,WAC7EzmB,EAAOuL,QAAUvL,EAAOp7B,OAAOkhC,MACnC9F,EAAOyX,YAELzX,EAAOuL,MACTvL,EAAOizB,KAAKC,OAAOtuD,EAAOuuD,kBAE1BnzB,EAAOizB,KAAKC,OAAOtuD,EAAOwuD,mBAG1BpzB,EAAO+K,YAAc/K,EAAO+K,WAAW2b,SAAW5jB,EAAUt1C,GAAGwyC,EAAO+K,WAAW2b,WAC7E1mB,EAAOwL,cAAgBxL,EAAOp7B,OAAOkhC,MACzC9F,EAAO2X,YAEL3X,EAAOwL,YACTxL,EAAOizB,KAAKC,OAAOtuD,EAAOyuD,mBAE1BrzB,EAAOizB,KAAKC,OAAOtuD,EAAO0uD,mBAK5BtzB,EAAOgnB,YACPlkB,EAAUt1C,GAAG+vC,EAAkByC,EAAOp7B,OAAOoiD,WAAW4B,eAExD9lB,EAAU,GAAGywB,UAGjBL,OA9EW,SA8EJ53D,GACL,IACMk4D,EADStmE,KACa+lE,KAAKQ,WACL,IAAxBD,EAAajmE,SACjBimE,EAAap+B,KAAK,IAClBo+B,EAAap+B,KAAK95B,KAEpBo4D,iBArFW,WAsFT,IAAM1zB,EAAS9yC,KAEf,IAAI8yC,EAAOp7B,OAAOkhC,MAAS9F,EAAO+K,WAAlC,CACA,IAAAyb,EAA6BxmB,EAAO+K,WAA5B0b,EAARD,EAAQC,QAASC,EAAjBF,EAAiBE,QAEbA,GAAWA,EAAQn5D,OAAS,IAC1ByyC,EAAOwL,aACTxL,EAAOizB,KAAKH,UAAUpM,GACtB1mB,EAAOizB,KAAKd,mBAAmBzL,KAE/B1mB,EAAOizB,KAAKF,SAASrM,GACrB1mB,EAAOizB,KAAKf,gBAAgBxL,KAG5BD,GAAWA,EAAQl5D,OAAS,IAC1ByyC,EAAOuL,OACTvL,EAAOizB,KAAKH,UAAUrM,GACtBzmB,EAAOizB,KAAKd,mBAAmB1L,KAE/BzmB,EAAOizB,KAAKF,SAAStM,GACrBzmB,EAAOizB,KAAKf,gBAAgBzL,OAIlCkN,iBA9GW,WA+GT,IAAM3zB,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOquD,KAE3BjzB,EAAOgnB,YACPhnB,EAAOp7B,OAAOoiD,WAAWgC,WACzBhpB,EAAOgnB,WAAWE,SAClBlnB,EAAOgnB,WAAWE,QAAQ35D,QAE1ByyC,EAAOgnB,WAAWE,QAAQn6D,MAAK,SAAC6mE,GAC9B,IAAMC,EAAYjnE,EAAEgnE,GACpB5zB,EAAOizB,KAAKf,gBAAgB2B,GACvB7zB,EAAOp7B,OAAOoiD,WAAW2B,eAC5B3oB,EAAOizB,KAAKb,UAAUyB,EAAW,UACjC7zB,EAAOizB,KAAKP,WACVmB,EACAjvD,EAAOkvD,wBAAwBpvD,QAAQ,gBAAiBmvD,EAAUruD,QAAU,SAMtF4E,KApIW,WAqIT,IAAM41B,EAAS9yC,KACT0X,EAASo7B,EAAOp7B,OAAOquD,KAE7BjzB,EAAOkC,IAAI1yC,OAAOwwC,EAAOizB,KAAKQ,YAG9B,IAAMM,EAAe/zB,EAAOkC,IACxBt9B,EAAOovD,iCACTh0B,EAAOizB,KAAKX,qBAAqByB,EAAcnvD,EAAOovD,iCAEpDpvD,EAAOqvD,kBACTj0B,EAAOizB,KAAKP,WAAWqB,EAAcnvD,EAAOqvD,kBAI9C,IAoBIxN,EACAC,EArBEtkB,EAAapC,EAAOoC,WACpB8xB,EAAY9xB,EAAWj1C,KAAK,OAAhB,kBAA2C6yC,EAAOizB,KAAKhB,gBAAgB,IACnFY,EAAO7yB,EAAOp7B,OAAO6mC,UAAYzL,EAAOp7B,OAAO6mC,SAAS/I,QAAU,MAAQ,SAChF1C,EAAOizB,KAAKN,QAAQvwB,EAAY8xB,GAChCl0B,EAAOizB,KAAKL,UAAUxwB,EAAYywB,GAG9BjuD,EAAOuvD,4BACTn0B,EAAOizB,KAAKX,qBAAqB1lE,EAAEozC,EAAO2I,QAAS/jC,EAAOuvD,4BAE5Dn0B,EAAOizB,KAAKb,UAAUxlE,EAAEozC,EAAO2I,QAAS/jC,EAAOwvD,WAC/Cp0B,EAAO2I,OAAO57C,MAAK,SAACsxD,GAClB,IAAM0C,EAAWn0D,EAAEyxD,GACbgW,EAAmBzvD,EAAO0vD,kBAC7B5vD,QAAQ,gBAAiBq8C,EAASv7C,QAAU,GAC5Cd,QAAQ,uBAAwBs7B,EAAO2I,OAAOp7C,QACjDyyC,EAAOizB,KAAKP,WAAW3R,EAAUsT,MAM/Br0B,EAAO+K,YAAc/K,EAAO+K,WAAW0b,UACzCA,EAAUzmB,EAAO+K,WAAW0b,SAE1BzmB,EAAO+K,YAAc/K,EAAO+K,WAAW2b,UACzCA,EAAU1mB,EAAO+K,WAAW2b,SAG1BD,GAAWA,EAAQl5D,SACrByyC,EAAOizB,KAAKf,gBAAgBzL,GACD,WAAvBA,EAAQ,GAAG79B,UACboX,EAAOizB,KAAKb,UAAU3L,EAAS,UAC/BA,EAAQr2D,GAAG,UAAW4vC,EAAOizB,KAAKD,oBAEpChzB,EAAOizB,KAAKP,WAAWjM,EAAS7hD,EAAOwuD,kBACvCpzB,EAAOizB,KAAKT,cAAc/L,EAASyN,IAEjCxN,GAAWA,EAAQn5D,SACrByyC,EAAOizB,KAAKf,gBAAgBxL,GACD,WAAvBA,EAAQ,GAAG99B,UACboX,EAAOizB,KAAKb,UAAU1L,EAAS,UAC/BA,EAAQt2D,GAAG,UAAW4vC,EAAOizB,KAAKD,oBAEpChzB,EAAOizB,KAAKP,WAAWhM,EAAS9hD,EAAO0uD,kBACvCtzB,EAAOizB,KAAKT,cAAc9L,EAASwN,IAKnCl0B,EAAOgnB,YACPhnB,EAAOp7B,OAAOoiD,WAAWgC,WACzBhpB,EAAOgnB,WAAWE,SAClBlnB,EAAOgnB,WAAWE,QAAQ35D,QAE1ByyC,EAAOgnB,WAAW9kB,IAAI9xC,GACpB,UACAmtC,EAAkByC,EAAOp7B,OAAOoiD,WAAW4B,aAC3C5oB,EAAOizB,KAAKD,oBAIlB5xB,QAlNW,WAmNT,IAIIqlB,EACAC,EALE1mB,EAAS9yC,KACX8yC,EAAOizB,KAAKQ,YAAczzB,EAAOizB,KAAKQ,WAAWlmE,OAAS,GAC5DyyC,EAAOizB,KAAKQ,WAAWpkE,SAIrB2wC,EAAO+K,YAAc/K,EAAO+K,WAAW0b,UACzCA,EAAUzmB,EAAO+K,WAAW0b,SAE1BzmB,EAAO+K,YAAc/K,EAAO+K,WAAW2b,UACzCA,EAAU1mB,EAAO+K,WAAW2b,SAE1BD,GACFA,EAAQluB,IAAI,UAAWyH,EAAOizB,KAAKD,mBAEjCtM,GACFA,EAAQnuB,IAAI,UAAWyH,EAAOizB,KAAKD,mBAKnChzB,EAAOgnB,YACPhnB,EAAOp7B,OAAOoiD,WAAWgC,WACzBhpB,EAAOgnB,WAAWE,SAClBlnB,EAAOgnB,WAAWE,QAAQ35D,QAE1ByyC,EAAOgnB,WAAW9kB,IAAI3J,IACpB,UACAgF,EAAkByC,EAAOp7B,OAAOoiD,WAAW4B,aAC3C5oB,EAAOizB,KAAKD,qBChPduB,GAAU,CACdnqD,KADc,WAEZ,IAAM41B,EAAS9yC,KACTsE,EAASwhC,IACf,GAAKgN,EAAOp7B,OAAO2tB,QAAnB,CACA,IAAK/gC,EAAO+gC,UAAY/gC,EAAO+gC,QAAQE,UAGrC,OAFAuN,EAAOp7B,OAAO2tB,QAAQmQ,SAAU,OAChC1C,EAAOp7B,OAAO4vD,eAAe9xB,SAAU,GAGzC,IAAMnQ,EAAUyN,EAAOzN,QACvBA,EAAQ6N,aAAc,EACtB7N,EAAQkiC,MAAQF,GAAQG,cAAc10B,EAAOp7B,OAAOrU,MAC/CgiC,EAAQkiC,MAAMxkD,KAAQsiB,EAAQkiC,MAAMznE,SACzCulC,EAAQoiC,cAAc,EAAGpiC,EAAQkiC,MAAMznE,MAAOgzC,EAAOp7B,OAAOiqC,oBACvD7O,EAAOp7B,OAAO2tB,QAAQC,cACzBhhC,EAAOs/B,iBAAiB,WAAYkP,EAAOzN,QAAQqiC,uBAGvDxzB,QAnBc,WAoBZ,IACM5vC,EAASwhC,IADA9lC,KAEH0X,OAAO2tB,QAAQC,cACzBhhC,EAAOu/B,oBAAoB,WAHd7jC,KAGiCqlC,QAAQqiC,qBAG1DA,mBA1Bc,WA2BZ,IAAM50B,EAAS9yC,KACf8yC,EAAOzN,QAAQkiC,MAAQF,GAAQG,cAAc10B,EAAOp7B,OAAOrU,KAC3DyvC,EAAOzN,QAAQoiC,cAAc30B,EAAOp7B,OAAOwlC,MAAOpK,EAAOzN,QAAQkiC,MAAMznE,OAAO,IAEhF0nE,cA/Bc,SA+BAG,GACZ,IAAMrjE,EAASwhC,IAOT8hC,GALFD,EACS,IAAIE,IAAIF,GAERrjE,EAAOkgC,UAEOK,SACxBn0B,MAAM,GACNX,MAAM,KACN3P,QAAO,SAAC0nE,GAAD,MAAmB,KAATA,KACd90C,EAAQ40C,EAAUvnE,OAGxB,MAAO,CAAE0iB,IAFG6kD,EAAU50C,EAAQ,GAEhBlzB,MADA8nE,EAAU50C,EAAQ,KAGlC+0C,WAhDc,SAgDHhlD,EAAKzK,GACd,IAAMw6B,EAAS9yC,KACTsE,EAASwhC,IACf,GAAKgN,EAAOzN,QAAQ6N,aAAgBJ,EAAOp7B,OAAO2tB,QAAQmQ,QAA1D,CACA,IAAIhR,EAEFA,EADEsO,EAAOp7B,OAAOrU,IACL,IAAIwkE,IAAI/0B,EAAOp7B,OAAOrU,KAEtBiB,EAAOkgC,SAEpB,IAAM+gB,EAAQzS,EAAO2I,OAAO9N,GAAGr1B,GAC3BxY,EAAQunE,GAAQW,QAAQziB,EAAMtlD,KAAK,iBACvC,GAAI6yC,EAAOp7B,OAAO2tB,QAAQ4iC,KAAK5nE,OAAS,EAAG,CACzC,IAAI4nE,EAAOn1B,EAAOp7B,OAAO2tB,QAAQ4iC,KACH,MAA1BA,EAAKA,EAAK5nE,OAAS,KAAY4nE,EAAOA,EAAKv3D,MAAM,EAAGu3D,EAAK5nE,OAAS,IACtEP,EAAWmoE,EAAN,IAAcllD,EAAd,IAAqBjjB,OAChB0kC,EAASK,SAASqjC,SAASnlD,KACrCjjB,EAAWijB,EAAN,IAAajjB,GAEpB,IAAMqoE,EAAe7jE,EAAO+gC,QAAQ+iC,MAChCD,GAAgBA,EAAaroE,QAAUA,IAGvCgzC,EAAOp7B,OAAO2tB,QAAQC,aACxBhhC,EAAO+gC,QAAQC,aAAa,CAAExlC,MAAAA,GAAS,KAAMA,GAE7CwE,EAAO+gC,QAAQE,UAAU,CAAEzlC,MAAAA,GAAS,KAAMA,MAG9CkoE,QA7Ec,SA6ENvlE,GACN,OAAOA,EACJikC,WACAlvB,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,IACpBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,KAEpBiwD,cAtFc,SAsFAvqB,EAAOp9C,EAAOqpD,GAC1B,IAAMrW,EAAS9yC,KACf,GAAIF,EACF,IAAK,IAAIa,EAAI,EAAGN,EAASyyC,EAAO2I,OAAOp7C,OAAQM,EAAIN,EAAQM,GAAK,EAAG,CACjE,IAAM4kD,EAAQzS,EAAO2I,OAAO9N,GAAGhtC,GAE/B,GADqB0mE,GAAQW,QAAQziB,EAAMtlD,KAAK,mBAC3BH,IAAUylD,EAAMnc,SAAS0J,EAAOp7B,OAAO2pC,qBAAsB,CAChF,IAAM/oC,EAAQitC,EAAMjtC,QACpBw6B,EAAOyI,QAAQjjC,EAAO4kC,EAAOiM,SAIjCrW,EAAOyI,QAAQ,EAAG2B,EAAOiM,KCjGzBkf,GAAiB,CACrBC,YADqB,WAEnB,IAAMx1B,EAAS9yC,KACT6hB,EAAWmjB,IACjB8N,EAAOiB,KAAK,cACZ,IAAMw0B,EAAU1mD,EAAS2iB,SAASC,KAAKjtB,QAAQ,IAAK,IAEpD,GAAI+wD,IADoBz1B,EAAO2I,OAAO9N,GAAGmF,EAAO0I,aAAav7C,KAAK,aACjC,CAC/B,IAAMqqD,EAAWxX,EAAOoC,WACrBzqB,SADc,IACDqoB,EAAOp7B,OAAOspC,WADb,eACsCunB,EADtC,MAEdjwD,QACH,QAAwB,IAAbgyC,EAA0B,OACrCxX,EAAOyI,QAAQ+O,KAGnBke,QAfqB,WAgBnB,IAAM11B,EAAS9yC,KACTsE,EAASwhC,IACTjkB,EAAWmjB,IACjB,GAAK8N,EAAOw0B,eAAep0B,aAAgBJ,EAAOp7B,OAAO4vD,eAAe9xB,QACxE,GACE1C,EAAOp7B,OAAO4vD,eAAehiC,cAC7BhhC,EAAO+gC,SACP/gC,EAAO+gC,QAAQC,aAEfhhC,EAAO+gC,QAAQC,aACb,KACA,KACA,IAAIwN,EAAO2I,OAAO9N,GAAGmF,EAAO0I,aAAav7C,KAAK,cAAkB,IAElE6yC,EAAOiB,KAAK,eACP,CACL,IAAMwR,EAAQzS,EAAO2I,OAAO9N,GAAGmF,EAAO0I,aAChC/W,EAAO8gB,EAAMtlD,KAAK,cAAgBslD,EAAMtlD,KAAK,gBACnD4hB,EAAS2iB,SAASC,KAAOA,GAAQ,GACjCqO,EAAOiB,KAAK,aAGhB72B,KAtCqB,WAuCnB,IAAM41B,EAAS9yC,KACT6hB,EAAWmjB,IACX1gC,EAASwhC,IACf,MACGgN,EAAOp7B,OAAO4vD,eAAe9xB,SAC7B1C,EAAOp7B,OAAO2tB,SAAWyN,EAAOp7B,OAAO2tB,QAAQmQ,SAFlD,CAKA1C,EAAOw0B,eAAep0B,aAAc,EACpC,IAAMzO,EAAO5iB,EAAS2iB,SAASC,KAAKjtB,QAAQ,IAAK,IACjD,GAAIitB,EAEF,IADA,IACS9jC,EAAI,EAAGN,EAASyyC,EAAO2I,OAAOp7C,OAAQM,EAAIN,EAAQM,GAAK,EAAG,CACjE,IAAM4kD,EAAQzS,EAAO2I,OAAO9N,GAAGhtC,GAE/B,IADkB4kD,EAAMtlD,KAAK,cAAgBslD,EAAMtlD,KAAK,mBACtCwkC,IAAS8gB,EAAMnc,SAAS0J,EAAOp7B,OAAO2pC,qBAAsB,CAC5E,IAAM/oC,EAAQitC,EAAMjtC,QACpBw6B,EAAOyI,QAAQjjC,EANL,EAMmBw6B,EAAOp7B,OAAOiqC,oBAAoB,IAIjE7O,EAAOp7B,OAAO4vD,eAAemB,YAC/B/oE,EAAE4E,GAAQpB,GAAG,aAAc4vC,EAAOw0B,eAAegB,eAGrDp0B,QAhEqB,WAiEnB,IACM5vC,EAASwhC,IADA9lC,KAEJ0X,OAAO4vD,eAAemB,YAC/B/oE,EAAE4E,GAAQ+mC,IAAI,aAHDrrC,KAGsBsnE,eAAegB,eCpElDI,GAAW,CACfjqB,IADe,WAEb,IAAM3L,EAAS9yC,KACT2oE,EAAiB71B,EAAO2I,OAAO9N,GAAGmF,EAAO0I,aAC3C/vC,EAAQqnC,EAAOp7B,OAAO6mC,SAAS9yC,MAC/Bk9D,EAAe1oE,KAAK,0BACtBwL,EAAQk9D,EAAe1oE,KAAK,yBAA2B6yC,EAAOp7B,OAAO6mC,SAAS9yC,OAEhF4W,aAAaywB,EAAOyL,SAASga,SAC7BzlB,EAAOyL,SAASga,QAAU5pB,GAAS,WACjC,IAAIi6B,EACA91B,EAAOp7B,OAAO6mC,SAASsqB,iBACrB/1B,EAAOp7B,OAAOkhC,MAChB9F,EAAO0G,UACPovB,EAAiB91B,EAAO2X,UAAU3X,EAAOp7B,OAAOwlC,OAAO,GAAM,GAC7DpK,EAAOiB,KAAK,aACFjB,EAAOwL,YAGPxL,EAAOp7B,OAAO6mC,SAASuqB,gBASjCh2B,EAAOyL,SAASqa,QARhBgQ,EAAiB91B,EAAOyI,QACtBzI,EAAO2I,OAAOp7C,OAAS,EACvByyC,EAAOp7B,OAAOwlC,OACd,GACA,GAEFpK,EAAOiB,KAAK,cATZ60B,EAAiB91B,EAAO2X,UAAU3X,EAAOp7B,OAAOwlC,OAAO,GAAM,GAC7DpK,EAAOiB,KAAK,aAYLjB,EAAOp7B,OAAOkhC,MACvB9F,EAAO0G,UACPovB,EAAiB91B,EAAOyX,UAAUzX,EAAOp7B,OAAOwlC,OAAO,GAAM,GAC7DpK,EAAOiB,KAAK,aACFjB,EAAOuL,MAGPvL,EAAOp7B,OAAO6mC,SAASuqB,gBAIjCh2B,EAAOyL,SAASqa,QAHhBgQ,EAAiB91B,EAAOyI,QAAQ,EAAGzI,EAAOp7B,OAAOwlC,OAAO,GAAM,GAC9DpK,EAAOiB,KAAK,cAJZ60B,EAAiB91B,EAAOyX,UAAUzX,EAAOp7B,OAAOwlC,OAAO,GAAM,GAC7DpK,EAAOiB,KAAK,cAOVjB,EAAOp7B,OAAO2hC,SAAWvG,EAAOyL,SAASC,UACjB,IAAnBoqB,IAD6C91B,EAAOyL,SAASE,QAIrEhzC,IAELhF,MAjDe,WAkDb,IAAMqsC,EAAS9yC,KACf,YAAuC,IAA5B8yC,EAAOyL,SAASga,WACvBzlB,EAAOyL,SAASC,UACpB1L,EAAOyL,SAASC,SAAU,EAC1B1L,EAAOiB,KAAK,iBACZjB,EAAOyL,SAASE,OACT,KAETma,KA1De,WA2Db,IAAM9lB,EAAS9yC,KACf,QAAK8yC,EAAOyL,SAASC,eACkB,IAA5B1L,EAAOyL,SAASga,UAEvBzlB,EAAOyL,SAASga,UAClBl2C,aAAaywB,EAAOyL,SAASga,SAC7BzlB,EAAOyL,SAASga,aAAUnxB,GAE5B0L,EAAOyL,SAASC,SAAU,EAC1B1L,EAAOiB,KAAK,iBACL,KAETvtB,MAvEe,SAuET02B,GACJ,IAAMpK,EAAS9yC,KACV8yC,EAAOyL,SAASC,UACjB1L,EAAOyL,SAASz4B,SAChBgtB,EAAOyL,SAASga,SAASl2C,aAAaywB,EAAOyL,SAASga,SAC1DzlB,EAAOyL,SAASz4B,QAAS,EACX,IAAVo3B,GAAgBpK,EAAOp7B,OAAO6mC,SAASwqB,kBAIzC,CAAC,gBAAiB,uBAAuB/4D,SAAQ,SAAC3O,GAChDyxC,EAAOoC,WAAW,GAAGtR,iBAAiBviC,EAAOyxC,EAAOyL,SAASsiB,qBAJ/D/tB,EAAOyL,SAASz4B,QAAS,EACzBgtB,EAAOyL,SAASE,UAOpBuqB,mBAtFe,WAuFb,IAAMl2B,EAAS9yC,KACT6hB,EAAWmjB,IACgB,WAA7BnjB,EAASonD,iBAAgCn2B,EAAOyL,SAASC,SAC3D1L,EAAOyL,SAAS/3B,QAEe,YAA7B3E,EAASonD,iBAAiCn2B,EAAOyL,SAASz4B,SAC5DgtB,EAAOyL,SAASE,MAChB3L,EAAOyL,SAASz4B,QAAS,IAG7B+6C,gBAjGe,SAiGCh0C,GACd,IAAMimB,EAAS9yC,KACV8yC,IAAUA,EAAOG,WAAcH,EAAOoC,YACvCroB,EAAE1d,SAAW2jC,EAAOoC,WAAW,KACnC,CAAC,gBAAiB,uBAAuBllC,SAAQ,SAAC3O,GAChDyxC,EAAOoC,WAAW,GAAGrR,oBAAoBxiC,EAAOyxC,EAAOyL,SAASsiB,oBAElE/tB,EAAOyL,SAASz4B,QAAS,EACpBgtB,EAAOyL,SAASC,QAGnB1L,EAAOyL,SAASE,MAFhB3L,EAAOyL,SAASqa,SAKpBsQ,aA/Ge,WAgHb,IAAMp2B,EAAS9yC,KACX8yC,EAAOp7B,OAAO6mC,SAAS4qB,qBACzBr2B,EAAOyL,SAASqa,OAEhB9lB,EAAOyL,SAAS/3B,QAGlB,CAAC,gBAAiB,uBAAuBxW,SAAQ,SAAC3O,GAChDyxC,EAAOoC,WAAW,GAAGrR,oBAAoBxiC,EAAOyxC,EAAOyL,SAASsiB,qBAGpEuI,aA3He,WA4Hb,IAAMt2B,EAAS9yC,KACX8yC,EAAOp7B,OAAO6mC,SAAS4qB,uBAG3Br2B,EAAOyL,SAASz4B,QAAS,EACzBgtB,EAAOyL,SAASE,QAElB4qB,kBAnIe,WAoIb,IAAMv2B,EAAS9yC,KACX8yC,EAAOp7B,OAAO6mC,SAAS+qB,oBACzBx2B,EAAOkC,IAAI9xC,GAAG,aAAc4vC,EAAOyL,SAAS2qB,cAC5Cp2B,EAAOkC,IAAI9xC,GAAG,aAAc4vC,EAAOyL,SAAS6qB,gBAGhDG,kBA1Ie,WA2Ib,IAAMz2B,EAAS9yC,KACf8yC,EAAOkC,IAAI3J,IAAI,aAAcyH,EAAOyL,SAAS2qB,cAC7Cp2B,EAAOkC,IAAI3J,IAAI,aAAcyH,EAAOyL,SAAS6qB,gBC/I3CI,GAAO,CACX1uB,aADW,WAIT,IAFA,IAAMhI,EAAS9yC,KACPy7C,EAAW3I,EAAX2I,OACC96C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAAG,CACzC,IAAMkzD,EAAW/gB,EAAO2I,OAAO9N,GAAGhtC,GAE9Bm+B,GADW+0B,EAAS,GAAGpM,kBAEtB3U,EAAOp7B,OAAOgoC,mBAAkB5gB,GAAMgU,EAAOgG,WAClD,IAAI/Z,EAAK,EACJ+T,EAAOsG,iBACVra,EAAKD,EACLA,EAAK,GAEP,IAAM2qC,EAAe32B,EAAOp7B,OAAOgyD,WAAWC,UAC1CzjE,KAAKiS,IAAI,EAAIjS,KAAKiO,IAAI0/C,EAAS,GAAG/2C,UAAW,GAC7C,EAAI5W,KAAKC,IAAID,KAAKiS,IAAI07C,EAAS,GAAG/2C,UAAW,GAAI,GACrD+2C,EACG1mB,IAAI,CACHuvB,QAAS+M,IAEV7rC,UAJH,eAI4BkB,EAJ5B,OAIqCC,EAJrC,cAOJ2a,cAxBW,SAwBGnuC,GACZ,IAAMunC,EAAS9yC,KACPy7C,EAAuB3I,EAAvB2I,OAAQvG,EAAepC,EAAfoC,WAEhB,GADAuG,EAAOzR,WAAWz+B,GACdunC,EAAOp7B,OAAOgoC,kBAAiC,IAAbn0C,EAAgB,CACpD,IAAIq+D,GAAiB,EACrBnuB,EAAOtP,eAAc,WACnB,IAAIy9B,GACC92B,IAAUA,EAAOG,UAAtB,CACA22B,GAAiB,EACjB92B,EAAO2C,WAAY,EAEnB,IADA,IAAMo0B,EAAgB,CAAC,sBAAuB,iBACrClpE,EAAI,EAAGA,EAAIkpE,EAAcxpE,OAAQM,GAAK,EAC7Cu0C,EAAWtyC,QAAQinE,EAAclpE,WCpCrCmpE,GAAO,CACXhvB,aADW,WAET,IAeIivB,EAfEj3B,EAAS9yC,KAEbg1C,EAQElC,EARFkC,IACAE,EAOEpC,EAPFoC,WACAuG,EAME3I,EANF2I,OACOga,EAKL3iB,EALF/vC,MACQ2yD,EAIN5iB,EAJFxY,OACcge,EAGZxF,EAHFyF,aACMwL,EAEJjR,EAFFsQ,KACAza,EACEmK,EADFnK,QAEIjxB,EAASo7B,EAAOp7B,OAAOsyD,WACvB5wB,EAAetG,EAAOsG,eACtB6K,EAAYnR,EAAOoR,SAAWpR,EAAOp7B,OAAOwsC,QAAQ1O,QACtDy0B,EAAgB,EAEhBvyD,EAAOwyD,SACL9wB,GAE2B,KAD7B2wB,EAAgB70B,EAAWt1C,KAAK,wBACdS,SAChB0pE,EAAgBrqE,EAAE,0CAClBw1C,EAAW5yC,OAAOynE,IAEpBA,EAAc58B,IAAI,CAAE7S,OAAWm7B,EAAL,QAGG,KAD7BsU,EAAgB/0B,EAAIp1C,KAAK,wBACPS,SAChB0pE,EAAgBrqE,EAAE,0CAClBs1C,EAAI1yC,OAAOynE,KAIjB,IAAK,IAAIppE,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAAG,CACzC,IAAMkzD,EAAWpY,EAAO9N,GAAGhtC,GACvBmmD,EAAanmD,EACbsjD,IACF6C,EAAa7mC,SAAS4zC,EAAS5zD,KAAK,2BAA4B,KAElE,IAAIkqE,EAA0B,GAAbrjB,EACb52C,EAAQhK,KAAK4N,MAAMq2D,EAAa,KAChC7xB,IACF6xB,GAAcA,EACdj6D,EAAQhK,KAAK4N,OAAOq2D,EAAa,MAEnC,IAAMrtD,EAAW5W,KAAKiS,IAAIjS,KAAKC,IAAI0tD,EAAS,GAAG/2C,SAAU,IAAK,GAC1DgiB,EAAK,EACLC,EAAK,EACLqrC,EAAK,EACLtjB,EAAa,GAAM,GACrBhoB,EAAc,GAAR5uB,EAAY6zC,EAClBqmB,EAAK,IACKtjB,EAAa,GAAK,GAAM,GAClChoB,EAAK,EACLsrC,EAAc,GAARl6D,EAAY6zC,IACR+C,EAAa,GAAK,GAAM,GAClChoB,EAAKilB,EAAqB,EAAR7zC,EAAY6zC,EAC9BqmB,EAAKrmB,IACK+C,EAAa,GAAK,GAAM,IAClChoB,GAAMilB,EACNqmB,EAAK,EAAIrmB,EAA0B,EAAbA,EAAiB7zC,GAErCooC,IACFxZ,GAAMA,GAGHsa,IACHra,EAAKD,EACLA,EAAK,GAGP,IAAMlB,EAAS,YAAcwb,EAAe,GAAK+wB,GAAlC,iBACb/wB,EAAe+wB,EAAa,GADf,oBAEKrrC,EAFL,OAEcC,EAFd,OAEuBqrC,EAFvB,MAQf,GALIttD,GAAY,GAAKA,GAAY,IAC/BmtD,EAA6B,GAAbnjB,EAA6B,GAAXhqC,EAC9Bw7B,IAAK2xB,EAA8B,IAAbnjB,EAA6B,GAAXhqC,IAE9C+2C,EAASj2B,UAAUA,GACflmB,EAAO2yD,aAAc,CAEvB,IAAIC,EAAelxB,EACfya,EAASj0D,KAAK,6BACdi0D,EAASj0D,KAAK,4BACd2qE,EAAcnxB,EACdya,EAASj0D,KAAK,8BACdi0D,EAASj0D,KAAK,+BACU,IAAxB0qE,EAAajqE,SACfiqE,EAAe5qE,EAAC,oCACqB05C,EAAe,OAAS,OAD7C,YAGhBya,EAASvxD,OAAOgoE,IAES,IAAvBC,EAAYlqE,SACdkqE,EAAc7qE,EAAC,oCACsB05C,EAAe,QAAU,UAD/C,YAGfya,EAASvxD,OAAOioE,IAEdD,EAAajqE,SAAQiqE,EAAa,GAAG38C,MAAM+uC,QAAUx2D,KAAKiS,KAAK2E,EAAU,IACzEytD,EAAYlqE,SAAQkqE,EAAY,GAAG58C,MAAM+uC,QAAUx2D,KAAKiS,IAAI2E,EAAU,KAU9E,GAPAo4B,EAAW/H,IAAI,CACbq9B,2BAAA,YAAwCzmB,EAAa,EAArD,KACA0mB,wBAAA,YAAqC1mB,EAAa,EAAlD,KACA2mB,uBAAA,YAAoC3mB,EAAa,EAAjD,KACA4mB,mBAAA,YAAgC5mB,EAAa,EAA7C,OAGErsC,EAAOwyD,OACT,GAAI9wB,EACF2wB,EAAcnsC,UAAd,qBACsB63B,EAAc,EAAI/9C,EAAOkzD,cAD/C,QAEKnV,EAAc,EAFnB,0CAG4C/9C,EAAOmzD,YAHnD,SAKK,CACL,IAAMC,EAAc5kE,KAAKiO,IAAI81D,GAA4D,GAA3C/jE,KAAK4N,MAAM5N,KAAKiO,IAAI81D,GAAiB,IAC7E/hB,EACJ,KACChiD,KAAKmG,IAAmB,EAAdy+D,EAAkB5kE,KAAK2F,GAAM,KAAO,EAC7C3F,KAAKiG,IAAmB,EAAd2+D,EAAkB5kE,KAAK2F,GAAM,KAAO,GAC5Ck/D,EAASrzD,EAAOmzD,YAChBG,EAAStzD,EAAOmzD,YAAc3iB,EAC9BjxC,EAASS,EAAOkzD,aACtBb,EAAcnsC,UAAd,WACamtC,EADb,QAC2BC,EAD3B,uBACuDtV,EAAe,EAAIz+C,GAD1E,QAEKy+C,EAAe,EAAIsV,EAFxB,uBAOJ,IAAMC,EAAUtiC,EAAQ8J,UAAY9J,EAAQ+J,WAAaqR,EAAa,EAAI,EAC1E7O,EAAWtX,UAAX,qBACuBqtC,EADvB,gBAEIn4B,EAAOsG,eAAiB,EAAI6wB,GAFhC,iBAGkBn3B,EAAOsG,gBAAkB6wB,EAAgB,GAH3D,SAMFvwB,cA7IW,SA6IGnuC,GACZ,IAAMunC,EAAS9yC,KACPg1C,EAAgBlC,EAAhBkC,IAAgBlC,EAAX2I,OAEVzR,WAAWz+B,GACX3L,KACC,gHAEDoqC,WAAWz+B,GACVunC,EAAOp7B,OAAOsyD,WAAWE,SAAWp3B,EAAOsG,gBAC7CpE,EAAIp1C,KAAK,uBAAuBoqC,WAAWz+B,KCvJ3C2/D,GAAO,CACXpwB,aADW,WAIT,IAFA,IAAMhI,EAAS9yC,KACPy7C,EAA8B3I,EAA9B2I,OAAsBnD,EAAQxF,EAAtByF,aACP53C,EAAI,EAAGA,EAAI86C,EAAOp7C,OAAQM,GAAK,EAAG,CACzC,IAAMkzD,EAAWpY,EAAO9N,GAAGhtC,GACvBmc,EAAW+2C,EAAS,GAAG/2C,SACvBg2B,EAAOp7B,OAAOyzD,WAAWC,gBAC3BtuD,EAAW5W,KAAKiS,IAAIjS,KAAKC,IAAI0tD,EAAS,GAAG/2C,SAAU,IAAK,IAE1D,IAEIuuD,GADY,IAAMvuD,EAElBwuD,EAAU,EACVxsC,GAJW+0B,EAAS,GAAGpM,kBAKvB1oB,EAAK,EAYT,GAXK+T,EAAOsG,eAKDd,IACT+yB,GAAWA,IALXtsC,EAAKD,EACLA,EAAK,EACLwsC,GAAWD,EACXA,EAAU,GAKZxX,EAAS,GAAGlmC,MAAM49C,QAAUrlE,KAAKiO,IAAIjO,KAAKgK,MAAM4M,IAAa2+B,EAAOp7C,OAEhEyyC,EAAOp7B,OAAOyzD,WAAWd,aAAc,CAEzC,IAAIC,EAAex3B,EAAOsG,eACtBya,EAASj0D,KAAK,6BACdi0D,EAASj0D,KAAK,4BACd2qE,EAAcz3B,EAAOsG,eACrBya,EAASj0D,KAAK,8BACdi0D,EAASj0D,KAAK,+BACU,IAAxB0qE,EAAajqE,SACfiqE,EAAe5qE,EAAC,oCACqBozC,EAAOsG,eAAiB,OAAS,OADtD,YAGhBya,EAASvxD,OAAOgoE,IAES,IAAvBC,EAAYlqE,SACdkqE,EAAc7qE,EAAC,oCACsBozC,EAAOsG,eAAiB,QAAU,UADxD,YAGfya,EAASvxD,OAAOioE,IAEdD,EAAajqE,SAAQiqE,EAAa,GAAG38C,MAAM+uC,QAAUx2D,KAAKiS,KAAK2E,EAAU,IACzEytD,EAAYlqE,SAAQkqE,EAAY,GAAG58C,MAAM+uC,QAAUx2D,KAAKiS,IAAI2E,EAAU,IAE5E+2C,EAASj2B,UAAT,eACiBkB,EADjB,OAC0BC,EAD1B,oBACgDusC,EADhD,gBACuED,EADvE,UAKJ3xB,cAvDW,SAuDGnuC,GACZ,IAAMunC,EAAS9yC,KACPy7C,EAAoC3I,EAApC2I,OAAQD,EAA4B1I,EAA5B0I,YAAatG,EAAepC,EAAfoC,WAO7B,GANAuG,EACGzR,WAAWz+B,GACX3L,KACC,gHAEDoqC,WAAWz+B,GACVunC,EAAOp7B,OAAOgoC,kBAAiC,IAAbn0C,EAAgB,CACpD,IAAIq+D,GAAiB,EAErBnuB,EAAO9N,GAAG6N,GAAarP,eAAc,WACnC,IAAIy9B,GACC92B,IAAUA,EAAOG,UAAtB,CAEA22B,GAAiB,EACjB92B,EAAO2C,WAAY,EAEnB,IADA,IAAMo0B,EAAgB,CAAC,sBAAuB,iBACrClpE,EAAI,EAAGA,EAAIkpE,EAAcxpE,OAAQM,GAAK,EAC7Cu0C,EAAWtyC,QAAQinE,EAAclpE,WC3ErC6qE,GAAY,CAChB1wB,aADgB,WAWd,IATA,IAAMhI,EAAS9yC,KACAy1D,EAA+D3iB,EAAtE/vC,MAA4B2yD,EAA0C5iB,EAAlDxY,OAAsBmhB,EAA4B3I,EAA5B2I,OAAQwB,EAAoBnK,EAApBmK,gBACpDvlC,EAASo7B,EAAOp7B,OAAO+zD,gBACvBryB,EAAetG,EAAOsG,eACtBxb,EAAYkV,EAAOgG,UACnBj/B,EAASu/B,EAA4Bqc,EAAc,EAA1B73B,EAA2C83B,EAAe,EAA3B93B,EACxD8tC,EAAStyB,EAAe1hC,EAAOg0D,QAAUh0D,EAAOg0D,OAChD5yB,EAAYphC,EAAOi0D,MAEhBhrE,EAAI,EAAGN,EAASo7C,EAAOp7C,OAAQM,EAAIN,EAAQM,GAAK,EAAG,CAC1D,IAAMkzD,EAAWpY,EAAO9N,GAAGhtC,GACrBikD,EAAY3H,EAAgBt8C,GAE5BirE,GACF/xD,EAFgBg6C,EAAS,GAAGpM,kBAEL7C,EAAY,GAAKA,EAAaltC,EAAO+F,SAE5D4tD,EAAUjyB,EAAesyB,EAASE,EAAmB,EACrDN,EAAUlyB,EAAe,EAAIsyB,EAASE,EAEtCC,GAAc/yB,EAAY5yC,KAAKiO,IAAIy3D,GAEnCE,EAAUp0D,EAAOo0D,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQjnE,QAAQ,OACjDinE,EAAW56D,WAAWwG,EAAOo0D,SAAW,IAAOlnB,GAEjD,IAAIuc,EAAa/nB,EAAe,EAAI0yB,EAAUF,EAC1C1K,EAAa9nB,EAAe0yB,EAAUF,EAAmB,EAEzD70C,EAAQ,GAAK,EAAIrf,EAAOqf,OAAS7wB,KAAKiO,IAAIy3D,GAG1C1lE,KAAKiO,IAAI+sD,GAAc,OAAOA,EAAa,GAC3Ch7D,KAAKiO,IAAIgtD,GAAc,OAAOA,EAAa,GAC3Cj7D,KAAKiO,IAAI03D,GAAc,OAAOA,EAAa,GAC3C3lE,KAAKiO,IAAIk3D,GAAW,OAAOA,EAAU,GACrCnlE,KAAKiO,IAAIm3D,GAAW,OAAOA,EAAU,GACrCplE,KAAKiO,IAAI4iB,GAAS,OAAOA,EAAQ,GAErC,IAAMg1C,EAAc,eAAkB7K,EAAlB,MAAkCC,EAAlC,MAAkD0K,EAAlD,gBAA4EP,EAA5E,gBAAmGD,EAAnG,cAAwHt0C,EAAxH,IAIpB,GAFA88B,EAASj2B,UAAUmuC,GACnBlY,EAAS,GAAGlmC,MAAM49C,OAAmD,EAAzCrlE,KAAKiO,IAAIjO,KAAKgK,MAAM07D,IAC5Cl0D,EAAO2yD,aAAc,CAEvB,IAAI2B,EAAkB5yB,EAClBya,EAASj0D,KAAK,6BACdi0D,EAASj0D,KAAK,4BACdqsE,EAAiB7yB,EACjBya,EAASj0D,KAAK,8BACdi0D,EAASj0D,KAAK,+BACa,IAA3BosE,EAAgB3rE,SAClB2rE,EAAkBtsE,EAAC,oCACkB05C,EAAe,OAAS,OAD1C,YAGnBya,EAASvxD,OAAO0pE,IAEY,IAA1BC,EAAe5rE,SACjB4rE,EAAiBvsE,EAAC,oCACmB05C,EAAe,QAAU,UAD5C,YAGlBya,EAASvxD,OAAO2pE,IAEdD,EAAgB3rE,SAClB2rE,EAAgB,GAAGr+C,MAAM+uC,QAAUkP,EAAmB,EAAIA,EAAmB,GAC3EK,EAAe5rE,SACjB4rE,EAAe,GAAGt+C,MAAM+uC,SAAWkP,EAAmB,GAAKA,EAAmB,MAItFlyB,cAxEgB,SAwEFnuC,GACGvL,KACRy7C,OACJzR,WAAWz+B,GACX3L,KACC,gHAEDoqC,WAAWz+B,KC/EZ2gE,GAAS,CACbhvD,KADa,WAEX,IAAM41B,EAAS9yC,KACCmsE,EAAiBr5B,EAAOp7B,OAAhC00D,OACR,GAAIt5B,EAAOs5B,OAAOl5B,YAAa,OAAO,EACtCJ,EAAOs5B,OAAOl5B,aAAc,EAC5B,IAAMm5B,EAAcv5B,EAAO7pC,YAuB3B,OAtBIkjE,EAAar5B,kBAAkBu5B,GACjCv5B,EAAOs5B,OAAOt5B,OAASq5B,EAAar5B,OACpCtP,EAAOsP,EAAOs5B,OAAOt5B,OAAOwa,eAAgB,CAC1C9S,qBAAqB,EACrB+F,qBAAqB,IAEvB/c,EAAOsP,EAAOs5B,OAAOt5B,OAAOp7B,OAAQ,CAClC8iC,qBAAqB,EACrB+F,qBAAqB,KAEdhd,EAAS4oC,EAAar5B,UAC/BA,EAAOs5B,OAAOt5B,OAAS,IAAIu5B,EACzB7oC,EAAO,GAAI2oC,EAAar5B,OAAQ,CAC9B2H,uBAAuB,EACvBD,qBAAqB,EACrB+F,qBAAqB,KAGzBzN,EAAOs5B,OAAOE,eAAgB,GAEhCx5B,EAAOs5B,OAAOt5B,OAAOkC,IAAInM,SAASiK,EAAOp7B,OAAO00D,OAAOG,sBACvDz5B,EAAOs5B,OAAOt5B,OAAO5vC,GAAG,MAAO4vC,EAAOs5B,OAAOI,eACtC,GAETA,aA/Ba,WAgCX,IAAM15B,EAAS9yC,KACTysE,EAAe35B,EAAOs5B,OAAOt5B,OACnC,GAAK25B,EAAL,CACA,IAAMzjB,EAAeyjB,EAAazjB,aAC5BD,EAAe0jB,EAAa1jB,aAClC,KAAIA,GAAgBrpD,EAAEqpD,GAAc3f,SAAS0J,EAAOp7B,OAAO00D,OAAOM,wBAE9D,MAAO1jB,GAAX,CACA,IAAIgC,EAMJ,GAJEA,EADEyhB,EAAa/0D,OAAOkhC,KACP34B,SAASvgB,EAAE+sE,EAAa1jB,cAAc9oD,KAAK,2BAA4B,IAEvE+oD,EAEblW,EAAOp7B,OAAOkhC,KAAM,CACtB,IAAI+zB,EAAe75B,EAAO0I,YACtB1I,EAAO2I,OAAO9N,GAAGg/B,GAAcvjC,SAAS0J,EAAOp7B,OAAO2pC,uBACxDvO,EAAO0G,UAEP1G,EAAO0X,YAAc1X,EAAOoC,WAAW,GAAGpI,WAC1C6/B,EAAe75B,EAAO0I,aAExB,IAAMkP,EAAY5X,EAAO2I,OACtB9N,GAAGg/B,GACHt+B,QAFe,6BAEsB2c,EAFtB,MAGfrd,GAAG,GACHr1B,QACGu3B,EAAYiD,EAAO2I,OACtB9N,GAAGg/B,GACHz+B,QAFe,6BAEsB8c,EAFtB,MAGfrd,GAAG,GACHr1B,QACmC0yC,OAAb,IAAdN,EAA0C7a,OACvB,IAAdA,EAA0C6a,EACjD7a,EAAY88B,EAAeA,EAAejiB,EAA0B7a,EACzD6a,EAEtB5X,EAAOyI,QAAQyP,MAEjB/H,OAvEa,SAuEN4G,GACL,IAAM/W,EAAS9yC,KACTysE,EAAe35B,EAAOs5B,OAAOt5B,OACnC,GAAK25B,EAAL,CAEA,IAAMruB,EACkC,SAAtCquB,EAAa/0D,OAAO0mC,cAChBquB,EAAa1hB,uBACb0hB,EAAa/0D,OAAO0mC,cAEpBwuB,EAAmB95B,EAAOp7B,OAAO00D,OAAOQ,iBACxCC,EAAYD,IAAqBH,EAAa/0D,OAAOkhC,KAC3D,GAAI9F,EAAOwV,YAAcmkB,EAAankB,WAAaukB,EAAW,CAC5D,IACIC,EACAtrC,EAFAurC,EAAqBN,EAAajxB,YAGtC,GAAIixB,EAAa/0D,OAAOkhC,KAAM,CAE1B6zB,EAAahxB,OACV9N,GAAGo/B,GACH3jC,SAASqjC,EAAa/0D,OAAO2pC,uBAEhCorB,EAAajzB,UAEbizB,EAAajiB,YAAciiB,EAAav3B,WAAW,GAAGpI,WACtDigC,EAAqBN,EAAajxB,aAGpC,IAAMwxB,EAAkBP,EAAahxB,OAClC9N,GAAGo/B,GACH1+B,QAFqB,6BAEgByE,EAAOwV,UAFvB,MAGrB3a,GAAG,GACHr1B,QACG20D,EAAkBR,EAAahxB,OAClC9N,GAAGo/B,GACH7+B,QAFqB,6BAEgB4E,EAAOwV,UAFvB,MAGrB3a,GAAG,GACHr1B,QAEDw0D,OAD6B,IAApBE,EACQC,OACmB,IAApBA,EACCD,EACRC,EAAkBF,GAAuBA,EAAqBC,EAErEP,EAAa/0D,OAAO+lC,eAAiB,EAAIwvB,EAAkBF,EACpDE,EAAkBF,EAAqBA,EAAqBC,EACpDC,EAEAD,EAEnBxrC,EAAYsR,EAAO0I,YAAc1I,EAAO4V,cAAgB,OAAS,YAGjElnB,GADAsrC,EAAiBh6B,EAAOwV,WACKxV,EAAO4V,cAAgB,OAAS,OAE3DmkB,IACFC,GAAgC,SAAdtrC,EAAuBorC,GAAoB,EAAIA,GAIjEH,EAAa3kB,sBACb2kB,EAAa3kB,qBAAqBjjD,QAAQioE,GAAkB,IAExDL,EAAa/0D,OAAOilC,eAEpBmwB,EADEA,EAAiBC,EACFD,EAAiB5mE,KAAK4N,MAAMsqC,EAAgB,GAAK,EAEjD0uB,EAAiB5mE,KAAK4N,MAAMsqC,EAAgB,GAAK,EAGpE0uB,EAAiBC,GACjBN,EAAa/0D,OAAO+lC,eAItBgvB,EAAalxB,QAAQuxB,EAAgBjjB,EAAU,OAAIziB,IAKvD,IAAI8lC,EAAmB,EACjBC,EAAmBr6B,EAAOp7B,OAAO00D,OAAOM,sBAa9C,GAXI55B,EAAOp7B,OAAO0mC,cAAgB,IAAMtL,EAAOp7B,OAAOilC,iBACpDuwB,EAAmBp6B,EAAOp7B,OAAO0mC,eAG9BtL,EAAOp7B,OAAO00D,OAAOgB,uBACxBF,EAAmB,GAGrBA,EAAmBhnE,KAAK4N,MAAMo5D,GAE9BT,EAAahxB,OAAOvS,YAAYikC,GAE9BV,EAAa/0D,OAAOkhC,MACnB6zB,EAAa/0D,OAAOwsC,SAAWuoB,EAAa/0D,OAAOwsC,QAAQ1O,QAE5D,IAAK,IAAI70C,EAAI,EAAGA,EAAIusE,EAAkBvsE,GAAK,EACzC8rE,EAAav3B,WACVzqB,SADH,8BACyCqoB,EAAOwV,UAAY3nD,GAD5D,MAEGkoC,SAASskC,QAGd,IAAK,IAAIxsE,EAAI,EAAGA,EAAIusE,EAAkBvsE,GAAK,EACzC8rE,EAAahxB,OAAO9N,GAAGmF,EAAOwV,UAAY3nD,GAAGkoC,SAASskC,MC9KxDE,GAAa,CACjB7a,EADiBwD,EjBwbJ,CACb91D,KAAM,aACNwX,OAAQ,CACNigD,WAAY,CACVniB,SAAS,EACTqiB,gBAAgB,EAChBI,QAAQ,EACRD,aAAa,EACbG,YAAa,EACbP,aAAc,YACdmB,eAAgB,KAChBC,cAAe,OAGnBhwD,OAda,WAgBXmnC,EADenwC,KACW,CACxB23D,WAAY,CACVniB,SAAS,EACT0gB,eAAgB90C,IAChB+0C,yBAAqB/uB,EACrBgvB,kBAAmB,GAEnBpI,OAAQiI,EAAWjI,OACnBD,QAASkI,EAAWlI,QACpBwG,OAAQ0B,EAAW1B,OACnBiD,iBAAkBvB,EAAWuB,iBAC7BE,iBAAkBzB,EAAWyB,iBAC7BmB,cAAe5C,EAAW4C,cAC1BC,cAAe7C,EAAW6C,kBAIhC51D,GAAI,CACFga,KADE,SACG41B,IACEA,EAAOp7B,OAAOigD,WAAWniB,SAAW1C,EAAOp7B,OAAO2hC,SACrDvG,EAAO6kB,WAAW5J,UAEhBjb,EAAOp7B,OAAOigD,WAAWniB,SAAS1C,EAAO6kB,WAAW3J,UAE1D9Z,QAPE,SAOMpB,GACFA,EAAOp7B,OAAO2hC,SAChBvG,EAAO6kB,WAAW3J,SAEhBlb,EAAO6kB,WAAWniB,SAAS1C,EAAO6kB,WAAW5J,aC9WxC,CACb7tD,KAAM,aACNwX,OAAQ,CACNmmC,WAAY,CACVC,OAAQ,KACRC,OAAQ,KAERuvB,aAAa,EACbjU,cAAe,yBACf6C,YAAa,uBACbzC,UAAW,uBAGfzwD,OAba,WAeXmnC,EADenwC,KACW,CACxB69C,WAAUza,EAAA,GACL81B,MAITh2D,GAAI,CACFga,KADE,SACG41B,GACHA,EAAO+K,WAAW3gC,OAClB41B,EAAO+K,WAAWoF,UAEpBsqB,OALE,SAKKz6B,GACLA,EAAO+K,WAAWoF,UAEpBuqB,SARE,SAQO16B,GACPA,EAAO+K,WAAWoF,UAEpB/O,QAXE,SAWMpB,GACNA,EAAO+K,WAAW3J,WAEpBu5B,iBAAkB,SAAC36B,GACjB,IAAA46B,EAA6B56B,EAAO+K,WAA5B0b,EAARmU,EAAQnU,QAASC,EAAjBkU,EAAiBlU,QACbD,GACFA,EAAQzmB,EAAO0C,QAAU,cAAgB,YAAY1C,EAAOp7B,OAAOmmC,WAAW4b,WAE5ED,GACFA,EAAQ1mB,EAAO0C,QAAU,cAAgB,YAAY1C,EAAOp7B,OAAOmmC,WAAW4b,YAGlF4M,MAvBE,SAuBIvzB,EAAQjmB,GACZ,IAAA8gD,EAA6B76B,EAAO+K,WAA5B0b,EAARoU,EAAQpU,QAASC,EAAjBmU,EAAiBnU,QACXoU,EAAW/gD,EAAE1d,OACnB,GACE2jC,EAAOp7B,OAAOmmC,WAAWyvB,cACxB5tE,EAAEkuE,GAAUttE,GAAGk5D,KACf95D,EAAEkuE,GAAUttE,GAAGi5D,GAChB,CACA,GACEzmB,EAAOgnB,YACPhnB,EAAOp7B,OAAOoiD,YACdhnB,EAAOp7B,OAAOoiD,WAAWgC,YACxBhpB,EAAOgnB,WAAW3mC,KAAOy6C,GAAY96B,EAAOgnB,WAAW3mC,GAAGqW,SAASokC,IAEpE,OACF,IAAIC,EACAtU,EACFsU,EAAWtU,EAAQnwB,SAAS0J,EAAOp7B,OAAOmmC,WAAWqe,aAC5C1C,IACTqU,EAAWrU,EAAQpwB,SAAS0J,EAAOp7B,OAAOmmC,WAAWqe,eAEtC,IAAb2R,EACF/6B,EAAOiB,KAAK,kBAEZjB,EAAOiB,KAAK,kBAEVwlB,GACFA,EAAQ9vB,YAAYqJ,EAAOp7B,OAAOmmC,WAAWqe,aAE3C1C,GACFA,EAAQ/vB,YAAYqJ,EAAOp7B,OAAOmmC,WAAWqe,iBCkIxC,CACbh8D,KAAM,aACNwX,OAAQ,CACNoiD,WAAY,CACV3mC,GAAI,KACJwoC,cAAe,OACfG,WAAW,EACXwR,aAAa,EACb7R,aAAc,KACdI,kBAAmB,KACnBD,eAAgB,KAChBN,aAAc,KACdF,qBAAqB,EACrBr7D,KAAM,UACNo6D,gBAAgB,EAChBE,mBAAoB,EACpBW,sBAAuB,SAAC8S,GAAD,OAAYA,GACnC5S,oBAAqB,SAAC4S,GAAD,OAAYA,GACjCpS,YAAa,2BACbnB,kBAAmB,kCACnByB,cAAe,qBACfjB,aAAc,4BACdE,WAAY,0BACZiB,YAAa,2BACbb,qBAAsB,qCACtBY,yBAA0B,yCAC1BF,eAAgB,8BAChBtC,UAAW,2BAGfzwD,OA9Ba,WAgCXmnC,EADenwC,KACW,CACxB85D,WAAU12B,EAAA,CACRk3B,mBAAoB,GACjBT,MAIT32D,GAAI,CACFga,KADE,SACG41B,GACHA,EAAOgnB,WAAW58C,OAClB41B,EAAOgnB,WAAWlpD,SAClBkiC,EAAOgnB,WAAW7W,UAEpB8qB,kBANE,SAMgBj7B,IACZA,EAAOp7B,OAAOkhC,WAEqB,IAArB9F,EAAOqU,YADvBrU,EAAOgnB,WAAW7W,UAKtB+qB,gBAbE,SAacl7B,GACTA,EAAOp7B,OAAOkhC,MACjB9F,EAAOgnB,WAAW7W,UAGtBgrB,mBAlBE,SAkBiBn7B,GACbA,EAAOp7B,OAAOkhC,OAChB9F,EAAOgnB,WAAWlpD,SAClBkiC,EAAOgnB,WAAW7W,WAGtBirB,qBAxBE,SAwBmBp7B,GACdA,EAAOp7B,OAAOkhC,OACjB9F,EAAOgnB,WAAWlpD,SAClBkiC,EAAOgnB,WAAW7W,WAGtB/O,QA9BE,SA8BMpB,GACNA,EAAOgnB,WAAW5lB,WAEpBu5B,iBAAkB,SAAC36B,GACjB,IAAQkC,EAAQlC,EAAOgnB,WAAf9kB,IACJA,GACFA,EAAIlC,EAAO0C,QAAU,cAAgB,YAAY1C,EAAOp7B,OAAOoiD,WAAWL,YAG9E4M,MAvCE,SAuCIvzB,EAAQjmB,GACZ,IAAM+gD,EAAW/gD,EAAE1d,OACnB,GACE2jC,EAAOp7B,OAAOoiD,WAAW3mC,IACzB2f,EAAOp7B,OAAOoiD,WAAWwT,aACzBx6B,EAAOgnB,WAAW9kB,IAAI30C,OAAS,IAC9BX,EAAEkuE,GAAUxkC,SAAS0J,EAAOp7B,OAAOoiD,WAAW4B,aAC/C,CACA,GACE5oB,EAAO+K,aACL/K,EAAO+K,WAAWC,QAAU8vB,IAAa96B,EAAO+K,WAAWC,QAC1DhL,EAAO+K,WAAWE,QAAU6vB,IAAa96B,EAAO+K,WAAWE,QAE9D,QAEe,IADAjL,EAAOgnB,WAAW9kB,IAAI5L,SAAS0J,EAAOp7B,OAAOoiD,WAAWoC,aAEvEppB,EAAOiB,KAAK,kBAEZjB,EAAOiB,KAAK,kBAEdjB,EAAOgnB,WAAW9kB,IAAIvL,YAAYqJ,EAAOp7B,OAAOoiD,WAAWoC,iBC9FpD,CACbh8D,KAAM,YACNwX,OAAQ,CACN0kD,UAAW,CACTjpC,GAAI,KACJkpC,SAAU,OACVl5D,MAAM,EACN26D,WAAW,EACXP,eAAe,EACf9D,UAAW,wBACXmE,UAAW,0BAGf50D,OAba,WAeXmnC,EADenwC,KACW,CACxBo8D,UAASh5B,EAAA,CACP8S,WAAW,EACXqiB,QAAS,KACT6E,YAAa,MACVjB,OAITj5D,GAAI,CACFga,KADE,SACG41B,GACHA,EAAOspB,UAAUl/C,OACjB41B,EAAOspB,UAAUxkB,aACjB9E,EAAOspB,UAAUthB,gBAEnBmI,OANE,SAMKnQ,GACLA,EAAOspB,UAAUxkB,cAEnB7E,OATE,SASKD,GACLA,EAAOspB,UAAUxkB,cAEnBnD,eAZE,SAYa3B,GACbA,EAAOspB,UAAUxkB,cAEnBkD,aAfE,SAeWhI,GACXA,EAAOspB,UAAUthB,gBAEnBpB,cAlBE,SAkBY5G,EAAQvnC,GACpBunC,EAAOspB,UAAU1iB,cAAcnuC,IAEjCkiE,iBAAkB,SAAC36B,GACjB,IAAQkC,EAAQlC,EAAOspB,UAAfpnB,IACJA,GACFA,EAAIlC,EAAO0C,QAAU,cAAgB,YAAY1C,EAAOp7B,OAAO0kD,UAAU3C,YAG7EvlB,QA3BE,SA2BMpB,GACNA,EAAOspB,UAAUloB,aCnSR,CACbh0C,KAAM,WACNwX,OAAQ,CACNymD,SAAU,CACR3oB,SAAS,IAGbxsC,OAPa,WASXmnC,EADenwC,KACW,CACxBm+D,SAAQ/6B,EAAA,GACH26B,OAIT76D,GAAI,CACFkxD,WADE,SACSthB,GACJA,EAAOp7B,OAAOymD,SAAS3oB,UAC5B1C,EAAOp7B,OAAO8iC,qBAAsB,EACpC1H,EAAOwa,eAAe9S,qBAAsB,IAE9Ct9B,KANE,SAMG41B,GACEA,EAAOp7B,OAAOymD,SAAS3oB,SAC5B1C,EAAOqrB,SAASrjB,gBAElBA,aAVE,SAUWhI,GACNA,EAAOp7B,OAAOymD,SAAS3oB,SAC5B1C,EAAOqrB,SAASrjB,gBAElBpB,cAdE,SAcY5G,EAAQvnC,GACfunC,EAAOp7B,OAAOymD,SAAS3oB,SAC5B1C,EAAOqrB,SAASzkB,cAAcnuC,MCkcrB,CACbrL,KAAM,OACNwX,OAAQ,CACNonD,KAAM,CACJtpB,SAAS,EACT8pB,SAAU,EACVjR,SAAU,EACVzkB,QAAQ,EACRy1B,eAAgB,wBAChBqC,iBAAkB,wBAGtB14D,OAZa,WAaX,IAAM8pC,EAAS9yC,KAEfmwC,EAAkB2C,EAAQ,CACxBgsB,KAAI17B,EAAA,CACFoS,SAAS,EACTze,MAAO,EACPmnC,aAAc,EACdqB,WAAW,EACXR,QAAS,CACPlL,cAAUzsB,EACVw4B,gBAAYx4B,EACZy4B,iBAAaz4B,EACb+3B,cAAU/3B,EACVg4B,kBAAch4B,EACdk4B,SAAU,GAEZ3P,MAAO,CACLzZ,eAAW9O,EACX+O,aAAS/O,EACTuP,cAAUvP,EACV0P,cAAU1P,EACV44B,UAAM54B,EACN84B,UAAM94B,EACN64B,UAAM74B,EACN+4B,UAAM/4B,EACNrkC,WAAOqkC,EACP9M,YAAQ8M,EACR4P,YAAQ5P,EACR6P,YAAQ7P,EACRu4B,aAAc,GACdS,eAAgB,IAElBtkB,SAAU,CACRt0C,OAAG4/B,EACH9hC,OAAG8hC,EACHi5B,mBAAej5B,EACfk5B,mBAAel5B,EACfze,cAAUye,IAETm3B,MAIP,IAAIxnC,EAAQ,EACZruB,OAAOC,eAAemqC,EAAOgsB,KAAM,QAAS,CAC1CjhD,IAD0C,WAExC,OAAOkZ,GAET9R,IAJ0C,SAItCnlB,GACF,GAAIi3B,IAAUj3B,EAAO,CACnB,IAAMyvD,EAAUzc,EAAOgsB,KAAKC,QAAQI,SAChCrsB,EAAOgsB,KAAKC,QAAQI,SAAS,QAC7B/3B,EACE+pB,EAAUre,EAAOgsB,KAAKC,QAAQlL,SAChC/gB,EAAOgsB,KAAKC,QAAQlL,SAAS,QAC7BzsB,EACJ0L,EAAOiB,KAAK,aAAcj0C,EAAOyvD,EAAS4B,GAE5Cp6B,EAAQj3B,MAIdoD,GAAI,CACFga,KADE,SACG41B,GACCA,EAAOp7B,OAAOonD,KAAKtpB,SACrB1C,EAAOgsB,KAAK9Q,UAGhB9Z,QANE,SAMMpB,GACNA,EAAOgsB,KAAK/Q,WAEdogB,WATE,SASSr7B,EAAQjmB,GACZimB,EAAOgsB,KAAKtpB,SACjB1C,EAAOgsB,KAAKzpB,aAAaxoB,IAE3BuhD,SAbE,SAaOt7B,EAAQjmB,GACVimB,EAAOgsB,KAAKtpB,SACjB1C,EAAOgsB,KAAK/jB,WAAWluB,IAEzBwhD,UAjBE,SAiBQv7B,EAAQjmB,IAEbimB,EAAO2C,WACR3C,EAAOp7B,OAAOonD,KAAKtpB,SACnB1C,EAAOgsB,KAAKtpB,SACZ1C,EAAOp7B,OAAOonD,KAAKl1B,QAEnBkJ,EAAOgsB,KAAKl1B,OAAO/c,IAGvBsf,cA3BE,SA2BY2G,GACRA,EAAOgsB,KAAKtpB,SAAW1C,EAAOp7B,OAAOonD,KAAKtpB,SAC5C1C,EAAOgsB,KAAK+B,mBAGhByN,YAhCE,SAgCUx7B,GACNA,EAAOgsB,KAAKtpB,SAAW1C,EAAOp7B,OAAOonD,KAAKtpB,SAAW1C,EAAOp7B,OAAO2hC,SACrEvG,EAAOgsB,KAAK+B,qBC9cL,CACb3gE,KAAM,OACNwX,OAAQ,CACN3B,KAAM,CACJw4D,aAAa,EACb/4B,SAAS,EACT0tB,cAAc,EACdC,mBAAoB,EACpBqL,uBAAuB,EACvBhL,iBAAkB,GAElBnB,aAAc,cACdE,aAAc,sBACdD,YAAa,qBACbM,eAAgB,0BAGpB55D,OAjBa,WAmBXmnC,EADenwC,KACW,CACxB+V,KAAIqtB,EAAA,CACF6/B,oBAAoB,GACjBhB,OAIT/+D,GAAI,CACFkxD,WADE,SACSthB,GACLA,EAAOp7B,OAAO3B,KAAKy/B,SAAW1C,EAAOp7B,OAAO8oC,gBAC9C1N,EAAOp7B,OAAO8oC,eAAgB,IAGlCtjC,KANE,SAMG41B,GACCA,EAAOp7B,OAAO3B,KAAKy/B,UAAY1C,EAAOp7B,OAAOkhC,MAAuC,IAA/B9F,EAAOp7B,OAAO4nC,eACjExM,EAAOp7B,OAAO3B,KAAKw4D,YACrBz7B,EAAO/8B,KAAKutD,oBAEZxwB,EAAO/8B,KAAKw9C,SAIlBkb,OAfE,SAeK37B,GACDA,EAAOp7B,OAAO6iC,WAAazH,EAAOp7B,OAAOklC,gBAC3C9J,EAAO/8B,KAAKw9C,QAGhBmb,sDAAuD,SAAkB57B,GACnEA,EAAOp7B,OAAO3B,KAAKy/B,SACrB1C,EAAO/8B,KAAKw9C,QAGhBnW,gBAzBE,SAyBctK,GACVA,EAAOp7B,OAAO3B,KAAKy/B,UAEnB1C,EAAOp7B,OAAO3B,KAAKy4D,wBACjB17B,EAAOp7B,OAAO3B,KAAKy4D,wBAA0B17B,EAAO/8B,KAAKktD,qBAE3DnwB,EAAO/8B,KAAKw9C,QAIlBpnB,cAnCE,SAmCY2G,GACRA,EAAOp7B,OAAO3B,KAAKy/B,UAAY1C,EAAOp7B,OAAO3B,KAAKy4D,uBACpD17B,EAAO/8B,KAAKw9C,QAGhB+a,YAxCE,SAwCUx7B,GACV,IAAA2f,EAOI3f,EAAOp7B,OANT3B,EADF08C,EACE18C,KACAsjC,EAFFoZ,EAEEpZ,QACAoB,EAHFgY,EAGEhY,sBACAD,EAJFiY,EAIEjY,oBACA7B,EALF8Z,EAKE9Z,oBACAyB,EANFqY,EAMErY,gBAGArkC,EAAKy/B,UACJ6D,IACGoB,GAAyBD,KACxB7B,GAA2C,IAApByB,KAE5BtH,EAAO/8B,KAAKw9C,UCxKL,CACbrzD,KAAM,aACNwX,OAAQ,CACN2sD,WAAY,CACVI,aAASr9B,EACTw9B,SAAS,EACTD,GAAI,UAGR37D,OATa,WAWXmnC,EADenwC,KACW,CACxBqkE,WAAUjhC,EAAA,CACRqhC,QAHWzkE,KAGK0X,OAAO2sD,WAAWI,SAC/BZ,OAIT3gE,GAAI,CACF+/C,OADE,SACKnQ,GACAA,EAAOuxB,WAAWI,SACnB3xB,EAAOuxB,WAAWC,SACpBxxB,EAAOuxB,WAAWC,YAASl9B,SACpB0L,EAAOuxB,WAAWC,SAG7BvxB,OARE,SAQKD,GACAA,EAAOuxB,WAAWI,SACnB3xB,EAAOuxB,WAAWC,SACpBxxB,EAAOuxB,WAAWC,YAASl9B,SACpB0L,EAAOuxB,WAAWC,SAG7B7vB,eAfE,SAea3B,GACRA,EAAOuxB,WAAWI,SACnB3xB,EAAOuxB,WAAWC,SACpBxxB,EAAOuxB,WAAWC,YAASl9B,SACpB0L,EAAOuxB,WAAWC,SAG7BxpB,aAtBE,SAsBWhI,EAAQgG,EAAWmQ,GACzBnW,EAAOuxB,WAAWI,SACvB3xB,EAAOuxB,WAAWvpB,aAAahC,EAAWmQ,IAE5CvP,cA1BE,SA0BY5G,EAAQvnC,EAAU09C,GACzBnW,EAAOuxB,WAAWI,SACvB3xB,EAAOuxB,WAAW3qB,cAAcnuC,EAAU09C,MCqEjC,CACb/oD,KAAM,OACNwX,OAAQ,CACNquD,KAAM,CACJvwB,SAAS,EACTm5B,kBAAmB,sBACnBvI,iBAAkB,iBAClBF,iBAAkB,aAClBC,kBAAmB,0BACnBF,iBAAkB,yBAClBW,wBAAyB,wBACzBQ,kBAAmB,+BACnBL,iBAAkB,KAClBD,gCAAiC,KACjCG,2BAA4B,KAC5BC,UAAW,UAGfl+D,OAlBa,WAoBXmnC,EADenwC,KACW,CACxB+lE,KAAI3iC,EAAA,GACC0hC,GADD,CAEFyB,WAAY7mE,EAAC,gBAJFM,KAKc0X,OAAOquD,KAAK4I,kBADxB,2DAMnBzrE,GAAI,CACF0rE,UADE,SACQ97B,GACHA,EAAOp7B,OAAOquD,KAAKvwB,UACxB1C,EAAOizB,KAAK7oD,OACZ41B,EAAOizB,KAAKS,qBAEd+G,OANE,SAMKz6B,GACAA,EAAOp7B,OAAOquD,KAAKvwB,SACxB1C,EAAOizB,KAAKS,oBAEdgH,SAVE,SAUO16B,GACFA,EAAOp7B,OAAOquD,KAAKvwB,SACxB1C,EAAOizB,KAAKS,oBAEdqI,iBAdE,SAce/7B,GACVA,EAAOp7B,OAAOquD,KAAKvwB,SACxB1C,EAAOizB,KAAKU,oBAEdvyB,QAlBE,SAkBMpB,GACDA,EAAOp7B,OAAOquD,KAAKvwB,SACxB1C,EAAOizB,KAAK7xB,aC/LH,CACbh0C,KAAM,UACNwX,OAAQ,CACN2tB,QAAS,CACPmQ,SAAS,EACTyyB,KAAM,GACN3iC,cAAc,EACdviB,IAAK,WAGT/Z,OAVa,WAYXmnC,EADenwC,KACW,CACxBqlC,QAAOjC,EAAA,GACFikC,OAITnkE,GAAI,CACFga,KADE,SACG41B,GACCA,EAAOp7B,OAAO2tB,QAAQmQ,SACxB1C,EAAOzN,QAAQnoB,QAGnBg3B,QANE,SAMMpB,GACFA,EAAOp7B,OAAO2tB,QAAQmQ,SACxB1C,EAAOzN,QAAQ6O,WAGnB46B,2CAA4C,SAACh8B,GACvCA,EAAOzN,QAAQ6N,aACjBJ,EAAOzN,QAAQ0iC,WAAWj1B,EAAOp7B,OAAO2tB,QAAQtiB,IAAK+vB,EAAO0I,cAGhE8yB,YAhBE,SAgBUx7B,GACNA,EAAOzN,QAAQ6N,aAAeJ,EAAOp7B,OAAO2hC,SAC9CvG,EAAOzN,QAAQ0iC,WAAWj1B,EAAOp7B,OAAO2tB,QAAQtiB,IAAK+vB,EAAO0I,gBClErD,CACbt7C,KAAM,kBACNwX,OAAQ,CACN4vD,eAAgB,CACd9xB,SAAS,EACTlQ,cAAc,EACdmjC,YAAY,IAGhBz/D,OATa,WAWXmnC,EADenwC,KACW,CACxBsnE,eAAclkC,EAAA,CACZ8P,aAAa,GACVm1B,OAITnlE,GAAI,CACFga,KADE,SACG41B,GACCA,EAAOp7B,OAAO4vD,eAAe9xB,SAC/B1C,EAAOw0B,eAAepqD,QAG1Bg3B,QANE,SAMMpB,GACFA,EAAOp7B,OAAO4vD,eAAe9xB,SAC/B1C,EAAOw0B,eAAepzB,WAG1B46B,2CAA4C,SAACh8B,GACvCA,EAAOw0B,eAAep0B,aACxBJ,EAAOw0B,eAAekB,WAG1B8F,YAhBE,SAgBUx7B,GACNA,EAAOw0B,eAAep0B,aAAeJ,EAAOp7B,OAAO2hC,SACrDvG,EAAOw0B,eAAekB,aCqCf,CACbtoE,KAAM,WACNwX,OAAQ,CACN6mC,SAAU,CACR/I,SAAS,EACT/pC,MAAO,IACPs9D,mBAAmB,EACnBI,sBAAsB,EACtBL,iBAAiB,EACjBD,kBAAkB,EAClBS,mBAAmB,IAGvBtgE,OAba,WAeXmnC,EADenwC,KACW,CACxBu+C,SAAQnb,EAAA,GACHslC,GADG,CAENlqB,SAAS,EACT14B,QAAQ,OAId5iB,GAAI,CACFga,KADE,SACG41B,GACCA,EAAOp7B,OAAO6mC,SAAS/I,UACzB1C,EAAOyL,SAAS93C,QACCu+B,IACRpB,iBAAiB,mBAAoBkP,EAAOyL,SAASyqB,oBAC9Dl2B,EAAOyL,SAAS8qB,sBAGpB0F,sBATE,SASoBj8B,EAAQoK,EAAOmM,GAC/BvW,EAAOyL,SAASC,UACd6K,IAAavW,EAAOp7B,OAAO6mC,SAAS4qB,qBACtCr2B,EAAOyL,SAAS/3B,MAAM02B,GAEtBpK,EAAOyL,SAASqa,SAItBoW,gBAlBE,SAkBcl8B,GACVA,EAAOyL,SAASC,UACd1L,EAAOp7B,OAAO6mC,SAAS4qB,qBACzBr2B,EAAOyL,SAASqa,OAEhB9lB,EAAOyL,SAAS/3B,UAItB4nD,SA3BE,SA2BOt7B,GAELA,EAAOp7B,OAAO2hC,SACdvG,EAAOyL,SAASz4B,SACfgtB,EAAOp7B,OAAO6mC,SAAS4qB,sBAExBr2B,EAAOyL,SAASE,OAGpBvK,QApCE,SAoCMpB,GACNA,EAAOyL,SAASgrB,oBACZz2B,EAAOyL,SAASC,SAClB1L,EAAOyL,SAASqa,OAED5zB,IACRnB,oBAAoB,mBAAoBiP,EAAOyL,SAASyqB,uBCxKxD,CACb9oE,KAAM,cACNwX,OAAQ,CACNgyD,WAAY,CACVC,WAAW,IAGf3gE,OAPa,WASXmnC,EADenwC,KACW,CACxB0pE,WAAUtmC,EAAA,GACLomC,OAITtmE,GAAI,CACFkxD,WADE,SACSthB,GACT,GAA6B,SAAzBA,EAAOp7B,OAAO4a,OAAlB,CACAwgB,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,QACA,IAAMsT,EAAkB,CACtBjW,cAAe,EACfyB,gBAAiB,EACjBpC,eAAgB,EAChBjD,qBAAqB,EACrBoF,aAAc,EACdF,kBAAkB,GAEpBlc,EAAOsP,EAAOp7B,OAAQ28C,GACtB7wB,EAAOsP,EAAOwa,eAAgB+G,KAEhCvZ,aAfE,SAeWhI,GACkB,SAAzBA,EAAOp7B,OAAO4a,QAClBwgB,EAAO42B,WAAW5uB,gBAEpBpB,cAnBE,SAmBY5G,EAAQvnC,GACS,SAAzBunC,EAAOp7B,OAAO4a,QAClBwgB,EAAO42B,WAAWhwB,cAAcnuC,MC6EvB,CACbrL,KAAM,cACNwX,OAAQ,CACNsyD,WAAY,CACVK,cAAc,EACdH,QAAQ,EACRU,aAAc,GACdC,YAAa,MAGjB7hE,OAVa,WAYXmnC,EADenwC,KACW,CACxBgqE,WAAU5mC,EAAA,GACL0mC,OAIT5mE,GAAI,CACFkxD,WADE,SACSthB,GACT,GAA6B,SAAzBA,EAAOp7B,OAAO4a,OAAlB,CACAwgB,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,QACAjO,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,MACA,IAAMsT,EAAkB,CACtBjW,cAAe,EACfyB,gBAAiB,EACjBpC,eAAgB,EAChBjD,qBAAqB,EACrBJ,gBAAiB,EACjBwF,aAAc,EACdjD,gBAAgB,EAChB+C,kBAAkB,GAEpBlc,EAAOsP,EAAOp7B,OAAQ28C,GACtB7wB,EAAOsP,EAAOwa,eAAgB+G,KAEhCvZ,aAlBE,SAkBWhI,GACkB,SAAzBA,EAAOp7B,OAAO4a,QAClBwgB,EAAOk3B,WAAWlvB,gBAEpBpB,cAtBE,SAsBY5G,EAAQvnC,GACS,SAAzBunC,EAAOp7B,OAAO4a,QAClBwgB,EAAOk3B,WAAWtwB,cAAcnuC,MCpHvB,CACbrL,KAAM,cACNwX,OAAQ,CACNyzD,WAAY,CACVd,cAAc,EACde,eAAe,IAGnBpiE,OARa,WAUXmnC,EADenwC,KACW,CACxBmrE,WAAU/nC,EAAA,GACL8nC,OAIThoE,GAAI,CACFkxD,WADE,SACSthB,GACT,GAA6B,SAAzBA,EAAOp7B,OAAO4a,OAAlB,CACAwgB,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,QACAjO,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,MACA,IAAMsT,EAAkB,CACtBjW,cAAe,EACfyB,gBAAiB,EACjBpC,eAAgB,EAChBjD,qBAAqB,EACrBoF,aAAc,EACdF,kBAAkB,GAEpBlc,EAAOsP,EAAOp7B,OAAQ28C,GACtB7wB,EAAOsP,EAAOwa,eAAgB+G,KAEhCvZ,aAhBE,SAgBWhI,GACkB,SAAzBA,EAAOp7B,OAAO4a,QAClBwgB,EAAOq4B,WAAWrwB,gBAEpBpB,cApBE,SAoBY5G,EAAQvnC,GACS,SAAzBunC,EAAOp7B,OAAO4a,QAClBwgB,EAAOq4B,WAAWzxB,cAAcnuC,MCrCvB,CACbrL,KAAM,mBACNwX,OAAQ,CACN+zD,gBAAiB,CACfC,OAAQ,GACRI,QAAS,EACTH,MAAO,IACP50C,MAAO,EACPtZ,SAAU,EACV4sD,cAAc,IAGlBrhE,OAZa,WAcXmnC,EADenwC,KACW,CACxByrE,gBAAeroC,EAAA,GACVooC,OAITtoE,GAAI,CACFkxD,WADE,SACSthB,GACoB,cAAzBA,EAAOp7B,OAAO4a,SAElBwgB,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,aACAjO,EAAO/J,WAAWvoC,KAAQsyC,EAAOp7B,OAAOqpC,uBAAxC,MAEAjO,EAAOp7B,OAAO8iC,qBAAsB,EACpC1H,EAAOwa,eAAe9S,qBAAsB,IAE9CM,aAVE,SAUWhI,GACkB,cAAzBA,EAAOp7B,OAAO4a,QAClBwgB,EAAO24B,gBAAgB3wB,gBAEzBpB,cAdE,SAcY5G,EAAQvnC,GACS,cAAzBunC,EAAOp7B,OAAO4a,QAClBwgB,EAAO24B,gBAAgB/xB,cAAcnuC,MC8D5B,CACbrL,KAAM,SACNwX,OAAQ,CACN00D,OAAQ,CACNt5B,OAAQ,KACRs6B,sBAAsB,EACtBR,iBAAkB,EAClBF,sBAAuB,4BACvBH,qBAAsB,4BAG1BvjE,OAXa,WAaXmnC,EADenwC,KACW,CACxBosE,OAAMhpC,EAAA,CACJ0P,OAAQ,KACRI,aAAa,GACVg5B,OAIThpE,GAAI,CACFkxD,WADE,SACSthB,GACT,IAAQs5B,EAAWt5B,EAAOp7B,OAAlB00D,OACHA,GAAWA,EAAOt5B,SACvBA,EAAOs5B,OAAOlvD,OACd41B,EAAOs5B,OAAOnpB,QAAO,KAEvBqrB,YAPE,SAOUx7B,GACLA,EAAOs5B,OAAOt5B,QACnBA,EAAOs5B,OAAOnpB,UAEhBA,OAXE,SAWKnQ,GACAA,EAAOs5B,OAAOt5B,QACnBA,EAAOs5B,OAAOnpB,UAEhBlQ,OAfE,SAeKD,GACAA,EAAOs5B,OAAOt5B,QACnBA,EAAOs5B,OAAOnpB,UAEhBxO,eAnBE,SAmBa3B,GACRA,EAAOs5B,OAAOt5B,QACnBA,EAAOs5B,OAAOnpB,UAEhBvJ,cAvBE,SAuBY5G,EAAQvnC,GACpB,IAAMkhE,EAAe35B,EAAOs5B,OAAOt5B,OAC9B25B,GACLA,EAAa/yB,cAAcnuC,IAE7B0jE,cA5BE,SA4BYn8B,GACZ,IAAM25B,EAAe35B,EAAOs5B,OAAOt5B,OAC9B25B,GACD35B,EAAOs5B,OAAOE,eAAiBG,GACjCA,EAAav4B,c1F49cnB,O2FhsdFpR,EAAOuvB,IAAIgb,I3FgsdFvqC;;;;;;A4FpsdT,SAAA/+B,EAAAC,GACA,iBAAAC,SAAA,oBAAAC,OAAAF,EAAAC,SACA,mBAAAE,QAAAA,OAAAC,IAAAD,OAAA,CAAA,WAAAH,GACAA,GAAAD,EAAA,oBAAA8+B,WAAAA,WAAA9+B,GAAAM,MAAA6qE,MAAA,IAHA,CAIAlvE,MAAA,SAAAiE,GAAA,aAEA,MAAAkrE,EAAA,MAkCAC,EAAA,IAiCAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAEAC,EAAA,KAEAC,EAAA,KACAC,EAAA,KAEAC,EAAA,KAEAC,EAAA,KAGAC,EAAA,KAEAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAIAC,EAAA,KAEAC,EAAA,KACAC,EAAA,KAIAC,EAAA,KACAC,EAAA,KAOAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MAEAC,EAAA,MACAC,EAAA,MAiCAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAIAC,EAAA,IACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAEAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAMAC,GAAA,KAeAC,GAAA,MACAC,GAAA,MASAC,GAAA,SAKA,MAAAC,GACAC,iBAAA9yE,EAAAuqC,QACAlD,IAAApnC,KAAA2K,aAAA3K,KAAA2K,WAAA,IACA,MAAAmoE,EAAA9yE,KAAA2K,gBAEAy8B,IAAA0rC,EAAA/yE,KACA+yE,EAAA/yE,GAAA,KAGA,IAAA+yE,EAAA/yE,GAAA8E,QAAAylC,IACAwoC,EAAA/yE,GAAAS,KAAA8pC,GAIAuoC,iBAAA9yE,EAAAuqC,GACA,QAAAlD,IAAApnC,KAAA2K,WAAA,OAAA,EACA,MAAAmoE,EAAA9yE,KAAA2K,WACA,YAAAy8B,IAAA0rC,EAAA/yE,KAAA,IAAA+yE,EAAA/yE,GAAA8E,QAAAylC,GAGAuoC,oBAAA9yE,EAAAuqC,GACA,QAAAlD,IAAApnC,KAAA2K,WAAA,OACA,MACAooE,EADA/yE,KAAA2K,WACA5K,GAEA,QAAAqnC,IAAA2rC,EAAA,CACA,MAAAz6D,EAAAy6D,EAAAluE,QAAAylC,IAEA,IAAAhyB,GACAy6D,EAAAvjE,OAAA8I,EAAA,IAKAu6D,cAAAxxE,GACA,QAAA+lC,IAAApnC,KAAA2K,WAAA,OACA,MACAooE,EADA/yE,KAAA2K,WACAtJ,EAAAtB,MAEA,QAAAqnC,IAAA2rC,EAAA,CACA1xE,EAAA8N,OAAAnP,KAEA,MAAAmkE,EAAA4O,EAAAriE,MAAA,GAEA,IAAA,IAAA/P,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAAM,EAAA4P,EAAA5P,IACAwjE,EAAAxjE,GAAAuY,KAAAlZ,KAAAqB,GAGAA,EAAA8N,OAAA,OAMA,MAAA6jE,GAAA,GAEA,IAAA,IAAAryE,EAAA,EAAAA,EAAA,IAAAA,IACAqyE,GAAAryE,IAAAA,EAAA,GAAA,IAAA,IAAAA,EAAA+lC,SAAA,IAGA,IAAAusC,GAAA,QACA,MAAAC,GAAAhtE,KAAA2F,GAAA,IACAsnE,GAAA,IAAAjtE,KAAA2F,GAEA,SAAAunE,KACA,MAAAC,EAAA,WAAAntE,KAAAkC,SAAA,EACAkrE,EAAA,WAAAptE,KAAAkC,SAAA,EACAmrE,EAAA,WAAArtE,KAAAkC,SAAA,EACAorE,EAAA,WAAAttE,KAAAkC,SAAA,EAGA,OAFA4qE,GAAA,IAAAK,GAAAL,GAAAK,GAAA,EAAA,KAAAL,GAAAK,GAAA,GAAA,KAAAL,GAAAK,GAAA,GAAA,KAAA,IAAAL,GAAA,IAAAM,GAAAN,GAAAM,GAAA,EAAA,KAAA,IAAAN,GAAAM,GAAA,GAAA,GAAA,IAAAN,GAAAM,GAAA,GAAA,KAAA,IAAAN,GAAA,GAAAO,EAAA,KAAAP,GAAAO,GAAA,EAAA,KAAA,IAAAP,GAAAO,GAAA,GAAA,KAAAP,GAAAO,GAAA,GAAA,KAAAP,GAAA,IAAAQ,GAAAR,GAAAQ,GAAA,EAAA,KAAAR,GAAAQ,GAAA,GAAA,KAAAR,GAAAQ,GAAA,GAAA,MAEAv1D,cAGA,SAAAhW,GAAAnI,EAAAqG,EAAAgS,GACA,OAAAjS,KAAAiS,IAAAhS,EAAAD,KAAAC,IAAAgS,EAAArY,IAKA,SAAA2zE,GAAA5oE,EAAAiiB,GACA,OAAAjiB,EAAAiiB,EAAAA,GAAAA,EAkBA,SAAA4mD,GAAAlsE,EAAAlC,EAAA2B,GACA,OAAA,EAAAA,GAAAO,EAAAP,EAAA3B,EA2DA,SAAAquE,GAAA7zE,GACA,OAAA,IAAAA,EAAAA,EAAA,IAAA,IAAAA,EAGA,SAAA8zE,GAAA9zE,GACA,OAAAoG,KAAAD,IAAA,EAAAC,KAAA++C,KAAA/+C,KAAAS,IAAA7G,GAAAoG,KAAA2tE,MAGA,SAAAC,GAAAh0E,GACA,OAAAoG,KAAAD,IAAA,EAAAC,KAAA4N,MAAA5N,KAAAS,IAAA7G,GAAAoG,KAAA2tE,MAiDA,IAAAE,GAAArrE,OAAAsrE,OAAA,CACA9qE,UAAA,KACAgqE,QAAAA,GACAC,QAAAA,GACAC,aAAAA,GACAnrE,MAAAA,GACAwrE,gBAAAA,GACAQ,UA3IA,SAAAzsE,EAAAwoB,EAAAC,EAAAikD,EAAAC,GACA,OAAAD,GAAA1sE,EAAAwoB,IAAAmkD,EAAAD,IAAAjkD,EAAAD,IA2IAokD,YAvIA,SAAA5sE,EAAAlC,EAAAxF,GACA,OAAA0H,IAAAlC,GACAxF,EAAA0H,IAAAlC,EAAAkC,GAEA,GAoIAksE,KAAAA,GACAW,KA3HA,SAAA7sE,EAAAlC,EAAAgvE,EAAAC,GACA,OAAAb,GAAAlsE,EAAAlC,EAAA,EAAAY,KAAAW,KAAAytE,EAAAC,KA2HAC,SAvHA,SAAAhtE,EAAAnH,EAAA,GACA,OAAAA,EAAA6F,KAAAiO,IAAAs/D,GAAAjsE,EAAA,EAAAnH,GAAAA,IAuHAo0E,WAnHA,SAAAjtE,EAAArB,EAAAgS,GACA,OAAA3Q,GAAArB,EAAA,EACAqB,GAAA2Q,EAAA,GACA3Q,GAAAA,EAAArB,IAAAgS,EAAAhS,IACAqB,GAAA,EAAA,EAAAA,IAgHAktE,aA7GA,SAAAltE,EAAArB,EAAAgS,GACA,OAAA3Q,GAAArB,EAAA,EACAqB,GAAA2Q,EAAA,GACA3Q,GAAAA,EAAArB,IAAAgS,EAAAhS,IACAqB,EAAAA,GAAAA,GAAA,EAAAA,EAAA,IAAA,KA0GAmtE,QAtGA,SAAAC,EAAAC,GACA,OAAAD,EAAA1uE,KAAA4N,MAAA5N,KAAAkC,UAAAysE,EAAAD,EAAA,KAsGAE,UAlGA,SAAAF,EAAAC,GACA,OAAAD,EAAA1uE,KAAAkC,UAAAysE,EAAAD,IAkGAG,gBA9FA,SAAAjiD,GACA,OAAAA,GAAA,GAAA5sB,KAAAkC,WA8FA4sE,aA1FA,SAAAt5D,GAIA,YAHA0rB,IAAA1rB,IAAAu3D,GAAAv3D,EAAA,YAEAu3D,GAAA,MAAAA,GAAA,YACAA,GAAA,GAAA,YAuFAgC,SApFA,SAAAC,GACA,OAAAA,EAAAhC,IAoFAiC,SAjFA,SAAAC,GACA,OAAAA,EAAAjC,IAiFAQ,aAAAA,GACAC,eAAAA,GACAE,gBAAAA,GACAuB,6BArEA,SAAAC,EAAAxtE,EAAAQ,EAAAnB,EAAA++C,GAKA,MAAA/5C,EAAAjG,KAAAiG,IACAE,EAAAnG,KAAAmG,IACAkpE,EAAAppE,EAAA7D,EAAA,GACAktE,EAAAnpE,EAAA/D,EAAA,GACAmtE,EAAAtpE,GAAArE,EAAAX,GAAA,GACAuuE,EAAArpE,GAAAvE,EAAAX,GAAA,GACAwuE,EAAAxpE,GAAArE,EAAAX,GAAA,GACAyuE,EAAAvpE,GAAAvE,EAAAX,GAAA,GACA0uE,EAAA1pE,GAAAhF,EAAAW,GAAA,GACAguE,EAAAzpE,GAAAlF,EAAAW,GAAA,GAEA,OAAAo+C,GACA,IAAA,MACAovB,EAAArwD,IAAAswD,EAAAG,EAAAF,EAAAG,EAAAH,EAAAI,EAAAL,EAAAE,GACA,MAEA,IAAA,MACAH,EAAArwD,IAAAuwD,EAAAI,EAAAL,EAAAG,EAAAF,EAAAG,EAAAJ,EAAAE,GACA,MAEA,IAAA,MACAH,EAAArwD,IAAAuwD,EAAAG,EAAAH,EAAAI,EAAAL,EAAAG,EAAAH,EAAAE,GACA,MAEA,IAAA,MACAH,EAAArwD,IAAAswD,EAAAG,EAAAF,EAAAM,EAAAN,EAAAK,EAAAN,EAAAE,GACA,MAEA,IAAA,MACAH,EAAArwD,IAAAuwD,EAAAK,EAAAN,EAAAG,EAAAF,EAAAM,EAAAP,EAAAE,GACA,MAEA,IAAA,MACAH,EAAArwD,IAAAuwD,EAAAM,EAAAN,EAAAK,EAAAN,EAAAG,EAAAH,EAAAE,GACA,MAEA,QACAxnE,QAAAC,KAAA,kFAAAg4C,OA8BA,MAAA6vB,GACAlD,YAAArrE,EAAA,EAAAlC,EAAA,GACAtF,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EAGAvC,YACA,OAAA/C,KAAAwH,EAGAzE,UAAAjD,GACAE,KAAAwH,EAAA1H,EAGAw6B,aACA,OAAAt6B,KAAAsF,EAGAg1B,WAAAx6B,GACAE,KAAAsF,EAAAxF,EAGA+yE,IAAArrE,EAAAlC,GAGA,OAFAtF,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EACAtF,KAGA6yE,UAAAmD,GAGA,OAFAh2E,KAAAwH,EAAAwuE,EACAh2E,KAAAsF,EAAA0wE,EACAh2E,KAGA6yE,KAAArrE,GAEA,OADAxH,KAAAwH,EAAAA,EACAxH,KAGA6yE,KAAAvtE,GAEA,OADAtF,KAAAsF,EAAAA,EACAtF,KAGA6yE,aAAAv6D,EAAAxY,GACA,OAAAwY,GACA,KAAA,EACAtY,KAAAwH,EAAA1H,EACA,MAEA,KAAA,EACAE,KAAAsF,EAAAxF,EACA,MAEA,QACA,MAAA,IAAAgqD,MAAA,0BAAAxxC,GAGA,OAAAtY,KAGA6yE,aAAAv6D,GACA,OAAAA,GACA,KAAA,EACA,OAAAtY,KAAAwH,EAEA,KAAA,EACA,OAAAxH,KAAAsF,EAEA,QACA,MAAA,IAAAwkD,MAAA,0BAAAxxC,IAIAu6D,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAwH,EAAAxH,KAAAsF,GAGAutE,KAAAxwE,GAGA,OAFArC,KAAAwH,EAAAnF,EAAAmF,EACAxH,KAAAsF,EAAAjD,EAAAiD,EACAtF,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAk2E,WAAA7zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,MAGA6yE,UAAAn3D,GAGA,OAFA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAGA,OAFAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAGA6yE,gBAAAxwE,EAAAqZ,GAGA,OAFA1b,KAAAwH,GAAAnF,EAAAmF,EAAAkU,EACA1b,KAAAsF,GAAAjD,EAAAiD,EAAAoW,EACA1b,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAm2E,WAAA9zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,MAGA6yE,UAAAn3D,GAGA,OAFA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAGA,OAFAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAGA6yE,SAAAxwE,GAGA,OAFArC,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAGA6yE,eAAAmD,GAGA,OAFAh2E,KAAAwH,GAAAwuE,EACAh2E,KAAAsF,GAAA0wE,EACAh2E,KAGA6yE,OAAAxwE,GAGA,OAFArC,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAGA6yE,aAAAmD,GACA,OAAAh2E,KAAAo2E,eAAA,EAAAJ,GAGAnD,aAAA/lD,GACA,MAAAtlB,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACAunB,EAAAC,EAAAupD,SAGA,OAFAr2E,KAAAwH,EAAAqlB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GACA7sB,KAAAsF,EAAAunB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GACA7sB,KAGA6yE,IAAAxwE,GAGA,OAFArC,KAAAwH,EAAAtB,KAAAC,IAAAnG,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAC,IAAAnG,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAGA6yE,IAAAxwE,GAGA,OAFArC,KAAAwH,EAAAtB,KAAAiS,IAAAnY,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAiS,IAAAnY,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAGA6yE,MAAA1sE,EAAAgS,GAIA,OAFAnY,KAAAwH,EAAAtB,KAAAiS,IAAAhS,EAAAqB,EAAAtB,KAAAC,IAAAgS,EAAA3Q,EAAAxH,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAhS,EAAAb,EAAAY,KAAAC,IAAAgS,EAAA7S,EAAAtF,KAAAsF,IACAtF,KAGA6yE,YAAAyD,EAAAC,GAGA,OAFAv2E,KAAAwH,EAAAtB,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAsF,IACAtF,KAGA6yE,YAAA1sE,EAAAgS,GACA,MAAA9X,EAAAL,KAAAK,SACA,OAAAL,KAAAw2E,aAAAn2E,GAAA,GAAA+1E,eAAAlwE,KAAAiS,IAAAhS,EAAAD,KAAAC,IAAAgS,EAAA9X,KAGAwyE,QAGA,OAFA7yE,KAAAwH,EAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAGA6yE,OAGA,OAFA7yE,KAAAwH,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GACAtF,KAGA6yE,QAGA,OAFA7yE,KAAAwH,EAAAtB,KAAAgK,MAAAlQ,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAAgK,MAAAlQ,KAAAsF,GACAtF,KAGA6yE,cAGA,OAFA7yE,KAAAwH,EAAAxH,KAAAwH,EAAA,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAtF,KAAAsF,EAAA,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAGA6yE,SAGA,OAFA7yE,KAAAwH,GAAAxH,KAAAwH,EACAxH,KAAAsF,GAAAtF,KAAAsF,EACAtF,KAGA6yE,IAAAxwE,GACA,OAAArC,KAAAwH,EAAAnF,EAAAmF,EAAAxH,KAAAsF,EAAAjD,EAAAiD,EAGAutE,MAAAxwE,GACA,OAAArC,KAAAwH,EAAAnF,EAAAiD,EAAAtF,KAAAsF,EAAAjD,EAAAmF,EAGAqrE,WACA,OAAA7yE,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,EAGAutE,SACA,OAAA3sE,KAAA+F,KAAAjM,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,GAGAutE,kBACA,OAAA3sE,KAAAiO,IAAAnU,KAAAwH,GAAAtB,KAAAiO,IAAAnU,KAAAsF,GAGAutE,YACA,OAAA7yE,KAAAw2E,aAAAx2E,KAAAK,UAAA,GAGAwyE,QAGA,OADA3sE,KAAAuwB,OAAAz2B,KAAAsF,GAAAtF,KAAAwH,GAAAtB,KAAA2F,GAIAgnE,WAAAxwE,GACA,OAAA6D,KAAA+F,KAAAjM,KAAAy2E,kBAAAp0E,IAGAwwE,kBAAAxwE,GACA,MAAA4Y,EAAAjb,KAAAwH,EAAAnF,EAAAmF,EACA0T,EAAAlb,KAAAsF,EAAAjD,EAAAiD,EACA,OAAA2V,EAAAA,EAAAC,EAAAA,EAGA23D,oBAAAxwE,GACA,OAAA6D,KAAAiO,IAAAnU,KAAAwH,EAAAnF,EAAAmF,GAAAtB,KAAAiO,IAAAnU,KAAAsF,EAAAjD,EAAAiD,GAGAutE,UAAAxyE,GACA,OAAAL,KAAAizB,YAAAmjD,eAAA/1E,GAGAwyE,KAAAxwE,EAAA20B,GAGA,OAFAh3B,KAAAwH,IAAAnF,EAAAmF,EAAAxH,KAAAwH,GAAAwvB,EACAh3B,KAAAsF,IAAAjD,EAAAiD,EAAAtF,KAAAsF,GAAA0xB,EACAh3B,KAGA6yE,YAAA6D,EAAAC,EAAA3/C,GAGA,OAFAh3B,KAAAwH,EAAAkvE,EAAAlvE,GAAAmvE,EAAAnvE,EAAAkvE,EAAAlvE,GAAAwvB,EACAh3B,KAAAsF,EAAAoxE,EAAApxE,GAAAqxE,EAAArxE,EAAAoxE,EAAApxE,GAAA0xB,EACAh3B,KAGA6yE,OAAAxwE,GACA,OAAAA,EAAAmF,IAAAxH,KAAAwH,GAAAnF,EAAAiD,IAAAtF,KAAAsF,EAGAutE,UAAA1O,EAAAltD,EAAA,GAGA,OAFAjX,KAAAwH,EAAA28D,EAAAltD,GACAjX,KAAAsF,EAAA6+D,EAAAltD,EAAA,GACAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAGA,OAFAktD,EAAAltD,GAAAjX,KAAAwH,EACA28D,EAAAltD,EAAA,GAAAjX,KAAAsF,EACA6+D,EAGA0O,oBAAA+D,EAAAt+D,EAAArB,GAOA,YANAmwB,IAAAnwB,GACAhJ,QAAAC,KAAA,uEAGAlO,KAAAwH,EAAAovE,EAAAC,KAAAv+D,GACAtY,KAAAsF,EAAAsxE,EAAAE,KAAAx+D,GACAtY,KAGA6yE,aAAAh5D,EAAA2lB,GACA,MAAAr4B,EAAAjB,KAAAiG,IAAAqzB,GACA9jB,EAAAxV,KAAAmG,IAAAmzB,GACAh4B,EAAAxH,KAAAwH,EAAAqS,EAAArS,EACAlC,EAAAtF,KAAAsF,EAAAuU,EAAAvU,EAGA,OAFAtF,KAAAwH,EAAAA,EAAAL,EAAA7B,EAAAoW,EAAA7B,EAAArS,EACAxH,KAAAsF,EAAAkC,EAAAkU,EAAApW,EAAA6B,EAAA0S,EAAAvU,EACAtF,KAGA6yE,SAGA,OAFA7yE,KAAAwH,EAAAtB,KAAAkC,SACApI,KAAAsF,EAAAY,KAAAkC,SACApI,MAKA+1E,GAAAhtE,UAAAguE,WAAA,EAEA,MAAAC,GACAnE,cACA7yE,KAAAq2E,SAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA7wD,UAAAnlB,OAAA,GACA4N,QAAApK,MAAA,iFAIAgvE,IAAAoE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,MAAAC,EAAA13E,KAAAq2E,SAUA,OATAqB,EAAA,GAAAT,EACAS,EAAA,GAAAN,EACAM,EAAA,GAAAH,EACAG,EAAA,GAAAR,EACAQ,EAAA,GAAAL,EACAK,EAAA,GAAAF,EACAE,EAAA,GAAAP,EACAO,EAAA,GAAAJ,EACAI,EAAA,GAAAD,EACAz3E,KAGA6yE,WAEA,OADA7yE,KAAAilB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAjlB,KAGA6yE,KAAA/lD,GACA,MAAA4qD,EAAA13E,KAAAq2E,SACAsB,EAAA7qD,EAAAupD,SAUA,OATAqB,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACA33E,KAGA6yE,aAAA+E,EAAAC,EAAAC,GAIA,OAHAF,EAAAG,qBAAA/3E,KAAA,GACA63E,EAAAE,qBAAA/3E,KAAA,GACA83E,EAAAC,qBAAA/3E,KAAA,GACAA,KAGA6yE,eAAA/lD,GACA,MAAA6qD,EAAA7qD,EAAAupD,SAEA,OADAr2E,KAAAilB,IAAA0yD,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KACA33E,KAGA6yE,SAAA/lD,GACA,OAAA9sB,KAAAg4E,iBAAAh4E,KAAA8sB,GAGA+lD,YAAA/lD,GACA,OAAA9sB,KAAAg4E,iBAAAlrD,EAAA9sB,MAGA6yE,iBAAA/qE,EAAAQ,GACA,MAAA2vE,EAAAnwE,EAAAuuE,SACA6B,EAAA5vE,EAAA+tE,SACAqB,EAAA13E,KAAAq2E,SACAj1C,EAAA62C,EAAA,GACAx4C,EAAAw4C,EAAA,GACAn4C,EAAAm4C,EAAA,GACA52C,EAAA42C,EAAA,GACAv4C,EAAAu4C,EAAA,GACAl4C,EAAAk4C,EAAA,GACAE,EAAAF,EAAA,GACA93C,EAAA83C,EAAA,GACAj4C,EAAAi4C,EAAA,GACAG,EAAAF,EAAA,GACAG,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,GACAM,EAAAN,EAAA,GACAO,EAAAP,EAAA,GACAQ,EAAAR,EAAA,GACAS,EAAAT,EAAA,GACAU,EAAAV,EAAA,GAUA,OATAR,EAAA,GAAAt2C,EAAAg3C,EAAA34C,EAAA84C,EAAAz4C,EAAA44C,EACAhB,EAAA,GAAAt2C,EAAAi3C,EAAA54C,EAAA+4C,EAAA14C,EAAA64C,EACAjB,EAAA,GAAAt2C,EAAAk3C,EAAA74C,EAAAg5C,EAAA34C,EAAA84C,EACAlB,EAAA,GAAAr2C,EAAA+2C,EAAA14C,EAAA64C,EAAAx4C,EAAA24C,EACAhB,EAAA,GAAAr2C,EAAAg3C,EAAA34C,EAAA84C,EAAAz4C,EAAA44C,EACAjB,EAAA,GAAAr2C,EAAAi3C,EAAA54C,EAAA+4C,EAAA14C,EAAA64C,EACAlB,EAAA,GAAAS,EAAAC,EAAAj4C,EAAAo4C,EAAAv4C,EAAA04C,EACAhB,EAAA,GAAAS,EAAAE,EAAAl4C,EAAAq4C,EAAAx4C,EAAA24C,EACAjB,EAAA,GAAAS,EAAAG,EAAAn4C,EAAAs4C,EAAAz4C,EAAA44C,EACA54E,KAGA6yE,eAAAn3D,GACA,MAAAg8D,EAAA13E,KAAAq2E,SAUA,OATAqB,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACA1b,KAGA6yE,cACA,MAAA6E,EAAA13E,KAAAq2E,SACAvuE,EAAA4vE,EAAA,GACApvE,EAAAovE,EAAA,GACAvwE,EAAAuwE,EAAA,GACAl4E,EAAAk4E,EAAA,GACA7qD,EAAA6qD,EAAA,GACAx1D,EAAAw1D,EAAA,GACA33D,EAAA23D,EAAA,GACAj4D,EAAAi4D,EAAA,GACA/2E,EAAA+2E,EAAA,GACA,OAAA5vE,EAAA+kB,EAAAlsB,EAAAmH,EAAAoa,EAAAzC,EAAAnX,EAAA9I,EAAAmB,EAAA2H,EAAA4Z,EAAAnC,EAAA5Y,EAAA3H,EAAAigB,EAAAtY,EAAA0lB,EAAA9M,EAGA8yD,SACA,MAAA6E,EAAA13E,KAAAq2E,SACAY,EAAAS,EAAA,GACAN,EAAAM,EAAA,GACAH,EAAAG,EAAA,GACAR,EAAAQ,EAAA,GACAL,EAAAK,EAAA,GACAF,EAAAE,EAAA,GACAP,EAAAO,EAAA,GACAJ,EAAAI,EAAA,GACAD,EAAAC,EAAA,GACAmB,EAAApB,EAAAJ,EAAAG,EAAAF,EACAwB,EAAAtB,EAAAL,EAAAM,EAAAP,EACA6B,EAAAzB,EAAAJ,EAAAG,EAAAF,EACA6B,EAAA/B,EAAA4B,EAAAzB,EAAA0B,EAAAvB,EAAAwB,EACA,GAAA,IAAAC,EAAA,OAAAh5E,KAAAilB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,MAAAg0D,EAAA,EAAAD,EAUA,OATAtB,EAAA,GAAAmB,EAAAI,EACAvB,EAAA,IAAAH,EAAAD,EAAAG,EAAAL,GAAA6B,EACAvB,EAAA,IAAAF,EAAAJ,EAAAG,EAAAF,GAAA4B,EACAvB,EAAA,GAAAoB,EAAAG,EACAvB,EAAA,IAAAD,EAAAR,EAAAM,EAAAJ,GAAA8B,EACAvB,EAAA,IAAAH,EAAAL,EAAAM,EAAAP,GAAAgC,EACAvB,EAAA,GAAAqB,EAAAE,EACAvB,EAAA,IAAAN,EAAAD,EAAAG,EAAAL,GAAAgC,EACAvB,EAAA,IAAAL,EAAAJ,EAAAG,EAAAF,GAAA+B,EACAj5E,KAGA6yE,YACA,IAAAqG,EACA,MAAApsD,EAAA9sB,KAAAq2E,SAUA,OATA6C,EAAApsD,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAosD,EACAA,EAAApsD,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAosD,EACAA,EAAApsD,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAosD,EACAl5E,KAGA6yE,gBAAAsG,GACA,OAAAn5E,KAAAo5E,eAAAD,GAAAlhB,SAAAohB,YAGAxG,mBAAAtsE,GACA,MAAAumB,EAAA9sB,KAAAq2E,SAUA,OATA9vE,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACAvmB,EAAA,GAAAumB,EAAA,GACA9sB,KAGA6yE,eAAA/zC,EAAAC,EAAAu6C,EAAAC,EAAAr6C,EAAAs6C,EAAAC,GACA,MAAAtyE,EAAAjB,KAAAiG,IAAA+yB,GACAxjB,EAAAxV,KAAAmG,IAAA6yB,GAEA,OADAl/B,KAAAilB,IAAAq0D,EAAAnyE,EAAAmyE,EAAA59D,GAAA49D,GAAAnyE,EAAAqyE,EAAA99D,EAAA+9D,GAAAD,EAAA16C,GAAAy6C,EAAA79D,EAAA69D,EAAApyE,GAAAoyE,IAAA79D,EAAA89D,EAAAryE,EAAAsyE,GAAAA,EAAA16C,EAAA,EAAA,EAAA,GACA/+B,KAGA6yE,MAAAyG,EAAAC,GACA,MAAA7B,EAAA13E,KAAAq2E,SAOA,OANAqB,EAAA,IAAA4B,EACA5B,EAAA,IAAA4B,EACA5B,EAAA,IAAA4B,EACA5B,EAAA,IAAA6B,EACA7B,EAAA,IAAA6B,EACA7B,EAAA,IAAA6B,EACAv5E,KAGA6yE,OAAA6G,GACA,MAAAvyE,EAAAjB,KAAAiG,IAAAutE,GACAh+D,EAAAxV,KAAAmG,IAAAqtE,GACAhC,EAAA13E,KAAAq2E,SACAj1C,EAAAs2C,EAAA,GACAj4C,EAAAi4C,EAAA,GACA53C,EAAA43C,EAAA,GACAr2C,EAAAq2C,EAAA,GACAh4C,EAAAg4C,EAAA,GACA33C,EAAA23C,EAAA,GAOA,OANAA,EAAA,GAAAvwE,EAAAi6B,EAAA1lB,EAAA2lB,EACAq2C,EAAA,GAAAvwE,EAAAs4B,EAAA/jB,EAAAgkB,EACAg4C,EAAA,GAAAvwE,EAAA24B,EAAApkB,EAAAqkB,EACA23C,EAAA,IAAAh8D,EAAA0lB,EAAAj6B,EAAAk6B,EACAq2C,EAAA,IAAAh8D,EAAA+jB,EAAAt4B,EAAAu4B,EACAg4C,EAAA,IAAAh8D,EAAAokB,EAAA34B,EAAA44B,EACA//B,KAGA6yE,UAAA/zC,EAAAC,GACA,MAAA24C,EAAA13E,KAAAq2E,SAOA,OANAqB,EAAA,IAAA54C,EAAA44C,EAAA,GACAA,EAAA,IAAA54C,EAAA44C,EAAA,GACAA,EAAA,IAAA54C,EAAA44C,EAAA,GACAA,EAAA,IAAA34C,EAAA24C,EAAA,GACAA,EAAA,IAAA34C,EAAA24C,EAAA,GACAA,EAAA,IAAA34C,EAAA24C,EAAA,GACA13E,KAGA6yE,OAAAl1C,GACA,MAAA+5C,EAAA13E,KAAAq2E,SACAsB,EAAAh6C,EAAA04C,SAEA,IAAA,IAAA11E,EAAA,EAAAA,EAAA,EAAAA,IACA,GAAA+2E,EAAA/2E,KAAAg3E,EAAAh3E,GAAA,OAAA,EAGA,OAAA,EAGAkyE,UAAA1O,EAAAltD,EAAA,GACA,IAAA,IAAAtW,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAq2E,SAAA11E,GAAAwjE,EAAAxjE,EAAAsW,GAGA,OAAAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GACA,MAAAygE,EAAA13E,KAAAq2E,SAUA,OATAlS,EAAAltD,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAGA0O,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA0wE,UAAA35E,KAAAq2E,WAOA,IAAAuD,GAFA5C,GAAAjuE,UAAA8wE,WAAA,EAIA,MAAAC,GACAjH,kBAAAljB,GACA,GAAA,UAAAzuC,KAAAyuC,EAAAlsB,KACA,OAAAksB,EAAAlsB,IAGA,GAAA,oBAAAs2C,kBACA,OAAApqB,EAAAlsB,IAGA,IAAAu2C,EAEA,GAAArqB,aAAAoqB,kBACAC,EAAArqB,MACA,MACAvoB,IAAAwyC,KAAAA,GAAA/3D,SAAAwW,gBAAA,+BAAA,WACAuhD,GAAA72E,MAAA4sD,EAAA5sD,MACA62E,GAAAt/C,OAAAq1B,EAAAr1B,OAEA,MAAA2N,EAAA2xC,GAAAK,WAAA,MAEAtqB,aAAAuqB,UACAjyC,EAAAkyC,aAAAxqB,EAAA,EAAA,GAEA1nB,EAAAmyC,UAAAzqB,EAAA,EAAA,EAAAA,EAAA5sD,MAAA4sD,EAAAr1B,QAGA0/C,EAAAJ,GAGA,OAAAI,EAAAj3E,MAAA,MAAAi3E,EAAA1/C,OAAA,MACArsB,QAAAC,KAAA,8EAAAyhD,GACAqqB,EAAAK,UAAA,aAAA,KAEAL,EAAAK,UAAA,cAMA,IAAAC,GAAA,EAEA,MAAAC,WAAA3H,GACAC,YAAAljB,EAAA4qB,GAAAC,cAAAC,EAAAF,GAAAG,gBAAAC,EAAA9K,KAAA+K,EAAA/K,KAAAgL,EAAA3K,KAAA4K,EAAA1K,KAAAp+C,EAAA4+C,KAAA7wE,EAAAswE,KAAA0K,EAAA,EAAAC,EAAA/I,KACAgJ,QACAvyE,OAAAC,eAAA3I,KAAA,KAAA,CACAF,MAAAw6E,OAEAt6E,KAAAk7E,KAAA9H,KACApzE,KAAAE,KAAA,GACAF,KAAA2vD,MAAAA,EACA3vD,KAAAm7E,QAAA,GACAn7E,KAAAy6E,QAAAA,EACAz6E,KAAA26E,MAAAA,EACA36E,KAAA46E,MAAAA,EACA56E,KAAA66E,UAAAA,EACA76E,KAAA86E,UAAAA,EACA96E,KAAA+6E,WAAAA,EACA/6E,KAAAgyB,OAAAA,EACAhyB,KAAAo7E,eAAA,KACAp7E,KAAAD,KAAAA,EACAC,KAAAiX,OAAA,IAAA8+D,GAAA,EAAA,GACA/1E,KAAAyW,OAAA,IAAAs/D,GAAA,EAAA,GACA/1E,KAAA6Z,OAAA,IAAAk8D,GAAA,EAAA,GACA/1E,KAAAk/B,SAAA,EACAl/B,KAAAq7E,kBAAA,EACAr7E,KAAA29B,OAAA,IAAAq5C,GACAh3E,KAAAs7E,iBAAA,EACAt7E,KAAAu7E,kBAAA,EACAv7E,KAAAw7E,OAAA,EACAx7E,KAAAy7E,gBAAA,EAMAz7E,KAAAg7E,SAAAA,EACAh7E,KAAAwI,QAAA,EACAxI,KAAAspB,SAAA,KACAtpB,KAAA07E,uBAAA,EAGA7I,eACA7yE,KAAA29B,OAAAg+C,eAAA37E,KAAAiX,OAAAzP,EAAAxH,KAAAiX,OAAA3R,EAAAtF,KAAAyW,OAAAjP,EAAAxH,KAAAyW,OAAAnR,EAAAtF,KAAAk/B,SAAAl/B,KAAA6Z,OAAArS,EAAAxH,KAAA6Z,OAAAvU,GAGAutE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjxC,GAwBA,OAvBA5hC,KAAAE,KAAA0hC,EAAA1hC,KACAF,KAAA2vD,MAAA/tB,EAAA+tB,MACA3vD,KAAAm7E,QAAAv5C,EAAAu5C,QAAAzqE,MAAA,GACA1Q,KAAAy6E,QAAA74C,EAAA64C,QACAz6E,KAAA26E,MAAA/4C,EAAA+4C,MACA36E,KAAA46E,MAAAh5C,EAAAg5C,MACA56E,KAAA66E,UAAAj5C,EAAAi5C,UACA76E,KAAA86E,UAAAl5C,EAAAk5C,UACA96E,KAAA+6E,WAAAn5C,EAAAm5C,WACA/6E,KAAAgyB,OAAA4P,EAAA5P,OACAhyB,KAAAo7E,eAAAx5C,EAAAw5C,eACAp7E,KAAAD,KAAA6hC,EAAA7hC,KACAC,KAAAiX,OAAApF,KAAA+vB,EAAA3qB,QACAjX,KAAAyW,OAAA5E,KAAA+vB,EAAAnrB,QACAzW,KAAA6Z,OAAAhI,KAAA+vB,EAAA/nB,QACA7Z,KAAAk/B,SAAA0C,EAAA1C,SACAl/B,KAAAq7E,iBAAAz5C,EAAAy5C,iBACAr7E,KAAA29B,OAAA9rB,KAAA+vB,EAAAjE,QACA39B,KAAAs7E,gBAAA15C,EAAA05C,gBACAt7E,KAAAu7E,iBAAA35C,EAAA25C,iBACAv7E,KAAAw7E,MAAA55C,EAAA45C,MACAx7E,KAAAy7E,gBAAA75C,EAAA65C,gBACAz7E,KAAAg7E,SAAAp5C,EAAAo5C,SACAh7E,KAGA6yE,OAAA+I,GACA,MAAAC,OAAAz0C,IAAAw0C,GAAA,iBAAAA,EAEA,IAAAC,QAAAz0C,IAAAw0C,EAAAE,SAAA97E,KAAAk7E,MACA,OAAAU,EAAAE,SAAA97E,KAAAk7E,MAGA,MAAAa,EAAA,CACAC,SAAA,CACAxzE,QAAA,IACAzI,KAAA,UACAk8E,UAAA,kBAEAf,KAAAl7E,KAAAk7E,KACAh7E,KAAAF,KAAAE,KACAu6E,QAAAz6E,KAAAy6E,QACAhkE,OAAA,CAAAzW,KAAAyW,OAAAjP,EAAAxH,KAAAyW,OAAAnR,GACA2R,OAAA,CAAAjX,KAAAiX,OAAAzP,EAAAxH,KAAAiX,OAAA3R,GACAuU,OAAA,CAAA7Z,KAAA6Z,OAAArS,EAAAxH,KAAA6Z,OAAAvU,GACA45B,SAAAl/B,KAAAk/B,SACArM,KAAA,CAAA7yB,KAAA26E,MAAA36E,KAAA46E,OACA5oD,OAAAhyB,KAAAgyB,OACAjyB,KAAAC,KAAAD,KACAi7E,SAAAh7E,KAAAg7E,SACAF,UAAA96E,KAAA86E,UACAD,UAAA76E,KAAA66E,UACAE,WAAA/6E,KAAA+6E,WACAS,MAAAx7E,KAAAw7E,MACAD,iBAAAv7E,KAAAu7E,iBACAE,gBAAAz7E,KAAAy7E,iBAGA,QAAAr0C,IAAApnC,KAAA2vD,MAAA,CAEA,MAAAA,EAAA3vD,KAAA2vD,MAMA,QAJAvoB,IAAAuoB,EAAAurB,OACAvrB,EAAAurB,KAAA9H,OAGAyI,QAAAz0C,IAAAw0C,EAAAvsB,OAAAM,EAAAurB,MAAA,CACA,IAAA73E,EAEA,GAAA6J,MAAAhM,QAAAyuD,GAAA,CAEAtsD,EAAA,GAEA,IAAA,IAAA1C,EAAA,EAAA4P,EAAAo/C,EAAAtvD,OAAAM,EAAA4P,EAAA5P,IAEAgvD,EAAAhvD,GAAAu7E,cACA74E,EAAA7C,KAAA27E,GAAAxsB,EAAAhvD,GAAAgvD,QAEAtsD,EAAA7C,KAAA27E,GAAAxsB,EAAAhvD,UAKA0C,EAAA84E,GAAAxsB,GAGAisB,EAAAvsB,OAAAM,EAAAurB,MAAA,CACAA,KAAAvrB,EAAAurB,KACA73E,IAAAA,GAIA04E,EAAApsB,MAAAA,EAAAurB,KAOA,OAJAW,IACAD,EAAAE,SAAA97E,KAAAk7E,MAAAa,GAGAA,EAGAlJ,UACA7yE,KAAAksC,cAAA,CACAnsC,KAAA,YAIA8yE,YAAAuJ,GACA,GAAAp8E,KAAAy6E,UAAApL,EAAA,OAAA+M,EAGA,GAFAA,EAAAC,aAAAr8E,KAAA29B,QAEAy+C,EAAA50E,EAAA,GAAA40E,EAAA50E,EAAA,EACA,OAAAxH,KAAA26E,OACA,KAAA/K,EACAwM,EAAA50E,EAAA40E,EAAA50E,EAAAtB,KAAA4N,MAAAsoE,EAAA50E,GACA,MAEA,KAAAqoE,EACAuM,EAAA50E,EAAA40E,EAAA50E,EAAA,EAAA,EAAA,EACA,MAEA,KAAAsoE,EACA,IAAA5pE,KAAAiO,IAAAjO,KAAA4N,MAAAsoE,EAAA50E,GAAA,GACA40E,EAAA50E,EAAAtB,KAAA++C,KAAAm3B,EAAA50E,GAAA40E,EAAA50E,EAEA40E,EAAA50E,EAAA40E,EAAA50E,EAAAtB,KAAA4N,MAAAsoE,EAAA50E,GAOA,GAAA40E,EAAA92E,EAAA,GAAA82E,EAAA92E,EAAA,EACA,OAAAtF,KAAA46E,OACA,KAAAhL,EACAwM,EAAA92E,EAAA82E,EAAA92E,EAAAY,KAAA4N,MAAAsoE,EAAA92E,GACA,MAEA,KAAAuqE,EACAuM,EAAA92E,EAAA82E,EAAA92E,EAAA,EAAA,EAAA,EACA,MAEA,KAAAwqE,EACA,IAAA5pE,KAAAiO,IAAAjO,KAAA4N,MAAAsoE,EAAA92E,GAAA,GACA82E,EAAA92E,EAAAY,KAAA++C,KAAAm3B,EAAA92E,GAAA82E,EAAA92E,EAEA82E,EAAA92E,EAAA82E,EAAA92E,EAAAY,KAAA4N,MAAAsoE,EAAA92E,GAWA,OAJAtF,KAAAw7E,QACAY,EAAA92E,EAAA,EAAA82E,EAAA92E,GAGA82E,EAGAE,gBAAAx8E,IACA,IAAAA,GAAAE,KAAAwI,WASA,SAAA2zE,GAAAxsB,GACA,MAAA,oBAAA4sB,kBAAA5sB,aAAA4sB,kBAAA,oBAAAxC,mBAAApqB,aAAAoqB,mBAAA,oBAAAyC,aAAA7sB,aAAA6sB,YAEA1C,GAAA2C,WAAA9sB,GAEAA,EAAA3tD,KAEA,CACAA,KAAAkL,MAAAnE,UAAA2H,MAAAwI,KAAAy2C,EAAA3tD,MACAe,MAAA4sD,EAAA5sD,MACAu3B,OAAAq1B,EAAAr1B,OACAv6B,KAAA4vD,EAAA3tD,KAAAiH,YAAA/I,OAGA+N,QAAAC,KAAA,+CACA,IAnBAqsE,GAAAC,mBAAApzC,EACAmzC,GAAAG,gBAAArL,EACAkL,GAAAxxE,UAAA2zE,WAAA,EAsBA,MAAAC,GACA9J,YAAArrE,EAAA,EAAAlC,EAAA,EAAA25B,EAAA,EAAAg3C,EAAA,GACAj2E,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EACAtF,KAAAi/B,EAAAA,EACAj/B,KAAAi2E,EAAAA,EAGAlzE,YACA,OAAA/C,KAAAi/B,EAGAl8B,UAAAjD,GACAE,KAAAi/B,EAAAn/B,EAGAw6B,aACA,OAAAt6B,KAAAi2E,EAGA37C,WAAAx6B,GACAE,KAAAi2E,EAAAn2E,EAGA+yE,IAAArrE,EAAAlC,EAAA25B,EAAAg3C,GAKA,OAJAj2E,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EACAtF,KAAAi/B,EAAAA,EACAj/B,KAAAi2E,EAAAA,EACAj2E,KAGA6yE,UAAAmD,GAKA,OAJAh2E,KAAAwH,EAAAwuE,EACAh2E,KAAAsF,EAAA0wE,EACAh2E,KAAAi/B,EAAA+2C,EACAh2E,KAAAi2E,EAAAD,EACAh2E,KAGA6yE,KAAArrE,GAEA,OADAxH,KAAAwH,EAAAA,EACAxH,KAGA6yE,KAAAvtE,GAEA,OADAtF,KAAAsF,EAAAA,EACAtF,KAGA6yE,KAAA5zC,GAEA,OADAj/B,KAAAi/B,EAAAA,EACAj/B,KAGA6yE,KAAAoD,GAEA,OADAj2E,KAAAi2E,EAAAA,EACAj2E,KAGA6yE,aAAAv6D,EAAAxY,GACA,OAAAwY,GACA,KAAA,EACAtY,KAAAwH,EAAA1H,EACA,MAEA,KAAA,EACAE,KAAAsF,EAAAxF,EACA,MAEA,KAAA,EACAE,KAAAi/B,EAAAn/B,EACA,MAEA,KAAA,EACAE,KAAAi2E,EAAAn2E,EACA,MAEA,QACA,MAAA,IAAAgqD,MAAA,0BAAAxxC,GAGA,OAAAtY,KAGA6yE,aAAAv6D,GACA,OAAAA,GACA,KAAA,EACA,OAAAtY,KAAAwH,EAEA,KAAA,EACA,OAAAxH,KAAAsF,EAEA,KAAA,EACA,OAAAtF,KAAAi/B,EAEA,KAAA,EACA,OAAAj/B,KAAAi2E,EAEA,QACA,MAAA,IAAAnsB,MAAA,0BAAAxxC,IAIAu6D,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAi/B,EAAAj/B,KAAAi2E,GAGApD,KAAAxwE,GAKA,OAJArC,KAAAwH,EAAAnF,EAAAmF,EACAxH,KAAAsF,EAAAjD,EAAAiD,EACAtF,KAAAi/B,EAAA58B,EAAA48B,EACAj/B,KAAAi2E,OAAA7uC,IAAA/kC,EAAA4zE,EAAA5zE,EAAA4zE,EAAA,EACAj2E,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAk2E,WAAA7zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,KAAAi2E,GAAA5zE,EAAA4zE,EACAj2E,MAGA6yE,UAAAn3D,GAKA,OAJA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAAAi/B,GAAAvjB,EACA1b,KAAAi2E,GAAAv6D,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAKA,OAJAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAAAi/B,EAAAn3B,EAAAm3B,EAAA32B,EAAA22B,EACAj/B,KAAAi2E,EAAAnuE,EAAAmuE,EAAA3tE,EAAA2tE,EACAj2E,KAGA6yE,gBAAAxwE,EAAAqZ,GAKA,OAJA1b,KAAAwH,GAAAnF,EAAAmF,EAAAkU,EACA1b,KAAAsF,GAAAjD,EAAAiD,EAAAoW,EACA1b,KAAAi/B,GAAA58B,EAAA48B,EAAAvjB,EACA1b,KAAAi2E,GAAA5zE,EAAA4zE,EAAAv6D,EACA1b,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAm2E,WAAA9zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,KAAAi2E,GAAA5zE,EAAA4zE,EACAj2E,MAGA6yE,UAAAn3D,GAKA,OAJA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAAAi/B,GAAAvjB,EACA1b,KAAAi2E,GAAAv6D,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAKA,OAJAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAAAi/B,EAAAn3B,EAAAm3B,EAAA32B,EAAA22B,EACAj/B,KAAAi2E,EAAAnuE,EAAAmuE,EAAA3tE,EAAA2tE,EACAj2E,KAGA6yE,SAAAxwE,GAKA,OAJArC,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,KAAAi2E,GAAA5zE,EAAA4zE,EACAj2E,KAGA6yE,eAAAmD,GAKA,OAJAh2E,KAAAwH,GAAAwuE,EACAh2E,KAAAsF,GAAA0wE,EACAh2E,KAAAi/B,GAAA+2C,EACAh2E,KAAAi2E,GAAAD,EACAh2E,KAGA6yE,aAAA/lD,GACA,MAAAtlB,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACA25B,EAAAj/B,KAAAi/B,EACAg3C,EAAAj2E,KAAAi2E,EACAppD,EAAAC,EAAAupD,SAKA,OAJAr2E,KAAAwH,EAAAqlB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EAAApS,EAAA,IAAAopD,EACAj2E,KAAAsF,EAAAunB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EAAApS,EAAA,IAAAopD,EACAj2E,KAAAi/B,EAAApS,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,IAAAoS,EAAApS,EAAA,IAAAopD,EACAj2E,KAAAi2E,EAAAppD,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,IAAAoS,EAAApS,EAAA,IAAAopD,EACAj2E,KAGA6yE,aAAAmD,GACA,OAAAh2E,KAAAo2E,eAAA,EAAAJ,GAGAnD,2BAAAyC,GAGAt1E,KAAAi2E,EAAA,EAAA/vE,KAAA02E,KAAAtH,EAAAW,GACA,MAAAv6D,EAAAxV,KAAA+F,KAAA,EAAAqpE,EAAAW,EAAAX,EAAAW,GAYA,OAVAv6D,EAAA,MACA1b,KAAAwH,EAAA,EACAxH,KAAAsF,EAAA,EACAtF,KAAAi/B,EAAA,IAEAj/B,KAAAwH,EAAA8tE,EAAA9tE,EAAAkU,EACA1b,KAAAsF,EAAAgwE,EAAAhwE,EAAAoW,EACA1b,KAAAi/B,EAAAq2C,EAAAr2C,EAAAvjB,GAGA1b,KAGA6yE,+BAAA/lD,GAGA,IAAA0S,EAAAh4B,EAAAlC,EAAA25B,EAEA,MAAA49C,EAAA,IAEAC,EAAA,GAEApF,EAAA5qD,EAAAupD,SACA0G,EAAArF,EAAA,GACAsF,EAAAtF,EAAA,GACAuF,EAAAvF,EAAA,GACAwF,EAAAxF,EAAA,GACAyF,EAAAzF,EAAA,GACA0F,EAAA1F,EAAA,GACA2F,EAAA3F,EAAA,GACA4F,EAAA5F,EAAA,GACA6F,EAAA7F,EAAA,IAEA,GAAAxxE,KAAAiO,IAAA6oE,EAAAE,GAAAL,GAAA32E,KAAAiO,IAAA8oE,EAAAI,GAAAR,GAAA32E,KAAAiO,IAAAipE,EAAAE,GAAAT,EAAA,CAIA,GAAA32E,KAAAiO,IAAA6oE,EAAAE,GAAAJ,GAAA52E,KAAAiO,IAAA8oE,EAAAI,GAAAP,GAAA52E,KAAAiO,IAAAipE,EAAAE,GAAAR,GAAA52E,KAAAiO,IAAA4oE,EAAAI,EAAAI,EAAA,GAAAT,EAGA,OADA98E,KAAAilB,IAAA,EAAA,EAAA,EAAA,GACAjlB,KAIAw/B,EAAAt5B,KAAA2F,GACA,MAAA2xE,GAAAT,EAAA,GAAA,EACAU,GAAAN,EAAA,GAAA,EACAO,GAAAH,EAAA,GAAA,EACAI,GAAAX,EAAAE,GAAA,EACAU,GAAAX,EAAAI,GAAA,EACAQ,GAAAT,EAAAE,GAAA,EAsCA,OApCAE,EAAAC,GAAAD,EAAAE,EAEAF,EAAAX,GACAr1E,EAAA,EACAlC,EAAA,WACA25B,EAAA,aAEAz3B,EAAAtB,KAAA+F,KAAAuxE,GACAl4E,EAAAq4E,EAAAn2E,EACAy3B,EAAA2+C,EAAAp2E,GAEAi2E,EAAAC,EAEAD,EAAAZ,GACAr1E,EAAA,WACAlC,EAAA,EACA25B,EAAA,aAEA35B,EAAAY,KAAA+F,KAAAwxE,GACAj2E,EAAAm2E,EAAAr4E,EACA25B,EAAA4+C,EAAAv4E,GAIAo4E,EAAAb,GACAr1E,EAAA,WACAlC,EAAA,WACA25B,EAAA,IAEAA,EAAA/4B,KAAA+F,KAAAyxE,GACAl2E,EAAAo2E,EAAA3+C,EACA35B,EAAAu4E,EAAA5+C,GAIAj/B,KAAAilB,IAAAzd,EAAAlC,EAAA25B,EAAAO,GACAx/B,KAIA,IAAA0b,EAAAxV,KAAA+F,MAAAqxE,EAAAF,IAAAE,EAAAF,IAAAH,EAAAI,IAAAJ,EAAAI,IAAAH,EAAAF,IAAAE,EAAAF,IASA,OAPA92E,KAAAiO,IAAAuH,GAAA,OAAAA,EAAA,GAGA1b,KAAAwH,GAAA81E,EAAAF,GAAA1hE,EACA1b,KAAAsF,GAAA23E,EAAAI,GAAA3hE,EACA1b,KAAAi/B,GAAAi+C,EAAAF,GAAAthE,EACA1b,KAAAi2E,EAAA/vE,KAAA02E,MAAAG,EAAAI,EAAAI,EAAA,GAAA,GACAv9E,KAGA6yE,IAAAxwE,GAKA,OAJArC,KAAAwH,EAAAtB,KAAAC,IAAAnG,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAC,IAAAnG,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAAAi/B,EAAA/4B,KAAAC,IAAAnG,KAAAi/B,EAAA58B,EAAA48B,GACAj/B,KAAAi2E,EAAA/vE,KAAAC,IAAAnG,KAAAi2E,EAAA5zE,EAAA4zE,GACAj2E,KAGA6yE,IAAAxwE,GAKA,OAJArC,KAAAwH,EAAAtB,KAAAiS,IAAAnY,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAiS,IAAAnY,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAnY,KAAAi/B,EAAA58B,EAAA48B,GACAj/B,KAAAi2E,EAAA/vE,KAAAiS,IAAAnY,KAAAi2E,EAAA5zE,EAAA4zE,GACAj2E,KAGA6yE,MAAA1sE,EAAAgS,GAMA,OAJAnY,KAAAwH,EAAAtB,KAAAiS,IAAAhS,EAAAqB,EAAAtB,KAAAC,IAAAgS,EAAA3Q,EAAAxH,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAhS,EAAAb,EAAAY,KAAAC,IAAAgS,EAAA7S,EAAAtF,KAAAsF,IACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAhS,EAAA84B,EAAA/4B,KAAAC,IAAAgS,EAAA8mB,EAAAj/B,KAAAi/B,IACAj/B,KAAAi2E,EAAA/vE,KAAAiS,IAAAhS,EAAA8vE,EAAA/vE,KAAAC,IAAAgS,EAAA89D,EAAAj2E,KAAAi2E,IACAj2E,KAGA6yE,YAAAyD,EAAAC,GAKA,OAJAv2E,KAAAwH,EAAAtB,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAsF,IACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAi/B,IACAj/B,KAAAi2E,EAAA/vE,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAi2E,IACAj2E,KAGA6yE,YAAA1sE,EAAAgS,GACA,MAAA9X,EAAAL,KAAAK,SACA,OAAAL,KAAAw2E,aAAAn2E,GAAA,GAAA+1E,eAAAlwE,KAAAiS,IAAAhS,EAAAD,KAAAC,IAAAgS,EAAA9X,KAGAwyE,QAKA,OAJA7yE,KAAAwH,EAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAA4N,MAAA9T,KAAAi/B,GACAj/B,KAAAi2E,EAAA/vE,KAAA4N,MAAA9T,KAAAi2E,GACAj2E,KAGA6yE,OAKA,OAJA7yE,KAAAwH,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAA++C,KAAAjlD,KAAAi/B,GACAj/B,KAAAi2E,EAAA/vE,KAAA++C,KAAAjlD,KAAAi2E,GACAj2E,KAGA6yE,QAKA,OAJA7yE,KAAAwH,EAAAtB,KAAAgK,MAAAlQ,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAAgK,MAAAlQ,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAAgK,MAAAlQ,KAAAi/B,GACAj/B,KAAAi2E,EAAA/vE,KAAAgK,MAAAlQ,KAAAi2E,GACAj2E,KAGA6yE,cAKA,OAJA7yE,KAAAwH,EAAAxH,KAAAwH,EAAA,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAtF,KAAAsF,EAAA,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAAAi/B,EAAAj/B,KAAAi/B,EAAA,EAAA/4B,KAAA++C,KAAAjlD,KAAAi/B,GAAA/4B,KAAA4N,MAAA9T,KAAAi/B,GACAj/B,KAAAi2E,EAAAj2E,KAAAi2E,EAAA,EAAA/vE,KAAA++C,KAAAjlD,KAAAi2E,GAAA/vE,KAAA4N,MAAA9T,KAAAi2E,GACAj2E,KAGA6yE,SAKA,OAJA7yE,KAAAwH,GAAAxH,KAAAwH,EACAxH,KAAAsF,GAAAtF,KAAAsF,EACAtF,KAAAi/B,GAAAj/B,KAAAi/B,EACAj/B,KAAAi2E,GAAAj2E,KAAAi2E,EACAj2E,KAGA6yE,IAAAxwE,GACA,OAAArC,KAAAwH,EAAAnF,EAAAmF,EAAAxH,KAAAsF,EAAAjD,EAAAiD,EAAAtF,KAAAi/B,EAAA58B,EAAA48B,EAAAj/B,KAAAi2E,EAAA5zE,EAAA4zE,EAGApD,WACA,OAAA7yE,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,EAAAtF,KAAAi/B,EAAAj/B,KAAAi/B,EAAAj/B,KAAAi2E,EAAAj2E,KAAAi2E,EAGApD,SACA,OAAA3sE,KAAA+F,KAAAjM,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,EAAAtF,KAAAi/B,EAAAj/B,KAAAi/B,EAAAj/B,KAAAi2E,EAAAj2E,KAAAi2E,GAGApD,kBACA,OAAA3sE,KAAAiO,IAAAnU,KAAAwH,GAAAtB,KAAAiO,IAAAnU,KAAAsF,GAAAY,KAAAiO,IAAAnU,KAAAi/B,GAAA/4B,KAAAiO,IAAAnU,KAAAi2E,GAGApD,YACA,OAAA7yE,KAAAw2E,aAAAx2E,KAAAK,UAAA,GAGAwyE,UAAAxyE,GACA,OAAAL,KAAAizB,YAAAmjD,eAAA/1E,GAGAwyE,KAAAxwE,EAAA20B,GAKA,OAJAh3B,KAAAwH,IAAAnF,EAAAmF,EAAAxH,KAAAwH,GAAAwvB,EACAh3B,KAAAsF,IAAAjD,EAAAiD,EAAAtF,KAAAsF,GAAA0xB,EACAh3B,KAAAi/B,IAAA58B,EAAA48B,EAAAj/B,KAAAi/B,GAAAjI,EACAh3B,KAAAi2E,IAAA5zE,EAAA4zE,EAAAj2E,KAAAi2E,GAAAj/C,EACAh3B,KAGA6yE,YAAA6D,EAAAC,EAAA3/C,GAKA,OAJAh3B,KAAAwH,EAAAkvE,EAAAlvE,GAAAmvE,EAAAnvE,EAAAkvE,EAAAlvE,GAAAwvB,EACAh3B,KAAAsF,EAAAoxE,EAAApxE,GAAAqxE,EAAArxE,EAAAoxE,EAAApxE,GAAA0xB,EACAh3B,KAAAi/B,EAAAy3C,EAAAz3C,GAAA03C,EAAA13C,EAAAy3C,EAAAz3C,GAAAjI,EACAh3B,KAAAi2E,EAAAS,EAAAT,GAAAU,EAAAV,EAAAS,EAAAT,GAAAj/C,EACAh3B,KAGA6yE,OAAAxwE,GACA,OAAAA,EAAAmF,IAAAxH,KAAAwH,GAAAnF,EAAAiD,IAAAtF,KAAAsF,GAAAjD,EAAA48B,IAAAj/B,KAAAi/B,GAAA58B,EAAA4zE,IAAAj2E,KAAAi2E,EAGApD,UAAA1O,EAAAltD,EAAA,GAKA,OAJAjX,KAAAwH,EAAA28D,EAAAltD,GACAjX,KAAAsF,EAAA6+D,EAAAltD,EAAA,GACAjX,KAAAi/B,EAAAklC,EAAAltD,EAAA,GACAjX,KAAAi2E,EAAA9R,EAAAltD,EAAA,GACAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAKA,OAJAktD,EAAAltD,GAAAjX,KAAAwH,EACA28D,EAAAltD,EAAA,GAAAjX,KAAAsF,EACA6+D,EAAAltD,EAAA,GAAAjX,KAAAi/B,EACAklC,EAAAltD,EAAA,GAAAjX,KAAAi2E,EACA9R,EAGA0O,oBAAA+D,EAAAt+D,EAAArB,GASA,YARAmwB,IAAAnwB,GACAhJ,QAAAC,KAAA,uEAGAlO,KAAAwH,EAAAovE,EAAAC,KAAAv+D,GACAtY,KAAAsF,EAAAsxE,EAAAE,KAAAx+D,GACAtY,KAAAi/B,EAAA23C,EAAAkH,KAAAxlE,GACAtY,KAAAi2E,EAAAW,EAAAmH,KAAAzlE,GACAtY,KAGA6yE,SAKA,OAJA7yE,KAAAwH,EAAAtB,KAAAkC,SACApI,KAAAsF,EAAAY,KAAAkC,SACApI,KAAAi/B,EAAA/4B,KAAAkC,SACApI,KAAAi2E,EAAA/vE,KAAAkC,SACApI,MAKA28E,GAAA5zE,UAAAi1E,WAAA,EAQA,MAAAC,WAAArL,GACAC,YAAA9vE,EAAAu3B,EAAA+Z,EAAA,IACA4mC,QACAj7E,KAAA+C,MAAAA,EACA/C,KAAAs6B,OAAAA,EACAt6B,KAAA2rE,MAAA,EACA3rE,KAAAk+E,QAAA,IAAAvB,GAAA,EAAA,EAAA55E,EAAAu3B,GACAt6B,KAAAm+E,aAAA,EACAn+E,KAAAo+E,SAAA,IAAAzB,GAAA,EAAA,EAAA55E,EAAAu3B,GACAt6B,KAAAq+E,QAAA,IAAA9D,QAAAnzC,EAAAiN,EAAAomC,QAAApmC,EAAAsmC,MAAAtmC,EAAAumC,MAAAvmC,EAAAwmC,UAAAxmC,EAAAymC,UAAAzmC,EAAAriB,OAAAqiB,EAAAt0C,KAAAs0C,EAAA0mC,WAAA1mC,EAAA2mC,UACAh7E,KAAAq+E,QAAA3C,uBAAA,EACA17E,KAAAq+E,QAAA1uB,MAAA,CACA5sD,MAAAA,EACAu3B,OAAAA,EACAqxC,MAAA,GAEA3rE,KAAAq+E,QAAA/C,qBAAAl0C,IAAAiN,EAAAinC,iBAAAjnC,EAAAinC,gBACAt7E,KAAAq+E,QAAAjD,oBAAAh0C,IAAAiN,EAAA+mC,eAAA/mC,EAAA+mC,eAAA,KACAp7E,KAAAq+E,QAAAvD,eAAA1zC,IAAAiN,EAAAymC,UAAAzmC,EAAAymC,UAAA5K,EACAlwE,KAAAs+E,iBAAAl3C,IAAAiN,EAAAiqC,aAAAjqC,EAAAiqC,YACAt+E,KAAAu+E,mBAAAn3C,IAAAiN,EAAAkqC,eAAAlqC,EAAAkqC,cACAv+E,KAAAw+E,kBAAAp3C,IAAAiN,EAAAmqC,aAAAnqC,EAAAmqC,aAAA,KAGA3L,WAAAwL,GACAA,EAAA1uB,MAAA,CACA5sD,MAAA/C,KAAA+C,MACAu3B,OAAAt6B,KAAAs6B,OACAqxC,MAAA3rE,KAAA2rE,OAEA3rE,KAAAq+E,QAAAA,EAGAxL,QAAA9vE,EAAAu3B,EAAAqxC,EAAA,GACA3rE,KAAA+C,QAAAA,GAAA/C,KAAAs6B,SAAAA,GAAAt6B,KAAA2rE,QAAAA,IACA3rE,KAAA+C,MAAAA,EACA/C,KAAAs6B,OAAAA,EACAt6B,KAAA2rE,MAAAA,EACA3rE,KAAAq+E,QAAA1uB,MAAA5sD,MAAAA,EACA/C,KAAAq+E,QAAA1uB,MAAAr1B,OAAAA,EACAt6B,KAAAq+E,QAAA1uB,MAAAgc,MAAAA,EACA3rE,KAAAy+E,WAGAz+E,KAAAo+E,SAAAn5D,IAAA,EAAA,EAAAliB,EAAAu3B,GACAt6B,KAAAk+E,QAAAj5D,IAAA,EAAA,EAAAliB,EAAAu3B,GAGAu4C,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjxC,GAYA,OAXA5hC,KAAA+C,MAAA6+B,EAAA7+B,MACA/C,KAAAs6B,OAAAsH,EAAAtH,OACAt6B,KAAA2rE,MAAA/pC,EAAA+pC,MACA3rE,KAAAo+E,SAAAvsE,KAAA+vB,EAAAw8C,UACAp+E,KAAAq+E,QAAAz8C,EAAAy8C,QAAAK,QACA1+E,KAAAq+E,QAAA1uB,MAAA,IAAA3vD,KAAAq+E,QAAA1uB,OAGA3vD,KAAAs+E,YAAA18C,EAAA08C,YACAt+E,KAAAu+E,cAAA38C,EAAA28C,cACAv+E,KAAAw+E,aAAA58C,EAAA48C,aACAx+E,KAGA6yE,UACA7yE,KAAAksC,cAAA,CACAnsC,KAAA,aAMAk+E,GAAAl1E,UAAA41E,qBAAA,EAEA,MAAAC,WAAAX,GACApL,YAAA9vE,EAAAu3B,EAAAukD,GACA5D,MAAAl4E,EAAAu3B,GACA,MAAA+jD,EAAAr+E,KAAAq+E,QACAr+E,KAAAq+E,QAAA,GAEA,IAAA,IAAA19E,EAAA,EAAAA,EAAAk+E,EAAAl+E,IACAX,KAAAq+E,QAAA19E,GAAA09E,EAAAK,QAIA7L,QAAA9vE,EAAAu3B,EAAAqxC,EAAA,GACA,GAAA3rE,KAAA+C,QAAAA,GAAA/C,KAAAs6B,SAAAA,GAAAt6B,KAAA2rE,QAAAA,EAAA,CACA3rE,KAAA+C,MAAAA,EACA/C,KAAAs6B,OAAAA,EACAt6B,KAAA2rE,MAAAA,EAEA,IAAA,IAAAhrE,EAAA,EAAAqzB,EAAAh0B,KAAAq+E,QAAAh+E,OAAAM,EAAAqzB,EAAArzB,IACAX,KAAAq+E,QAAA19E,GAAAgvD,MAAA5sD,MAAAA,EACA/C,KAAAq+E,QAAA19E,GAAAgvD,MAAAr1B,OAAAA,EACAt6B,KAAAq+E,QAAA19E,GAAAgvD,MAAAgc,MAAAA,EAGA3rE,KAAAy+E,UAKA,OAFAz+E,KAAAo+E,SAAAn5D,IAAA,EAAA,EAAAliB,EAAAu3B,GACAt6B,KAAAk+E,QAAAj5D,IAAA,EAAA,EAAAliB,EAAAu3B,GACAt6B,KAGA6yE,KAAAjxC,GACA5hC,KAAAy+E,UACAz+E,KAAA+C,MAAA6+B,EAAA7+B,MACA/C,KAAAs6B,OAAAsH,EAAAtH,OACAt6B,KAAA2rE,MAAA/pC,EAAA+pC,MACA3rE,KAAAo+E,SAAAn5D,IAAA,EAAA,EAAAjlB,KAAA+C,MAAA/C,KAAAs6B,QACAt6B,KAAAk+E,QAAAj5D,IAAA,EAAA,EAAAjlB,KAAA+C,MAAA/C,KAAAs6B,QACAt6B,KAAAs+E,YAAA18C,EAAA08C,YACAt+E,KAAAu+E,cAAA38C,EAAA28C,cACAv+E,KAAAw+E,aAAA58C,EAAA48C,aACAx+E,KAAAq+E,QAAAh+E,OAAA,EAEA,IAAA,IAAAM,EAAA,EAAAqzB,EAAA4N,EAAAy8C,QAAAh+E,OAAAM,EAAAqzB,EAAArzB,IACAX,KAAAq+E,QAAA19E,GAAAihC,EAAAy8C,QAAA19E,GAAA+9E,QAGA,OAAA1+E,MAKA4+E,GAAA71E,UAAA+1E,8BAAA,EAEA,MAAAC,WAAAd,GACApL,YAAA9vE,EAAAu3B,EAAA+Z,GACA4mC,MAAAl4E,EAAAu3B,EAAA+Z,GACAr0C,KAAAg/E,QAAA,EAGAnM,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAAqH,KAAAlZ,KAAA4hC,GACA5hC,KAAAg/E,QAAAp9C,EAAAo9C,QACAh/E,MAKA++E,GAAAh2E,UAAAk2E,gCAAA,EAEA,MAAAC,GACArM,YAAArrE,EAAA,EAAAlC,EAAA,EAAA25B,EAAA,EAAAg3C,EAAA,GACAj2E,KAAAm/E,GAAA33E,EACAxH,KAAAo/E,GAAA95E,EACAtF,KAAAq/E,GAAApgD,EACAj/B,KAAAs/E,GAAArJ,EAGApD,aAAA0M,EAAAC,EAAAC,EAAAx4E,GAEA,OADAgH,QAAAC,KAAA,wGACAuxE,EAAAC,iBAAAH,EAAAC,EAAAv4E,GAGA4rE,iBAAA8M,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA/4E,GAEA,IAAAg5E,EAAAJ,EAAAC,EAAA,GACAI,EAAAL,EAAAC,EAAA,GACAK,EAAAN,EAAAC,EAAA,GACAM,EAAAP,EAAAC,EAAA,GACA,MAAArhB,EAAAshB,EAAAC,EAAA,GACAthB,EAAAqhB,EAAAC,EAAA,GACAK,EAAAN,EAAAC,EAAA,GACAM,EAAAP,EAAAC,EAAA,GAEA,GAAA,IAAA/4E,EAKA,OAJA04E,EAAAC,EAAA,GAAAK,EACAN,EAAAC,EAAA,GAAAM,EACAP,EAAAC,EAAA,GAAAO,OACAR,EAAAC,EAAA,GAAAQ,GAIA,GAAA,IAAAn5E,EAKA,OAJA04E,EAAAC,EAAA,GAAAnhB,EACAkhB,EAAAC,EAAA,GAAAlhB,EACAihB,EAAAC,EAAA,GAAAS,OACAV,EAAAC,EAAA,GAAAU,GAIA,GAAAF,IAAAE,GAAAL,IAAAxhB,GAAAyhB,IAAAxhB,GAAAyhB,IAAAE,EAAA,CACA,IAAA3kE,EAAA,EAAAzU,EACA,MAAAkF,EAAA8zE,EAAAxhB,EAAAyhB,EAAAxhB,EAAAyhB,EAAAE,EAAAD,EAAAE,EACA12B,EAAAz9C,GAAA,EAAA,GAAA,EACAo0E,EAAA,EAAAp0E,EAAAA,EAEA,GAAAo0E,EAAApgE,OAAAqgE,QAAA,CACA,MAAAn0E,EAAAnG,KAAA+F,KAAAs0E,GACAzwC,EAAA5pC,KAAAuwB,MAAApqB,EAAAF,EAAAy9C,GACAluC,EAAAxV,KAAAmG,IAAAqP,EAAAo0B,GAAAzjC,EACApF,EAAAf,KAAAmG,IAAApF,EAAA6oC,GAAAzjC,EAGA,MAAAo0E,EAAAx5E,EAAA2iD,EAMA,GALAq2B,EAAAA,EAAAvkE,EAAA+iD,EAAAgiB,EACAP,EAAAA,EAAAxkE,EAAAgjD,EAAA+hB,EACAN,EAAAA,EAAAzkE,EAAA2kE,EAAAI,EACAL,EAAAA,EAAA1kE,EAAA4kE,EAAAG,EAEA/kE,IAAA,EAAAzU,EAAA,CACA,MAAAib,EAAA,EAAAhc,KAAA+F,KAAAg0E,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,GACAH,GAAA/9D,EACAg+D,GAAAh+D,EACAi+D,GAAAj+D,EACAk+D,GAAAl+D,GAIAy9D,EAAAC,GAAAK,EACAN,EAAAC,EAAA,GAAAM,EACAP,EAAAC,EAAA,GAAAO,EACAR,EAAAC,EAAA,GAAAQ,EAGAvN,+BAAA8M,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,MAAAC,EAAAJ,EAAAC,GACAI,EAAAL,EAAAC,EAAA,GACAK,EAAAN,EAAAC,EAAA,GACAM,EAAAP,EAAAC,EAAA,GACArhB,EAAAshB,EAAAC,GACAthB,EAAAqhB,EAAAC,EAAA,GACAK,EAAAN,EAAAC,EAAA,GACAM,EAAAP,EAAAC,EAAA,GAKA,OAJAL,EAAAC,GAAAK,EAAAK,EAAAF,EAAA3hB,EAAAyhB,EAAAG,EAAAF,EAAAzhB,EACAihB,EAAAC,EAAA,GAAAM,EAAAI,EAAAF,EAAA1hB,EAAAyhB,EAAA1hB,EAAAwhB,EAAAI,EACAV,EAAAC,EAAA,GAAAO,EAAAG,EAAAF,EAAAC,EAAAJ,EAAAvhB,EAAAwhB,EAAAzhB,EACAkhB,EAAAC,EAAA,GAAAQ,EAAAE,EAAAL,EAAAxhB,EAAAyhB,EAAAxhB,EAAAyhB,EAAAE,EACAV,EAGAn4E,QACA,OAAAxH,KAAAm/E,GAGA33E,MAAA1H,GACAE,KAAAm/E,GAAAr/E,EAEAE,KAAA0gF,oBAGAp7E,QACA,OAAAtF,KAAAo/E,GAGA95E,MAAAxF,GACAE,KAAAo/E,GAAAt/E,EAEAE,KAAA0gF,oBAGAzhD,QACA,OAAAj/B,KAAAq/E,GAGApgD,MAAAn/B,GACAE,KAAAq/E,GAAAv/E,EAEAE,KAAA0gF,oBAGAzK,QACA,OAAAj2E,KAAAs/E,GAGArJ,MAAAn2E,GACAE,KAAAs/E,GAAAx/E,EAEAE,KAAA0gF,oBAGA7N,IAAArrE,EAAAlC,EAAA25B,EAAAg3C,GAQA,OAPAj2E,KAAAm/E,GAAA33E,EACAxH,KAAAo/E,GAAA95E,EACAtF,KAAAq/E,GAAApgD,EACAj/B,KAAAs/E,GAAArJ,EAEAj2E,KAAA0gF,oBAEA1gF,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAq/E,GAAAr/E,KAAAs/E,IAGAzM,KAAA8N,GAQA,OAPA3gF,KAAAm/E,GAAAwB,EAAAn5E,EACAxH,KAAAo/E,GAAAuB,EAAAr7E,EACAtF,KAAAq/E,GAAAsB,EAAA1hD,EACAj/B,KAAAs/E,GAAAqB,EAAA1K,EAEAj2E,KAAA0gF,oBAEA1gF,KAGA6yE,aAAA+N,EAAA39B,GACA,IAAA29B,IAAAA,EAAAC,QACA,MAAA,IAAA/2B,MAAA,oGAGA,MAAAtiD,EAAAo5E,EAAAzB,GACA75E,EAAAs7E,EAAAxB,GACAngD,EAAA2hD,EAAAvB,GACAn5B,EAAA06B,EAAAE,OAIA30E,EAAAjG,KAAAiG,IACAE,EAAAnG,KAAAmG,IACA00E,EAAA50E,EAAA3E,EAAA,GACA+tE,EAAAppE,EAAA7G,EAAA,GACA07E,EAAA70E,EAAA8yB,EAAA,GACAgiD,EAAA50E,EAAA7E,EAAA,GACAguE,EAAAnpE,EAAA/G,EAAA,GACA47E,EAAA70E,EAAA4yB,EAAA,GAEA,OAAAinB,GACA,IAAA,MACAlmD,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,IAAA,MACAlhF,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,IAAA,MACAlhF,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,IAAA,MACAlhF,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,IAAA,MACAlhF,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,IAAA,MACAlhF,KAAAm/E,GAAA8B,EAAA1L,EAAAyL,EAAAD,EAAAvL,EAAA0L,EACAlhF,KAAAo/E,GAAA2B,EAAAvL,EAAAwL,EAAAC,EAAA1L,EAAA2L,EACAlhF,KAAAq/E,GAAA0B,EAAAxL,EAAA2L,EAAAD,EAAAzL,EAAAwL,EACAhhF,KAAAs/E,GAAAyB,EAAAxL,EAAAyL,EAAAC,EAAAzL,EAAA0L,EACA,MAEA,QACAjzE,QAAAC,KAAA,mEAAAg4C,GAIA,OADA,IAAAjD,GAAAjjD,KAAA0gF,oBACA1gF,KAGA6yE,iBAAAn5D,EAAA8lB,GAGA,MAAA2hD,EAAA3hD,EAAA,EACA9jB,EAAAxV,KAAAmG,IAAA80E,GAQA,OAPAnhF,KAAAm/E,GAAAzlE,EAAAlS,EAAAkU,EACA1b,KAAAo/E,GAAA1lE,EAAApU,EAAAoW,EACA1b,KAAAq/E,GAAA3lE,EAAAulB,EAAAvjB,EACA1b,KAAAs/E,GAAAp5E,KAAAiG,IAAAg1E,GAEAnhF,KAAA0gF,oBAEA1gF,KAGA6yE,sBAAA/lD,GAGA,MAAA4qD,EAAA5qD,EAAAupD,SACA0G,EAAArF,EAAA,GACAsF,EAAAtF,EAAA,GACAuF,EAAAvF,EAAA,GACAwF,EAAAxF,EAAA,GACAyF,EAAAzF,EAAA,GACA0F,EAAA1F,EAAA,GACA2F,EAAA3F,EAAA,GACA4F,EAAA5F,EAAA,GACA6F,EAAA7F,EAAA,IACA0J,EAAArE,EAAAI,EAAAI,EAEA,GAAA6D,EAAA,EAAA,CACA,MAAA1lE,EAAA,GAAAxV,KAAA+F,KAAAm1E,EAAA,GACAphF,KAAAs/E,GAAA,IAAA5jE,EACA1b,KAAAm/E,IAAA7B,EAAAF,GAAA1hE,EACA1b,KAAAo/E,IAAAnC,EAAAI,GAAA3hE,EACA1b,KAAAq/E,IAAAnC,EAAAF,GAAAthE,OACA,GAAAqhE,EAAAI,GAAAJ,EAAAQ,EAAA,CACA,MAAA7hE,EAAA,EAAAxV,KAAA+F,KAAA,EAAA8wE,EAAAI,EAAAI,GACAv9E,KAAAs/E,IAAAhC,EAAAF,GAAA1hE,EACA1b,KAAAm/E,GAAA,IAAAzjE,EACA1b,KAAAo/E,IAAApC,EAAAE,GAAAxhE,EACA1b,KAAAq/E,IAAApC,EAAAI,GAAA3hE,OACA,GAAAyhE,EAAAI,EAAA,CACA,MAAA7hE,EAAA,EAAAxV,KAAA+F,KAAA,EAAAkxE,EAAAJ,EAAAQ,GACAv9E,KAAAs/E,IAAArC,EAAAI,GAAA3hE,EACA1b,KAAAm/E,IAAAnC,EAAAE,GAAAxhE,EACA1b,KAAAo/E,GAAA,IAAA1jE,EACA1b,KAAAq/E,IAAAjC,EAAAE,GAAA5hE,MACA,CACA,MAAAA,EAAA,EAAAxV,KAAA+F,KAAA,EAAAsxE,EAAAR,EAAAI,GACAn9E,KAAAs/E,IAAApC,EAAAF,GAAAthE,EACA1b,KAAAm/E,IAAAlC,EAAAI,GAAA3hE,EACA1b,KAAAo/E,IAAAhC,EAAAE,GAAA5hE,EACA1b,KAAAq/E,GAAA,IAAA3jE,EAKA,OAFA1b,KAAA0gF,oBAEA1gF,KAGA6yE,mBAAAwO,EAAAC,GAEA,IAAA/6E,EAAA86E,EAAAE,IAAAD,GAAA,EAyBA,OAvBA/6E,EAAA4Z,OAAAqgE,SAEAj6E,EAAA,EAEAL,KAAAiO,IAAAktE,EAAA75E,GAAAtB,KAAAiO,IAAAktE,EAAApiD,IACAj/B,KAAAm/E,IAAAkC,EAAA/7E,EACAtF,KAAAo/E,GAAAiC,EAAA75E,EACAxH,KAAAq/E,GAAA,EACAr/E,KAAAs/E,GAAA/4E,IAEAvG,KAAAm/E,GAAA,EACAn/E,KAAAo/E,IAAAiC,EAAApiD,EACAj/B,KAAAq/E,GAAAgC,EAAA/7E,EACAtF,KAAAs/E,GAAA/4E,KAIAvG,KAAAm/E,GAAAkC,EAAA/7E,EAAAg8E,EAAAriD,EAAAoiD,EAAApiD,EAAAqiD,EAAAh8E,EACAtF,KAAAo/E,GAAAiC,EAAApiD,EAAAqiD,EAAA95E,EAAA65E,EAAA75E,EAAA85E,EAAAriD,EACAj/B,KAAAq/E,GAAAgC,EAAA75E,EAAA85E,EAAAh8E,EAAA+7E,EAAA/7E,EAAAg8E,EAAA95E,EACAxH,KAAAs/E,GAAA/4E,GAGAvG,KAAAizB,YAGA4/C,QAAAyC,GACA,OAAA,EAAApvE,KAAA02E,KAAA12E,KAAAiO,IAAAlM,GAAAjI,KAAAuhF,IAAAjM,IAAA,EAAA,KAGAzC,cAAAyC,EAAAkM,GACA,MAAAhiD,EAAAx/B,KAAAyhF,QAAAnM,GACA,GAAA,IAAA91C,EAAA,OAAAx/B,KACA,MAAAiH,EAAAf,KAAAC,IAAA,EAAAq7E,EAAAhiD,GAEA,OADAx/B,KAAA0hF,MAAApM,EAAAruE,GACAjH,KAGA6yE,WACA,OAAA7yE,KAAAilB,IAAA,EAAA,EAAA,EAAA,GAGA4tD,SAEA,OAAA7yE,KAAA2hF,YAGA9O,YAOA,OANA7yE,KAAAm/E,KAAA,EACAn/E,KAAAo/E,KAAA,EACAp/E,KAAAq/E,KAAA,EAEAr/E,KAAA0gF,oBAEA1gF,KAGA6yE,IAAAxwE,GACA,OAAArC,KAAAm/E,GAAA98E,EAAA88E,GAAAn/E,KAAAo/E,GAAA/8E,EAAA+8E,GAAAp/E,KAAAq/E,GAAAh9E,EAAAg9E,GAAAr/E,KAAAs/E,GAAAj9E,EAAAi9E,GAGAzM,WACA,OAAA7yE,KAAAm/E,GAAAn/E,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAo/E,GAAAp/E,KAAAq/E,GAAAr/E,KAAAq/E,GAAAr/E,KAAAs/E,GAAAt/E,KAAAs/E,GAGAzM,SACA,OAAA3sE,KAAA+F,KAAAjM,KAAAm/E,GAAAn/E,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAo/E,GAAAp/E,KAAAq/E,GAAAr/E,KAAAq/E,GAAAr/E,KAAAs/E,GAAAt/E,KAAAs/E,IAGAzM,YACA,IAAAtiE,EAAAvQ,KAAAK,SAiBA,OAfA,IAAAkQ,GACAvQ,KAAAm/E,GAAA,EACAn/E,KAAAo/E,GAAA,EACAp/E,KAAAq/E,GAAA,EACAr/E,KAAAs/E,GAAA,IAEA/uE,EAAA,EAAAA,EACAvQ,KAAAm/E,GAAAn/E,KAAAm/E,GAAA5uE,EACAvQ,KAAAo/E,GAAAp/E,KAAAo/E,GAAA7uE,EACAvQ,KAAAq/E,GAAAr/E,KAAAq/E,GAAA9uE,EACAvQ,KAAAs/E,GAAAt/E,KAAAs/E,GAAA/uE,GAGAvQ,KAAA0gF,oBAEA1gF,KAGA6yE,SAAAyC,EAAAlzE,GACA,YAAAglC,IAAAhlC,GACA6L,QAAAC,KAAA,0GACAlO,KAAA4hF,oBAAAtM,EAAAlzE,IAGApC,KAAA4hF,oBAAA5hF,KAAAs1E,GAGAzC,YAAAyC,GACA,OAAAt1E,KAAA4hF,oBAAAtM,EAAAt1E,MAGA6yE,oBAAA/qE,EAAAQ,GAEA,MAAAu5E,EAAA/5E,EAAAq3E,GACA2C,EAAAh6E,EAAAs3E,GACA2C,EAAAj6E,EAAAu3E,GACA2C,EAAAl6E,EAAAw3E,GACA2C,EAAA35E,EAAA62E,GACA+C,EAAA55E,EAAA82E,GACA+C,EAAA75E,EAAA+2E,GACA+C,EAAA95E,EAAAg3E,GAQA,OAPAt/E,KAAAm/E,GAAA0C,EAAAO,EAAAJ,EAAAC,EAAAH,EAAAK,EAAAJ,EAAAG,EACAliF,KAAAo/E,GAAA0C,EAAAM,EAAAJ,EAAAE,EAAAH,EAAAE,EAAAJ,EAAAM,EACAniF,KAAAq/E,GAAA0C,EAAAK,EAAAJ,EAAAG,EAAAN,EAAAK,EAAAJ,EAAAG,EACAjiF,KAAAs/E,GAAA0C,EAAAI,EAAAP,EAAAI,EAAAH,EAAAI,EAAAH,EAAAI,EAEAniF,KAAA0gF,oBAEA1gF,KAGA6yE,MAAA2M,EAAAv4E,GACA,GAAA,IAAAA,EAAA,OAAAjH,KACA,GAAA,IAAAiH,EAAA,OAAAjH,KAAA6R,KAAA2tE,GACA,MAAAh4E,EAAAxH,KAAAm/E,GACA75E,EAAAtF,KAAAo/E,GACAngD,EAAAj/B,KAAAq/E,GACApJ,EAAAj2E,KAAAs/E,GAEA,IAAA+C,EAAApM,EAAAuJ,EAAAF,GAAA93E,EAAAg4E,EAAAL,GAAA75E,EAAAk6E,EAAAJ,GAAAngD,EAAAugD,EAAAH,GAYA,GAVAgD,EAAA,GACAriF,KAAAs/E,IAAAE,EAAAF,GACAt/E,KAAAm/E,IAAAK,EAAAL,GACAn/E,KAAAo/E,IAAAI,EAAAJ,GACAp/E,KAAAq/E,IAAAG,EAAAH,GACAgD,GAAAA,GAEAriF,KAAA6R,KAAA2tE,GAGA6C,GAAA,EAKA,OAJAriF,KAAAs/E,GAAArJ,EACAj2E,KAAAm/E,GAAA33E,EACAxH,KAAAo/E,GAAA95E,EACAtF,KAAAq/E,GAAApgD,EACAj/B,KAGA,MAAAsiF,EAAA,EAAAD,EAAAA,EAEA,GAAAC,GAAAniE,OAAAqgE,QAAA,CACA,MAAA9kE,EAAA,EAAAzU,EASA,OARAjH,KAAAs/E,GAAA5jE,EAAAu6D,EAAAhvE,EAAAjH,KAAAs/E,GACAt/E,KAAAm/E,GAAAzjE,EAAAlU,EAAAP,EAAAjH,KAAAm/E,GACAn/E,KAAAo/E,GAAA1jE,EAAApW,EAAA2B,EAAAjH,KAAAo/E,GACAp/E,KAAAq/E,GAAA3jE,EAAAujB,EAAAh4B,EAAAjH,KAAAq/E,GACAr/E,KAAAizB,YAEAjzB,KAAA0gF,oBAEA1gF,KAGA,MAAAuiF,EAAAr8E,KAAA+F,KAAAq2E,GACAE,EAAAt8E,KAAAuwB,MAAA8rD,EAAAF,GACAI,EAAAv8E,KAAAmG,KAAA,EAAApF,GAAAu7E,GAAAD,EACAG,EAAAx8E,KAAAmG,IAAApF,EAAAu7E,GAAAD,EAQA,OAPAviF,KAAAs/E,GAAArJ,EAAAwM,EAAAziF,KAAAs/E,GAAAoD,EACA1iF,KAAAm/E,GAAA33E,EAAAi7E,EAAAziF,KAAAm/E,GAAAuD,EACA1iF,KAAAo/E,GAAA95E,EAAAm9E,EAAAziF,KAAAo/E,GAAAsD,EACA1iF,KAAAq/E,GAAApgD,EAAAwjD,EAAAziF,KAAAq/E,GAAAqD,EAEA1iF,KAAA0gF,oBAEA1gF,KAGA6yE,iBAAA0M,EAAAC,EAAAv4E,GACAjH,KAAA6R,KAAA0tE,GAAAmC,MAAAlC,EAAAv4E,GAGA4rE,OAAA8N,GACA,OAAAA,EAAAxB,KAAAn/E,KAAAm/E,IAAAwB,EAAAvB,KAAAp/E,KAAAo/E,IAAAuB,EAAAtB,KAAAr/E,KAAAq/E,IAAAsB,EAAArB,KAAAt/E,KAAAs/E,GAGAzM,UAAA1O,EAAAltD,EAAA,GAQA,OAPAjX,KAAAm/E,GAAAhb,EAAAltD,GACAjX,KAAAo/E,GAAAjb,EAAAltD,EAAA,GACAjX,KAAAq/E,GAAAlb,EAAAltD,EAAA,GACAjX,KAAAs/E,GAAAnb,EAAAltD,EAAA,GAEAjX,KAAA0gF,oBAEA1gF,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAKA,OAJAktD,EAAAltD,GAAAjX,KAAAm/E,GACAhb,EAAAltD,EAAA,GAAAjX,KAAAo/E,GACAjb,EAAAltD,EAAA,GAAAjX,KAAAq/E,GACAlb,EAAAltD,EAAA,GAAAjX,KAAAs/E,GACAnb,EAGA0O,oBAAA+D,EAAAt+D,GAKA,OAJAtY,KAAAm/E,GAAAvI,EAAAC,KAAAv+D,GACAtY,KAAAo/E,GAAAxI,EAAAE,KAAAx+D,GACAtY,KAAAq/E,GAAAzI,EAAAkH,KAAAxlE,GACAtY,KAAAs/E,GAAA1I,EAAAmH,KAAAzlE,GACAtY,KAGA6yE,UAAAp2D,GAEA,OADAzc,KAAA0gF,kBAAAjkE,EACAzc,KAGA6yE,sBAIAqM,GAAAn2E,UAAA45E,cAAA,EAEA,MAAAC,GACA/P,YAAArrE,EAAA,EAAAlC,EAAA,EAAA25B,EAAA,GACAj/B,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EACAtF,KAAAi/B,EAAAA,EAGA4zC,IAAArrE,EAAAlC,EAAA25B,GAMA,YALAmI,IAAAnI,IAAAA,EAAAj/B,KAAAi/B,GAEAj/B,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EACAtF,KAAAi/B,EAAAA,EACAj/B,KAGA6yE,UAAAmD,GAIA,OAHAh2E,KAAAwH,EAAAwuE,EACAh2E,KAAAsF,EAAA0wE,EACAh2E,KAAAi/B,EAAA+2C,EACAh2E,KAGA6yE,KAAArrE,GAEA,OADAxH,KAAAwH,EAAAA,EACAxH,KAGA6yE,KAAAvtE,GAEA,OADAtF,KAAAsF,EAAAA,EACAtF,KAGA6yE,KAAA5zC,GAEA,OADAj/B,KAAAi/B,EAAAA,EACAj/B,KAGA6yE,aAAAv6D,EAAAxY,GACA,OAAAwY,GACA,KAAA,EACAtY,KAAAwH,EAAA1H,EACA,MAEA,KAAA,EACAE,KAAAsF,EAAAxF,EACA,MAEA,KAAA,EACAE,KAAAi/B,EAAAn/B,EACA,MAEA,QACA,MAAA,IAAAgqD,MAAA,0BAAAxxC,GAGA,OAAAtY,KAGA6yE,aAAAv6D,GACA,OAAAA,GACA,KAAA,EACA,OAAAtY,KAAAwH,EAEA,KAAA,EACA,OAAAxH,KAAAsF,EAEA,KAAA,EACA,OAAAtF,KAAAi/B,EAEA,QACA,MAAA,IAAA6qB,MAAA,0BAAAxxC,IAIAu6D,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAi/B,GAGA4zC,KAAAxwE,GAIA,OAHArC,KAAAwH,EAAAnF,EAAAmF,EACAxH,KAAAsF,EAAAjD,EAAAiD,EACAtF,KAAAi/B,EAAA58B,EAAA48B,EACAj/B,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAk2E,WAAA7zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,MAGA6yE,UAAAn3D,GAIA,OAHA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAAAi/B,GAAAvjB,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAIA,OAHAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAAAi/B,EAAAn3B,EAAAm3B,EAAA32B,EAAA22B,EACAj/B,KAGA6yE,gBAAAxwE,EAAAqZ,GAIA,OAHA1b,KAAAwH,GAAAnF,EAAAmF,EAAAkU,EACA1b,KAAAsF,GAAAjD,EAAAiD,EAAAoW,EACA1b,KAAAi/B,GAAA58B,EAAA48B,EAAAvjB,EACA1b,KAGA6yE,IAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,yFACAlO,KAAAm2E,WAAA9zE,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,MAGA6yE,UAAAn3D,GAIA,OAHA1b,KAAAwH,GAAAkU,EACA1b,KAAAsF,GAAAoW,EACA1b,KAAAi/B,GAAAvjB,EACA1b,KAGA6yE,WAAA/qE,EAAAQ,GAIA,OAHAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAAAi/B,EAAAn3B,EAAAm3B,EAAA32B,EAAA22B,EACAj/B,KAGA6yE,SAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,mGACAlO,KAAA6iF,gBAAAxgF,EAAA4zE,KAGAj2E,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,MAGA6yE,eAAAmD,GAIA,OAHAh2E,KAAAwH,GAAAwuE,EACAh2E,KAAAsF,GAAA0wE,EACAh2E,KAAAi/B,GAAA+2C,EACAh2E,KAGA6yE,gBAAA/qE,EAAAQ,GAIA,OAHAtI,KAAAwH,EAAAM,EAAAN,EAAAc,EAAAd,EACAxH,KAAAsF,EAAAwC,EAAAxC,EAAAgD,EAAAhD,EACAtF,KAAAi/B,EAAAn3B,EAAAm3B,EAAA32B,EAAA22B,EACAj/B,KAGA6yE,WAAA+N,GAKA,OAJAA,GAAAA,EAAAC,SACA5yE,QAAApK,MAAA,+FAGA7D,KAAA8iF,gBAAAC,GAAAC,aAAApC,IAGA/N,eAAAn5D,EAAA8lB,GACA,OAAAx/B,KAAA8iF,gBAAAC,GAAAE,iBAAAvpE,EAAA8lB,IAGAqzC,aAAA/lD,GACA,MAAAtlB,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACA25B,EAAAj/B,KAAAi/B,EACApS,EAAAC,EAAAupD,SAIA,OAHAr2E,KAAAwH,EAAAqlB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EACAj/B,KAAAsF,EAAAunB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EACAj/B,KAAAi/B,EAAApS,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EACAj/B,KAGA6yE,kBAAA/lD,GACA,OAAA9sB,KAAAq8E,aAAAvvD,GAAAmG,YAGA4/C,aAAA/lD,GACA,MAAAtlB,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACA25B,EAAAj/B,KAAAi/B,EACApS,EAAAC,EAAAupD,SACAJ,EAAA,GAAAppD,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,IAAAoS,EAAApS,EAAA,KAIA,OAHA7sB,KAAAwH,GAAAqlB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EAAApS,EAAA,KAAAopD,EACAj2E,KAAAsF,GAAAunB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EAAApS,EAAA,KAAAopD,EACAj2E,KAAAi/B,GAAApS,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,IAAAoS,EAAApS,EAAA,KAAAopD,EACAj2E,KAGA6yE,gBAAAyC,GACA,MAAA9tE,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACA25B,EAAAj/B,KAAAi/B,EACAikD,EAAA5N,EAAA9tE,EACA27E,EAAA7N,EAAAhwE,EACA89E,EAAA9N,EAAAr2C,EACAokD,EAAA/N,EAAAW,EAEAqN,EAAAD,EAAA77E,EAAA27E,EAAAlkD,EAAAmkD,EAAA99E,EACAi+E,EAAAF,EAAA/9E,EAAA89E,EAAA57E,EAAA07E,EAAAjkD,EACAukD,EAAAH,EAAApkD,EAAAikD,EAAA59E,EAAA69E,EAAA37E,EACAi8E,GAAAP,EAAA17E,EAAA27E,EAAA79E,EAAA89E,EAAAnkD,EAKA,OAHAj/B,KAAAwH,EAAA87E,EAAAD,EAAAI,GAAAP,EAAAK,GAAAH,EAAAI,GAAAL,EACAnjF,KAAAsF,EAAAi+E,EAAAF,EAAAI,GAAAN,EAAAK,GAAAN,EAAAI,GAAAF,EACApjF,KAAAi/B,EAAAukD,EAAAH,EAAAI,GAAAL,EAAAE,GAAAH,EAAAI,GAAAL,EACAljF,KAGA6yE,QAAA6Q,GACA,OAAA1jF,KAAA2jF,aAAAD,EAAAE,oBAAAD,aAAAD,EAAAG,kBAGAhR,UAAA6Q,GACA,OAAA1jF,KAAA2jF,aAAAD,EAAAI,yBAAAH,aAAAD,EAAAK,aAGAlR,mBAAA/lD,GAGA,MAAAtlB,EAAAxH,KAAAwH,EACAlC,EAAAtF,KAAAsF,EACA25B,EAAAj/B,KAAAi/B,EACApS,EAAAC,EAAAupD,SAIA,OAHAr2E,KAAAwH,EAAAqlB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EACAj/B,KAAAsF,EAAAunB,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,GAAAoS,EACAj/B,KAAAi/B,EAAApS,EAAA,GAAArlB,EAAAqlB,EAAA,GAAAvnB,EAAAunB,EAAA,IAAAoS,EACAj/B,KAAAizB,YAGA4/C,OAAAxwE,GAIA,OAHArC,KAAAwH,GAAAnF,EAAAmF,EACAxH,KAAAsF,GAAAjD,EAAAiD,EACAtF,KAAAi/B,GAAA58B,EAAA48B,EACAj/B,KAGA6yE,aAAAmD,GACA,OAAAh2E,KAAAo2E,eAAA,EAAAJ,GAGAnD,IAAAxwE,GAIA,OAHArC,KAAAwH,EAAAtB,KAAAC,IAAAnG,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAC,IAAAnG,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAAAi/B,EAAA/4B,KAAAC,IAAAnG,KAAAi/B,EAAA58B,EAAA48B,GACAj/B,KAGA6yE,IAAAxwE,GAIA,OAHArC,KAAAwH,EAAAtB,KAAAiS,IAAAnY,KAAAwH,EAAAnF,EAAAmF,GACAxH,KAAAsF,EAAAY,KAAAiS,IAAAnY,KAAAsF,EAAAjD,EAAAiD,GACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAnY,KAAAi/B,EAAA58B,EAAA48B,GACAj/B,KAGA6yE,MAAA1sE,EAAAgS,GAKA,OAHAnY,KAAAwH,EAAAtB,KAAAiS,IAAAhS,EAAAqB,EAAAtB,KAAAC,IAAAgS,EAAA3Q,EAAAxH,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAhS,EAAAb,EAAAY,KAAAC,IAAAgS,EAAA7S,EAAAtF,KAAAsF,IACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAhS,EAAA84B,EAAA/4B,KAAAC,IAAAgS,EAAA8mB,EAAAj/B,KAAAi/B,IACAj/B,KAGA6yE,YAAAyD,EAAAC,GAIA,OAHAv2E,KAAAwH,EAAAtB,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAwH,IACAxH,KAAAsF,EAAAY,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAsF,IACAtF,KAAAi/B,EAAA/4B,KAAAiS,IAAAm+D,EAAApwE,KAAAC,IAAAowE,EAAAv2E,KAAAi/B,IACAj/B,KAGA6yE,YAAA1sE,EAAAgS,GACA,MAAA9X,EAAAL,KAAAK,SACA,OAAAL,KAAAw2E,aAAAn2E,GAAA,GAAA+1E,eAAAlwE,KAAAiS,IAAAhS,EAAAD,KAAAC,IAAAgS,EAAA9X,KAGAwyE,QAIA,OAHA7yE,KAAAwH,EAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAA4N,MAAA9T,KAAAi/B,GACAj/B,KAGA6yE,OAIA,OAHA7yE,KAAAwH,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAA++C,KAAAjlD,KAAAi/B,GACAj/B,KAGA6yE,QAIA,OAHA7yE,KAAAwH,EAAAtB,KAAAgK,MAAAlQ,KAAAwH,GACAxH,KAAAsF,EAAAY,KAAAgK,MAAAlQ,KAAAsF,GACAtF,KAAAi/B,EAAA/4B,KAAAgK,MAAAlQ,KAAAi/B,GACAj/B,KAGA6yE,cAIA,OAHA7yE,KAAAwH,EAAAxH,KAAAwH,EAAA,EAAAtB,KAAA++C,KAAAjlD,KAAAwH,GAAAtB,KAAA4N,MAAA9T,KAAAwH,GACAxH,KAAAsF,EAAAtF,KAAAsF,EAAA,EAAAY,KAAA++C,KAAAjlD,KAAAsF,GAAAY,KAAA4N,MAAA9T,KAAAsF,GACAtF,KAAAi/B,EAAAj/B,KAAAi/B,EAAA,EAAA/4B,KAAA++C,KAAAjlD,KAAAi/B,GAAA/4B,KAAA4N,MAAA9T,KAAAi/B,GACAj/B,KAGA6yE,SAIA,OAHA7yE,KAAAwH,GAAAxH,KAAAwH,EACAxH,KAAAsF,GAAAtF,KAAAsF,EACAtF,KAAAi/B,GAAAj/B,KAAAi/B,EACAj/B,KAGA6yE,IAAAxwE,GACA,OAAArC,KAAAwH,EAAAnF,EAAAmF,EAAAxH,KAAAsF,EAAAjD,EAAAiD,EAAAtF,KAAAi/B,EAAA58B,EAAA48B,EAIA4zC,WACA,OAAA7yE,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,EAAAtF,KAAAi/B,EAAAj/B,KAAAi/B,EAGA4zC,SACA,OAAA3sE,KAAA+F,KAAAjM,KAAAwH,EAAAxH,KAAAwH,EAAAxH,KAAAsF,EAAAtF,KAAAsF,EAAAtF,KAAAi/B,EAAAj/B,KAAAi/B,GAGA4zC,kBACA,OAAA3sE,KAAAiO,IAAAnU,KAAAwH,GAAAtB,KAAAiO,IAAAnU,KAAAsF,GAAAY,KAAAiO,IAAAnU,KAAAi/B,GAGA4zC,YACA,OAAA7yE,KAAAw2E,aAAAx2E,KAAAK,UAAA,GAGAwyE,UAAAxyE,GACA,OAAAL,KAAAizB,YAAAmjD,eAAA/1E,GAGAwyE,KAAAxwE,EAAA20B,GAIA,OAHAh3B,KAAAwH,IAAAnF,EAAAmF,EAAAxH,KAAAwH,GAAAwvB,EACAh3B,KAAAsF,IAAAjD,EAAAiD,EAAAtF,KAAAsF,GAAA0xB,EACAh3B,KAAAi/B,IAAA58B,EAAA48B,EAAAj/B,KAAAi/B,GAAAjI,EACAh3B,KAGA6yE,YAAA6D,EAAAC,EAAA3/C,GAIA,OAHAh3B,KAAAwH,EAAAkvE,EAAAlvE,GAAAmvE,EAAAnvE,EAAAkvE,EAAAlvE,GAAAwvB,EACAh3B,KAAAsF,EAAAoxE,EAAApxE,GAAAqxE,EAAArxE,EAAAoxE,EAAApxE,GAAA0xB,EACAh3B,KAAAi/B,EAAAy3C,EAAAz3C,GAAA03C,EAAA13C,EAAAy3C,EAAAz3C,GAAAjI,EACAh3B,KAGA6yE,MAAAxwE,EAAA4zE,GACA,YAAA7uC,IAAA6uC,GACAhoE,QAAAC,KAAA,6FACAlO,KAAAgkF,aAAA3hF,EAAA4zE,IAGAj2E,KAAAgkF,aAAAhkF,KAAAqC,GAGAwwE,aAAA/qE,EAAAQ,GACA,MAAA27E,EAAAn8E,EAAAN,EACA08E,EAAAp8E,EAAAxC,EACA6+E,EAAAr8E,EAAAm3B,EACAmlD,EAAA97E,EAAAd,EACAm9D,EAAAr8D,EAAAhD,EACA++E,EAAA/7E,EAAA22B,EAIA,OAHAj/B,KAAAwH,EAAA08E,EAAAG,EAAAF,EAAAxf,EACA3kE,KAAAsF,EAAA6+E,EAAAC,EAAAH,EAAAI,EACArkF,KAAAi/B,EAAAglD,EAAAtf,EAAAuf,EAAAE,EACApkF,KAGA6yE,gBAAAxwE,GACA,MAAAiiF,EAAAjiF,EAAAkiF,WACA,GAAA,IAAAD,EAAA,OAAAtkF,KAAAilB,IAAA,EAAA,EAAA,GACA,MAAA+wD,EAAA3zE,EAAAk/E,IAAAvhF,MAAAskF,EACA,OAAAtkF,KAAA6R,KAAAxP,GAAA+zE,eAAAJ,GAGAnD,eAAA2R,GAGA,OAFAC,GAAA5yE,KAAA7R,MAAA0kF,gBAAAF,GAEAxkF,KAAA2kF,IAAAF,IAGA5R,QAAA+R,GAGA,OAAA5kF,KAAA2kF,IAAAF,GAAA5yE,KAAA+yE,GAAAxO,eAAA,EAAAp2E,KAAAuhF,IAAAqD,KAGA/R,QAAAxwE,GACA,MAAAiiF,EAAAp+E,KAAA+F,KAAAjM,KAAAukF,WAAAliF,EAAAkiF,YACA,GAAA,IAAAD,EAAA,OAAAp+E,KAAA2F,GAAA,EACA,MAAA6tE,EAAA15E,KAAAuhF,IAAAl/E,GAAAiiF,EAEA,OAAAp+E,KAAA02E,KAAA30E,GAAAyxE,GAAA,EAAA,IAGA7G,WAAAxwE,GACA,OAAA6D,KAAA+F,KAAAjM,KAAAy2E,kBAAAp0E,IAGAwwE,kBAAAxwE,GACA,MAAA4Y,EAAAjb,KAAAwH,EAAAnF,EAAAmF,EACA0T,EAAAlb,KAAAsF,EAAAjD,EAAAiD,EACAu/E,EAAA7kF,KAAAi/B,EAAA58B,EAAA48B,EACA,OAAAhkB,EAAAA,EAAAC,EAAAA,EAAA2pE,EAAAA,EAGAhS,oBAAAxwE,GACA,OAAA6D,KAAAiO,IAAAnU,KAAAwH,EAAAnF,EAAAmF,GAAAtB,KAAAiO,IAAAnU,KAAAsF,EAAAjD,EAAAiD,GAAAY,KAAAiO,IAAAnU,KAAAi/B,EAAA58B,EAAA48B,GAGA4zC,iBAAAn3D,GACA,OAAA1b,KAAA8kF,uBAAAppE,EAAAZ,OAAAY,EAAAqpE,IAAArpE,EAAAg+D,OAGA7G,uBAAA/3D,EAAAiqE,EAAArL,GACA,MAAAsL,EAAA9+E,KAAAmG,IAAA04E,GAAAjqE,EAIA,OAHA9a,KAAAwH,EAAAw9E,EAAA9+E,KAAAmG,IAAAqtE,GACA15E,KAAAsF,EAAAY,KAAAiG,IAAA44E,GAAAjqE,EACA9a,KAAAi/B,EAAA+lD,EAAA9+E,KAAAiG,IAAAutE,GACA15E,KAGA6yE,mBAAA1rE,GACA,OAAAnH,KAAAilF,yBAAA99E,EAAA2T,OAAA3T,EAAAuyE,MAAAvyE,EAAA7B,GAGAutE,yBAAA/3D,EAAA4+D,EAAAp0E,GAIA,OAHAtF,KAAAwH,EAAAsT,EAAA5U,KAAAmG,IAAAqtE,GACA15E,KAAAsF,EAAAA,EACAtF,KAAAi/B,EAAAnkB,EAAA5U,KAAAiG,IAAAutE,GACA15E,KAGA6yE,sBAAA/lD,GACA,MAAAD,EAAAC,EAAAupD,SAIA,OAHAr2E,KAAAwH,EAAAqlB,EAAA,IACA7sB,KAAAsF,EAAAunB,EAAA,IACA7sB,KAAAi/B,EAAApS,EAAA,IACA7sB,KAGA6yE,mBAAA/lD,GACA,MAAAwsD,EAAAt5E,KAAAklF,oBAAAp4D,EAAA,GAAAzsB,SACAk5E,EAAAv5E,KAAAklF,oBAAAp4D,EAAA,GAAAzsB,SACA8kF,EAAAnlF,KAAAklF,oBAAAp4D,EAAA,GAAAzsB,SAIA,OAHAL,KAAAwH,EAAA8xE,EACAt5E,KAAAsF,EAAAi0E,EACAv5E,KAAAi/B,EAAAkmD,EACAnlF,KAGA6yE,oBAAA/lD,EAAAxU,GACA,OAAAtY,KAAA25E,UAAA7sD,EAAAupD,SAAA,EAAA/9D,GAGAu6D,qBAAA/lD,EAAAxU,GACA,OAAAtY,KAAA25E,UAAA7sD,EAAAupD,SAAA,EAAA/9D,GAGAu6D,OAAAxwE,GACA,OAAAA,EAAAmF,IAAAxH,KAAAwH,GAAAnF,EAAAiD,IAAAtF,KAAAsF,GAAAjD,EAAA48B,IAAAj/B,KAAAi/B,EAGA4zC,UAAA1O,EAAAltD,EAAA,GAIA,OAHAjX,KAAAwH,EAAA28D,EAAAltD,GACAjX,KAAAsF,EAAA6+D,EAAAltD,EAAA,GACAjX,KAAAi/B,EAAAklC,EAAAltD,EAAA,GACAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAIA,OAHAktD,EAAAltD,GAAAjX,KAAAwH,EACA28D,EAAAltD,EAAA,GAAAjX,KAAAsF,EACA6+D,EAAAltD,EAAA,GAAAjX,KAAAi/B,EACAklC,EAGA0O,oBAAA+D,EAAAt+D,EAAArB,GAQA,YAPAmwB,IAAAnwB,GACAhJ,QAAAC,KAAA,uEAGAlO,KAAAwH,EAAAovE,EAAAC,KAAAv+D,GACAtY,KAAAsF,EAAAsxE,EAAAE,KAAAx+D,GACAtY,KAAAi/B,EAAA23C,EAAAkH,KAAAxlE,GACAtY,KAGA6yE,SAIA,OAHA7yE,KAAAwH,EAAAtB,KAAAkC,SACApI,KAAAsF,EAAAY,KAAAkC,SACApI,KAAAi/B,EAAA/4B,KAAAkC,SACApI,MAKA4iF,GAAA75E,UAAAq8E,WAAA,EAEA,MAAAX,GAAA,IAAA7B,GAEAG,GAAA,IAAA7D,GAEA,MAAAmG,GACAxS,YAAA1sE,EAAA,IAAAy8E,GAAAz9D,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAhN,EAAA,IAAAyqE,IAAAz9D,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,IACAnlB,KAAAmG,IAAAA,EACAnG,KAAAmY,IAAAA,EAGA06D,IAAA1sE,EAAAgS,GAGA,OAFAnY,KAAAmG,IAAA0L,KAAA1L,GACAnG,KAAAmY,IAAAtG,KAAAsG,GACAnY,KAGA6yE,aAAA1O,GACA,IAAAnE,EAAA76C,EAAAA,EACA+6C,EAAA/6C,EAAAA,EACAmgE,EAAAngE,EAAAA,EACA86C,GAAA96C,EAAAA,EACAg7C,GAAAh7C,EAAAA,EACAogE,GAAApgE,EAAAA,EAEA,IAAA,IAAAxkB,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAAM,EAAA4P,EAAA5P,GAAA,EAAA,CACA,MAAA6G,EAAA28D,EAAAxjE,GACA2E,EAAA6+D,EAAAxjE,EAAA,GACAs+B,EAAAklC,EAAAxjE,EAAA,GACA6G,EAAAw4D,IAAAA,EAAAx4D,GACAlC,EAAA46D,IAAAA,EAAA56D,GACA25B,EAAAqmD,IAAAA,EAAArmD,GACAz3B,EAAAy4D,IAAAA,EAAAz4D,GACAlC,EAAA66D,IAAAA,EAAA76D,GACA25B,EAAAsmD,IAAAA,EAAAtmD,GAKA,OAFAj/B,KAAAmG,IAAA8e,IAAA+6C,EAAAE,EAAAolB,GACAtlF,KAAAmY,IAAA8M,IAAAg7C,EAAAE,EAAAolB,GACAvlF,KAGA6yE,uBAAA+D,GACA,IAAA5W,EAAA76C,EAAAA,EACA+6C,EAAA/6C,EAAAA,EACAmgE,EAAAngE,EAAAA,EACA86C,GAAA96C,EAAAA,EACAg7C,GAAAh7C,EAAAA,EACAogE,GAAApgE,EAAAA,EAEA,IAAA,IAAAxkB,EAAA,EAAA4P,EAAAqmE,EAAAiI,MAAAl+E,EAAA4P,EAAA5P,IAAA,CACA,MAAA6G,EAAAovE,EAAAC,KAAAl2E,GACA2E,EAAAsxE,EAAAE,KAAAn2E,GACAs+B,EAAA23C,EAAAkH,KAAAn9E,GACA6G,EAAAw4D,IAAAA,EAAAx4D,GACAlC,EAAA46D,IAAAA,EAAA56D,GACA25B,EAAAqmD,IAAAA,EAAArmD,GACAz3B,EAAAy4D,IAAAA,EAAAz4D,GACAlC,EAAA66D,IAAAA,EAAA76D,GACA25B,EAAAsmD,IAAAA,EAAAtmD,GAKA,OAFAj/B,KAAAmG,IAAA8e,IAAA+6C,EAAAE,EAAAolB,GACAtlF,KAAAmY,IAAA8M,IAAAg7C,EAAAE,EAAAolB,GACAvlF,KAGA6yE,cAAAtrE,GACAvH,KAAAwlF,YAEA,IAAA,IAAA7kF,EAAA,EAAAqzB,EAAAzsB,EAAAlH,OAAAM,EAAAqzB,EAAArzB,IACAX,KAAAylF,cAAAl+E,EAAA5G,IAGA,OAAAX,KAGA6yE,qBAAAh5D,EAAAupC,GACA,MAAAsiC,EAAAC,GAAA9zE,KAAAuxC,GAAAgzB,eAAA,IAIA,OAFAp2E,KAAAmG,IAAA0L,KAAAgI,GAAA8qE,IAAAe,GACA1lF,KAAAmY,IAAAtG,KAAAgI,GAAAyD,IAAAooE,GACA1lF,KAGA6yE,cAAA5gB,GAEA,OADAjyD,KAAAwlF,YACAxlF,KAAA4lF,eAAA3zB,GAGA4gB,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjmC,GAGA,OAFA5sC,KAAAmG,IAAA0L,KAAA+6B,EAAAzmC,KACAnG,KAAAmY,IAAAtG,KAAA+6B,EAAAz0B,KACAnY,KAGA6yE,YAGA,OAFA7yE,KAAAmG,IAAAqB,EAAAxH,KAAAmG,IAAAb,EAAAtF,KAAAmG,IAAA84B,EAAA9Z,EAAAA,EACAnlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmY,IAAA8mB,GAAA9Z,EAAAA,EACAnlB,KAGA6yE,UAEA,OAAA7yE,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,GAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAAb,GAAAtF,KAAAmY,IAAA8mB,EAAAj/B,KAAAmG,IAAA84B,EAGA4zC,UAAA1jE,GACA,OAAAnP,KAAA6lF,UAAA12E,EAAA8V,IAAA,EAAA,EAAA,GAAA9V,EAAA+mE,WAAAl2E,KAAAmG,IAAAnG,KAAAmY,KAAAi+D,eAAA,IAGAvD,QAAA1jE,GACA,OAAAnP,KAAA6lF,UAAA12E,EAAA8V,IAAA,EAAA,EAAA,GAAA9V,EAAAgnE,WAAAn2E,KAAAmY,IAAAnY,KAAAmG,KAGA0sE,cAAAzkB,GAGA,OAFApuD,KAAAmG,IAAAA,IAAAioD,GACApuD,KAAAmY,IAAAA,IAAAi2C,GACApuD,KAGA6yE,eAAAiT,GAGA,OAFA9lF,KAAAmG,IAAAw+E,IAAAmB,GACA9lF,KAAAmY,IAAAmF,IAAAwoE,GACA9lF,KAGA6yE,eAAAmD,GAGA,OAFAh2E,KAAAmG,IAAA4/E,WAAA/P,GACAh2E,KAAAmY,IAAA4tE,UAAA/P,GACAh2E,KAGA6yE,eAAA5gB,GAGAA,EAAA+zB,mBAAA,GAAA,GACA,MAAAC,EAAAh0B,EAAAg0B,cAEA7+C,IAAA6+C,IACA,OAAAA,EAAAC,aACAD,EAAAE,qBAGAC,GAAAv0E,KAAAo0E,EAAAC,aAEAE,GAAAzC,aAAA1xB,EAAA8xB,aAEA/jF,KAAAqmF,MAAAD,KAGA,MAAA37D,EAAAwnC,EAAAxnC,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACAX,KAAA4lF,eAAAn7D,EAAA9pB,IAGA,OAAAX,KAGA6yE,cAAAzkB,GACA,QAAAA,EAAA5mD,EAAAxH,KAAAmG,IAAAqB,GAAA4mD,EAAA5mD,EAAAxH,KAAAmY,IAAA3Q,GAAA4mD,EAAA9oD,EAAAtF,KAAAmG,IAAAb,GAAA8oD,EAAA9oD,EAAAtF,KAAAmY,IAAA7S,GAAA8oD,EAAAnvB,EAAAj/B,KAAAmG,IAAA84B,GAAAmvB,EAAAnvB,EAAAj/B,KAAAmY,IAAA8mB,GAGA4zC,YAAAjmC,GACA,OAAA5sC,KAAAmG,IAAAqB,GAAAolC,EAAAzmC,IAAAqB,GAAAolC,EAAAz0B,IAAA3Q,GAAAxH,KAAAmY,IAAA3Q,GAAAxH,KAAAmG,IAAAb,GAAAsnC,EAAAzmC,IAAAb,GAAAsnC,EAAAz0B,IAAA7S,GAAAtF,KAAAmY,IAAA7S,GAAAtF,KAAAmG,IAAA84B,GAAA2N,EAAAzmC,IAAA84B,GAAA2N,EAAAz0B,IAAA8mB,GAAAj/B,KAAAmY,IAAA8mB,EAGA4zC,aAAAzkB,EAAAj/C,GAGA,OAAAA,EAAA8V,KAAAmpC,EAAA5mD,EAAAxH,KAAAmG,IAAAqB,IAAAxH,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,IAAA4mD,EAAA9oD,EAAAtF,KAAAmG,IAAAb,IAAAtF,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAAb,IAAA8oD,EAAAnvB,EAAAj/B,KAAAmG,IAAA84B,IAAAj/B,KAAAmY,IAAA8mB,EAAAj/B,KAAAmG,IAAA84B,IAGA4zC,cAAAjmC,GAEA,QAAAA,EAAAz0B,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,GAAAolC,EAAAzmC,IAAAqB,EAAAxH,KAAAmY,IAAA3Q,GAAAolC,EAAAz0B,IAAA7S,EAAAtF,KAAAmG,IAAAb,GAAAsnC,EAAAzmC,IAAAb,EAAAtF,KAAAmY,IAAA7S,GAAAsnC,EAAAz0B,IAAA8mB,EAAAj/B,KAAAmG,IAAA84B,GAAA2N,EAAAzmC,IAAA84B,EAAAj/B,KAAAmY,IAAA8mB,GAGA4zC,iBAAAyT,GAIA,OAFAtmF,KAAAumF,WAAAD,EAAAzsE,OAAA8rE,IAEAA,GAAAlP,kBAAA6P,EAAAzsE,SAAAysE,EAAAxrE,OAAAwrE,EAAAxrE,OAGA+3D,gBAAA2T,GAGA,IAAArgF,EAAAgS,EA0BA,OAxBAquE,EAAA5B,OAAAp9E,EAAA,GACArB,EAAAqgF,EAAA5B,OAAAp9E,EAAAxH,KAAAmG,IAAAqB,EACA2Q,EAAAquE,EAAA5B,OAAAp9E,EAAAxH,KAAAmY,IAAA3Q,IAEArB,EAAAqgF,EAAA5B,OAAAp9E,EAAAxH,KAAAmY,IAAA3Q,EACA2Q,EAAAquE,EAAA5B,OAAAp9E,EAAAxH,KAAAmG,IAAAqB,GAGAg/E,EAAA5B,OAAAt/E,EAAA,GACAa,GAAAqgF,EAAA5B,OAAAt/E,EAAAtF,KAAAmG,IAAAb,EACA6S,GAAAquE,EAAA5B,OAAAt/E,EAAAtF,KAAAmY,IAAA7S,IAEAa,GAAAqgF,EAAA5B,OAAAt/E,EAAAtF,KAAAmY,IAAA7S,EACA6S,GAAAquE,EAAA5B,OAAAt/E,EAAAtF,KAAAmG,IAAAb,GAGAkhF,EAAA5B,OAAA3lD,EAAA,GACA94B,GAAAqgF,EAAA5B,OAAA3lD,EAAAj/B,KAAAmG,IAAA84B,EACA9mB,GAAAquE,EAAA5B,OAAA3lD,EAAAj/B,KAAAmY,IAAA8mB,IAEA94B,GAAAqgF,EAAA5B,OAAA3lD,EAAAj/B,KAAAmY,IAAA8mB,EACA9mB,GAAAquE,EAAA5B,OAAA3lD,EAAAj/B,KAAAmG,IAAA84B,GAGA94B,IAAAqgF,EAAAC,UAAAtuE,IAAAquE,EAAAC,SAGA5T,mBAAA6T,GACA,GAAA1mF,KAAA6lF,UACA,OAAA,EAIA7lF,KAAA2mF,UAAAC,IAEAC,GAAA1Q,WAAAn2E,KAAAmY,IAAAyuE,IAGAE,GAAA3Q,WAAAuQ,EAAA5+E,EAAA8+E,IAEAG,GAAA5Q,WAAAuQ,EAAAp+E,EAAAs+E,IAEAI,GAAA7Q,WAAAuQ,EAAAv/E,EAAAy/E,IAGAK,GAAA9Q,WAAA4Q,GAAAD,IAEAI,GAAA/Q,WAAA6Q,GAAAD,IAEAI,GAAAhR,WAAA2Q,GAAAE,IAKA,IAAAI,EAAA,CAAA,GAAAH,GAAAhoD,EAAAgoD,GAAA3hF,EAAA,GAAA4hF,GAAAjoD,EAAAioD,GAAA5hF,EAAA,GAAA6hF,GAAAloD,EAAAkoD,GAAA7hF,EAAA2hF,GAAAhoD,EAAA,GAAAgoD,GAAAz/E,EAAA0/E,GAAAjoD,EAAA,GAAAioD,GAAA1/E,EAAA2/E,GAAAloD,EAAA,GAAAkoD,GAAA3/E,GAAAy/E,GAAA3hF,EAAA2hF,GAAAz/E,EAAA,GAAA0/E,GAAA5hF,EAAA4hF,GAAA1/E,EAAA,GAAA2/E,GAAA7hF,EAAA6hF,GAAA3/E,EAAA,GAEA,QAAA6/E,GAAAD,EAAAN,GAAAC,GAAAC,GAAAH,MAKAO,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAEAC,GAAAD,EAAAN,GAAAC,GAAAC,GAAAH,MAMAS,GAAAtD,aAAAiD,GAAAC,IAEAE,EAAA,CAAAE,GAAA9/E,EAAA8/E,GAAAhiF,EAAAgiF,GAAAroD,GACAooD,GAAAD,EAAAN,GAAAC,GAAAC,GAAAH,MAGAhU,WAAAzkB,EAAAj/C,GACA,OAAAA,EAAA0C,KAAAu8C,GAAAnmD,MAAAjI,KAAAmG,IAAAnG,KAAAmY,KAGA06D,gBAAAzkB,GAGA,OAFAu3B,GAAA9zE,KAAAu8C,GAAAnmD,MAAAjI,KAAAmG,IAAAnG,KAAAmY,KAEAwsE,IAAAv2B,GAAA/tD,SAGAwyE,kBAAA1jE,GAGA,OAFAnP,KAAA2mF,UAAAx3E,EAAA0K,QACA1K,EAAA2L,OAAA,GAAA9a,KAAAunF,QAAA5B,IAAAtlF,SACA8O,EAGA0jE,UAAAjmC,GAKA,OAJA5sC,KAAAmG,IAAAgS,IAAAy0B,EAAAzmC,KACAnG,KAAAmY,IAAAhS,IAAAymC,EAAAz0B,KAEAnY,KAAA6lF,WAAA7lF,KAAAwlF,YACAxlF,KAGA6yE,MAAAjmC,GAGA,OAFA5sC,KAAAmG,IAAAA,IAAAymC,EAAAzmC,KACAnG,KAAAmY,IAAAA,IAAAy0B,EAAAz0B,KACAnY,KAGA6yE,aAAAl1C,GAEA,OAAA39B,KAAA6lF,YAEA2B,GAAA,GAAAviE,IAAAjlB,KAAAmG,IAAAqB,EAAAxH,KAAAmG,IAAAb,EAAAtF,KAAAmG,IAAA84B,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmG,IAAAqB,EAAAxH,KAAAmG,IAAAb,EAAAtF,KAAAmY,IAAA8mB,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmG,IAAAqB,EAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAA84B,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmG,IAAAqB,EAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmY,IAAA8mB,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAb,EAAAtF,KAAAmG,IAAA84B,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAb,EAAAtF,KAAAmY,IAAA8mB,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAA84B,GAAA0kD,aAAAhmD,GAGA6pD,GAAA,GAAAviE,IAAAjlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmY,IAAA8mB,GAAA0kD,aAAAhmD,GAGA39B,KAAAynF,cAAAD,KA1BAxnF,KA8BA6yE,UAAA57D,GAGA,OAFAjX,KAAAmG,IAAAmX,IAAArG,GACAjX,KAAAmY,IAAAmF,IAAArG,GACAjX,KAGA6yE,OAAAjmC,GACA,OAAAA,EAAAzmC,IAAAuhF,OAAA1nF,KAAAmG,MAAAymC,EAAAz0B,IAAAuvE,OAAA1nF,KAAAmY,MAKAktE,GAAAt8E,UAAA4+E,QAAA,EACA,MAAAH,GAAA,CAAA,IAAA5E,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,IAEA+C,GAAA,IAAA/C,GAEAwD,GAAA,IAAAf,GAGAyB,GAAA,IAAAlE,GAEAmE,GAAA,IAAAnE,GAEAoE,GAAA,IAAApE,GAGAqE,GAAA,IAAArE,GAEAsE,GAAA,IAAAtE,GAEAuE,GAAA,IAAAvE,GAEAgE,GAAA,IAAAhE,GAEAiE,GAAA,IAAAjE,GAEA0E,GAAA,IAAA1E,GAEAgF,GAAA,IAAAhF,GAEA,SAAAyE,GAAAD,EAAAS,EAAAnR,EAAAC,EAAAmR,GACA,IAAA,IAAAnnF,EAAA,EAAAsZ,EAAAmtE,EAAA/mF,OAAA,EAAAM,GAAAsZ,EAAAtZ,GAAA,EAAA,CACAinF,GAAAjO,UAAAyN,EAAAzmF,GAGA,MAAA4F,EAAAuhF,EAAAtgF,EAAAtB,KAAAiO,IAAAyzE,GAAApgF,GAAAsgF,EAAAxiF,EAAAY,KAAAiO,IAAAyzE,GAAAtiF,GAAAwiF,EAAA7oD,EAAA/4B,KAAAiO,IAAAyzE,GAAA3oD,GAEA8oD,EAAAF,EAAAtG,IAAAqG,IACAxhF,EAAAswE,EAAA6K,IAAAqG,IACAhhF,EAAA+vE,EAAA4K,IAAAqG,IAEA,GAAA1hF,KAAAiS,KAAAjS,KAAAiS,IAAA4vE,EAAA3hF,EAAAQ,GAAAV,KAAAC,IAAA4hF,EAAA3hF,EAAAQ,IAAAL,EAGA,OAAA,EAIA,OAAA,EAGA,MAAAyhF,GAAA,IAAA3C,GAEA4C,GAAA,IAAArF,GAEAsF,GAAA,IAAAtF,GAEAuF,GAAA,IAAAvF,GAEA,MAAAwF,GACAvV,YAAAh5D,EAAA,IAAA+oE,GAAA9nE,GAAA,GACA9a,KAAA6Z,OAAAA,EACA7Z,KAAA8a,OAAAA,EAGA+3D,IAAAh5D,EAAAiB,GAGA,OAFA9a,KAAA6Z,OAAAhI,KAAAgI,GACA7Z,KAAA8a,OAAAA,EACA9a,KAGA6yE,cAAAtrE,EAAA8gF,GACA,MAAAxuE,EAAA7Z,KAAA6Z,YAEAutB,IAAAihD,EACAxuE,EAAAhI,KAAAw2E,GAEAL,GAAAP,cAAAlgF,GAAAo/E,UAAA9sE,GAGA,IAAAyuE,EAAA,EAEA,IAAA,IAAA3nF,EAAA,EAAAqzB,EAAAzsB,EAAAlH,OAAAM,EAAAqzB,EAAArzB,IACA2nF,EAAApiF,KAAAiS,IAAAmwE,EAAAzuE,EAAA48D,kBAAAlvE,EAAA5G,KAIA,OADAX,KAAA8a,OAAA5U,KAAA+F,KAAAq8E,GACAtoF,KAGA6yE,KAAAyT,GAGA,OAFAtmF,KAAA6Z,OAAAhI,KAAAy0E,EAAAzsE,QACA7Z,KAAA8a,OAAAwrE,EAAAxrE,OACA9a,KAGA6yE,UACA,OAAA7yE,KAAA8a,OAAA,EAGA+3D,YAGA,OAFA7yE,KAAA6Z,OAAAoL,IAAA,EAAA,EAAA,GACAjlB,KAAA8a,QAAA,EACA9a,KAGA6yE,cAAAzkB,GACA,OAAAA,EAAAqoB,kBAAAz2E,KAAA6Z,SAAA7Z,KAAA8a,OAAA9a,KAAA8a,OAGA+3D,gBAAAzkB,GACA,OAAAA,EAAAm6B,WAAAvoF,KAAA6Z,QAAA7Z,KAAA8a,OAGA+3D,iBAAAyT,GACA,MAAAkC,EAAAxoF,KAAA8a,OAAAwrE,EAAAxrE,OACA,OAAAwrE,EAAAzsE,OAAA48D,kBAAAz2E,KAAA6Z,SAAA2uE,EAAAA,EAGA3V,cAAAjmC,GACA,OAAAA,EAAA67C,iBAAAzoF,MAGA6yE,gBAAA2T,GACA,OAAAtgF,KAAAiO,IAAAqyE,EAAAkC,gBAAA1oF,KAAA6Z,UAAA7Z,KAAA8a,OAGA+3D,WAAAzkB,EAAAj/C,GACA,MAAAw5E,EAAA3oF,KAAA6Z,OAAA48D,kBAAAroB,GAQA,OAPAj/C,EAAA0C,KAAAu8C,GAEAu6B,EAAA3oF,KAAA8a,OAAA9a,KAAA8a,SACA3L,EAAAw1E,IAAA3kF,KAAA6Z,QAAAoZ,YACA9jB,EAAAinE,eAAAp2E,KAAA8a,QAAAwC,IAAAtd,KAAA6Z,SAGA1K,EAGA0jE,eAAA1jE,GACA,OAAAnP,KAAA6lF,WAEA12E,EAAAq2E,YACAr2E,IAGAA,EAAA8V,IAAAjlB,KAAA6Z,OAAA7Z,KAAA6Z,QACA1K,EAAAy5E,eAAA5oF,KAAA8a,QACA3L,GAGA0jE,aAAAl1C,GAGA,OAFA39B,KAAA6Z,OAAA8pE,aAAAhmD,GACA39B,KAAA8a,OAAA9a,KAAA8a,OAAA6iB,EAAAkrD,oBACA7oF,KAGA6yE,UAAA57D,GAEA,OADAjX,KAAA6Z,OAAAyD,IAAArG,GACAjX,KAGA6yE,cAAAzkB,GAEA+5B,GAAAhS,WAAA/nB,EAAApuD,KAAA6Z,QAEA,MAAA0qE,EAAA4D,GAAA5D,WAEA,GAAAA,EAAAvkF,KAAA8a,OAAA9a,KAAA8a,OAAA,CACA,MAAAza,EAAA6F,KAAA+F,KAAAs4E,GACAuE,EAAA,IAAAzoF,EAAAL,KAAA8a,QAIA9a,KAAA6Z,OAAAyD,IAAA6qE,GAAA/R,eAAA0S,EAAAzoF,IACAL,KAAA8a,QAAAguE,EAGA,OAAA9oF,KAGA6yE,MAAAyT,GASA,OAJA4B,GAAA/R,WAAAmQ,EAAAzsE,OAAA7Z,KAAA6Z,QAAAoZ,YAAAmjD,eAAAkQ,EAAAxrE,QAEA9a,KAAAylF,cAAAwC,GAAAp2E,KAAAy0E,EAAAzsE,QAAAyD,IAAA4qE,KACAloF,KAAAylF,cAAAwC,GAAAp2E,KAAAy0E,EAAAzsE,QAAA8qE,IAAAuD,KACAloF,KAGA6yE,OAAAyT,GACA,OAAAA,EAAAzsE,OAAA6tE,OAAA1nF,KAAA6Z,SAAAysE,EAAAxrE,SAAA9a,KAAA8a,OAGA+3D,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKA,MAAA+oF,GAAA,IAAAnG,GAEAoG,GAAA,IAAApG,GAEAqG,GAAA,IAAArG,GAEAsG,GAAA,IAAAtG,GAEAuG,GAAA,IAAAvG,GAEAwG,GAAA,IAAAxG,GAEAyG,GAAA,IAAAzG,GAEA,MAAA0G,GACAzW,YAAA52C,EAAA,IAAA2mD,GAAAphD,EAAA,IAAAohD,GAAA,EAAA,GAAA,IACA5iF,KAAAi8B,OAAAA,EACAj8B,KAAAwhC,UAAAA,EAGAqxC,IAAA52C,EAAAuF,GAGA,OAFAxhC,KAAAi8B,OAAApqB,KAAAoqB,GACAj8B,KAAAwhC,UAAA3vB,KAAA2vB,GACAxhC,KAGA6yE,KAAA0W,GAGA,OAFAvpF,KAAAi8B,OAAApqB,KAAA03E,EAAAttD,QACAj8B,KAAAwhC,UAAA3vB,KAAA03E,EAAA/nD,WACAxhC,KAGA6yE,GAAA5rE,EAAAkI,GACA,OAAAA,EAAA0C,KAAA7R,KAAAwhC,WAAA40C,eAAAnvE,GAAAqW,IAAAtd,KAAAi8B,QAGA42C,OAAAxwE,GAEA,OADArC,KAAAwhC,UAAA3vB,KAAAxP,GAAAsiF,IAAA3kF,KAAAi8B,QAAAhJ,YACAjzB,KAGA6yE,OAAA5rE,GAEA,OADAjH,KAAAi8B,OAAApqB,KAAA7R,KAAAwpF,GAAAviF,EAAA8hF,KACA/oF,KAGA6yE,oBAAAzkB,EAAAj/C,GACAA,EAAAgnE,WAAA/nB,EAAApuD,KAAAi8B,QACA,MAAAwtD,EAAAt6E,EAAAoyE,IAAAvhF,KAAAwhC,WAEA,OAAAioD,EAAA,EACAt6E,EAAA0C,KAAA7R,KAAAi8B,QAGA9sB,EAAA0C,KAAA7R,KAAAwhC,WAAA40C,eAAAqT,GAAAnsE,IAAAtd,KAAAi8B,QAGA42C,gBAAAzkB,GACA,OAAAloD,KAAA+F,KAAAjM,KAAA0pF,kBAAAt7B,IAGAykB,kBAAAzkB,GACA,MAAAq7B,EAAAV,GAAA5S,WAAA/nB,EAAApuD,KAAAi8B,QAAAslD,IAAAvhF,KAAAwhC,WAGA,OAAAioD,EAAA,EACAzpF,KAAAi8B,OAAAw6C,kBAAAroB,IAGA26B,GAAAl3E,KAAA7R,KAAAwhC,WAAA40C,eAAAqT,GAAAnsE,IAAAtd,KAAAi8B,QAEA8sD,GAAAtS,kBAAAroB,IAGAykB,oBAAAgV,EAAAnR,EAAAiT,EAAAC,GAOAZ,GAAAn3E,KAAAg2E,GAAAvqE,IAAAo5D,GAAAN,eAAA,IAEA6S,GAAAp3E,KAAA6kE,GAAAiO,IAAAkD,GAAA50D,YAEAi2D,GAAAr3E,KAAA7R,KAAAi8B,QAAA0oD,IAAAqE,IAEA,MAAAa,EAAA,GAAAhC,EAAAU,WAAA7R,GACAoT,GAAA9pF,KAAAwhC,UAAA+/C,IAAA0H,IAEAc,EAAAb,GAAA3H,IAAAvhF,KAAAwhC,WAEA0yC,GAAAgV,GAAA3H,IAAA0H,IAEA9hF,EAAA+hF,GAAA3E,WAEAvL,EAAA9yE,KAAAiO,IAAA,EAAA21E,EAAAA,GACA,IAAAE,EAAA/I,EAAAgJ,EAAAC,EAEA,GAAAlR,EAAA,EAMA,GAJAgR,EAAAF,EAAA5V,EAAA6V,EACA9I,EAAA6I,EAAAC,EAAA7V,EACAgW,EAAAL,EAAA7Q,EAEAgR,GAAA,EACA,GAAA/I,IAAAiJ,EACA,GAAAjJ,GAAAiJ,EAAA,CAGA,MAAAC,EAAA,EAAAnR,EACAgR,GAAAG,EACAlJ,GAAAkJ,EACAF,EAAAD,GAAAA,EAAAF,EAAA7I,EAAA,EAAA8I,GAAA9I,GAAA6I,EAAAE,EAAA/I,EAAA,EAAA/M,GAAA/sE,OAGA85E,EAAA4I,EACAG,EAAA9jF,KAAAiS,IAAA,IAAA2xE,EAAA7I,EAAA8I,IACAE,GAAAD,EAAAA,EAAA/I,GAAAA,EAAA,EAAA/M,GAAA/sE,OAIA85E,GAAA4I,EACAG,EAAA9jF,KAAAiS,IAAA,IAAA2xE,EAAA7I,EAAA8I,IACAE,GAAAD,EAAAA,EAAA/I,GAAAA,EAAA,EAAA/M,GAAA/sE,OAGA85E,IAAAiJ,GAEAF,EAAA9jF,KAAAiS,IAAA,KAAA2xE,EAAAD,EAAAE,IACA9I,EAAA+I,EAAA,GAAAH,EAAA3jF,KAAAC,IAAAD,KAAAiS,KAAA0xE,GAAA3V,GAAA2V,GACAI,GAAAD,EAAAA,EAAA/I,GAAAA,EAAA,EAAA/M,GAAA/sE,GACA85E,GAAAiJ,GAEAF,EAAA,EACA/I,EAAA/6E,KAAAC,IAAAD,KAAAiS,KAAA0xE,GAAA3V,GAAA2V,GACAI,EAAAhJ,GAAAA,EAAA,EAAA/M,GAAA/sE,IAGA6iF,EAAA9jF,KAAAiS,IAAA,IAAA2xE,EAAAD,EAAAE,IACA9I,EAAA+I,EAAA,EAAAH,EAAA3jF,KAAAC,IAAAD,KAAAiS,KAAA0xE,GAAA3V,GAAA2V,GACAI,GAAAD,EAAAA,EAAA/I,GAAAA,EAAA,EAAA/M,GAAA/sE,QAKA85E,EAAA6I,EAAA,GAAAD,EAAAA,EACAG,EAAA9jF,KAAAiS,IAAA,IAAA2xE,EAAA7I,EAAA8I,IACAE,GAAAD,EAAAA,EAAA/I,GAAAA,EAAA,EAAA/M,GAAA/sE,EAWA,OARAwiF,GACAA,EAAA93E,KAAA7R,KAAAwhC,WAAA40C,eAAA4T,GAAA1sE,IAAAtd,KAAAi8B,QAGA2tD,GACAA,EAAA/3E,KAAAo3E,IAAA7S,eAAA6K,GAAA3jE,IAAA0rE,IAGAiB,EAGApX,gBAAAyT,EAAAn3E,GACA45E,GAAA5S,WAAAmQ,EAAAzsE,OAAA7Z,KAAAi8B,QAEA,MAAAmuD,EAAArB,GAAAxH,IAAAvhF,KAAAwhC,WAEA+xC,EAAAwV,GAAAxH,IAAAwH,IAAAqB,EAAAA,EACAC,EAAA/D,EAAAxrE,OAAAwrE,EAAAxrE,OACA,GAAAy4D,EAAA8W,EAAA,OAAA,KACA,MAAAC,EAAApkF,KAAA+F,KAAAo+E,EAAA9W,GAEAgX,EAAAH,EAAAE,EAEA3qD,EAAAyqD,EAAAE,EAEA,OAAAC,EAAA,GAAA5qD,EAAA,EAAA,KAIA4qD,EAAA,EAAAvqF,KAAAwpF,GAAA7pD,EAAAxwB,GAEAnP,KAAAwpF,GAAAe,EAAAp7E,GAGA0jE,iBAAAyT,GACA,OAAAtmF,KAAA0pF,kBAAApD,EAAAzsE,SAAAysE,EAAAxrE,OAAAwrE,EAAAxrE,OAGA+3D,gBAAA2T,GACA,MAAAlC,EAAAkC,EAAA5B,OAAArD,IAAAvhF,KAAAwhC,WAEA,GAAA,IAAA8iD,EAEA,OAAA,IAAAkC,EAAAkC,gBAAA1oF,KAAAi8B,QACA,EAIA,KAGA,MAAAh1B,IAAAjH,KAAAi8B,OAAAslD,IAAAiF,EAAA5B,QAAA4B,EAAAC,UAAAnC,EAEA,OAAAr9E,GAAA,EAAAA,EAAA,KAGA4rE,eAAA2T,EAAAr3E,GACA,MAAAlI,EAAAjH,KAAAwqF,gBAAAhE,GAEA,OAAA,OAAAv/E,EACA,KAGAjH,KAAAwpF,GAAAviF,EAAAkI,GAGA0jE,gBAAA2T,GAEA,MAAAiE,EAAAjE,EAAAkC,gBAAA1oF,KAAAi8B,QAEA,GAAA,IAAAwuD,EACA,OAAA,EAKA,OAFAjE,EAAA5B,OAAArD,IAAAvhF,KAAAwhC,WAEAipD,EAAA,EAQA5X,aAAAjmC,EAAAz9B,GACA,IAAAu7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACA,MAAAC,EAAA,EAAAhrF,KAAAwhC,UAAAh6B,EACAyjF,EAAA,EAAAjrF,KAAAwhC,UAAAl8B,EACA4lF,EAAA,EAAAlrF,KAAAwhC,UAAAvC,EACAhD,EAAAj8B,KAAAi8B,OAkBA,OAhBA+uD,GAAA,GACAN,GAAA99C,EAAAzmC,IAAAqB,EAAAy0B,EAAAz0B,GAAAwjF,EACAL,GAAA/9C,EAAAz0B,IAAA3Q,EAAAy0B,EAAAz0B,GAAAwjF,IAEAN,GAAA99C,EAAAz0B,IAAA3Q,EAAAy0B,EAAAz0B,GAAAwjF,EACAL,GAAA/9C,EAAAzmC,IAAAqB,EAAAy0B,EAAAz0B,GAAAwjF,GAGAC,GAAA,GACAL,GAAAh+C,EAAAzmC,IAAAb,EAAA22B,EAAA32B,GAAA2lF,EACAJ,GAAAj+C,EAAAz0B,IAAA7S,EAAA22B,EAAA32B,GAAA2lF,IAEAL,GAAAh+C,EAAAz0B,IAAA7S,EAAA22B,EAAA32B,GAAA2lF,EACAJ,GAAAj+C,EAAAzmC,IAAAb,EAAA22B,EAAA32B,GAAA2lF,GAGAP,EAAAG,GAAAD,EAAAD,EAAA,OAGAC,EAAAF,GAAAA,GAAAA,KAAAA,EAAAE,IACAC,EAAAF,GAAAA,GAAAA,KAAAA,EAAAE,GAEAK,GAAA,GACAJ,GAAAl+C,EAAAzmC,IAAA84B,EAAAhD,EAAAgD,GAAAisD,EACAH,GAAAn+C,EAAAz0B,IAAA8mB,EAAAhD,EAAAgD,GAAAisD,IAEAJ,GAAAl+C,EAAAz0B,IAAA8mB,EAAAhD,EAAAgD,GAAAisD,EACAH,GAAAn+C,EAAAzmC,IAAA84B,EAAAhD,EAAAgD,GAAAisD,GAGAR,EAAAK,GAAAD,EAAAH,EAAA,OACAG,EAAAJ,GAAAA,GAAAA,KAAAA,EAAAI,IACAC,EAAAJ,GAAAA,GAAAA,KAAAA,EAAAI,GAEAJ,EAAA,EAAA,KACA3qF,KAAAwpF,GAAAkB,GAAA,EAAAA,EAAAC,EAAAx7E,KAGA0jE,cAAAjmC,GACA,OAAA,OAAA5sC,KAAAmrF,aAAAv+C,EAAAm8C,IAGAlW,kBAAA/qE,EAAAQ,EAAAnB,EAAAikF,EAAAj8E,GAGAg6E,GAAAhT,WAAA7tE,EAAAR,GAEAshF,GAAAjT,WAAAhvE,EAAAW,GAEAuhF,GAAArF,aAAAmF,GAAAC,IAOA,IACA/wB,EADAgzB,EAAArrF,KAAAwhC,UAAA+/C,IAAA8H,IAGA,GAAAgC,EAAA,EAAA,CACA,GAAAD,EAAA,OAAA,KACA/yB,EAAA,MACA,CAAA,KAAAgzB,EAAA,GAIA,OAAA,KAHAhzB,GAAA,EACAgzB,GAAAA,EAKAnC,GAAA/S,WAAAn2E,KAAAi8B,OAAAn0B,GAEA,MAAAwjF,EAAAjzB,EAAAr4D,KAAAwhC,UAAA+/C,IAAA6H,GAAApF,aAAAkF,GAAAE,KAEA,GAAAkC,EAAA,EACA,OAAA,KAGA,MAAAC,EAAAlzB,EAAAr4D,KAAAwhC,UAAA+/C,IAAA4H,GAAAqC,MAAAtC,KAEA,GAAAqC,EAAA,EACA,OAAA,KAIA,GAAAD,EAAAC,EAAAF,EACA,OAAA,KAIA,MAAAI,GAAApzB,EAAA6wB,GAAA3H,IAAA8H,IAGA,OAAAoC,EAAA,EACA,KAIAzrF,KAAAwpF,GAAAiC,EAAAJ,EAAAl8E,GAGA0jE,aAAAsG,GAGA,OAFAn5E,KAAAi8B,OAAA0nD,aAAAxK,GACAn5E,KAAAwhC,UAAAkqD,mBAAAvS,GACAn5E,KAGA6yE,OAAA0W,GACA,OAAAA,EAAAttD,OAAAyrD,OAAA1nF,KAAAi8B,SAAAstD,EAAA/nD,UAAAkmD,OAAA1nF,KAAAwhC,WAGAqxC,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKA,MAAA2rF,GACA9Y,cACA7yE,KAAAq2E,SAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA7wD,UAAAnlB,OAAA,GACA4N,QAAApK,MAAA,iFAIAgvE,IAAAoE,EAAAC,EAAAC,EAAAyU,EAAAxU,EAAAC,EAAAC,EAAAuU,EAAAtU,EAAAC,EAAAC,EAAAqU,EAAAC,EAAAC,EAAAC,EAAAC,GACA,MAAAxU,EAAA13E,KAAAq2E,SAiBA,OAhBAqB,EAAA,GAAAT,EACAS,EAAA,GAAAR,EACAQ,EAAA,GAAAP,EACAO,EAAA,IAAAkU,EACAlU,EAAA,GAAAN,EACAM,EAAA,GAAAL,EACAK,EAAA,GAAAJ,EACAI,EAAA,IAAAmU,EACAnU,EAAA,GAAAH,EACAG,EAAA,GAAAF,EACAE,EAAA,IAAAD,EACAC,EAAA,IAAAoU,EACApU,EAAA,GAAAqU,EACArU,EAAA,GAAAsU,EACAtU,EAAA,IAAAuU,EACAvU,EAAA,IAAAwU,EACAlsF,KAGA6yE,WAEA,OADA7yE,KAAAilB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAjlB,KAGA6yE,QACA,OAAA,IAAA8Y,IAAAhS,UAAA35E,KAAAq2E,UAGAxD,KAAA/lD,GACA,MAAA4qD,EAAA13E,KAAAq2E,SACAsB,EAAA7qD,EAAAupD,SAiBA,OAhBAqB,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,GAAAC,EAAA,GACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACA33E,KAGA6yE,aAAA/lD,GACA,MAAA4qD,EAAA13E,KAAAq2E,SACAsB,EAAA7qD,EAAAupD,SAIA,OAHAqB,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACAD,EAAA,IAAAC,EAAA,IACA33E,KAGA6yE,eAAA/lD,GACA,MAAA6qD,EAAA7qD,EAAAupD,SAEA,OADAr2E,KAAAilB,IAAA0yD,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAA,EAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAA,EAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA33E,KAGA6yE,aAAA+E,EAAAC,EAAAC,GAIA,OAHAF,EAAAsN,oBAAAllF,KAAA,GACA63E,EAAAqN,oBAAAllF,KAAA,GACA83E,EAAAoN,oBAAAllF,KAAA,GACAA,KAGA6yE,UAAA+E,EAAAC,EAAAC,GAEA,OADA93E,KAAAilB,IAAA2yD,EAAApwE,EAAAqwE,EAAArwE,EAAAswE,EAAAtwE,EAAA,EAAAowE,EAAAtyE,EAAAuyE,EAAAvyE,EAAAwyE,EAAAxyE,EAAA,EAAAsyE,EAAA34C,EAAA44C,EAAA54C,EAAA64C,EAAA74C,EAAA,EAAA,EAAA,EAAA,EAAA,GACAj/B,KAGA6yE,gBAAA/lD,GAEA,MAAA4qD,EAAA13E,KAAAq2E,SACAsB,EAAA7qD,EAAAupD,SAEAz+C,EAAA,EAAAu0D,GAAAjH,oBAAAp4D,EAAA,GAAAzsB,SAEAw3B,EAAA,EAAAs0D,GAAAjH,oBAAAp4D,EAAA,GAAAzsB,SAEA+rF,EAAA,EAAAD,GAAAjH,oBAAAp4D,EAAA,GAAAzsB,SAkBA,OAhBAq3E,EAAA,GAAAC,EAAA,GAAA//C,EACA8/C,EAAA,GAAAC,EAAA,GAAA//C,EACA8/C,EAAA,GAAAC,EAAA,GAAA//C,EACA8/C,EAAA,GAAA,EACAA,EAAA,GAAAC,EAAA,GAAA9/C,EACA6/C,EAAA,GAAAC,EAAA,GAAA9/C,EACA6/C,EAAA,GAAAC,EAAA,GAAA9/C,EACA6/C,EAAA,GAAA,EACAA,EAAA,GAAAC,EAAA,GAAAyU,EACA1U,EAAA,GAAAC,EAAA,GAAAyU,EACA1U,EAAA,IAAAC,EAAA,IAAAyU,EACA1U,EAAA,IAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACA13E,KAGA6yE,sBAAA+N,GACAA,GAAAA,EAAAC,SACA5yE,QAAApK,MAAA,yGAGA,MAAA6zE,EAAA13E,KAAAq2E,SACA7uE,EAAAo5E,EAAAp5E,EACAlC,EAAAs7E,EAAAt7E,EACA25B,EAAA2hD,EAAA3hD,EACAn3B,EAAA5B,KAAAiG,IAAA3E,GACAc,EAAApC,KAAAmG,IAAA7E,GACAL,EAAAjB,KAAAiG,IAAA7G,GACA9F,EAAA0G,KAAAmG,IAAA/G,GACAunB,EAAA3mB,KAAAiG,IAAA8yB,GACA/c,EAAAhc,KAAAmG,IAAA4yB,GAEA,GAAA,QAAA2hD,EAAA16B,MAAA,CACA,MAAA+xB,EAAAnwE,EAAA+kB,EACAw/D,EAAAvkF,EAAAoa,EACAg2D,EAAA5vE,EAAAukB,EACAy/D,EAAAhkF,EAAA4Z,EACAw1D,EAAA,GAAAvwE,EAAA0lB,EACA6qD,EAAA,IAAAvwE,EAAA+a,EACAw1D,EAAA,GAAAl4E,EACAk4E,EAAA,GAAA2U,EAAAnU,EAAA14E,EACAk4E,EAAA,GAAAO,EAAAqU,EAAA9sF,EACAk4E,EAAA,IAAApvE,EAAAnB,EACAuwE,EAAA,GAAA4U,EAAArU,EAAAz4E,EACAk4E,EAAA,GAAAQ,EAAAmU,EAAA7sF,EACAk4E,EAAA,IAAA5vE,EAAAX,OACA,GAAA,QAAAy5E,EAAA16B,MAAA,CACA,MAAAqmC,EAAAplF,EAAA0lB,EACA2/D,EAAArlF,EAAA+a,EACAuqE,EAAAjtF,EAAAqtB,EACA6/D,EAAAltF,EAAA0iB,EACAw1D,EAAA,GAAA6U,EAAAG,EAAApkF,EACAovE,EAAA,GAAA+U,EAAAnkF,EAAAkkF,EACA9U,EAAA,GAAA5vE,EAAAtI,EACAk4E,EAAA,GAAA5vE,EAAAoa,EACAw1D,EAAA,GAAA5vE,EAAA+kB,EACA6qD,EAAA,IAAApvE,EACAovE,EAAA,GAAA8U,EAAAlkF,EAAAmkF,EACA/U,EAAA,GAAAgV,EAAAH,EAAAjkF,EACAovE,EAAA,IAAA5vE,EAAAX,OACA,GAAA,QAAAy5E,EAAA16B,MAAA,CACA,MAAAqmC,EAAAplF,EAAA0lB,EACA2/D,EAAArlF,EAAA+a,EACAuqE,EAAAjtF,EAAAqtB,EACA6/D,EAAAltF,EAAA0iB,EACAw1D,EAAA,GAAA6U,EAAAG,EAAApkF,EACAovE,EAAA,IAAA5vE,EAAAoa,EACAw1D,EAAA,GAAA+U,EAAAD,EAAAlkF,EACAovE,EAAA,GAAA8U,EAAAC,EAAAnkF,EACAovE,EAAA,GAAA5vE,EAAA+kB,EACA6qD,EAAA,GAAAgV,EAAAH,EAAAjkF,EACAovE,EAAA,IAAA5vE,EAAAtI,EACAk4E,EAAA,GAAApvE,EACAovE,EAAA,IAAA5vE,EAAAX,OACA,GAAA,QAAAy5E,EAAA16B,MAAA,CACA,MAAA+xB,EAAAnwE,EAAA+kB,EACAw/D,EAAAvkF,EAAAoa,EACAg2D,EAAA5vE,EAAAukB,EACAy/D,EAAAhkF,EAAA4Z,EACAw1D,EAAA,GAAAvwE,EAAA0lB,EACA6qD,EAAA,GAAAQ,EAAA14E,EAAA6sF,EACA3U,EAAA,GAAAO,EAAAz4E,EAAA8sF,EACA5U,EAAA,GAAAvwE,EAAA+a,EACAw1D,EAAA,GAAA4U,EAAA9sF,EAAAy4E,EACAP,EAAA,GAAA2U,EAAA7sF,EAAA04E,EACAR,EAAA,IAAAl4E,EACAk4E,EAAA,GAAApvE,EAAAnB,EACAuwE,EAAA,IAAA5vE,EAAAX,OACA,GAAA,QAAAy5E,EAAA16B,MAAA,CACA,MAAAymC,EAAA7kF,EAAAX,EACAylF,EAAA9kF,EAAAtI,EACAqtF,EAAAvkF,EAAAnB,EACA2lF,EAAAxkF,EAAA9I,EACAk4E,EAAA,GAAAvwE,EAAA0lB,EACA6qD,EAAA,GAAAoV,EAAAH,EAAAzqE,EACAw1D,EAAA,GAAAmV,EAAA3qE,EAAA0qE,EACAlV,EAAA,GAAAx1D,EACAw1D,EAAA,GAAA5vE,EAAA+kB,EACA6qD,EAAA,IAAApvE,EAAAukB,EACA6qD,EAAA,IAAAl4E,EAAAqtB,EACA6qD,EAAA,GAAAkV,EAAA1qE,EAAA2qE,EACAnV,EAAA,IAAAiV,EAAAG,EAAA5qE,OACA,GAAA,QAAA0+D,EAAA16B,MAAA,CACA,MAAAymC,EAAA7kF,EAAAX,EACAylF,EAAA9kF,EAAAtI,EACAqtF,EAAAvkF,EAAAnB,EACA2lF,EAAAxkF,EAAA9I,EACAk4E,EAAA,GAAAvwE,EAAA0lB,EACA6qD,EAAA,IAAAx1D,EACAw1D,EAAA,GAAAl4E,EAAAqtB,EACA6qD,EAAA,GAAAiV,EAAAzqE,EAAA4qE,EACApV,EAAA,GAAA5vE,EAAA+kB,EACA6qD,EAAA,GAAAkV,EAAA1qE,EAAA2qE,EACAnV,EAAA,GAAAmV,EAAA3qE,EAAA0qE,EACAlV,EAAA,GAAApvE,EAAAukB,EACA6qD,EAAA,IAAAoV,EAAA5qE,EAAAyqE,EAYA,OARAjV,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,IAAA,EAEAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACA13E,KAGA6yE,2BAAAyC,GACA,OAAAt1E,KAAA+sF,QAAAC,GAAA1X,EAAA2X,IAGApa,OAAAqa,EAAA/9E,EAAAg+E,GACA,MAAAzV,EAAA13E,KAAAq2E,SAuCA,OArCAgJ,GAAAlJ,WAAA+W,EAAA/9E,GAEA,IAAAkwE,GAAAkF,aAEAlF,GAAApgD,EAAA,GAGAogD,GAAApsD,YAEAksD,GAAA6E,aAAAmJ,EAAA9N,IAEA,IAAAF,GAAAoF,aAEA,IAAAr+E,KAAAiO,IAAAg5E,EAAAluD,GACAogD,GAAA73E,GAAA,KAEA63E,GAAApgD,GAAA,KAGAogD,GAAApsD,YAEAksD,GAAA6E,aAAAmJ,EAAA9N,KAGAF,GAAAlsD,YAEAmsD,GAAA4E,aAAA3E,GAAAF,IAEAzH,EAAA,GAAAyH,GAAA33E,EACAkwE,EAAA,GAAA0H,GAAA53E,EACAkwE,EAAA,GAAA2H,GAAA73E,EACAkwE,EAAA,GAAAyH,GAAA75E,EACAoyE,EAAA,GAAA0H,GAAA95E,EACAoyE,EAAA,GAAA2H,GAAA/5E,EACAoyE,EAAA,GAAAyH,GAAAlgD,EACAy4C,EAAA,GAAA0H,GAAAngD,EACAy4C,EAAA,IAAA2H,GAAApgD,EACAj/B,KAGA6yE,SAAA/lD,EAAAjiB,GACA,YAAAu8B,IAAAv8B,GACAoD,QAAAC,KAAA,oGACAlO,KAAAg4E,iBAAAlrD,EAAAjiB,IAGA7K,KAAAg4E,iBAAAh4E,KAAA8sB,GAGA+lD,YAAA/lD,GACA,OAAA9sB,KAAAg4E,iBAAAlrD,EAAA9sB,MAGA6yE,iBAAA/qE,EAAAQ,GACA,MAAA2vE,EAAAnwE,EAAAuuE,SACA6B,EAAA5vE,EAAA+tE,SACAqB,EAAA13E,KAAAq2E,SACAj1C,EAAA62C,EAAA,GACAx4C,EAAAw4C,EAAA,GACAn4C,EAAAm4C,EAAA,GACAmV,EAAAnV,EAAA,IACA52C,EAAA42C,EAAA,GACAv4C,EAAAu4C,EAAA,GACAl4C,EAAAk4C,EAAA,GACAoV,EAAApV,EAAA,IACAE,EAAAF,EAAA,GACA93C,EAAA83C,EAAA,GACAj4C,EAAAi4C,EAAA,IACAqV,EAAArV,EAAA,IACAsV,EAAAtV,EAAA,GACAh4C,EAAAg4C,EAAA,GACA/3C,EAAA+3C,EAAA,IACAuV,EAAAvV,EAAA,IACAG,EAAAF,EAAA,GACAG,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAuV,EAAAvV,EAAA,IACAK,EAAAL,EAAA,GACAM,EAAAN,EAAA,GACAO,EAAAP,EAAA,GACAwV,EAAAxV,EAAA,IACAQ,EAAAR,EAAA,GACAS,EAAAT,EAAA,GACAU,EAAAV,EAAA,IACAyV,EAAAzV,EAAA,IACA0V,EAAA1V,EAAA,GACA2V,EAAA3V,EAAA,GACA4V,EAAA5V,EAAA,IACA6V,EAAA7V,EAAA,IAiBA,OAhBAR,EAAA,GAAAt2C,EAAAg3C,EAAA34C,EAAA84C,EAAAz4C,EAAA44C,EAAA0U,EAAAQ,EACAlW,EAAA,GAAAt2C,EAAAi3C,EAAA54C,EAAA+4C,EAAA14C,EAAA64C,EAAAyU,EAAAS,EACAnW,EAAA,GAAAt2C,EAAAk3C,EAAA74C,EAAAg5C,EAAA34C,EAAA84C,EAAAwU,EAAAU,EACApW,EAAA,IAAAt2C,EAAAqsD,EAAAhuD,EAAAiuD,EAAA5tD,EAAA6tD,EAAAP,EAAAW,EACArW,EAAA,GAAAr2C,EAAA+2C,EAAA14C,EAAA64C,EAAAx4C,EAAA24C,EAAA2U,EAAAO,EACAlW,EAAA,GAAAr2C,EAAAg3C,EAAA34C,EAAA84C,EAAAz4C,EAAA44C,EAAA0U,EAAAQ,EACAnW,EAAA,GAAAr2C,EAAAi3C,EAAA54C,EAAA+4C,EAAA14C,EAAA64C,EAAAyU,EAAAS,EACApW,EAAA,IAAAr2C,EAAAosD,EAAA/tD,EAAAguD,EAAA3tD,EAAA4tD,EAAAN,EAAAU,EACArW,EAAA,GAAAS,EAAAC,EAAAj4C,EAAAo4C,EAAAv4C,EAAA04C,EAAA4U,EAAAM,EACAlW,EAAA,GAAAS,EAAAE,EAAAl4C,EAAAq4C,EAAAx4C,EAAA24C,EAAA2U,EAAAO,EACAnW,EAAA,IAAAS,EAAAG,EAAAn4C,EAAAs4C,EAAAz4C,EAAA44C,EAAA0U,EAAAQ,EACApW,EAAA,IAAAS,EAAAsV,EAAAttD,EAAAutD,EAAA1tD,EAAA2tD,EAAAL,EAAAS,EACArW,EAAA,GAAA6V,EAAAnV,EAAAn4C,EAAAs4C,EAAAr4C,EAAAw4C,EAAA8U,EAAAI,EACAlW,EAAA,GAAA6V,EAAAlV,EAAAp4C,EAAAu4C,EAAAt4C,EAAAy4C,EAAA6U,EAAAK,EACAnW,EAAA,IAAA6V,EAAAjV,EAAAr4C,EAAAw4C,EAAAv4C,EAAA04C,EAAA4U,EAAAM,EACApW,EAAA,IAAA6V,EAAAE,EAAAxtD,EAAAytD,EAAAxtD,EAAAytD,EAAAH,EAAAO,EACA/tF,KAGA6yE,eAAAn3D,GACA,MAAAg8D,EAAA13E,KAAAq2E,SAiBA,OAhBAqB,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,KAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,KAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,KAAAh8D,EACAg8D,EAAA,KAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,IAAAh8D,EACAg8D,EAAA,KAAAh8D,EACAg8D,EAAA,KAAAh8D,EACA1b,KAGA6yE,cACA,MAAA6E,EAAA13E,KAAAq2E,SACAY,EAAAS,EAAA,GACAR,EAAAQ,EAAA,GACAP,EAAAO,EAAA,GACAkU,EAAAlU,EAAA,IACAN,EAAAM,EAAA,GACAL,EAAAK,EAAA,GACAJ,EAAAI,EAAA,GACAmU,EAAAnU,EAAA,IACAH,EAAAG,EAAA,GACAF,EAAAE,EAAA,GACAD,EAAAC,EAAA,IACAoU,EAAApU,EAAA,IAOA,OANAA,EAAA,KAMAkU,EAAAtU,EAAAE,EAAAL,EAAA0U,EAAArU,EAAAoU,EAAAvU,EAAAI,EAAAP,EAAA2U,EAAApU,EAAAN,EAAAE,EAAAyU,EAAA5U,EAAAI,EAAAwU,GALApU,EAAA,KAKAT,EAAAK,EAAAwU,EAAA7U,EAAA4U,EAAApU,EAAAmU,EAAAxU,EAAAK,EAAAN,EAAAC,EAAA0U,EAAA3U,EAAA0U,EAAAtU,EAAAqU,EAAAtU,EAAAC,GAJAG,EAAA,MAIAT,EAAA4U,EAAArU,EAAAP,EAAAI,EAAAyU,EAAAF,EAAAxU,EAAAI,EAAAN,EAAAE,EAAA0U,EAAAF,EAAAvU,EAAAE,EAAAL,EAAA2U,EAAAtU,GAHAG,EAAA,MAGAP,EAAAE,EAAAE,EAAAN,EAAAK,EAAAE,EAAAP,EAAAI,EAAAI,EAAAN,EAAAC,EAAAI,EAAAN,EAAAE,EAAAK,EAAAP,EAAAI,EAAAC,GAGA1E,YACA,MAAA6E,EAAA13E,KAAAq2E,SACA,IAAA6C,EAmBA,OAlBAA,EAAAxB,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAwB,EACAA,EAAAxB,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAwB,EACAA,EAAAxB,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAwB,EACAA,EAAAxB,EAAA,GACAA,EAAA,GAAAA,EAAA,IACAA,EAAA,IAAAwB,EACAA,EAAAxB,EAAA,GACAA,EAAA,GAAAA,EAAA,IACAA,EAAA,IAAAwB,EACAA,EAAAxB,EAAA,IACAA,EAAA,IAAAA,EAAA,IACAA,EAAA,IAAAwB,EACAl5E,KAGA6yE,YAAArrE,EAAAlC,EAAA25B,GACA,MAAAy4C,EAAA13E,KAAAq2E,SAYA,OAVA7uE,EAAA49E,WACA1N,EAAA,IAAAlwE,EAAAA,EACAkwE,EAAA,IAAAlwE,EAAAlC,EACAoyE,EAAA,IAAAlwE,EAAAy3B,IAEAy4C,EAAA,IAAAlwE,EACAkwE,EAAA,IAAApyE,EACAoyE,EAAA,IAAAz4C,GAGAj/B,KAGA6yE,SAEA,MAAA6E,EAAA13E,KAAAq2E,SACAY,EAAAS,EAAA,GACAN,EAAAM,EAAA,GACAH,EAAAG,EAAA,GACAqU,EAAArU,EAAA,GACAR,EAAAQ,EAAA,GACAL,EAAAK,EAAA,GACAF,EAAAE,EAAA,GACAsU,EAAAtU,EAAA,GACAP,EAAAO,EAAA,GACAJ,EAAAI,EAAA,GACAD,EAAAC,EAAA,IACAuU,EAAAvU,EAAA,IACAkU,EAAAlU,EAAA,IACAmU,EAAAnU,EAAA,IACAoU,EAAApU,EAAA,IACAwU,EAAAxU,EAAA,IACAmB,EAAAvB,EAAAwU,EAAAE,EAAAH,EAAApU,EAAAuU,EAAAH,EAAArU,EAAAyU,EAAA5U,EAAAyU,EAAAG,EAAA3U,EAAAE,EAAA0U,EAAA7U,EAAAI,EAAAyU,EACApT,EAAA8S,EAAAnU,EAAAuU,EAAA7U,EAAA2U,EAAAE,EAAAJ,EAAApU,EAAAyU,EAAA/U,EAAA4U,EAAAG,EAAA9U,EAAAK,EAAA0U,EAAAhV,EAAAO,EAAAyU,EACAnT,EAAA5B,EAAA0U,EAAAG,EAAAJ,EAAAtU,EAAA0U,EAAAJ,EAAAvU,EAAA4U,EAAA/U,EAAA2U,EAAAI,EAAA9U,EAAAE,EAAA6U,EAAAhV,EAAAI,EAAA4U,EACA8B,EAAApC,EAAAtU,EAAAE,EAAAL,EAAA0U,EAAArU,EAAAoU,EAAAvU,EAAAI,EAAAP,EAAA2U,EAAApU,EAAAN,EAAAE,EAAAyU,EAAA5U,EAAAI,EAAAwU,EACA9S,EAAA/B,EAAA4B,EAAAzB,EAAA0B,EAAAvB,EAAAwB,EAAAgT,EAAAiC,EACA,GAAA,IAAAhV,EAAA,OAAAh5E,KAAAilB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,MAAAg0D,EAAA,EAAAD,EAiBA,OAhBAtB,EAAA,GAAAmB,EAAAI,EACAvB,EAAA,IAAAmU,EAAApU,EAAAsU,EAAAzU,EAAAwU,EAAAC,EAAAF,EAAAtU,EAAA0U,EAAA7U,EAAA0U,EAAAG,EAAA3U,EAAAC,EAAA2U,EAAA9U,EAAAK,EAAAyU,GAAAjT,EACAvB,EAAA,IAAAL,EAAAyU,EAAAC,EAAAF,EAAArU,EAAAuU,EAAAF,EAAAtU,EAAAyU,EAAA5U,EAAA0U,EAAAE,EAAA3U,EAAAE,EAAA2U,EAAA9U,EAAAI,EAAA0U,GAAAjT,EACAvB,EAAA,IAAAJ,EAAAE,EAAAuU,EAAA1U,EAAAI,EAAAsU,EAAAzU,EAAAC,EAAAyU,EAAA5U,EAAAK,EAAAuU,EAAA3U,EAAAE,EAAA0U,EAAA7U,EAAAI,EAAAyU,GAAAhT,EACAvB,EAAA,GAAAoB,EAAAG,EACAvB,EAAA,IAAAP,EAAA2U,EAAAC,EAAAH,EAAAnU,EAAAsU,EAAAH,EAAArU,EAAA0U,EAAAhV,EAAA6U,EAAAG,EAAA9U,EAAAI,EAAA2U,EAAAjV,EAAAQ,EAAAyU,GAAAjT,EACAvB,EAAA,IAAAkU,EAAApU,EAAAuU,EAAA7U,EAAA4U,EAAAC,EAAAH,EAAArU,EAAAyU,EAAA/U,EAAA6U,EAAAE,EAAA9U,EAAAK,EAAA2U,EAAAjV,EAAAO,EAAA0U,GAAAjT,EACAvB,EAAA,IAAAR,EAAAO,EAAAsU,EAAA5U,EAAAK,EAAAuU,EAAA5U,EAAAI,EAAAyU,EAAA/U,EAAAQ,EAAAuU,EAAA9U,EAAAK,EAAA0U,EAAAhV,EAAAO,EAAAyU,GAAAhT,EACAvB,EAAA,GAAAqB,EAAAE,EACAvB,EAAA,IAAAkU,EAAAtU,EAAAyU,EAAA5U,EAAA0U,EAAAE,EAAAH,EAAAxU,EAAA6U,EAAAhV,EAAA4U,EAAAI,EAAA9U,EAAAC,EAAA8U,EAAAjV,EAAAK,EAAA4U,GAAAjT,EACAvB,EAAA,KAAAR,EAAA2U,EAAAE,EAAAH,EAAAvU,EAAA0U,EAAAH,EAAAxU,EAAA4U,EAAA/U,EAAA4U,EAAAG,EAAA9U,EAAAE,EAAA8U,EAAAjV,EAAAI,EAAA6U,GAAAjT,EACAvB,EAAA,KAAAP,EAAAE,EAAA0U,EAAA7U,EAAAI,EAAAyU,EAAA5U,EAAAC,EAAA4U,EAAA/U,EAAAK,EAAA0U,EAAA9U,EAAAE,EAAA6U,EAAAhV,EAAAI,EAAA4U,GAAAhT,EACAvB,EAAA,IAAAsW,EAAA/U,EACAvB,EAAA,KAAAP,EAAA0U,EAAAtU,EAAAqU,EAAAtU,EAAAC,EAAAqU,EAAAxU,EAAAK,EAAAR,EAAA4U,EAAApU,EAAAN,EAAAC,EAAA0U,EAAA7U,EAAAK,EAAAwU,GAAA7S,EACAvB,EAAA,KAAAkU,EAAAvU,EAAAE,EAAAL,EAAA2U,EAAAtU,EAAAqU,EAAAxU,EAAAI,EAAAP,EAAA4U,EAAArU,EAAAN,EAAAE,EAAA0U,EAAA7U,EAAAI,EAAAyU,GAAA7S,EACAvB,EAAA,KAAAR,EAAAI,EAAAC,EAAAJ,EAAAE,EAAAE,EAAAJ,EAAAC,EAAAI,EAAAP,EAAAK,EAAAE,EAAAN,EAAAE,EAAAK,EAAAR,EAAAI,EAAAI,GAAAwB,EACAj5E,KAGA6yE,MAAAxwE,GACA,MAAAq1E,EAAA13E,KAAAq2E,SACA7uE,EAAAnF,EAAAmF,EACAlC,EAAAjD,EAAAiD,EACA25B,EAAA58B,EAAA48B,EAaA,OAZAy4C,EAAA,IAAAlwE,EACAkwE,EAAA,IAAApyE,EACAoyE,EAAA,IAAAz4C,EACAy4C,EAAA,IAAAlwE,EACAkwE,EAAA,IAAApyE,EACAoyE,EAAA,IAAAz4C,EACAy4C,EAAA,IAAAlwE,EACAkwE,EAAA,IAAApyE,EACAoyE,EAAA,KAAAz4C,EACAy4C,EAAA,IAAAlwE,EACAkwE,EAAA,IAAApyE,EACAoyE,EAAA,KAAAz4C,EACAj/B,KAGA6yE,oBACA,MAAA6E,EAAA13E,KAAAq2E,SACA4X,EAAAvW,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAwW,EAAAxW,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAyW,EAAAzW,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IACA,OAAAxxE,KAAA+F,KAAA/F,KAAAiS,IAAA81E,EAAAC,EAAAC,IAGAtb,gBAAArrE,EAAAlC,EAAA25B,GAEA,OADAj/B,KAAAilB,IAAA,EAAA,EAAA,EAAAzd,EAAA,EAAA,EAAA,EAAAlC,EAAA,EAAA,EAAA,EAAA25B,EAAA,EAAA,EAAA,EAAA,GACAj/B,KAGA6yE,cAAA6G,GACA,MAAAvyE,EAAAjB,KAAAiG,IAAAutE,GACAh+D,EAAAxV,KAAAmG,IAAAqtE,GAEA,OADA15E,KAAAilB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA9d,GAAAuU,EAAA,EAAA,EAAAA,EAAAvU,EAAA,EAAA,EAAA,EAAA,EAAA,GACAnH,KAGA6yE,cAAA6G,GACA,MAAAvyE,EAAAjB,KAAAiG,IAAAutE,GACAh+D,EAAAxV,KAAAmG,IAAAqtE,GAEA,OADA15E,KAAAilB,IAAA9d,EAAA,EAAAuU,EAAA,EAAA,EAAA,EAAA,EAAA,GAAAA,EAAA,EAAAvU,EAAA,EAAA,EAAA,EAAA,EAAA,GACAnH,KAGA6yE,cAAA6G,GACA,MAAAvyE,EAAAjB,KAAAiG,IAAAutE,GACAh+D,EAAAxV,KAAAmG,IAAAqtE,GAEA,OADA15E,KAAAilB,IAAA9d,GAAAuU,EAAA,EAAA,EAAAA,EAAAvU,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAnH,KAGA6yE,iBAAAn5D,EAAA8lB,GAEA,MAAAr4B,EAAAjB,KAAAiG,IAAAqzB,GACA9jB,EAAAxV,KAAAmG,IAAAmzB,GACAv4B,EAAA,EAAAE,EACAK,EAAAkS,EAAAlS,EACAlC,EAAAoU,EAAApU,EACA25B,EAAAvlB,EAAAulB,EACAH,EAAA73B,EAAAO,EACAu3B,EAAA93B,EAAA3B,EAEA,OADAtF,KAAAilB,IAAA6Z,EAAAt3B,EAAAL,EAAA23B,EAAAx5B,EAAAoW,EAAAujB,EAAAH,EAAAG,EAAAvjB,EAAApW,EAAA,EAAAw5B,EAAAx5B,EAAAoW,EAAAujB,EAAAF,EAAAz5B,EAAA6B,EAAA43B,EAAAE,EAAAvjB,EAAAlU,EAAA,EAAAs3B,EAAAG,EAAAvjB,EAAApW,EAAAy5B,EAAAE,EAAAvjB,EAAAlU,EAAAP,EAAAg4B,EAAAA,EAAA93B,EAAA,EAAA,EAAA,EAAA,EAAA,GACAnH,KAGA6yE,UAAArrE,EAAAlC,EAAA25B,GAEA,OADAj/B,KAAAilB,IAAAzd,EAAA,EAAA,EAAA,EAAA,EAAAlC,EAAA,EAAA,EAAA,EAAA,EAAA25B,EAAA,EAAA,EAAA,EAAA,EAAA,GACAj/B,KAGA6yE,UAAA8K,EAAAC,EAAAwQ,EAAAvQ,EAAAwQ,EAAAC,GAEA,OADAtuF,KAAAilB,IAAA,EAAAmpE,EAAAC,EAAA,EAAA1Q,EAAA,EAAA2Q,EAAA,EAAA1Q,EAAAC,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA79E,KAGA6yE,QAAA79D,EAAA2rE,EAAA5pD,GACA,MAAA2gD,EAAA13E,KAAAq2E,SACA7uE,EAAAm5E,EAAAxB,GACA75E,EAAAq7E,EAAAvB,GACAngD,EAAA0hD,EAAAtB,GACApJ,EAAA0K,EAAArB,GACA3gB,EAAAn3D,EAAAA,EACAo3D,EAAAt5D,EAAAA,EACAipF,EAAAtvD,EAAAA,EACAu+C,EAAAh2E,EAAAm3D,EACAgf,EAAAn2E,EAAAo3D,EACAgf,EAAAp2E,EAAA+mF,EACA9Q,EAAAn4E,EAAAs5D,EACAif,EAAAv4E,EAAAipF,EACA7Q,EAAAz+C,EAAAsvD,EACAC,EAAAvY,EAAAtX,EACA8vB,EAAAxY,EAAArX,EACA8vB,EAAAzY,EAAAsY,EACAjV,EAAAviD,EAAAvvB,EACA+xE,EAAAxiD,EAAAzxB,EACA6/E,EAAApuD,EAAAkI,EAiBA,OAhBAy4C,EAAA,IAAA,GAAA+F,EAAAC,IAAApE,EACA5B,EAAA,IAAAiG,EAAA+Q,GAAApV,EACA5B,EAAA,IAAAkG,EAAA6Q,GAAAnV,EACA5B,EAAA,GAAA,EACAA,EAAA,IAAAiG,EAAA+Q,GAAAnV,EACA7B,EAAA,IAAA,GAAA8F,EAAAE,IAAAnE,EACA7B,EAAA,IAAAmG,EAAA2Q,GAAAjV,EACA7B,EAAA,GAAA,EACAA,EAAA,IAAAkG,EAAA6Q,GAAAtJ,EACAzN,EAAA,IAAAmG,EAAA2Q,GAAArJ,EACAzN,EAAA,KAAA,GAAA8F,EAAAC,IAAA0H,EACAzN,EAAA,IAAA,EACAA,EAAA,IAAA1iE,EAAAxN,EACAkwE,EAAA,IAAA1iE,EAAA1P,EACAoyE,EAAA,IAAA1iE,EAAAiqB,EACAy4C,EAAA,IAAA,EACA13E,KAGA6yE,UAAA79D,EAAA2rE,EAAA5pD,GACA,MAAA2gD,EAAA13E,KAAAq2E,SAEA,IAAAiD,EAAA6S,GAAAlnE,IAAAyyD,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAr3E,SAEA,MAAAk5E,EAAA4S,GAAAlnE,IAAAyyD,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAr3E,SAEA8kF,EAAAgH,GAAAlnE,IAAAyyD,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAAAr3E,SAGAL,KAAAq+B,cACA,IAAAi7C,GAAAA,GACAtkE,EAAAxN,EAAAkwE,EAAA,IACA1iE,EAAA1P,EAAAoyE,EAAA,IACA1iE,EAAAiqB,EAAAy4C,EAAA,IAEAiX,GAAA98E,KAAA7R,MAEA,MAAA4uF,EAAA,EAAAtV,EACAuV,EAAA,EAAAtV,EACAuV,EAAA,EAAA3J,EAcA,OAbAwJ,GAAAtY,SAAA,IAAAuY,EACAD,GAAAtY,SAAA,IAAAuY,EACAD,GAAAtY,SAAA,IAAAuY,EACAD,GAAAtY,SAAA,IAAAwY,EACAF,GAAAtY,SAAA,IAAAwY,EACAF,GAAAtY,SAAA,IAAAwY,EACAF,GAAAtY,SAAA,IAAAyY,EACAH,GAAAtY,SAAA,IAAAyY,EACAH,GAAAtY,SAAA,KAAAyY,EACAnO,EAAAoO,sBAAAJ,IACA53D,EAAAvvB,EAAA8xE,EACAviD,EAAAzxB,EAAAi0E,EACAxiD,EAAAkI,EAAAkmD,EACAnlF,KAGA6yE,gBAAAv4D,EAAAyiB,EAAAF,EAAAC,EAAAkyD,EAAAC,QACA7nD,IAAA6nD,GACAhhF,QAAAC,KAAA,wGAGA,MAAAwpE,EAAA13E,KAAAq2E,SACA7uE,EAAA,EAAAwnF,GAAAjyD,EAAAziB,GACAhV,EAAA,EAAA0pF,GAAAnyD,EAAAC,GACAh1B,GAAAi1B,EAAAziB,IAAAyiB,EAAAziB,GACAhS,GAAAu0B,EAAAC,IAAAD,EAAAC,GACA31B,IAAA8nF,EAAAD,IAAAC,EAAAD,GACAxvF,GAAA,EAAAyvF,EAAAD,GAAAC,EAAAD,GAiBA,OAhBAtX,EAAA,GAAAlwE,EACAkwE,EAAA,GAAA,EACAA,EAAA,GAAA5vE,EACA4vE,EAAA,IAAA,EACAA,EAAA,GAAA,EACAA,EAAA,GAAApyE,EACAoyE,EAAA,GAAApvE,EACAovE,EAAA,IAAA,EACAA,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,IAAAvwE,EACAuwE,EAAA,IAAAl4E,EACAk4E,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,KAAA,EACAA,EAAA,IAAA,EACA13E,KAGA6yE,iBAAAv4D,EAAAyiB,EAAAF,EAAAC,EAAAkyD,EAAAC,GACA,MAAAvX,EAAA13E,KAAAq2E,SACAJ,EAAA,GAAAl5C,EAAAziB,GACAmF,EAAA,GAAAod,EAAAC,GACA16B,EAAA,GAAA6sF,EAAAD,GACAxnF,GAAAu1B,EAAAziB,GAAA27D,EACA3wE,GAAAu3B,EAAAC,GAAArd,EACAwf,GAAAgwD,EAAAD,GAAA5sF,EAiBA,OAhBAs1E,EAAA,GAAA,EAAAzB,EACAyB,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,KAAAlwE,EACAkwE,EAAA,GAAA,EACAA,EAAA,GAAA,EAAAj4D,EACAi4D,EAAA,GAAA,EACAA,EAAA,KAAApyE,EACAoyE,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,KAAA,EAAAt1E,EACAs1E,EAAA,KAAAz4C,EACAy4C,EAAA,GAAA,EACAA,EAAA,GAAA,EACAA,EAAA,IAAA,EACAA,EAAA,IAAA,EACA13E,KAGA6yE,OAAAl1C,GACA,MAAA+5C,EAAA13E,KAAAq2E,SACAsB,EAAAh6C,EAAA04C,SAEA,IAAA,IAAA11E,EAAA,EAAAA,EAAA,GAAAA,IACA,GAAA+2E,EAAA/2E,KAAAg3E,EAAAh3E,GAAA,OAAA,EAGA,OAAA,EAGAkyE,UAAA1O,EAAAltD,EAAA,GACA,IAAA,IAAAtW,EAAA,EAAAA,EAAA,GAAAA,IACAX,KAAAq2E,SAAA11E,GAAAwjE,EAAAxjE,EAAAsW,GAGA,OAAAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GACA,MAAAygE,EAAA13E,KAAAq2E,SAiBA,OAhBAlS,EAAAltD,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,GAAAygE,EAAA,GACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,EAAAltD,EAAA,IAAAygE,EAAA,IACAvT,GAKAwnB,GAAA5iF,UAAAmmF,WAAA,EAEA,MAAA/C,GAAA,IAAAvJ,GAEA+L,GAAA,IAAAhD,GAEAqB,GAAA,IAAApK,GAAA,EAAA,EAAA,GAEAqK,GAAA,IAAArK,GAAA,EAAA,EAAA,GAEAzD,GAAA,IAAAyD,GAEAxD,GAAA,IAAAwD,GAEAvD,GAAA,IAAAuD,GAEAuM,GAAA,IAAAxD,GAEAyD,GAAA,IAAAlQ,GAEA,MAAAmQ,GACAxc,YAAArrE,EAAA,EAAAlC,EAAA,EAAA25B,EAAA,EAAAinB,EAAAmpC,GAAAC,cACAtvF,KAAAm/E,GAAA33E,EACAxH,KAAAo/E,GAAA95E,EACAtF,KAAAq/E,GAAApgD,EACAj/B,KAAA8gF,OAAA56B,EAGA1+C,QACA,OAAAxH,KAAAm/E,GAGA33E,MAAA1H,GACAE,KAAAm/E,GAAAr/E,EAEAE,KAAA0gF,oBAGAp7E,QACA,OAAAtF,KAAAo/E,GAGA95E,MAAAxF,GACAE,KAAAo/E,GAAAt/E,EAEAE,KAAA0gF,oBAGAzhD,QACA,OAAAj/B,KAAAq/E,GAGApgD,MAAAn/B,GACAE,KAAAq/E,GAAAv/E,EAEAE,KAAA0gF,oBAGAx6B,YACA,OAAAlmD,KAAA8gF,OAGA56B,UAAApmD,GACAE,KAAA8gF,OAAAhhF,EAEAE,KAAA0gF,oBAGA7N,IAAArrE,EAAAlC,EAAA25B,EAAAinB,EAAAlmD,KAAA8gF,QAQA,OAPA9gF,KAAAm/E,GAAA33E,EACAxH,KAAAo/E,GAAA95E,EACAtF,KAAAq/E,GAAApgD,EACAj/B,KAAA8gF,OAAA56B,EAEAlmD,KAAA0gF,oBAEA1gF,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAq/E,GAAAr/E,KAAA8gF,QAGAjO,KAAA+N,GAQA,OAPA5gF,KAAAm/E,GAAAyB,EAAAzB,GACAn/E,KAAAo/E,GAAAwB,EAAAxB,GACAp/E,KAAAq/E,GAAAuB,EAAAvB,GACAr/E,KAAA8gF,OAAAF,EAAAE,OAEA9gF,KAAA0gF,oBAEA1gF,KAGA6yE,sBAAA/lD,EAAAo5B,EAAAlmD,KAAA8gF,OAAA79B,GAAA,GAEA,MAAAy0B,EAAA5qD,EAAAupD,SACA0G,EAAArF,EAAA,GACAsF,EAAAtF,EAAA,GACAuF,EAAAvF,EAAA,GACAwF,EAAAxF,EAAA,GACAyF,EAAAzF,EAAA,GACA0F,EAAA1F,EAAA,GACA2F,EAAA3F,EAAA,GACA4F,EAAA5F,EAAA,GACA6F,EAAA7F,EAAA,IAEA,OAAAxxB,GACA,IAAA,MACAlmD,KAAAo/E,GAAAl5E,KAAAse,KAAAvc,GAAAg1E,GAAA,EAAA,IAEA/2E,KAAAiO,IAAA8oE,GAAA,UACAj9E,KAAAm/E,GAAAj5E,KAAAuwB,OAAA2mD,EAAAG,GACAv9E,KAAAq/E,GAAAn5E,KAAAuwB,OAAAumD,EAAAD,KAEA/8E,KAAAm/E,GAAAj5E,KAAAuwB,MAAA6mD,EAAAH,GACAn9E,KAAAq/E,GAAA,GAGA,MAEA,IAAA,MACAr/E,KAAAm/E,GAAAj5E,KAAAse,MAAAvc,GAAAm1E,GAAA,EAAA,IAEAl3E,KAAAiO,IAAAipE,GAAA,UACAp9E,KAAAo/E,GAAAl5E,KAAAuwB,MAAAwmD,EAAAM,GACAv9E,KAAAq/E,GAAAn5E,KAAAuwB,MAAAymD,EAAAC,KAEAn9E,KAAAo/E,GAAAl5E,KAAAuwB,OAAA4mD,EAAAN,GACA/8E,KAAAq/E,GAAA,GAGA,MAEA,IAAA,MACAr/E,KAAAm/E,GAAAj5E,KAAAse,KAAAvc,GAAAq1E,GAAA,EAAA,IAEAp3E,KAAAiO,IAAAmpE,GAAA,UACAt9E,KAAAo/E,GAAAl5E,KAAAuwB,OAAA4mD,EAAAE,GACAv9E,KAAAq/E,GAAAn5E,KAAAuwB,OAAAumD,EAAAG,KAEAn9E,KAAAo/E,GAAA,EACAp/E,KAAAq/E,GAAAn5E,KAAAuwB,MAAAymD,EAAAH,IAGA,MAEA,IAAA,MACA/8E,KAAAo/E,GAAAl5E,KAAAse,MAAAvc,GAAAo1E,GAAA,EAAA,IAEAn3E,KAAAiO,IAAAkpE,GAAA,UACAr9E,KAAAm/E,GAAAj5E,KAAAuwB,MAAA6mD,EAAAC,GACAv9E,KAAAq/E,GAAAn5E,KAAAuwB,MAAAymD,EAAAH,KAEA/8E,KAAAm/E,GAAA,EACAn/E,KAAAq/E,GAAAn5E,KAAAuwB,OAAAumD,EAAAG,IAGA,MAEA,IAAA,MACAn9E,KAAAq/E,GAAAn5E,KAAAse,KAAAvc,GAAAi1E,GAAA,EAAA,IAEAh3E,KAAAiO,IAAA+oE,GAAA,UACAl9E,KAAAm/E,GAAAj5E,KAAAuwB,OAAA2mD,EAAAD,GACAn9E,KAAAo/E,GAAAl5E,KAAAuwB,OAAA4mD,EAAAN,KAEA/8E,KAAAm/E,GAAA,EACAn/E,KAAAo/E,GAAAl5E,KAAAuwB,MAAAwmD,EAAAM,IAGA,MAEA,IAAA,MACAv9E,KAAAq/E,GAAAn5E,KAAAse,MAAAvc,GAAA+0E,GAAA,EAAA,IAEA92E,KAAAiO,IAAA6oE,GAAA,UACAh9E,KAAAm/E,GAAAj5E,KAAAuwB,MAAA6mD,EAAAH,GACAn9E,KAAAo/E,GAAAl5E,KAAAuwB,MAAAwmD,EAAAF,KAEA/8E,KAAAm/E,GAAAj5E,KAAAuwB,OAAA2mD,EAAAG,GACAv9E,KAAAo/E,GAAA,GAGA,MAEA,QACAnxE,QAAAC,KAAA,uEAAAg4C,GAKA,OAFAlmD,KAAA8gF,OAAA56B,GACA,IAAAjD,GAAAjjD,KAAA0gF,oBACA1gF,KAGA6yE,kBAAAyC,EAAApvB,EAAAjD,GAGA,OAFAksC,GAAAI,2BAAAja,GAEAt1E,KAAA+uF,sBAAAI,GAAAjpC,EAAAjD,GAGA4vB,eAAAxwE,EAAA6jD,EAAAlmD,KAAA8gF,QACA,OAAA9gF,KAAAilB,IAAA5iB,EAAAmF,EAAAnF,EAAAiD,EAAAjD,EAAA48B,EAAAinB,GAGA2sB,QAAA2c,GAIA,OAFAJ,GAAApM,aAAAhjF,MAEAA,KAAAyvF,kBAAAL,GAAAI,GAGA3c,OAAA+N,GACA,OAAAA,EAAAzB,KAAAn/E,KAAAm/E,IAAAyB,EAAAxB,KAAAp/E,KAAAo/E,IAAAwB,EAAAvB,KAAAr/E,KAAAq/E,IAAAuB,EAAAE,SAAA9gF,KAAA8gF,OAGAjO,UAAA1O,GAQA,OAPAnkE,KAAAm/E,GAAAhb,EAAA,GACAnkE,KAAAo/E,GAAAjb,EAAA,GACAnkE,KAAAq/E,GAAAlb,EAAA,QACA/8B,IAAA+8B,EAAA,KAAAnkE,KAAA8gF,OAAA3c,EAAA,IAEAnkE,KAAA0gF,oBAEA1gF,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAKA,OAJAktD,EAAAltD,GAAAjX,KAAAm/E,GACAhb,EAAAltD,EAAA,GAAAjX,KAAAo/E,GACAjb,EAAAltD,EAAA,GAAAjX,KAAAq/E,GACAlb,EAAAltD,EAAA,GAAAjX,KAAA8gF,OACA3c,EAGA0O,UAAA6c,GACA,OAAAA,EACAA,EAAAzqE,IAAAjlB,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAq/E,IAEA,IAAAuD,GAAA5iF,KAAAm/E,GAAAn/E,KAAAo/E,GAAAp/E,KAAAq/E,IAIAxM,UAAAp2D,GAEA,OADAzc,KAAA0gF,kBAAAjkE,EACAzc,KAGA6yE,sBAIAwc,GAAAtmF,UAAA83E,SAAA,EACAwO,GAAAC,aAAA,MACAD,GAAAM,eAAA,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAEA,MAAAC,GACA/c,cACA7yE,KAAA6vF,KAAA,EAGAhd,IAAAid,GACA9vF,KAAA6vF,KAAA,GAAAC,EAAA,EAGAjd,OAAAid,GACA9vF,KAAA6vF,MAAA,GAAAC,EAAA,EAGAjd,YACA7yE,KAAA6vF,MAAA,EAGAhd,OAAAid,GACA9vF,KAAA6vF,MAAA,GAAAC,EAAA,EAGAjd,QAAAid,GACA9vF,KAAA6vF,QAAA,GAAAC,EAAA,GAGAjd,aACA7yE,KAAA6vF,KAAA,EAGAhd,KAAAkd,GACA,OAAA,IAAA/vF,KAAA6vF,KAAAE,EAAAF,OAKA,IAAAG,GAAA,EAEA,MAAAC,GAAA,IAAArN,GAEAsN,GAAA,IAAAhR,GAEAiR,GAAA,IAAAxE,GAEAyE,GAAA,IAAAxN,GAEAyN,GAAA,IAAAzN,GAEA0N,GAAA,IAAA1N,GAEA2N,GAAA,IAAArR,GAEAsR,GAAA,IAAA5N,GAAA,EAAA,EAAA,GAEA6N,GAAA,IAAA7N,GAAA,EAAA,EAAA,GAEA8N,GAAA,IAAA9N,GAAA,EAAA,EAAA,GAEA+N,GAAA,CACA5wF,KAAA,SAEA6wF,GAAA,CACA7wF,KAAA,WAGA,MAAA8wF,WAAAje,GACAC,cACAoI,QACAvyE,OAAAC,eAAA3I,KAAA,KAAA,CACAF,MAAAkwF,OAEAhwF,KAAAk7E,KAAA9H,KACApzE,KAAAE,KAAA,GACAF,KAAAD,KAAA,WACAC,KAAA+R,OAAA,KACA/R,KAAAyqB,SAAA,GACAzqB,KAAAmtF,GAAA0D,GAAAC,UAAApS,QACA,MAAA1pE,EAAA,IAAA4tE,GACA1jD,EAAA,IAAAmwD,GACA1O,EAAA,IAAAzB,GACAnoD,EAAA,IAAA6rD,GAAA,EAAA,EAAA,GAUA1jD,EAAA6xD,WARA,WACApQ,EAAAqC,aAAA9jD,GAAA,MASAyhD,EAAAoQ,WANA,WACA7xD,EAAAuwD,kBAAA9O,OAAAv5C,GAAA,MAOA1+B,OAAAsoF,iBAAAhxF,KAAA,CACAgV,SAAA,CACAkuB,cAAA,EACAD,YAAA,EACAnjC,MAAAkV,GAEAkqB,SAAA,CACAgE,cAAA,EACAD,YAAA,EACAnjC,MAAAo/B,GAEAyhD,WAAA,CACAz9C,cAAA,EACAD,YAAA,EACAnjC,MAAA6gF,GAEA5pD,MAAA,CACAmM,cAAA,EACAD,YAAA,EACAnjC,MAAAi3B,GAEAk6D,gBAAA,CACAnxF,MAAA,IAAA6rF,IAEAuF,aAAA,CACApxF,MAAA,IAAAk3E,MAGAh3E,KAAA29B,OAAA,IAAAguD,GACA3rF,KAAA+jF,YAAA,IAAA4H,GACA3rF,KAAAq7E,iBAAAwV,GAAAM,wBACAnxF,KAAAoxF,wBAAA,EACApxF,KAAA+vF,OAAA,IAAAH,GACA5vF,KAAAqxF,SAAA,EACArxF,KAAAsxF,YAAA,EACAtxF,KAAAuxF,eAAA,EACAvxF,KAAAwxF,eAAA,EACAxxF,KAAAyxF,YAAA,EACAzxF,KAAA+pB,WAAA,GACA/pB,KAAA0xF,SAAA,GAGA7e,kBAEAA,iBAEAA,aAAAl1C,GACA39B,KAAAq7E,kBAAAr7E,KAAA2xF,eACA3xF,KAAA29B,OAAAi0D,YAAAj0D,GACA39B,KAAA29B,OAAAk0D,UAAA7xF,KAAAgV,SAAAhV,KAAA2gF,WAAA3gF,KAAA+2B,OAGA87C,gBAAAyC,GAEA,OADAt1E,KAAA2gF,WAAAiR,YAAAtc,GACAt1E,KAGA6yE,yBAAAn5D,EAAA8lB,GAEAx/B,KAAA2gF,WAAAsC,iBAAAvpE,EAAA8lB,GAGAqzC,qBAAA+N,GACA5gF,KAAA2gF,WAAAqC,aAAApC,GAAA,GAGA/N,sBAAA/lD,GAEA9sB,KAAA2gF,WAAAoO,sBAAAjiE,GAGA+lD,0BAAAyC,GAEAt1E,KAAA2gF,WAAA9uE,KAAAyjE,GAGAzC,aAAAn5D,EAAA8lB,GAMA,OAHA0wD,GAAAjN,iBAAAvpE,EAAA8lB,GAEAx/B,KAAA2gF,WAAAmR,SAAA5B,IACAlwF,KAGA6yE,kBAAAn5D,EAAA8lB,GAOA,OAHA0wD,GAAAjN,iBAAAvpE,EAAA8lB,GAEAx/B,KAAA2gF,WAAAiR,YAAA1B,IACAlwF,KAGA6yE,QAAArzC,GACA,OAAAx/B,KAAA+xF,aAAAvB,GAAAhxD,GAGAqzC,QAAArzC,GACA,OAAAx/B,KAAA+xF,aAAAtB,GAAAjxD,GAGAqzC,QAAArzC,GACA,OAAAx/B,KAAA+xF,aAAArB,GAAAlxD,GAGAqzC,gBAAAn5D,EAAA2C,GAMA,OAHA4zE,GAAAp+E,KAAA6H,GAAAopE,gBAAA9iF,KAAA2gF,YAEA3gF,KAAAgV,SAAAsI,IAAA2yE,GAAA7Z,eAAA/5D,IACArc,KAGA6yE,WAAAx2D,GACA,OAAArc,KAAAgyF,gBAAAxB,GAAAn0E,GAGAw2D,WAAAx2D,GACA,OAAArc,KAAAgyF,gBAAAvB,GAAAp0E,GAGAw2D,WAAAx2D,GACA,OAAArc,KAAAgyF,gBAAAtB,GAAAr0E,GAGAw2D,aAAAiT,GACA,OAAAA,EAAAnC,aAAA3jF,KAAA+jF,aAGAlR,aAAAiT,GACA,OAAAA,EAAAnC,aAAAwM,GAAAt+E,KAAA7R,KAAA+jF,aAAA9rB,UAGA4a,OAAArrE,EAAAlC,EAAA25B,GAEAz3B,EAAA49E,UACAgL,GAAAv+E,KAAArK,GAEA4oF,GAAAnrE,IAAAzd,EAAAlC,EAAA25B,GAGA,MAAAltB,EAAA/R,KAAA+R,OACA/R,KAAAgmF,mBAAA,GAAA,GAEAqK,GAAA4B,sBAAAjyF,KAAA+jF,aAEA/jF,KAAAkyF,UAAAlyF,KAAAmyF,QACAhC,GAAAiC,OAAA/B,GAAAD,GAAApwF,KAAAmtF,IAEAgD,GAAAiC,OAAAhC,GAAAC,GAAArwF,KAAAmtF,IAGAntF,KAAA2gF,WAAAoO,sBAAAoB,IAEAp+E,IACAo+E,GAAAkC,gBAAAtgF,EAAAgyE,aAEAmM,GAAAnB,sBAAAoB,IAEAnwF,KAAA2gF,WAAAiR,YAAA1B,GAAAj4B,WAIA4a,IAAA5gB,GACA,GAAAzsC,UAAAnlB,OAAA,EAAA,CACA,IAAA,IAAAM,EAAA,EAAAA,EAAA6kB,UAAAnlB,OAAAM,IACAX,KAAAsd,IAAAkI,UAAA7kB,IAGA,OAAAX,KAGA,OAAAiyD,IAAAjyD,MACAiO,QAAApK,MAAA,kEAAAouD,GACAjyD,OAGAiyD,GAAAA,EAAAqgC,YACA,OAAArgC,EAAAlgD,QACAkgD,EAAAlgD,OAAA5P,OAAA8vD,GAGAA,EAAAlgD,OAAA/R,KACAA,KAAAyqB,SAAAjqB,KAAAyxD,GACAA,EAAA/lB,cAAAykD,KAEA1iF,QAAApK,MAAA,gEAAAouD,GAGAjyD,MAGA6yE,OAAA5gB,GACA,GAAAzsC,UAAAnlB,OAAA,EAAA,CACA,IAAA,IAAAM,EAAA,EAAAA,EAAA6kB,UAAAnlB,OAAAM,IACAX,KAAAmC,OAAAqjB,UAAA7kB,IAGA,OAAAX,KAGA,MAAAsY,EAAAtY,KAAAyqB,SAAA5lB,QAAAotD,GAQA,OANA,IAAA35C,IACA25C,EAAAlgD,OAAA,KACA/R,KAAAyqB,SAAAjb,OAAA8I,EAAA,GACA25C,EAAA/lB,cAAA0kD,KAGA5wF,KAGA6yE,mBACA,MAAA9gE,EAAA/R,KAAA+R,OAMA,OAJA,OAAAA,GACAA,EAAA5P,OAAAnC,MAGAA,KAGA6yE,QACA,IAAA,IAAAlyE,EAAA,EAAAA,EAAAX,KAAAyqB,SAAApqB,OAAAM,IAAA,CACA,MAAAsxD,EAAAjyD,KAAAyqB,SAAA9pB,GACAsxD,EAAAlgD,OAAA,KACAkgD,EAAA/lB,cAAA0kD,IAIA,OADA5wF,KAAAyqB,SAAApqB,OAAA,EACAL,KAGA6yE,OAAA5gB,GAeA,OAbAjyD,KAAAgmF,mBAAA,GAAA,GAEAmK,GAAAt+E,KAAA7R,KAAA+jF,aAAA9rB,SAEA,OAAAhG,EAAAlgD,SACAkgD,EAAAlgD,OAAAi0E,mBAAA,GAAA,GAEAmK,GAAA2B,SAAA7/B,EAAAlgD,OAAAgyE,cAGA9xB,EAAA0xB,aAAAwM,IACAnwF,KAAAsd,IAAA20C,GACAA,EAAA+zB,mBAAA,GAAA,GACAhmF,KAGA6yE,cAAA7vE,GACA,OAAAhD,KAAAuyF,oBAAA,KAAAvvF,GAGA6vE,gBAAA3yE,GACA,OAAAF,KAAAuyF,oBAAA,OAAAryF,GAGA2yE,oBAAA3yE,EAAAJ,GACA,GAAAE,KAAAE,KAAAJ,EAAA,OAAAE,KAEA,IAAA,IAAAW,EAAA,EAAA4P,EAAAvQ,KAAAyqB,SAAApqB,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MACAsxD,EADAjyD,KAAAyqB,SAAA9pB,GACA4xF,oBAAAryF,EAAAJ,GAEA,QAAAsnC,IAAA6qB,EACA,OAAAA,GAOA4gB,iBAAA1jE,GAEA,OADAnP,KAAAgmF,mBAAA,GAAA,GACA72E,EAAA8iF,sBAAAjyF,KAAA+jF,aAGAlR,mBAAA1jE,GAGA,OAFAnP,KAAAgmF,mBAAA,GAAA,GACAhmF,KAAA+jF,YAAA8N,UAAAxB,GAAAlhF,EAAAmhF,IACAnhF,EAGA0jE,cAAA1jE,GAGA,OAFAnP,KAAAgmF,mBAAA,GAAA,GACAhmF,KAAA+jF,YAAA8N,UAAAxB,GAAAE,GAAAphF,GACAA,EAGA0jE,kBAAA1jE,GACAnP,KAAAgmF,mBAAA,GAAA,GACA,MAAAn5D,EAAA7sB,KAAA+jF,YAAA1N,SACA,OAAAlnE,EAAA8V,IAAA4H,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAAAoG,YAGA4/C,WAEAA,SAAAp2D,GACAA,EAAAzc,MACA,MAAAyqB,EAAAzqB,KAAAyqB,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8pB,EAAA9pB,GAAA6xF,SAAA/1E,GAIAo2D,gBAAAp2D,GACA,IAAA,IAAAzc,KAAAqxF,QAAA,OACA50E,EAAAzc,MACA,MAAAyqB,EAAAzqB,KAAAyqB,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8pB,EAAA9pB,GAAA8xF,gBAAAh2E,GAIAo2D,kBAAAp2D,GACA,MAAA1K,EAAA/R,KAAA+R,OAEA,OAAAA,IACA0K,EAAA1K,GACAA,EAAA2gF,kBAAAj2E,IAIAo2D,eACA7yE,KAAA29B,OAAAovD,QAAA/sF,KAAAgV,SAAAhV,KAAA2gF,WAAA3gF,KAAA+2B,OACA/2B,KAAAoxF,wBAAA,EAGAve,kBAAA7hE,GACAhR,KAAAq7E,kBAAAr7E,KAAA2xF,gBAEA3xF,KAAAoxF,wBAAApgF,KACA,OAAAhR,KAAA+R,OACA/R,KAAA+jF,YAAAlyE,KAAA7R,KAAA29B,QAEA39B,KAAA+jF,YAAA/L,iBAAAh4E,KAAA+R,OAAAgyE,YAAA/jF,KAAA29B,QAGA39B,KAAAoxF,wBAAA,EACApgF,GAAA,GAIA,MAAAyZ,EAAAzqB,KAAAyqB,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8pB,EAAA9pB,GAAAgyF,kBAAA3hF,GAIA6hE,kBAAA+f,EAAAC,GACA,MAAA9gF,EAAA/R,KAAA+R,OAeA,IAbA,IAAA6gF,GAAA,OAAA7gF,GACAA,EAAAi0E,mBAAA,GAAA,GAGAhmF,KAAAq7E,kBAAAr7E,KAAA2xF,eAEA,OAAA3xF,KAAA+R,OACA/R,KAAA+jF,YAAAlyE,KAAA7R,KAAA29B,QAEA39B,KAAA+jF,YAAA/L,iBAAAh4E,KAAA+R,OAAAgyE,YAAA/jF,KAAA29B,SAIA,IAAAk1D,EAAA,CACA,MAAApoE,EAAAzqB,KAAAyqB,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8pB,EAAA9pB,GAAAqlF,mBAAA,GAAA,IAKAnT,OAAA+I,GAEA,MAAAC,OAAAz0C,IAAAw0C,GAAA,iBAAAA,EACAG,EAAA,GAIAF,IAEAD,EAAA,CACAkX,WAAA,GACAC,UAAA,GACAjX,SAAA,GACAzsB,OAAA,GACA2jC,OAAA,GACAC,UAAA,GACAlpE,WAAA,IAEAgyD,EAAAC,SAAA,CACAxzE,QAAA,IACAzI,KAAA,SACAk8E,UAAA,oBAKA,MAAAhqB,EAAA,GAsBA,SAAAihC,EAAAC,EAAAt6D,GAKA,YAJAuO,IAAA+rD,EAAAt6D,EAAAqiD,QACAiY,EAAAt6D,EAAAqiD,MAAAriD,EAAAu6D,OAAAxX,IAGA/iD,EAAAqiD,KAGA,GA7BAjpB,EAAAipB,KAAAl7E,KAAAk7E,KACAjpB,EAAAlyD,KAAAC,KAAAD,KACA,KAAAC,KAAAE,OAAA+xD,EAAA/xD,KAAAF,KAAAE,OACA,IAAAF,KAAAsxF,aAAAr/B,EAAAq/B,YAAA,IACA,IAAAtxF,KAAAuxF,gBAAAt/B,EAAAs/B,eAAA,IACA,IAAAvxF,KAAAqxF,UAAAp/B,EAAAo/B,SAAA,IACA,IAAArxF,KAAAwxF,gBAAAv/B,EAAAu/B,eAAA,GACA,IAAAxxF,KAAAyxF,cAAAx/B,EAAAw/B,YAAAzxF,KAAAyxF,aACA,OAAAjuF,KAAAC,UAAAzD,KAAA0xF,YAAAz/B,EAAAy/B,SAAA1xF,KAAA0xF,UACAz/B,EAAA89B,OAAA/vF,KAAA+vF,OAAAF,KACA59B,EAAAt0B,OAAA39B,KAAA29B,OAAAjuB,WACA,IAAA1P,KAAAq7E,mBAAAppB,EAAAopB,kBAAA,GAEAr7E,KAAAqzF,kBACAphC,EAAAlyD,KAAA,gBACAkyD,EAAA4sB,MAAA7+E,KAAA6+E,MACA5sB,EAAAqhC,eAAAtzF,KAAAszF,eAAAF,SACA,OAAApzF,KAAAuzF,gBAAAthC,EAAAshC,cAAAvzF,KAAAuzF,cAAAH,WAYApzF,KAAAwzF,QACAxzF,KAAAwiE,aACAxiE,KAAAwiE,WAAAixB,QACAxhC,EAAAuQ,WAAAxiE,KAAAwiE,WAAA4wB,SACApzF,KAAAwiE,WAAAka,YACAzqB,EAAAuQ,WAAAxiE,KAAAwiE,WAAA4wB,OAAAxX,GAAAV,OAIAl7E,KAAA0zF,aAAA1zF,KAAA0zF,YAAAhX,YACAzqB,EAAAyhC,YAAA1zF,KAAA0zF,YAAAN,OAAAxX,GAAAV,WAEA,GAAAl7E,KAAA2zF,QAAA3zF,KAAA4zF,QAAA5zF,KAAA6zF,SAAA,CACA5hC,EAAAg0B,SAAAiN,EAAAtX,EAAAkX,WAAA9yF,KAAAimF,UACA,MAAA6N,EAAA9zF,KAAAimF,SAAA6N,WAEA,QAAA1sD,IAAA0sD,QAAA1sD,IAAA0sD,EAAAd,OAAA,CACA,MAAAA,EAAAc,EAAAd,OAEA,GAAA9lF,MAAAhM,QAAA8xF,GACA,IAAA,IAAAryF,EAAA,EAAA4P,EAAAyiF,EAAA3yF,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAozF,EAAAf,EAAAryF,GACAuyF,EAAAtX,EAAAoX,OAAAe,QAGAb,EAAAtX,EAAAoX,OAAAA,IAeA,GAVAhzF,KAAAg0F,gBACA/hC,EAAAgiC,SAAAj0F,KAAAi0F,SACAhiC,EAAAiiC,WAAAl0F,KAAAk0F,WAAAxkF,eAEA03B,IAAApnC,KAAAm0F,WACAjB,EAAAtX,EAAAqX,UAAAjzF,KAAAm0F,UACAliC,EAAAkiC,SAAAn0F,KAAAm0F,SAAAjZ,YAIA9zC,IAAApnC,KAAAo0F,SACA,GAAAlnF,MAAAhM,QAAAlB,KAAAo0F,UAAA,CACA,MAAAC,EAAA,GAEA,IAAA,IAAA1zF,EAAA,EAAA4P,EAAAvQ,KAAAo0F,SAAA/zF,OAAAM,EAAA4P,EAAA5P,IACA0zF,EAAA7zF,KAAA0yF,EAAAtX,EAAAmX,UAAA/yF,KAAAo0F,SAAAzzF,KAGAsxD,EAAAmiC,SAAAC,OAEApiC,EAAAmiC,SAAAlB,EAAAtX,EAAAmX,UAAA/yF,KAAAo0F,UAKA,GAAAp0F,KAAAyqB,SAAApqB,OAAA,EAAA,CACA4xD,EAAAxnC,SAAA,GAEA,IAAA,IAAA9pB,EAAA,EAAAA,EAAAX,KAAAyqB,SAAApqB,OAAAM,IACAsxD,EAAAxnC,SAAAjqB,KAAAR,KAAAyqB,SAAA9pB,GAAAyyF,OAAAxX,GAAA3pB,QAKA,GAAAjyD,KAAA+pB,WAAA1pB,OAAA,EAAA,CACA4xD,EAAAloC,WAAA,GAEA,IAAA,IAAAppB,EAAA,EAAAA,EAAAX,KAAA+pB,WAAA1pB,OAAAM,IAAA,CACA,MAAAmQ,EAAA9Q,KAAA+pB,WAAAppB,GACAsxD,EAAAloC,WAAAvpB,KAAA0yF,EAAAtX,EAAA7xD,WAAAjZ,KAIA,GAAA+qE,EAAA,CACA,MAAAiX,EAAAwB,EAAA1Y,EAAAkX,YACAC,EAAAuB,EAAA1Y,EAAAmX,WACAjX,EAAAwY,EAAA1Y,EAAAE,UACAzsB,EAAAilC,EAAA1Y,EAAAvsB,QACA2jC,EAAAsB,EAAA1Y,EAAAoX,QACAC,EAAAqB,EAAA1Y,EAAAqX,WACAlpE,EAAAuqE,EAAA1Y,EAAA7xD,YACA+oE,EAAAzyF,OAAA,IAAA07E,EAAA+W,WAAAA,GACAC,EAAA1yF,OAAA,IAAA07E,EAAAgX,UAAAA,GACAjX,EAAAz7E,OAAA,IAAA07E,EAAAD,SAAAA,GACAzsB,EAAAhvD,OAAA,IAAA07E,EAAA1sB,OAAAA,GACA2jC,EAAA3yF,OAAA,IAAA07E,EAAAiX,OAAAA,GACAC,EAAA5yF,OAAA,IAAA07E,EAAAkX,UAAAA,GACAlpE,EAAA1pB,OAAA,IAAA07E,EAAAhyD,WAAAA,GAIA,OADAgyD,EAAA9pB,OAAAA,EACA8pB,EAIA,SAAAuY,EAAAhxF,GACA,MAAA/C,EAAA,GAEA,IAAA,MAAAwiB,KAAAzf,EAAA,CACA,MAAAtB,EAAAsB,EAAAyf,UACA/gB,EAAAg6E,SACAz7E,EAAAC,KAAAwB,GAGA,OAAAzB,GAIAsyE,MAAA0hB,GACA,OAAA,IAAAv0F,KAAAiJ,aAAA4I,KAAA7R,KAAAu0F,GAGA1hB,KAAAjxC,EAAA2yD,GAAA,GAmBA,GAlBAv0F,KAAAE,KAAA0hC,EAAA1hC,KACAF,KAAAmtF,GAAAt7E,KAAA+vB,EAAAurD,IACAntF,KAAAgV,SAAAnD,KAAA+vB,EAAA5sB,UACAhV,KAAAk/B,SAAAgnB,MAAAtkB,EAAA1C,SAAAgnB,MACAlmD,KAAA2gF,WAAA9uE,KAAA+vB,EAAA++C,YACA3gF,KAAA+2B,MAAAllB,KAAA+vB,EAAA7K,OACA/2B,KAAA29B,OAAA9rB,KAAA+vB,EAAAjE,QACA39B,KAAA+jF,YAAAlyE,KAAA+vB,EAAAmiD,aACA/jF,KAAAq7E,iBAAAz5C,EAAAy5C,iBACAr7E,KAAAoxF,uBAAAxvD,EAAAwvD,uBACApxF,KAAA+vF,OAAAF,KAAAjuD,EAAAmuD,OAAAF,KACA7vF,KAAAqxF,QAAAzvD,EAAAyvD,QACArxF,KAAAsxF,WAAA1vD,EAAA0vD,WACAtxF,KAAAuxF,cAAA3vD,EAAA2vD,cACAvxF,KAAAwxF,cAAA5vD,EAAA4vD,cACAxxF,KAAAyxF,YAAA7vD,EAAA6vD,YACAzxF,KAAA0xF,SAAAluF,KAAAgxF,MAAAhxF,KAAAC,UAAAm+B,EAAA8vD,YAEA,IAAA6C,EACA,IAAA,IAAA5zF,EAAA,EAAAA,EAAAihC,EAAAnX,SAAApqB,OAAAM,IAAA,CACA,MAAAyR,EAAAwvB,EAAAnX,SAAA9pB,GACAX,KAAAsd,IAAAlL,EAAAssE,SAIA,OAAA1+E,MAKA6wF,GAAAC,UAAA,IAAAlO,GAAA,EAAA,EAAA,GACAiO,GAAAM,yBAAA,EACAN,GAAA9nF,UAAAupF,YAAA,EAEA,MAAAmC,GAAA,IAAA7R,GAEA8R,GAAA,IAAA9R,GAEA+R,GAAA,IAAA/R,GAEAgS,GAAA,IAAAhS,GAEAiS,GAAA,IAAAjS,GAEAkS,GAAA,IAAAlS,GAEAmS,GAAA,IAAAnS,GAEAoS,GAAA,IAAApS,GAEAqS,GAAA,IAAArS,GAEAsS,GAAA,IAAAtS,GAEA,MAAAuS,GACAtiB,YAAA/qE,EAAA,IAAA86E,GAAAt6E,EAAA,IAAAs6E,GAAAz7E,EAAA,IAAAy7E,IACA5iF,KAAA8H,EAAAA,EACA9H,KAAAsI,EAAAA,EACAtI,KAAAmH,EAAAA,EAGA0rE,iBAAA/qE,EAAAQ,EAAAnB,EAAAgI,GACAA,EAAAgnE,WAAAhvE,EAAAmB,GAEAmsF,GAAAte,WAAAruE,EAAAQ,GAEA6G,EAAAq8E,MAAAiJ,IACA,MAAAW,EAAAjmF,EAAAo1E,WAEA,OAAA6Q,EAAA,EACAjmF,EAAAinE,eAAA,EAAAlwE,KAAA+F,KAAAmpF,IAGAjmF,EAAA8V,IAAA,EAAA,EAAA,GAKA4tD,oBAAAzkB,EAAAtmD,EAAAQ,EAAAnB,EAAAgI,GACAslF,GAAAte,WAAAhvE,EAAAW,GAEA4sF,GAAAve,WAAA7tE,EAAAR,GAEA6sF,GAAAxe,WAAA/nB,EAAAtmD,GAEA,MAAAutF,EAAAZ,GAAAlT,IAAAkT,IAEAa,EAAAb,GAAAlT,IAAAmT,IAEAa,EAAAd,GAAAlT,IAAAoT,IAEAa,EAAAd,GAAAnT,IAAAmT,IAEAe,EAAAf,GAAAnT,IAAAoT,IAEAe,EAAAL,EAAAG,EAAAF,EAAAA,EAEA,GAAA,IAAAI,EAGA,OAAAvmF,EAAA8V,KAAA,GAAA,GAAA,GAGA,MAAA0wE,EAAA,EAAAD,EACAl7E,GAAAg7E,EAAAD,EAAAD,EAAAG,GAAAE,EACAtzF,GAAAgzF,EAAAI,EAAAH,EAAAC,GAAAI,EAEA,OAAAxmF,EAAA8V,IAAA,EAAAzK,EAAAnY,EAAAA,EAAAmY,GAGAq4D,qBAAAzkB,EAAAtmD,EAAAQ,EAAAnB,GAEA,OADAnH,KAAA41F,aAAAxnC,EAAAtmD,EAAAQ,EAAAnB,EAAAytF,IACAA,GAAAptF,GAAA,GAAAotF,GAAAtvF,GAAA,GAAAsvF,GAAAptF,EAAAotF,GAAAtvF,GAAA,EAGAutE,aAAAzkB,EAAAhoD,EAAAQ,EAAAP,EAAAwvF,EAAAC,EAAAC,EAAA5mF,GAMA,OALAnP,KAAA41F,aAAAxnC,EAAAhoD,EAAAQ,EAAAP,EAAAuuF,IACAzlF,EAAA8V,IAAA,EAAA,GACA9V,EAAA6mF,gBAAAH,EAAAjB,GAAAptF,GACA2H,EAAA6mF,gBAAAF,EAAAlB,GAAAtvF,GACA6J,EAAA6mF,gBAAAD,EAAAnB,GAAA31D,GACA9vB,EAGA0jE,qBAAA/qE,EAAAQ,EAAAnB,EAAAq6B,GAMA,OALAizD,GAAAte,WAAAhvE,EAAAmB,GAEAosF,GAAAve,WAAAruE,EAAAQ,GAGAmsF,GAAAjJ,MAAAkJ,IAAAnT,IAAA//C,GAAA,EAGAqxC,IAAA/qE,EAAAQ,EAAAnB,GAIA,OAHAnH,KAAA8H,EAAA+J,KAAA/J,GACA9H,KAAAsI,EAAAuJ,KAAAvJ,GACAtI,KAAAmH,EAAA0K,KAAA1K,GACAnH,KAGA6yE,wBAAAtrE,EAAA0uF,EAAAjyB,EAAAkyB,GAIA,OAHAl2F,KAAA8H,EAAA+J,KAAAtK,EAAA0uF,IACAj2F,KAAAsI,EAAAuJ,KAAAtK,EAAAy8D,IACAhkE,KAAAmH,EAAA0K,KAAAtK,EAAA2uF,IACAl2F,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAA6T,GAIA,OAHA1mF,KAAA8H,EAAA+J,KAAA60E,EAAA5+E,GACA9H,KAAAsI,EAAAuJ,KAAA60E,EAAAp+E,GACAtI,KAAAmH,EAAA0K,KAAA60E,EAAAv/E,GACAnH,KAGA6yE,UAKA,OAJA4hB,GAAAte,WAAAn2E,KAAAmH,EAAAnH,KAAAsI,GAEAosF,GAAAve,WAAAn2E,KAAA8H,EAAA9H,KAAAsI,GAEA,GAAAmsF,GAAAjJ,MAAAkJ,IAAAr0F,SAGAwyE,YAAA1jE,GACA,OAAAA,EAAA+mE,WAAAl2E,KAAA8H,EAAA9H,KAAAsI,GAAAgV,IAAAtd,KAAAmH,GAAAivE,eAAA,EAAA,GAGAvD,UAAA1jE,GACA,OAAAgmF,GAAAgB,UAAAn2F,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,EAAAgI,GAGA0jE,SAAA1jE,GACA,OAAAA,EAAAinF,sBAAAp2F,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,GAGA0rE,aAAAzkB,EAAAj/C,GACA,OAAAgmF,GAAAS,aAAAxnC,EAAApuD,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,EAAAgI,GAGA0jE,MAAAzkB,EAAAynC,EAAAC,EAAAC,EAAA5mF,GACA,OAAAgmF,GAAAkB,MAAAjoC,EAAApuD,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,EAAA0uF,EAAAC,EAAAC,EAAA5mF,GAGA0jE,cAAAzkB,GACA,OAAA+mC,GAAAmB,cAAAloC,EAAApuD,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,GAGA0rE,cAAArxC,GACA,OAAA2zD,GAAAoB,cAAAv2F,KAAA8H,EAAA9H,KAAAsI,EAAAtI,KAAAmH,EAAAq6B,GAGAqxC,cAAAjmC,GACA,OAAAA,EAAA4pD,mBAAAx2F,MAGA6yE,oBAAAzwE,EAAA+M,GACA,MAAArH,EAAA9H,KAAA8H,EACAQ,EAAAtI,KAAAsI,EACAnB,EAAAnH,KAAAmH,EACA,IAAA9E,EAAA4zE,EAMA4e,GAAA1e,WAAA7tE,EAAAR,GAEAgtF,GAAA3e,WAAAhvE,EAAAW,GAEAktF,GAAA7e,WAAA/zE,EAAA0F,GAEA,MAAAwrE,EAAAuhB,GAAAtT,IAAAyT,IAEAzhB,EAAAuhB,GAAAvT,IAAAyT,IAEA,GAAA1hB,GAAA,GAAAC,GAAA,EAEA,OAAApkE,EAAA0C,KAAA/J,GAGAmtF,GAAA9e,WAAA/zE,EAAAkG,GAEA,MAAAkrE,EAAAqhB,GAAAtT,IAAA0T,IAEAwB,EAAA3B,GAAAvT,IAAA0T,IAEA,GAAAzhB,GAAA,GAAAijB,GAAAjjB,EAEA,OAAArkE,EAAA0C,KAAAvJ,GAGA,MAAAouF,EAAApjB,EAAAmjB,EAAAjjB,EAAAD,EAEA,GAAAmjB,GAAA,GAAApjB,GAAA,GAAAE,GAAA,EAGA,OAFAnxE,EAAAixE,GAAAA,EAAAE,GAEArkE,EAAA0C,KAAA/J,GAAAkuF,gBAAAnB,GAAAxyF,GAGA6yF,GAAA/e,WAAA/zE,EAAA+E,GAEA,MAAAwvF,EAAA9B,GAAAtT,IAAA2T,IAEA0B,EAAA9B,GAAAvT,IAAA2T,IAEA,GAAA0B,GAAA,GAAAD,GAAAC,EAEA,OAAAznF,EAAA0C,KAAA1K,GAGA,MAAA0vF,EAAAF,EAAApjB,EAAAD,EAAAsjB,EAEA,GAAAC,GAAA,GAAAtjB,GAAA,GAAAqjB,GAAA,EAGA,OAFA3gB,EAAA1C,GAAAA,EAAAqjB,GAEAznF,EAAA0C,KAAA/J,GAAAkuF,gBAAAlB,GAAA7e,GAGA,MAAA6gB,EAAAtjB,EAAAojB,EAAAD,EAAAF,EAEA,GAAAK,GAAA,GAAAL,EAAAjjB,GAAA,GAAAmjB,EAAAC,GAAA,EAKA,OAJA7B,GAAA5e,WAAAhvE,EAAAmB,GAEA2tE,GAAAwgB,EAAAjjB,IAAAijB,EAAAjjB,GAAAmjB,EAAAC,IAEAznF,EAAA0C,KAAAvJ,GAAA0tF,gBAAAjB,GAAA9e,GAIA,MAAAyf,EAAA,GAAAoB,EAAAD,EAAAH,GAIA,OAFAr0F,EAAAw0F,EAAAnB,EACAzf,EAAAygB,EAAAhB,EACAvmF,EAAA0C,KAAA/J,GAAAkuF,gBAAAnB,GAAAxyF,GAAA2zF,gBAAAlB,GAAA7e,GAGApD,OAAA6T,GACA,OAAAA,EAAA5+E,EAAA4/E,OAAA1nF,KAAA8H,IAAA4+E,EAAAp+E,EAAAo/E,OAAA1nF,KAAAsI,IAAAo+E,EAAAv/E,EAAAugF,OAAA1nF,KAAAmH,IAKA,IAAA4vF,GAAA,EAEA,MAAAC,WAAApkB,GACAC,cACAoI,QACAvyE,OAAAC,eAAA3I,KAAA,KAAA,CACAF,MAAAi3F,OAEA/2F,KAAAk7E,KAAA9H,KACApzE,KAAAE,KAAA,GACAF,KAAAD,KAAA,WACAC,KAAAi3F,KAAA,EACAj3F,KAAAk3F,SAvsLA,EAwsLAl3F,KAAAgiC,KA9sLA,EA+sLAhiC,KAAAm3F,cAAA,EACAn3F,KAAA08D,QAAA,EACA18D,KAAAgyB,OAAA4+C,EACA5wE,KAAAuf,aAAA,EACAvf,KAAAo3F,SA/rLA,IAgsLAp3F,KAAAq3F,SA/rLA,IAgsLAr3F,KAAAs3F,cAAAloB,EACApvE,KAAAu3F,cAAA,KACAv3F,KAAAw3F,cAAA,KACAx3F,KAAAy3F,mBAAA,KACAz3F,KAAA03F,UA3rLA,EA4rLA13F,KAAA23F,WAAA,EACA33F,KAAA43F,YAAA,EACA53F,KAAA63F,iBAAA,IACA73F,KAAA83F,YAljLA,IAmjLA93F,KAAA+3F,WAAA,EACA/3F,KAAAg4F,gBAAA,IACAh4F,KAAAi4F,YAAAzlB,GACAxyE,KAAAk4F,aAAA1lB,GACAxyE,KAAAm4F,aAAA3lB,GACAxyE,KAAAo4F,cAAA,EACAp4F,KAAAq4F,eAAA,KACAr4F,KAAAs4F,kBAAA,EACAt4F,KAAAu4F,aAAA,EACAv4F,KAAAw4F,WAAA,KACAx4F,KAAAy4F,YAAA,EACAz4F,KAAA04F,UAAA,KAEA14F,KAAA24F,eAAA,EACA34F,KAAA44F,oBAAA,EACA54F,KAAA64F,mBAAA,EACA74F,KAAA84F,WAAA,EACA94F,KAAA+4F,iBAAA,EACA/4F,KAAAg5F,oBAAA,EACAh5F,KAAAqxF,SAAA,EACArxF,KAAAi5F,YAAA,EACAj5F,KAAA0xF,SAAA,GACA1xF,KAAAwI,QAAA,EACAxI,KAAAk5F,WAAA,EAGAC,gBACA,OAAAn5F,KAAAk5F,WAGAC,cAAAr5F,GACAE,KAAAk5F,WAAA,GAAAp5F,EAAA,GACAE,KAAAwI,UAGAxI,KAAAk5F,WAAAp5F,EAGA+yE,WAEAA,mBAEAA,wBACA,OAAA7yE,KAAAo5F,gBAAA1yD,WAGAmsC,UAAAtyE,GACA,QAAA6mC,IAAA7mC,EAEA,IAAA,MAAAwiB,KAAAxiB,EAAA,CACA,MAAA84F,EAAA94F,EAAAwiB,GAEA,QAAAqkB,IAAAiyD,EAAA,CACAprF,QAAAC,KAAA,oBAAA6U,EAAA,6BACA,SAIA,GAAA,YAAAA,EAAA,CACA9U,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,sEACAC,KAAAs5F,YAvxLA,IAuxLAD,EACA,SAGA,MAAArsE,EAAAhtB,KAAA+iB,QAEAqkB,IAAApa,EAKAA,GAAAA,EAAAymE,QACAzmE,EAAA/H,IAAAo0E,GACArsE,GAAAA,EAAAo4D,WAAAiU,GAAAA,EAAAjU,UACAp4D,EAAAnb,KAAAwnF,GAEAr5F,KAAA+iB,GAAAs2E,EATAprF,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,MAAAgjB,EAAA,0CAcA8vD,OAAA+I,GACA,MAAA2d,OAAAnyD,IAAAw0C,GAAA,iBAAAA,EAEA2d,IACA3d,EAAA,CACAE,SAAA,GACAzsB,OAAA,KAIA,MAAArtD,EAAA,CACAg6E,SAAA,CACAxzE,QAAA,IACAzI,KAAA,WACAk8E,UAAA,oBAqIA,SAAAqY,EAAAhxF,GACA,MAAA/C,EAAA,GAEA,IAAA,MAAAwiB,KAAAzf,EAAA,CACA,MAAAtB,EAAAsB,EAAAyf,UACA/gB,EAAAg6E,SACAz7E,EAAAC,KAAAwB,GAGA,OAAAzB,EAGA,GA7IAyB,EAAAk5E,KAAAl7E,KAAAk7E,KACAl5E,EAAAjC,KAAAC,KAAAD,KACA,KAAAC,KAAAE,OAAA8B,EAAA9B,KAAAF,KAAAE,MACAF,KAAA2gB,OAAA3gB,KAAA2gB,MAAA8yE,UAAAzxF,EAAA2e,MAAA3gB,KAAA2gB,MAAA64E,eACApyD,IAAApnC,KAAAy5F,YAAAz3F,EAAAy3F,UAAAz5F,KAAAy5F,gBACAryD,IAAApnC,KAAA05F,YAAA13F,EAAA03F,UAAA15F,KAAA05F,WACA15F,KAAA25F,WAAA35F,KAAA25F,UAAAlG,UAAAzxF,EAAA23F,UAAA35F,KAAA25F,UAAAH,UACAx5F,KAAA45F,UAAA55F,KAAA45F,SAAAnG,UAAAzxF,EAAA43F,SAAA55F,KAAA45F,SAAAJ,UACAx5F,KAAA65F,mBAAA,IAAA75F,KAAA65F,oBAAA73F,EAAA63F,kBAAA75F,KAAA65F,mBACA75F,KAAA85F,UAAA95F,KAAA85F,SAAArG,UAAAzxF,EAAA83F,SAAA95F,KAAA85F,SAAAN,eACApyD,IAAApnC,KAAA+5F,oBAAA/3F,EAAA+3F,kBAAA/5F,KAAA+5F,mBACA/5F,KAAAg6F,cAAAh6F,KAAAg6F,aAAAvG,UAAAzxF,EAAAg4F,aAAAh6F,KAAAg6F,aAAAR,eACApyD,IAAApnC,KAAAi6F,YAAAj4F,EAAAi4F,UAAAj6F,KAAAi6F,gBACA7yD,IAAApnC,KAAAk6F,YAAAl4F,EAAAk4F,UAAAl6F,KAAAk6F,gBACA9yD,IAAApnC,KAAAm6F,qBAAAn4F,EAAAm4F,mBAAAn6F,KAAAm6F,oBAEAn6F,KAAAo6F,cAAAp6F,KAAAo6F,aAAA1d,YACA16E,EAAAo4F,aAAAp6F,KAAAo6F,aAAAhH,OAAAxX,GAAAV,MAGAl7E,KAAAq6F,uBAAAr6F,KAAAq6F,sBAAA3d,YACA16E,EAAAq4F,sBAAAr6F,KAAAq6F,sBAAAjH,OAAAxX,GAAAV,MAGAl7E,KAAAs6F,oBAAAt6F,KAAAs6F,mBAAA5d,YACA16E,EAAAs4F,mBAAAt6F,KAAAs6F,mBAAAlH,OAAAxX,GAAAV,KACAl5E,EAAAu4F,qBAAAv6F,KAAAu6F,qBAAA7qF,WAGA1P,KAAAkgB,KAAAlgB,KAAAkgB,IAAAw8D,YAAA16E,EAAAke,IAAAlgB,KAAAkgB,IAAAkzE,OAAAxX,GAAAV,MACAl7E,KAAAw6F,QAAAx6F,KAAAw6F,OAAA9d,YAAA16E,EAAAw4F,OAAAx6F,KAAAw6F,OAAApH,OAAAxX,GAAAV,MACAl7E,KAAAy6F,UAAAz6F,KAAAy6F,SAAA/d,YAAA16E,EAAAy4F,SAAAz6F,KAAAy6F,SAAArH,OAAAxX,GAAAV,MAEAl7E,KAAA06F,UAAA16F,KAAA06F,SAAAhe,YACA16E,EAAA04F,SAAA16F,KAAA06F,SAAAtH,OAAAxX,GAAAV,KACAl5E,EAAA24F,kBAAA36F,KAAA26F,mBAGA36F,KAAA46F,OAAA56F,KAAA46F,MAAAle,YACA16E,EAAA44F,MAAA56F,KAAA46F,MAAAxH,OAAAxX,GAAAV,KACAl5E,EAAA64F,eAAA76F,KAAA66F,gBAGA76F,KAAA86F,SAAA96F,KAAA86F,QAAApe,YACA16E,EAAA84F,QAAA96F,KAAA86F,QAAA1H,OAAAxX,GAAAV,KACAl5E,EAAA+4F,UAAA/6F,KAAA+6F,WAGA/6F,KAAAg7F,WAAAh7F,KAAAg7F,UAAAte,YACA16E,EAAAg5F,UAAAh7F,KAAAg7F,UAAA5H,OAAAxX,GAAAV,KACAl5E,EAAAi5F,cAAAj7F,KAAAi7F,cACAj5F,EAAAk5F,YAAAl7F,KAAAk7F,YAAAxrF,WAGA1P,KAAAm7F,iBAAAn7F,KAAAm7F,gBAAAze,YACA16E,EAAAm5F,gBAAAn7F,KAAAm7F,gBAAA/H,OAAAxX,GAAAV,KACAl5E,EAAAo5F,kBAAAp7F,KAAAo7F,kBACAp5F,EAAAq5F,iBAAAr7F,KAAAq7F,kBAGAr7F,KAAAs7F,cAAAt7F,KAAAs7F,aAAA5e,YAAA16E,EAAAs5F,aAAAt7F,KAAAs7F,aAAAlI,OAAAxX,GAAAV,MACAl7E,KAAAu7F,cAAAv7F,KAAAu7F,aAAA7e,YAAA16E,EAAAu5F,aAAAv7F,KAAAu7F,aAAAnI,OAAAxX,GAAAV,MACAl7E,KAAAw7F,aAAAx7F,KAAAw7F,YAAA9e,YAAA16E,EAAAw5F,YAAAx7F,KAAAw7F,YAAApI,OAAAxX,GAAAV,MACAl7E,KAAAy7F,aAAAz7F,KAAAy7F,YAAA/e,YAAA16E,EAAAy5F,YAAAz7F,KAAAy7F,YAAArI,OAAAxX,GAAAV,MACAl7E,KAAA07F,sBAAA17F,KAAA07F,qBAAAhf,YAAA16E,EAAA05F,qBAAA17F,KAAA07F,qBAAAtI,OAAAxX,GAAAV,MACAl7E,KAAA27F,iBAAA37F,KAAA27F,gBAAAjf,YAAA16E,EAAA25F,gBAAA37F,KAAA27F,gBAAAvI,OAAAxX,GAAAV,MAEAl7E,KAAA47F,QAAA57F,KAAA47F,OAAAlf,YACA16E,EAAA45F,OAAA57F,KAAA47F,OAAAxI,OAAAxX,GAAAV,UACA9zC,IAAApnC,KAAA67F,UAAA75F,EAAA65F,QAAA77F,KAAA67F,eAGAz0D,IAAApnC,KAAA87F,kBAAA95F,EAAA85F,gBAAA97F,KAAA87F,sBACA10D,IAAApnC,KAAA+7F,eAAA/5F,EAAA+5F,aAAA/7F,KAAA+7F,mBACA30D,IAAApnC,KAAAg8F,kBAAAh6F,EAAAg6F,gBAAAh8F,KAAAg8F,iBAEAh8F,KAAAi8F,aAAAj8F,KAAAi8F,YAAAvf,YACA16E,EAAAi6F,YAAAj8F,KAAAi8F,YAAA7I,OAAAxX,GAAAV,WAGA9zC,IAAApnC,KAAAk8F,eAAAl6F,EAAAk6F,aAAAl8F,KAAAk8F,cACAl8F,KAAAm8F,iBAAAn8F,KAAAm8F,gBAAAzf,YAAA16E,EAAAm6F,gBAAAn8F,KAAAm8F,gBAAA/I,OAAAxX,GAAAV,WACA9zC,IAAApnC,KAAAo8F,YAAAp6F,EAAAo6F,UAAAp8F,KAAAo8F,WACAp8F,KAAAq8F,cAAAr8F,KAAAq8F,aAAA3f,YAAA16E,EAAAq6F,aAAAr8F,KAAAq8F,aAAAjJ,OAAAxX,GAAAV,WACA9zC,IAAApnC,KAAAs8F,sBAAAt6F,EAAAs6F,oBAAAt8F,KAAAs8F,0BACAl1D,IAAApnC,KAAAu8F,kBAAAv6F,EAAAu6F,gBAAAv8F,KAAAu8F,gBAAA/C,eACApyD,IAAApnC,KAAAojD,OAAAphD,EAAAohD,KAAApjD,KAAAojD,MACA,OAAApjD,KAAAw4F,aAAAx2F,EAAAw2F,WAAAx4F,KAAAw4F,iBACApxD,IAAApnC,KAAAw8F,kBAAAx6F,EAAAw6F,gBAAAx8F,KAAAw8F,iBAn5LA,IAo5LAx8F,KAAAk3F,WAAAl1F,EAAAk1F,SAAAl3F,KAAAk3F,UA15LA,IA25LAl3F,KAAAgiC,OAAAhgC,EAAAggC,KAAAhiC,KAAAgiC,MACAhiC,KAAAm3F,eAAAn1F,EAAAm1F,cAAA,GACAn3F,KAAA08D,QAAA,IAAA16D,EAAA06D,QAAA18D,KAAA08D,SACA18D,KAAAgyB,SAAA4+C,IAAA5uE,EAAAgwB,OAAAhyB,KAAAgyB,SACA,IAAAhyB,KAAAuf,cAAAvd,EAAAud,YAAAvf,KAAAuf,aACAvd,EAAA01F,UAAA13F,KAAA03F,UACA11F,EAAA21F,UAAA33F,KAAA23F,UACA31F,EAAA41F,WAAA53F,KAAA43F,WACA51F,EAAAy2F,WAAAz4F,KAAAy4F,WACAz2F,EAAAo2F,aAAAp4F,KAAAo4F,aACAp2F,EAAA61F,iBAAA73F,KAAA63F,iBACA71F,EAAA81F,YAAA93F,KAAA83F,YACA91F,EAAA+1F,WAAA/3F,KAAA+3F,WACA/1F,EAAAg2F,gBAAAh4F,KAAAg4F,gBACAh2F,EAAAi2F,YAAAj4F,KAAAi4F,YACAj2F,EAAAk2F,aAAAl4F,KAAAk4F,aACAl2F,EAAAm2F,aAAAn4F,KAAAm4F,aAEAn4F,KAAAk/B,UAAA,IAAAl/B,KAAAk/B,WAAAl9B,EAAAk9B,SAAAl/B,KAAAk/B,WACA,IAAAl/B,KAAA24F,gBAAA32F,EAAA22F,eAAA,GACA,IAAA34F,KAAA44F,sBAAA52F,EAAA42F,oBAAA54F,KAAA44F,qBACA,IAAA54F,KAAA64F,qBAAA72F,EAAA62F,mBAAA74F,KAAA64F,oBACA74F,KAAAy8F,WAAA,IAAAz8F,KAAAy8F,YAAAz6F,EAAAy6F,UAAAz8F,KAAAy8F,gBACAr1D,IAAApnC,KAAA08F,WAAA16F,EAAA06F,SAAA18F,KAAA08F,eACAt1D,IAAApnC,KAAA28F,UAAA36F,EAAA26F,QAAA38F,KAAA28F,cACAv1D,IAAApnC,KAAA+2B,QAAA/0B,EAAA+0B,MAAA/2B,KAAA+2B,QACA,IAAA/2B,KAAA84F,YAAA92F,EAAA82F,WAAA,GACA94F,KAAAm5F,UAAA,IAAAn3F,EAAAm3F,UAAAn5F,KAAAm5F,YACA,IAAAn5F,KAAA+4F,kBAAA/2F,EAAA+2F,gBAAA/4F,KAAA+4F,kBACA,IAAA/4F,KAAAg5F,qBAAAh3F,EAAAg3F,mBAAAh5F,KAAAg5F,qBACA,IAAAh5F,KAAA48F,YAAA56F,EAAA46F,UAAA58F,KAAA48F,WACA58F,KAAA68F,mBAAA,IAAA76F,EAAA66F,mBAAA78F,KAAA68F,oBACA,UAAA78F,KAAA88F,mBAAA96F,EAAA86F,iBAAA98F,KAAA88F,kBACA,UAAA98F,KAAA+8F,oBAAA/6F,EAAA+6F,kBAAA/8F,KAAA+8F,oBACA,IAAA/8F,KAAAs5F,cAAAt3F,EAAAs3F,YAAAt5F,KAAAs5F,cACA,IAAAt5F,KAAAqxF,UAAArvF,EAAAqvF,SAAA,IACA,IAAArxF,KAAAi5F,aAAAj3F,EAAAi3F,YAAA,GACA,OAAAz1F,KAAAC,UAAAzD,KAAA0xF,YAAA1vF,EAAA0vF,SAAA1xF,KAAA0xF,UAcA6H,EAAA,CACA,MAAAzd,EAAAwY,EAAA1Y,EAAAE,UACAzsB,EAAAilC,EAAA1Y,EAAAvsB,QACAysB,EAAAz7E,OAAA,IAAA2B,EAAA85E,SAAAA,GACAzsB,EAAAhvD,OAAA,IAAA2B,EAAAqtD,OAAAA,GAGA,OAAArtD,EAGA6wE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjxC,GACA5hC,KAAAE,KAAA0hC,EAAA1hC,KACAF,KAAAi3F,IAAAr1D,EAAAq1D,IACAj3F,KAAAk3F,SAAAt1D,EAAAs1D,SACAl3F,KAAAgiC,KAAAJ,EAAAI,KACAhiC,KAAAm3F,aAAAv1D,EAAAu1D,aACAn3F,KAAA08D,QAAA96B,EAAA86B,QACA18D,KAAAgyB,OAAA4P,EAAA5P,OACAhyB,KAAAuf,YAAAqiB,EAAAriB,YACAvf,KAAAo3F,SAAAx1D,EAAAw1D,SACAp3F,KAAAq3F,SAAAz1D,EAAAy1D,SACAr3F,KAAAs3F,cAAA11D,EAAA01D,cACAt3F,KAAAu3F,cAAA31D,EAAA21D,cACAv3F,KAAAw3F,cAAA51D,EAAA41D,cACAx3F,KAAAy3F,mBAAA71D,EAAA61D,mBACAz3F,KAAA03F,UAAA91D,EAAA81D,UACA13F,KAAA23F,UAAA/1D,EAAA+1D,UACA33F,KAAA43F,WAAAh2D,EAAAg2D,WACA53F,KAAA63F,iBAAAj2D,EAAAi2D,iBACA73F,KAAA83F,YAAAl2D,EAAAk2D,YACA93F,KAAA+3F,WAAAn2D,EAAAm2D,WACA/3F,KAAAg4F,gBAAAp2D,EAAAo2D,gBACAh4F,KAAAi4F,YAAAr2D,EAAAq2D,YACAj4F,KAAAk4F,aAAAt2D,EAAAs2D,aACAl4F,KAAAm4F,aAAAv2D,EAAAu2D,aACAn4F,KAAAo4F,aAAAx2D,EAAAw2D,aACA,MAAA4E,EAAAp7D,EAAAy2D,eACA,IAAA4E,EAAA,KAEA,GAAA,OAAAD,EAAA,CACA,MAAAnyF,EAAAmyF,EAAA38F,OACA48F,EAAA,IAAA/vF,MAAArC,GAEA,IAAA,IAAAlK,EAAA,EAAAA,IAAAkK,IAAAlK,EACAs8F,EAAAt8F,GAAAq8F,EAAAr8F,GAAA+9E,QAoBA,OAhBA1+E,KAAAq4F,eAAA4E,EACAj9F,KAAAs4F,iBAAA12D,EAAA02D,iBACAt4F,KAAAu4F,YAAA32D,EAAA22D,YACAv4F,KAAAw4F,WAAA52D,EAAA42D,WACAx4F,KAAAy4F,WAAA72D,EAAA62D,WACAz4F,KAAA04F,UAAA92D,EAAA82D,UACA14F,KAAA24F,cAAA/2D,EAAA+2D,cACA34F,KAAA44F,oBAAAh3D,EAAAg3D,oBACA54F,KAAA64F,mBAAAj3D,EAAAi3D,mBACA74F,KAAA84F,UAAAl3D,EAAAk3D,UACA94F,KAAAm5F,UAAAv3D,EAAAu3D,UACAn5F,KAAA+4F,gBAAAn3D,EAAAm3D,gBACA/4F,KAAAg5F,mBAAAp3D,EAAAo3D,mBACAh5F,KAAAqxF,QAAAzvD,EAAAyvD,QACArxF,KAAAi5F,WAAAr3D,EAAAq3D,WACAj5F,KAAA0xF,SAAAluF,KAAAgxF,MAAAhxF,KAAAC,UAAAm+B,EAAA8vD,WACA1xF,KAGA6yE,UACA7yE,KAAAksC,cAAA,CACAnsC,KAAA,YAIAu8E,gBAAAx8E,IACA,IAAAA,GAAAE,KAAAwI,WAKAwuF,GAAAjuF,UAAAm0F,YAAA,EAEA,MAAAC,GAAA,CACAC,UAAA,SACAC,aAAA,SACAh/E,KAAA,MACAi/E,WAAA,QACAC,MAAA,SACAC,MAAA,SACAC,OAAA,SACAj/E,MAAA,EACAk/E,eAAA,SACA/+E,KAAA,IACAg/E,WAAA,QACAC,MAAA,SACAC,UAAA,SACAC,UAAA,QACAC,WAAA,QACAC,UAAA,SACAC,MAAA,SACAC,eAAA,QACAC,SAAA,SACAC,QAAA,SACA9+E,KAAA,MACA++E,SAAA,IACAC,SAAA,MACAC,cAAA,SACAC,SAAA,SACAC,UAAA,MACAC,SAAA,SACAC,UAAA,SACAC,YAAA,QACAC,eAAA,QACAC,WAAA,SACAC,WAAA,SACAC,QAAA,QACAC,WAAA,SACAC,aAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,MACAC,WAAA,QACAC,SAAA,SACAC,YAAA,MACAC,QAAA,QACAC,QAAA,QACAC,WAAA,QACAC,UAAA,SACAC,YAAA,SACAC,YAAA,QACAC,QAAA,SACAC,UAAA,SACAC,WAAA,SACAC,KAAA,SACAC,UAAA,SACAnhF,KAAA,QACAE,MAAA,MACAkhF,YAAA,SACAC,KAAA,QACAC,SAAA,SACAC,QAAA,SACAC,UAAA,SACAC,OAAA,QACAC,MAAA,SACAC,MAAA,SACAC,SAAA,SACAC,cAAA,SACAC,UAAA,QACAC,aAAA,SACAC,UAAA,SACAC,WAAA,SACAC,UAAA,SACAC,qBAAA,SACAC,UAAA,SACAC,WAAA,QACAC,UAAA,SACAC,UAAA,SACAC,YAAA,SACAC,cAAA,QACAC,aAAA,QACAC,eAAA,QACAC,eAAA,QACAC,eAAA,SACAC,YAAA,SACAzjF,KAAA,MACA0jF,UAAA,QACAC,MAAA,SACAC,QAAA,SACAzjF,OAAA,QACA0jF,iBAAA,QACAC,WAAA,IACAC,aAAA,SACAC,aAAA,QACAC,eAAA,QACAC,gBAAA,QACAC,kBAAA,MACAC,gBAAA,QACAC,gBAAA,SACAC,aAAA,QACAC,UAAA,SACAC,UAAA,SACAC,SAAA,SACAC,YAAA,SACApkF,KAAA,IACAqkF,QAAA,SACAnkF,MAAA,QACAokF,UAAA,QACAlkF,OAAA,SACAmkF,UAAA,SACAC,OAAA,SACAC,cAAA,SACAC,UAAA,SACAC,cAAA,SACAC,cAAA,SACAC,WAAA,SACAC,UAAA,SACAC,KAAA,SACAtkF,KAAA,SACAukF,KAAA,SACAC,WAAA,SACA3kF,OAAA,QACA4kF,cAAA,QACA1kF,IAAA,SACA2kF,UAAA,SACAC,UAAA,QACAC,YAAA,QACAC,OAAA,SACAC,WAAA,SACAC,SAAA,QACAC,SAAA,SACAC,OAAA,SACA/lF,OAAA,SACAgmF,QAAA,QACAC,UAAA,QACAC,UAAA,QACAC,UAAA,QACAC,KAAA,SACAC,YAAA,MACAC,UAAA,QACAvjE,IAAA,SACA5iB,KAAA,MACAomF,QAAA,SACAC,OAAA,SACAC,UAAA,QACAC,OAAA,SACAC,MAAA,SACArmF,MAAA,SACAsmF,WAAA,SACApmF,OAAA,SACAqmF,YAAA,UAEAC,GAAA,CACA5lF,EAAA,EACA/D,EAAA,EACAnL,EAAA,GAEA+0F,GAAA,CACA7lF,EAAA,EACA/D,EAAA,EACAnL,EAAA,GAGA,SAAAg1F,GAAAnjG,EAAAkzE,EAAAruE,GAGA,OAFAA,EAAA,IAAAA,GAAA,GACAA,EAAA,IAAAA,GAAA,GACAA,EAAA,EAAA,EAAA7E,EAAA,GAAAkzE,EAAAlzE,GAAA6E,EACAA,EAAA,GAAAquE,EACAruE,EAAA,EAAA,EAAA7E,EAAA,GAAAkzE,EAAAlzE,IAAA,EAAA,EAAA6E,GACA7E,EAGA,SAAAojG,GAAAr+F,GACA,OAAAA,EAAA,OAAA,YAAAA,EAAAjB,KAAAD,IAAA,YAAAkB,EAAA,YAAA,KAGA,SAAAs+F,GAAAt+F,GACA,OAAAA,EAAA,SAAA,MAAAA,EAAA,MAAAjB,KAAAD,IAAAkB,EAAA,QAAA,KAGA,MAAAu+F,GACA7yB,YAAAtsE,EAAAwZ,EAAAzX,GACA,YAAA8+B,IAAArnB,QAAAqnB,IAAA9+B,EAEAtI,KAAAilB,IAAA1e,GAGAvG,KAAA2lG,OAAAp/F,EAAAwZ,EAAAzX,GAGAuqE,IAAA/yE,GASA,OARAA,GAAAA,EAAA2zF,QACAzzF,KAAA6R,KAAA/R,GACA,iBAAAA,EACAE,KAAA4lG,OAAA9lG,GACA,iBAAAA,GACAE,KAAA6lG,SAAA/lG,GAGAE,KAGA6yE,UAAAmD,GAIA,OAHAh2E,KAAAuG,EAAAyvE,EACAh2E,KAAA+f,EAAAi2D,EACAh2E,KAAAsI,EAAA0tE,EACAh2E,KAGA6yE,OAAAizB,GAKA,OAJAA,EAAA5/F,KAAA4N,MAAAgyF,GACA9lG,KAAAuG,GAAAu/F,GAAA,GAAA,KAAA,IACA9lG,KAAA+f,GAAA+lF,GAAA,EAAA,KAAA,IACA9lG,KAAAsI,GAAA,IAAAw9F,GAAA,IACA9lG,KAGA6yE,OAAAtsE,EAAAwZ,EAAAzX,GAIA,OAHAtI,KAAAuG,EAAAA,EACAvG,KAAA+f,EAAAA,EACA/f,KAAAsI,EAAAA,EACAtI,KAGA6yE,OAAApzD,EAAA/D,EAAAnL,GAMA,GAJAkP,EAAAg0D,GAAAh0D,EAAA,GACA/D,EAAAzT,GAAAyT,EAAA,EAAA,GACAnL,EAAAtI,GAAAsI,EAAA,EAAA,GAEA,IAAAmL,EACA1b,KAAAuG,EAAAvG,KAAA+f,EAAA/f,KAAAsI,EAAAiI,MACA,CACA,MAAAnO,EAAAmO,GAAA,GAAAA,GAAA,EAAAmL,GAAAnL,EAAAmL,EAAAnL,EAAAmL,EACA45D,EAAA,EAAA/kE,EAAAnO,EACApC,KAAAuG,EAAAg/F,GAAAjwB,EAAAlzE,EAAAqd,EAAA,EAAA,GACAzf,KAAA+f,EAAAwlF,GAAAjwB,EAAAlzE,EAAAqd,GACAzf,KAAAsI,EAAAi9F,GAAAjwB,EAAAlzE,EAAAqd,EAAA,EAAA,GAGA,OAAAzf,KAGA6yE,SAAAllD,GACA,SAAAo4E,EAAAC,QACA5+D,IAAA4+D,GAEA90F,WAAA80F,GAAA,GACA/3F,QAAAC,KAAA,mCAAAyf,EAAA,qBAIA,IAAAb,EAEA,GAAAA,EAAA,+BAAAzU,KAAAsV,GAAA,CAEA,IAAAhN,EACA,MAAAzgB,EAAA4sB,EAAA,GACAugD,EAAAvgD,EAAA,GAEA,OAAA5sB,GACA,IAAA,MACA,IAAA,OACA,GAAAygB,EAAA,+DAAAtI,KAAAg1D,GAMA,OAJArtE,KAAAuG,EAAAL,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACA3gB,KAAA+f,EAAA7Z,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACA3gB,KAAAsI,EAAApC,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACAolF,EAAAplF,EAAA,IACA3gB,KAGA,GAAA2gB,EAAA,qEAAAtI,KAAAg1D,GAMA,OAJArtE,KAAAuG,EAAAL,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACA3gB,KAAA+f,EAAA7Z,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACA3gB,KAAAsI,EAAApC,KAAAC,IAAA,IAAA8Z,SAAAU,EAAA,GAAA,KAAA,IACAolF,EAAAplF,EAAA,IACA3gB,KAGA,MAEA,IAAA,MACA,IAAA,OACA,GAAA2gB,EAAA,yEAAAtI,KAAAg1D,GAAA,CAEA,MAAA5tD,EAAAvO,WAAAyP,EAAA,IAAA,IACAjF,EAAAuE,SAAAU,EAAA,GAAA,IAAA,IACApQ,EAAA0P,SAAAU,EAAA,GAAA,IAAA,IAEA,OADAolF,EAAAplF,EAAA,IACA3gB,KAAAimG,OAAAxmF,EAAA/D,EAAAnL,UAKA,GAAAuc,EAAA,oBAAAzU,KAAAsV,GAAA,CAEA,MAAAm4E,EAAAh5E,EAAA,GACAs2B,EAAA0iD,EAAAzlG,OAEA,GAAA,IAAA+iD,EAKA,OAHApjD,KAAAuG,EAAA0Z,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KAAA+f,EAAAE,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KAAAsI,EAAA2X,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KACA,GAAA,IAAAojD,EAKA,OAHApjD,KAAAuG,EAAA0Z,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KAAA+f,EAAAE,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KAAAsI,EAAA2X,SAAA6lF,EAAAxuF,OAAA,GAAAwuF,EAAAxuF,OAAA,GAAA,IAAA,IACAtX,KAIA,OAAA2tB,GAAAA,EAAAttB,OAAA,EACAL,KAAAkmG,aAAAv4E,GAGA3tB,KAGA6yE,aAAAllD,GAEA,MAAAm4E,EAAA3I,GAAAxvE,EAAAxJ,eAUA,YARAijB,IAAA0+D,EAEA9lG,KAAA4lG,OAAAE,GAGA73F,QAAAC,KAAA,8BAAAyf,GAGA3tB,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAuG,EAAAvG,KAAA+f,EAAA/f,KAAAsI,GAGAuqE,KAAAlyD,GAIA,OAHA3gB,KAAAuG,EAAAoa,EAAApa,EACAvG,KAAA+f,EAAAY,EAAAZ,EACA/f,KAAAsI,EAAAqY,EAAArY,EACAtI,KAGA6yE,kBAAAlyD,EAAAwlF,EAAA,GAIA,OAHAnmG,KAAAuG,EAAAL,KAAAD,IAAA0a,EAAApa,EAAA4/F,GACAnmG,KAAA+f,EAAA7Z,KAAAD,IAAA0a,EAAAZ,EAAAomF,GACAnmG,KAAAsI,EAAApC,KAAAD,IAAA0a,EAAArY,EAAA69F,GACAnmG,KAGA6yE,kBAAAlyD,EAAAwlF,EAAA,GACA,MAAAC,EAAAD,EAAA,EAAA,EAAAA,EAAA,EAIA,OAHAnmG,KAAAuG,EAAAL,KAAAD,IAAA0a,EAAApa,EAAA6/F,GACApmG,KAAA+f,EAAA7Z,KAAAD,IAAA0a,EAAAZ,EAAAqmF,GACApmG,KAAAsI,EAAApC,KAAAD,IAAA0a,EAAArY,EAAA89F,GACApmG,KAGA6yE,qBAAAszB,GAEA,OADAnmG,KAAAqmG,kBAAArmG,KAAAmmG,GACAnmG,KAGA6yE,qBAAAszB,GAEA,OADAnmG,KAAAsmG,kBAAAtmG,KAAAmmG,GACAnmG,KAGA6yE,iBAAAlyD,GAIA,OAHA3gB,KAAAuG,EAAAi/F,GAAA7kF,EAAApa,GACAvG,KAAA+f,EAAAylF,GAAA7kF,EAAAZ,GACA/f,KAAAsI,EAAAk9F,GAAA7kF,EAAArY,GACAtI,KAGA6yE,iBAAAlyD,GAIA,OAHA3gB,KAAAuG,EAAAk/F,GAAA9kF,EAAApa,GACAvG,KAAA+f,EAAA0lF,GAAA9kF,EAAAZ,GACA/f,KAAAsI,EAAAm9F,GAAA9kF,EAAArY,GACAtI,KAGA6yE,sBAEA,OADA7yE,KAAAumG,iBAAAvmG,MACAA,KAGA6yE,sBAEA,OADA7yE,KAAAwmG,iBAAAxmG,MACAA,KAGA6yE,SACA,OAAA,IAAA7yE,KAAAuG,GAAA,GAAA,IAAAvG,KAAA+f,GAAA,EAAA,IAAA/f,KAAAsI,GAAA,EAGAuqE,eACA,OAAA,SAAA7yE,KAAAw5F,SAAA9yD,SAAA,KAAAh2B,OAAA,GAGAmiE,OAAA1jE,GAEA,MAAA5I,EAAAvG,KAAAuG,EACAwZ,EAAA/f,KAAA+f,EACAzX,EAAAtI,KAAAsI,EACA6P,EAAAjS,KAAAiS,IAAA5R,EAAAwZ,EAAAzX,GACAnC,EAAAD,KAAAC,IAAAI,EAAAwZ,EAAAzX,GACA,IAAAm+F,EAAAC,EACA,MAAAC,GAAAxgG,EAAAgS,GAAA,EAEA,GAAAhS,IAAAgS,EACAsuF,EAAA,EACAC,EAAA,MACA,CACA,MAAA5uC,EAAA3/C,EAAAhS,EAGA,OAFAugG,EAAAC,GAAA,GAAA7uC,GAAA3/C,EAAAhS,GAAA2xD,GAAA,EAAA3/C,EAAAhS,GAEAgS,GACA,KAAA5R,EACAkgG,GAAA1mF,EAAAzX,GAAAwvD,GAAA/3C,EAAAzX,EAAA,EAAA,GACA,MAEA,KAAAyX,EACA0mF,GAAAn+F,EAAA/B,GAAAuxD,EAAA,EACA,MAEA,KAAAxvD,EACAm+F,GAAAlgG,EAAAwZ,GAAA+3C,EAAA,EAIA2uC,GAAA,EAMA,OAHAt3F,EAAAsQ,EAAAgnF,EACAt3F,EAAAuM,EAAAgrF,EACAv3F,EAAAoB,EAAAo2F,EACAx3F,EAGA0jE,WACA,MAAA,QAAA,IAAA7yE,KAAAuG,EAAA,GAAA,KAAA,IAAAvG,KAAA+f,EAAA,GAAA,KAAA,IAAA/f,KAAAsI,EAAA,GAAA,IAGAuqE,UAAApzD,EAAA/D,EAAAnL,GAMA,OALAvQ,KAAA4mG,OAAAvB,IACAA,GAAA5lF,GAAAA,EACA4lF,GAAA3pF,GAAAA,EACA2pF,GAAA90F,GAAAA,EACAvQ,KAAAimG,OAAAZ,GAAA5lF,EAAA4lF,GAAA3pF,EAAA2pF,GAAA90F,GACAvQ,KAGA6yE,IAAAlyD,GAIA,OAHA3gB,KAAAuG,GAAAoa,EAAApa,EACAvG,KAAA+f,GAAAY,EAAAZ,EACA/f,KAAAsI,GAAAqY,EAAArY,EACAtI,KAGA6yE,UAAAg0B,EAAAC,GAIA,OAHA9mG,KAAAuG,EAAAsgG,EAAAtgG,EAAAugG,EAAAvgG,EACAvG,KAAA+f,EAAA8mF,EAAA9mF,EAAA+mF,EAAA/mF,EACA/f,KAAAsI,EAAAu+F,EAAAv+F,EAAAw+F,EAAAx+F,EACAtI,KAGA6yE,UAAAn3D,GAIA,OAHA1b,KAAAuG,GAAAmV,EACA1b,KAAA+f,GAAArE,EACA1b,KAAAsI,GAAAoT,EACA1b,KAGA6yE,IAAAlyD,GAIA,OAHA3gB,KAAAuG,EAAAL,KAAAiS,IAAA,EAAAnY,KAAAuG,EAAAoa,EAAApa,GACAvG,KAAA+f,EAAA7Z,KAAAiS,IAAA,EAAAnY,KAAA+f,EAAAY,EAAAZ,GACA/f,KAAAsI,EAAApC,KAAAiS,IAAA,EAAAnY,KAAAsI,EAAAqY,EAAArY,GACAtI,KAGA6yE,SAAAlyD,GAIA,OAHA3gB,KAAAuG,GAAAoa,EAAApa,EACAvG,KAAA+f,GAAAY,EAAAZ,EACA/f,KAAAsI,GAAAqY,EAAArY,EACAtI,KAGA6yE,eAAAn3D,GAIA,OAHA1b,KAAAuG,GAAAmV,EACA1b,KAAA+f,GAAArE,EACA1b,KAAAsI,GAAAoT,EACA1b,KAGA6yE,KAAAlyD,EAAAqW,GAIA,OAHAh3B,KAAAuG,IAAAoa,EAAApa,EAAAvG,KAAAuG,GAAAywB,EACAh3B,KAAA+f,IAAAY,EAAAZ,EAAA/f,KAAA+f,GAAAiX,EACAh3B,KAAAsI,IAAAqY,EAAArY,EAAAtI,KAAAsI,GAAA0uB,EACAh3B,KAGA6yE,WAAAg0B,EAAAC,EAAA9vE,GAIA,OAHAh3B,KAAAuG,EAAAsgG,EAAAtgG,GAAAugG,EAAAvgG,EAAAsgG,EAAAtgG,GAAAywB,EACAh3B,KAAA+f,EAAA8mF,EAAA9mF,GAAA+mF,EAAA/mF,EAAA8mF,EAAA9mF,GAAAiX,EACAh3B,KAAAsI,EAAAu+F,EAAAv+F,GAAAw+F,EAAAx+F,EAAAu+F,EAAAv+F,GAAA0uB,EACAh3B,KAGA6yE,QAAAlyD,EAAAqW,GACAh3B,KAAA4mG,OAAAvB,IACA1kF,EAAAimF,OAAAtB,IACA,MAAA7lF,EAAAi0D,GAAA2xB,GAAA5lF,EAAA6lF,GAAA7lF,EAAAuX,GACAtb,EAAAg4D,GAAA2xB,GAAA3pF,EAAA4pF,GAAA5pF,EAAAsb,GACAzmB,EAAAmjE,GAAA2xB,GAAA90F,EAAA+0F,GAAA/0F,EAAAymB,GAEA,OADAh3B,KAAAimG,OAAAxmF,EAAA/D,EAAAnL,GACAvQ,KAGA6yE,OAAA1rE,GACA,OAAAA,EAAAZ,IAAAvG,KAAAuG,GAAAY,EAAA4Y,IAAA/f,KAAA+f,GAAA5Y,EAAAmB,IAAAtI,KAAAsI,EAGAuqE,UAAA1O,EAAAltD,EAAA,GAIA,OAHAjX,KAAAuG,EAAA49D,EAAAltD,GACAjX,KAAA+f,EAAAokD,EAAAltD,EAAA,GACAjX,KAAAsI,EAAA67D,EAAAltD,EAAA,GACAjX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GAIA,OAHAktD,EAAAltD,GAAAjX,KAAAuG,EACA49D,EAAAltD,EAAA,GAAAjX,KAAA+f,EACAokD,EAAAltD,EAAA,GAAAjX,KAAAsI,EACA67D,EAGA0O,oBAAA+D,EAAAt+D,GAYA,OAXAtY,KAAAuG,EAAAqwE,EAAAC,KAAAv+D,GACAtY,KAAA+f,EAAA62D,EAAAE,KAAAx+D,GACAtY,KAAAsI,EAAAsuE,EAAAkH,KAAAxlE,IAEA,IAAAs+D,EAAAmwB,aAEA/mG,KAAAuG,GAAA,IACAvG,KAAA+f,GAAA,IACA/f,KAAAsI,GAAA,KAGAtI,KAGA6yE,SACA,OAAA7yE,KAAAw5F,UAKAkM,GAAAsB,MAAA7J,GACAuI,GAAA38F,UAAA0qF,SAAA,EACAiS,GAAA38F,UAAAxC,EAAA,EACAm/F,GAAA38F,UAAAgX,EAAA,EACA2lF,GAAA38F,UAAAT,EAAA,EA+BA,MAAA2+F,WAAAjQ,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,oBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UAEA1lG,KAAAkgB,IAAA,KACAlgB,KAAA06F,SAAA,KACA16F,KAAA26F,kBAAA,EACA36F,KAAA46F,MAAA,KACA56F,KAAA66F,eAAA,EACA76F,KAAAy7F,YAAA,KACAz7F,KAAAy6F,SAAA,KACAz6F,KAAA47F,OAAA,KACA57F,KAAA67F,QAnmNA,EAomNA77F,KAAA+7F,aAAA,EACA/7F,KAAAg8F,gBAAA,IACAh8F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAA88F,iBAAA,QACA98F,KAAA+8F,kBAAA,QACA/8F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAkBA,OAjBAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAA06F,SAAA94D,EAAA84D,SACA16F,KAAA26F,kBAAA/4D,EAAA+4D,kBACA36F,KAAA46F,MAAAh5D,EAAAg5D,MACA56F,KAAA66F,eAAAj5D,EAAAi5D,eACA76F,KAAAy7F,YAAA75D,EAAA65D,YACAz7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAA47F,OAAAh6D,EAAAg6D,OACA57F,KAAA67F,QAAAj6D,EAAAi6D,QACA77F,KAAA+7F,aAAAn6D,EAAAm6D,aACA/7F,KAAAg8F,gBAAAp6D,EAAAo6D,gBACAh8F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA88F,iBAAAl7D,EAAAk7D,iBACA98F,KAAA+8F,kBAAAn7D,EAAAm7D,kBACA/8F,MAKAinG,GAAAl+F,UAAAo+F,qBAAA,EAEA,MAAAC,GAAA,IAAAxkB,GAEAykB,GAAA,IAAAtxB,GAEA,MAAAuxB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA,GAAA75F,MAAAhM,QAAAijE,GACA,MAAA,IAAA98B,UAAA,yDAGArnC,KAAAE,KAAA,GACAF,KAAAmkE,MAAAA,EACAnkE,KAAAunG,SAAAA,EACAvnG,KAAA6+E,WAAAz3C,IAAA+8B,EAAAA,EAAA9jE,OAAAknG,EAAA,EACAvnG,KAAA+mG,YAAA,IAAAA,EACA/mG,KAAAwnG,MAAA/0B,GACAzyE,KAAAynG,YAAA,CACAxwF,OAAA,EACA4nE,OAAA,GAEA7+E,KAAAwI,QAAA,EAGAqqE,oBAEAyJ,gBAAAx8E,IACA,IAAAA,GAAAE,KAAAwI,UAGAqqE,SAAA/yE,GAEA,OADAE,KAAAwnG,MAAA1nG,EACAE,KAGA6yE,KAAAjxC,GAOA,OANA5hC,KAAAE,KAAA0hC,EAAA1hC,KACAF,KAAAmkE,MAAA,IAAAviC,EAAAuiC,MAAAl7D,YAAA24B,EAAAuiC,OACAnkE,KAAAunG,SAAA3lE,EAAA2lE,SACAvnG,KAAA6+E,MAAAj9C,EAAAi9C,MACA7+E,KAAA+mG,WAAAnlE,EAAAmlE,WACA/mG,KAAAwnG,MAAA5lE,EAAA4lE,MACAxnG,KAGA6yE,OAAA60B,EAAA9wB,EAAA+wB,GACAD,GAAA1nG,KAAAunG,SACAI,GAAA/wB,EAAA2wB,SAEA,IAAA,IAAA5mG,EAAA,EAAA4P,EAAAvQ,KAAAunG,SAAA5mG,EAAA4P,EAAA5P,IACAX,KAAAmkE,MAAAujC,EAAA/mG,GAAAi2E,EAAAzS,MAAAwjC,EAAAhnG,GAGA,OAAAX,KAGA6yE,UAAA1O,GAEA,OADAnkE,KAAAmkE,MAAAl/C,IAAAk/C,GACAnkE,KAGA6yE,gBAAAnyD,GACA,MAAAyjD,EAAAnkE,KAAAmkE,MACA,IAAAltD,EAAA,EAEA,IAAA,IAAAtW,EAAA,EAAA4P,EAAAmQ,EAAArgB,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,IAAAggB,EAAAD,EAAA/f,QAEAymC,IAAAzmB,IACA1S,QAAAC,KAAA,8DAAAvN,GACAggB,EAAA,IAAA+kF,IAGAvhC,EAAAltD,KAAA0J,EAAApa,EACA49D,EAAAltD,KAAA0J,EAAAZ,EACAokD,EAAAltD,KAAA0J,EAAArY,EAGA,OAAAtI,KAGA6yE,kBAAA+0B,GACA,MAAAzjC,EAAAnkE,KAAAmkE,MACA,IAAAltD,EAAA,EAEA,IAAA,IAAAtW,EAAA,EAAA4P,EAAAq3F,EAAAvnG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,IAAAmlF,EAAA8hB,EAAAjnG,QAEAymC,IAAA0+C,IACA73E,QAAAC,KAAA,iEAAAvN,GACAmlF,EAAA,IAAA/P,IAGA5R,EAAAltD,KAAA6uE,EAAAt+E,EACA28D,EAAAltD,KAAA6uE,EAAAxgF,EAGA,OAAAtF,KAGA6yE,kBAAA+0B,GACA,MAAAzjC,EAAAnkE,KAAAmkE,MACA,IAAAltD,EAAA,EAEA,IAAA,IAAAtW,EAAA,EAAA4P,EAAAq3F,EAAAvnG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,IAAAmlF,EAAA8hB,EAAAjnG,QAEAymC,IAAA0+C,IACA73E,QAAAC,KAAA,iEAAAvN,GACAmlF,EAAA,IAAAlD,IAGAze,EAAAltD,KAAA6uE,EAAAt+E,EACA28D,EAAAltD,KAAA6uE,EAAAxgF,EACA6+D,EAAAltD,KAAA6uE,EAAA7mD,EAGA,OAAAj/B,KAGA6yE,kBAAA+0B,GACA,MAAAzjC,EAAAnkE,KAAAmkE,MACA,IAAAltD,EAAA,EAEA,IAAA,IAAAtW,EAAA,EAAA4P,EAAAq3F,EAAAvnG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,IAAAmlF,EAAA8hB,EAAAjnG,QAEAymC,IAAA0+C,IACA73E,QAAAC,KAAA,iEAAAvN,GACAmlF,EAAA,IAAAnJ,IAGAxY,EAAAltD,KAAA6uE,EAAAt+E,EACA28D,EAAAltD,KAAA6uE,EAAAxgF,EACA6+D,EAAAltD,KAAA6uE,EAAA7mD,EACAklC,EAAAltD,KAAA6uE,EAAA7P,EAGA,OAAAj2E,KAGA6yE,aAAA/lD,GACA,GAAA,IAAA9sB,KAAAunG,SACA,IAAA,IAAA5mG,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACA0mG,GAAAQ,oBAAA7nG,KAAAW,GAEA0mG,GAAAhrB,aAAAvvD,GAEA9sB,KAAA8nG,MAAAnnG,EAAA0mG,GAAA7/F,EAAA6/F,GAAA/hG,QAEA,GAAA,IAAAtF,KAAAunG,SACA,IAAA,IAAA5mG,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACAymG,GAAAS,oBAAA7nG,KAAAW,GAEAymG,GAAA/qB,aAAAvvD,GAEA9sB,KAAA+nG,OAAApnG,EAAAymG,GAAA5/F,EAAA4/F,GAAA9hG,EAAA8hG,GAAAnoE,GAIA,OAAAj/B,KAGA6yE,aAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACAymG,GAAA5/F,EAAAxH,KAAA62E,KAAAl2E,GACAymG,GAAA9hG,EAAAtF,KAAA82E,KAAAn2E,GACAymG,GAAAnoE,EAAAj/B,KAAA89E,KAAAn9E,GAEAymG,GAAAzjB,aAAA72D,GAEA9sB,KAAA+nG,OAAApnG,EAAAymG,GAAA5/F,EAAA4/F,GAAA9hG,EAAA8hG,GAAAnoE,GAGA,OAAAj/B,KAGA6yE,kBAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACAymG,GAAA5/F,EAAAxH,KAAA62E,KAAAl2E,GACAymG,GAAA9hG,EAAAtF,KAAA82E,KAAAn2E,GACAymG,GAAAnoE,EAAAj/B,KAAA89E,KAAAn9E,GAEAymG,GAAAY,kBAAAl7E,GAEA9sB,KAAA+nG,OAAApnG,EAAAymG,GAAA5/F,EAAA4/F,GAAA9hG,EAAA8hG,GAAAnoE,GAGA,OAAAj/B,KAGA6yE,mBAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACAymG,GAAA5/F,EAAAxH,KAAA62E,KAAAl2E,GACAymG,GAAA9hG,EAAAtF,KAAA82E,KAAAn2E,GACAymG,GAAAnoE,EAAAj/B,KAAA89E,KAAAn9E,GAEAymG,GAAA1b,mBAAA5+D,GAEA9sB,KAAA+nG,OAAApnG,EAAAymG,GAAA5/F,EAAA4/F,GAAA9hG,EAAA8hG,GAAAnoE,GAGA,OAAAj/B,KAGA6yE,IAAA/yE,EAAAmX,EAAA,GAEA,OADAjX,KAAAmkE,MAAAl/C,IAAAnlB,EAAAmX,GACAjX,KAGA6yE,KAAAv6D,GACA,OAAAtY,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,UAGA10B,KAAAv6D,EAAA9Q,GAEA,OADAxH,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,UAAA//F,EACAxH,KAGA6yE,KAAAv6D,GACA,OAAAtY,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAGA10B,KAAAv6D,EAAAhT,GAEA,OADAtF,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAAAjiG,EACAtF,KAGA6yE,KAAAv6D,GACA,OAAAtY,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAGA10B,KAAAv6D,EAAA2mB,GAEA,OADAj/B,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAAAtoE,EACAj/B,KAGA6yE,KAAAv6D,GACA,OAAAtY,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAGA10B,KAAAv6D,EAAA29D,GAEA,OADAj2E,KAAAmkE,MAAA7rD,EAAAtY,KAAAunG,SAAA,GAAAtxB,EACAj2E,KAGA6yE,MAAAv6D,EAAA9Q,EAAAlC,GAIA,OAHAgT,GAAAtY,KAAAunG,SACAvnG,KAAAmkE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAmkE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAGA6yE,OAAAv6D,EAAA9Q,EAAAlC,EAAA25B,GAKA,OAJA3mB,GAAAtY,KAAAunG,SACAvnG,KAAAmkE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAmkE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAAAmkE,MAAA7rD,EAAA,GAAA2mB,EACAj/B,KAGA6yE,QAAAv6D,EAAA9Q,EAAAlC,EAAA25B,EAAAg3C,GAMA,OALA39D,GAAAtY,KAAAunG,SACAvnG,KAAAmkE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAmkE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAAAmkE,MAAA7rD,EAAA,GAAA2mB,EACAj/B,KAAAmkE,MAAA7rD,EAAA,GAAA29D,EACAj2E,KAGA6yE,SAAAp2D,GAEA,OADAzc,KAAAioG,iBAAAxrF,EACAzc,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAAmkE,MAAAnkE,KAAAunG,UAAA11F,KAAA7R,MAGA6yE,SACA,MAAA7wE,EAAA,CACAulG,SAAAvnG,KAAAunG,SACAxnG,KAAAC,KAAAmkE,MAAAl7D,YAAA/I,KACAikE,MAAAj3D,MAAAnE,UAAA2H,MAAAwI,KAAAlZ,KAAAmkE,OACA4iC,WAAA/mG,KAAA+mG,YAKA,MAHA,KAAA/mG,KAAAE,OAAA8B,EAAA9B,KAAAF,KAAAE,MACAF,KAAAwnG,QAAA/0B,KAAAzwE,EAAAwlG,MAAAxnG,KAAAwnG,OACA,IAAAxnG,KAAAynG,YAAAxwF,SAAA,IAAAjX,KAAAynG,YAAA5oB,QAAA78E,EAAAylG,YAAAznG,KAAAynG,aACAzlG,GAKAslG,GAAAv+F,UAAAm/F,mBAAA,EAEA,MAAAC,WAAAb,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAmtB,UAAAjkC,GAAAojC,EAAAR,IAKA,MAAAsB,WAAAf,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAqtB,WAAAnkC,GAAAojC,EAAAR,IAKA,MAAAwB,WAAAjB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAutB,kBAAArkC,GAAAojC,EAAAR,IAKA,MAAA0B,WAAAnB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAytB,WAAAvkC,GAAAojC,EAAAR,IAKA,MAAA4B,WAAArB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAA2tB,YAAAzkC,GAAAojC,EAAAR,IAKA,MAAA8B,WAAAvB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAA6tB,WAAA3kC,GAAAojC,EAAAR,IAKA,MAAAgC,WAAAzB,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAA+tB,YAAA7kC,GAAAojC,EAAAR,IAKA,MAAAkC,WAAA3B,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAA2tB,YAAAzkC,GAAAojC,EAAAR,IAKAkC,GAAAlgG,UAAAmgG,0BAAA,EAEA,MAAAC,WAAA7B,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAmuB,aAAAjlC,GAAAojC,EAAAR,IAKA,MAAAsC,WAAA/B,GACAz0B,YAAA1O,EAAAojC,EAAAR,GACA9rB,MAAA,IAAAquB,aAAAnlC,GAAAojC,EAAAR,IAKA,SAAAwC,GAAAplC,GACA,GAAA,IAAAA,EAAA9jE,OAAA,OAAA8kB,EAAAA,EACA,IAAAhN,EAAAgsD,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAAM,EAAA4P,IAAA5P,EACAwjE,EAAAxjE,GAAAwX,IAAAA,EAAAgsD,EAAAxjE,IAGA,OAAAwX,EAGA,MAAAqxF,GAAA,CACApB,UAAAA,UACAE,WAAAA,WACAE,kBAAAA,kBACAE,WAAAA,WACAE,YAAAA,YACAE,WAAAA,WACAE,YAAAA,YACAI,aAAAA,aACAE,aAAAA,cAGA,SAAAG,GAAA1pG,EAAA2pG,GACA,OAAA,IAAAF,GAAAzpG,GAAA2pG,GAGA,IAAA5/F,GAAA,EAEA,MAAA6/F,GAAA,IAAAhe,GAEAie,GAAA,IAAA/Y,GAEAgZ,GAAA,IAAAjnB,GAEAknB,GAAA,IAAAzkB,GAEA0kB,GAAA,IAAA1kB,GAEA2kB,GAAA,IAAApnB,GAEA,MAAAqnB,WAAAr3B,GACAC,cACAoI,QACAvyE,OAAAC,eAAA3I,KAAA,KAAA,CACAF,MAAAgK,OAEA9J,KAAAk7E,KAAA9H,KACApzE,KAAAE,KAAA,GACAF,KAAAD,KAAA,iBACAC,KAAAsY,MAAA,KACAtY,KAAA00C,WAAA,GACA10C,KAAAkqG,gBAAA,GACAlqG,KAAAmqG,sBAAA,EACAnqG,KAAAoqG,OAAA,GACApqG,KAAAkmF,YAAA,KACAlmF,KAAAqqG,eAAA,KACArqG,KAAAsqG,UAAA,CACA7jG,MAAA,EACAo4E,MAAA15D,EAAAA,GAEAnlB,KAAA0xF,SAAA,GAGA7e,WACA,OAAA7yE,KAAAsY,MAGAu6D,SAAAv6D,GAOA,OANApL,MAAAhM,QAAAoX,GACAtY,KAAAsY,MAAA,IAAAixF,GAAAjxF,GAAA,MAAAywF,GAAAJ,IAAArwF,EAAA,GAEAtY,KAAAsY,MAAAA,EAGAtY,KAGA6yE,aAAA3yE,GACA,OAAAF,KAAA00C,WAAAx0C,GAGA2yE,aAAA3yE,EAAA02E,GAEA,OADA52E,KAAA00C,WAAAx0C,GAAA02E,EACA52E,KAGA6yE,gBAAA3yE,GAEA,cADAF,KAAA00C,WAAAx0C,GACAF,KAGA6yE,aAAA3yE,GACA,YAAAknC,IAAApnC,KAAA00C,WAAAx0C,GAGA2yE,SAAApsE,EAAAo4E,EAAA0rB,EAAA,GACAvqG,KAAAoqG,OAAA5pG,KAAA,CACAiG,MAAAA,EACAo4E,MAAAA,EACA0rB,cAAAA,IAIA13B,cACA7yE,KAAAoqG,OAAA,GAGAv3B,aAAApsE,EAAAo4E,GACA7+E,KAAAsqG,UAAA7jG,MAAAA,EACAzG,KAAAsqG,UAAAzrB,MAAAA,EAGAhM,aAAAl1C,GACA,MAAA3oB,EAAAhV,KAAA00C,WAAA1/B,cAEAoyB,IAAApyB,IACAA,EAAA2uE,aAAAhmD,GACA3oB,EAAAsnE,aAAA,GAGA,MAAAsI,EAAA5kF,KAAA00C,WAAAkwC,OAEA,QAAAx9C,IAAAw9C,EAAA,CACA,MAAAsM,GAAA,IAAAla,IAAAwzB,gBAAA7sE,GACAinD,EAAAojB,kBAAA9W,GACAtM,EAAAtI,aAAA,EAGA,MAAAmuB,EAAAzqG,KAAA00C,WAAA+1D,QAeA,YAbArjE,IAAAqjE,IACAA,EAAA/e,mBAAA/tD,GACA8sE,EAAAnuB,aAAA,GAGA,OAAAt8E,KAAAkmF,aACAlmF,KAAAmmF,qBAGA,OAAAnmF,KAAAqqG,gBACArqG,KAAA0qG,wBAGA1qG,KAGA6yE,gBAAAyC,GAIA,OAHAq0B,GAAApa,2BAAAja,GAEAt1E,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,QAAArzC,GAKA,OAHAmqE,GAAAgB,cAAAnrE,GAEAx/B,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,QAAArzC,GAKA,OAHAmqE,GAAAiB,cAAAprE,GAEAx/B,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,QAAArzC,GAKA,OAHAmqE,GAAAkB,cAAArrE,GAEAx/B,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,UAAArrE,EAAAlC,EAAA25B,GAKA,OAHA0qE,GAAAmB,gBAAAtjG,EAAAlC,EAAA25B,GAEAj/B,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,MAAArrE,EAAAlC,EAAA25B,GAKA,OAHA0qE,GAAAoB,UAAAvjG,EAAAlC,EAAA25B,GAEAj/B,KAAA2jF,aAAAgmB,IACA3pG,KAGA6yE,OAAAiT,GAMA,OALA8jB,GAAAxX,OAAAtM,GAEA8jB,GAAAjY,eAEA3xF,KAAA2jF,aAAAimB,GAAAjsE,QACA39B,KAGA6yE,SAIA,OAHA7yE,KAAAmmF,qBACAnmF,KAAAkmF,YAAAS,UAAAkjB,IAAAmB,SACAhrG,KAAA84C,UAAA+wD,GAAAriG,EAAAqiG,GAAAvkG,EAAAukG,GAAA5qE,GACAj/B,KAGA6yE,cAAAtrE,GACA,MAAAyN,EAAA,GAEA,IAAA,IAAArU,EAAA,EAAA4P,EAAAhJ,EAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAA7mD,EAAA5G,GACAqU,EAAAxU,KAAA4tD,EAAA5mD,EAAA4mD,EAAA9oD,EAAA8oD,EAAAnvB,GAAA,GAIA,OADAj/B,KAAAwwB,aAAA,WAAA,IAAA24E,GAAAn0F,EAAA,IACAhV,KAGA6yE,qBACA,OAAA7yE,KAAAkmF,cACAlmF,KAAAkmF,YAAA,IAAAb,IAGA,MAAArwE,EAAAhV,KAAA00C,WAAA1/B,SACAi2F,EAAAjrG,KAAAkqG,gBAAAl1F,SAEA,GAAAA,GAAAA,EAAAk2F,oBAGA,OAFAj9F,QAAApK,MAAA,kJAAA7D,WACAA,KAAAkmF,YAAAjhE,IAAA,IAAA29D,IAAAz9D,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,GAAA,IAAAy9D,GAAAz9D,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAIA,QAAAiiB,IAAApyB,GAGA,GAFAhV,KAAAkmF,YAAAilB,uBAAAn2F,GAEAi2F,EACA,IAAA,IAAAtqG,EAAA,EAAAqzB,EAAAi3E,EAAA5qG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAyqG,EAAAH,EAAAtqG,GAEAmpG,GAAAqB,uBAAAC,GAEAprG,KAAAmqG,sBACAH,GAAA9zB,WAAAl2E,KAAAkmF,YAAA//E,IAAA2jG,GAAA3jG,KAEAnG,KAAAkmF,YAAAT,cAAAukB,IAEAA,GAAA9zB,WAAAl2E,KAAAkmF,YAAA/tE,IAAA2xF,GAAA3xF,KAEAnY,KAAAkmF,YAAAT,cAAAukB,MAEAhqG,KAAAkmF,YAAAT,cAAAqkB,GAAA3jG,KACAnG,KAAAkmF,YAAAT,cAAAqkB,GAAA3xF,YAKAnY,KAAAkmF,YAAAV,aAGAnuE,MAAArX,KAAAkmF,YAAA//E,IAAAqB,IAAA6P,MAAArX,KAAAkmF,YAAA//E,IAAAb,IAAA+R,MAAArX,KAAAkmF,YAAA//E,IAAA84B,KACAhxB,QAAApK,MAAA,sIAAA7D,MAIA6yE,wBACA,OAAA7yE,KAAAqqG,iBACArqG,KAAAqqG,eAAA,IAAAjiB,IAGA,MAAApzE,EAAAhV,KAAA00C,WAAA1/B,SACAi2F,EAAAjrG,KAAAkqG,gBAAAl1F,SAEA,GAAAA,GAAAA,EAAAk2F,oBAGA,OAFAj9F,QAAApK,MAAA,wJAAA7D,WACAA,KAAAqqG,eAAAplF,IAAA,IAAA29D,GAAAz9D,EAAAA,GAIA,GAAAnQ,EAAA,CAEA,MAAA6E,EAAA7Z,KAAAqqG,eAAAxwF,OAKA,GAHAiwF,GAAAqB,uBAAAn2F,GAGAi2F,EACA,IAAA,IAAAtqG,EAAA,EAAAqzB,EAAAi3E,EAAA5qG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAyqG,EAAAH,EAAAtqG,GAEAopG,GAAAoB,uBAAAC,GAEAprG,KAAAmqG,sBACAH,GAAA9zB,WAAA4zB,GAAA3jG,IAAA4jG,GAAA5jG,KAEA2jG,GAAArkB,cAAAukB,IAEAA,GAAA9zB,WAAA4zB,GAAA3xF,IAAA4xF,GAAA5xF,KAEA2xF,GAAArkB,cAAAukB,MAEAF,GAAArkB,cAAAskB,GAAA5jG,KAEA2jG,GAAArkB,cAAAskB,GAAA5xF,MAKA2xF,GAAAnjB,UAAA9sE,GAIA,IAAAyuE,EAAA,EAEA,IAAA,IAAA3nF,EAAA,EAAAqzB,EAAAhf,EAAA6pE,MAAAl+E,EAAAqzB,EAAArzB,IACAqpG,GAAAnC,oBAAA7yF,EAAArU,GAEA2nF,EAAApiF,KAAAiS,IAAAmwE,EAAAzuE,EAAA48D,kBAAAuzB,KAIA,GAAAiB,EACA,IAAA,IAAAtqG,EAAA,EAAAqzB,EAAAi3E,EAAA5qG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAyqG,EAAAH,EAAAtqG,GACAwpG,EAAAnqG,KAAAmqG,qBAEA,IAAA,IAAAlwF,EAAA,EAAAoxF,EAAAD,EAAAvsB,MAAA5kE,EAAAoxF,EAAApxF,IACA+vF,GAAAnC,oBAAAuD,EAAAnxF,GAEAkwF,IACAN,GAAAhC,oBAAA7yF,EAAAiF,GAEA+vF,GAAA1sF,IAAAusF,KAGAvhB,EAAApiF,KAAAiS,IAAAmwE,EAAAzuE,EAAA48D,kBAAAuzB,KAKAhqG,KAAAqqG,eAAAvvF,OAAA5U,KAAA+F,KAAAq8E,GAEAjxE,MAAArX,KAAAqqG,eAAAvvF,SACA7M,QAAApK,MAAA,+HAAA7D,OAKA6yE,kBACA,MAAAv6D,EAAAtY,KAAAsY,MACAo8B,EAAA10C,KAAA00C,WAGA,GAAA,OAAAp8B,QAAA8uB,IAAAsN,EAAA1/B,eAAAoyB,IAAAsN,EAAAkwC,aAAAx9C,IAAAsN,EAAA0nC,GAEA,YADAnuE,QAAApK,MAAA,gHAIA,MAAAynG,EAAAhzF,EAAA6rD,MACAjM,EAAAxjB,EAAA1/B,SAAAmvD,MACAonC,EAAA72D,EAAAkwC,OAAAzgB,MACAqnC,EAAA92D,EAAA0nC,GAAAjY,MACAsnC,EAAAvzC,EAAA73D,OAAA,OAEA+mC,IAAAsN,EAAA+1D,SACAzqG,KAAAwwB,aAAA,UAAA,IAAA82E,GAAA,IAAA8B,aAAA,EAAAqC,GAAA,IAGA,MAAAC,EAAAh3D,EAAA+1D,QAAAtmC,MACAwnC,EAAA,GACAC,EAAA,GAEA,IAAA,IAAAjrG,EAAA,EAAAA,EAAA8qG,EAAA9qG,IACAgrG,EAAAhrG,GAAA,IAAAiiF,GACAgpB,EAAAjrG,GAAA,IAAAiiF,GAGA,MAAAipB,EAAA,IAAAjpB,GACAkpB,EAAA,IAAAlpB,GACAmpB,EAAA,IAAAnpB,GACAopB,EAAA,IAAAj2B,GACAk2B,EAAA,IAAAl2B,GACAm2B,EAAA,IAAAn2B,GACAo2B,EAAA,IAAAvpB,GACAwpB,EAAA,IAAAxpB,GAEA,SAAAypB,EAAAvkG,EAAAQ,EAAAnB,GACA0kG,EAAAlyB,UAAAzhB,EAAA,EAAApwD,GACAgkG,EAAAnyB,UAAAzhB,EAAA,EAAA5vD,GACAyjG,EAAApyB,UAAAzhB,EAAA,EAAA/wD,GACA6kG,EAAAryB,UAAA6xB,EAAA,EAAA1jG,GACAmkG,EAAAtyB,UAAA6xB,EAAA,EAAAljG,GACA4jG,EAAAvyB,UAAA6xB,EAAA,EAAArkG,GACA2kG,EAAAnnB,IAAAknB,GACAE,EAAApnB,IAAAknB,GACAI,EAAAtnB,IAAAqnB,GACAE,EAAAvnB,IAAAqnB,GACA,MAAAzlG,EAAA,GAAA0lG,EAAAzkG,EAAA0kG,EAAA5mG,EAAA4mG,EAAA1kG,EAAAykG,EAAA3mG,GAEA0kD,SAAAzjD,KACA4lG,EAAAt6F,KAAAi6F,GAAA11B,eAAA81B,EAAA5mG,GAAA0wF,gBAAA+V,GAAAE,EAAA3mG,GAAA8wE,eAAA7vE,GACA6lG,EAAAv6F,KAAAk6F,GAAA31B,eAAA61B,EAAAzkG,GAAAwuF,gBAAA8V,GAAAI,EAAA1kG,GAAA4uE,eAAA7vE,GACAolG,EAAA7jG,GAAAwV,IAAA6uF,GACAR,EAAArjG,GAAAgV,IAAA6uF,GACAR,EAAAxkG,GAAAmW,IAAA6uF,GACAP,EAAA9jG,GAAAwV,IAAA8uF,GACAR,EAAAtjG,GAAAgV,IAAA8uF,GACAR,EAAAzkG,GAAAmW,IAAA8uF,IAGA,IAAAhC,EAAApqG,KAAAoqG,OAEA,IAAAA,EAAA/pG,SACA+pG,EAAA,CAAA,CACA3jG,MAAA,EACAo4E,MAAAysB,EAAAjrG,UAIA,IAAA,IAAAM,EAAA,EAAAqzB,EAAAo2E,EAAA/pG,OAAAM,EAAAqzB,IAAArzB,EAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACA8F,EAAA6lG,EAAA7lG,MAGA,IAAA,IAAAwT,EAAAxT,EAAA4kG,EAAA5kG,EAFA6lG,EAAAztB,MAEA5kE,EAAAoxF,EAAApxF,GAAA,EACAoyF,EAAAf,EAAArxF,EAAA,GAAAqxF,EAAArxF,EAAA,GAAAqxF,EAAArxF,EAAA,IAIA,MAAAi/D,EAAA,IAAA0J,GACA2pB,EAAA,IAAA3pB,GACA/3E,EAAA,IAAA+3E,GACA4pB,EAAA,IAAA5pB,GAEA,SAAA6pB,EAAApqG,GACAwI,EAAA8uE,UAAA4xB,EAAA,EAAAlpG,GACAmqG,EAAA36F,KAAAhH,GACA,MAAA5D,EAAA0kG,EAAAtpG,GAEA62E,EAAArnE,KAAA5K,GACAiyE,EAAAyL,IAAA95E,EAAAurE,eAAAvrE,EAAA02E,IAAAt6E,KAAAgsB,YAEAs5E,EAAAvoB,aAAAwoB,EAAAvlG,GACA,MACAgvE,EADAs2B,EAAAhrB,IAAAqqB,EAAAvpG,IACA,GAAA,EAAA,EACAqpG,EAAA,EAAArpG,GAAA62E,EAAA1xE,EACAkkG,EAAA,EAAArpG,EAAA,GAAA62E,EAAA5zE,EACAomG,EAAA,EAAArpG,EAAA,GAAA62E,EAAAj6C,EACAysE,EAAA,EAAArpG,EAAA,GAAA4zE,EAGA,IAAA,IAAAt1E,EAAA,EAAAqzB,EAAAo2E,EAAA/pG,OAAAM,EAAAqzB,IAAArzB,EAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACA8F,EAAA6lG,EAAA7lG,MAGA,IAAA,IAAAwT,EAAAxT,EAAA4kG,EAAA5kG,EAFA6lG,EAAAztB,MAEA5kE,EAAAoxF,EAAApxF,GAAA,EACAwyF,EAAAnB,EAAArxF,EAAA,IACAwyF,EAAAnB,EAAArxF,EAAA,IACAwyF,EAAAnB,EAAArxF,EAAA,KAKA44D,uBACA,MAAAv6D,EAAAtY,KAAAsY,MACAo0F,EAAA1sG,KAAA4P,aAAA,YAEA,QAAAw3B,IAAAslE,EAAA,CACA,IAAAC,EAAA3sG,KAAA4P,aAAA,UAEA,QAAAw3B,IAAAulE,EACAA,EAAA,IAAArF,GAAA,IAAA8B,aAAA,EAAAsD,EAAA7tB,OAAA,GACA7+E,KAAAwwB,aAAA,SAAAm8E,QAGA,IAAA,IAAAhsG,EAAA,EAAAqzB,EAAA24E,EAAA9tB,MAAAl+E,EAAAqzB,EAAArzB,IACAgsG,EAAA5E,OAAApnG,EAAA,EAAA,EAAA,GAIA,MAAAisG,EAAA,IAAAhqB,GACAiqB,EAAA,IAAAjqB,GACAkqB,EAAA,IAAAlqB,GACAmqB,EAAA,IAAAnqB,GACAoqB,EAAA,IAAApqB,GACAqqB,EAAA,IAAArqB,GACAsqB,EAAA,IAAAtqB,GACAuqB,EAAA,IAAAvqB,GAEA,GAAAtqE,EACA,IAAA,IAAA3X,EAAA,EAAAqzB,EAAA1b,EAAAumE,MAAAl+E,EAAAqzB,EAAArzB,GAAA,EAAA,CACA,MAAAkrG,EAAAvzF,EAAAu+D,KAAAl2E,EAAA,GACAmrG,EAAAxzF,EAAAu+D,KAAAl2E,EAAA,GACAorG,EAAAzzF,EAAAu+D,KAAAl2E,EAAA,GACAisG,EAAA/E,oBAAA6E,EAAAb,GACAgB,EAAAhF,oBAAA6E,EAAAZ,GACAgB,EAAAjF,oBAAA6E,EAAAX,GACAmB,EAAA/2B,WAAA22B,EAAAD,GACAM,EAAAh3B,WAAAy2B,EAAAC,GACAK,EAAA1hB,MAAA2hB,GACAJ,EAAAlF,oBAAA8E,EAAAd,GACAmB,EAAAnF,oBAAA8E,EAAAb,GACAmB,EAAApF,oBAAA8E,EAAAZ,GACAgB,EAAAzvF,IAAA4vF,GACAF,EAAA1vF,IAAA4vF,GACAD,EAAA3vF,IAAA4vF,GACAP,EAAA5E,OAAA8D,EAAAkB,EAAAvlG,EAAAulG,EAAAznG,EAAAynG,EAAA9tE,GACA0tE,EAAA5E,OAAA+D,EAAAkB,EAAAxlG,EAAAwlG,EAAA1nG,EAAA0nG,EAAA/tE,GACA0tE,EAAA5E,OAAAgE,EAAAkB,EAAAzlG,EAAAylG,EAAA3nG,EAAA2nG,EAAAhuE,QAIA,IAAA,IAAAt+B,EAAA,EAAAqzB,EAAA04E,EAAA7tB,MAAAl+E,EAAAqzB,EAAArzB,GAAA,EACAisG,EAAA/E,oBAAA6E,EAAA/rG,EAAA,GACAksG,EAAAhF,oBAAA6E,EAAA/rG,EAAA,GACAmsG,EAAAjF,oBAAA6E,EAAA/rG,EAAA,GACAusG,EAAA/2B,WAAA22B,EAAAD,GACAM,EAAAh3B,WAAAy2B,EAAAC,GACAK,EAAA1hB,MAAA2hB,GACAR,EAAA5E,OAAApnG,EAAA,EAAAusG,EAAA1lG,EAAA0lG,EAAA5nG,EAAA4nG,EAAAjuE,GACA0tE,EAAA5E,OAAApnG,EAAA,EAAAusG,EAAA1lG,EAAA0lG,EAAA5nG,EAAA4nG,EAAAjuE,GACA0tE,EAAA5E,OAAApnG,EAAA,EAAAusG,EAAA1lG,EAAA0lG,EAAA5nG,EAAA4nG,EAAAjuE,GAIAj/B,KAAAotG,mBACAT,EAAArwB,aAAA,GAIAzJ,MAAAoT,EAAAhvE,GACA,IAAAgvE,IAAAA,EAAAonB,iBAEA,YADAp/F,QAAApK,MAAA,kFAAAoiF,QAIA7+C,IAAAnwB,IACAA,EAAA,EACAhJ,QAAAC,KAAA,2JAGA,MAAAwmC,EAAA10C,KAAA00C,WAEA,IAAA,MAAA3xB,KAAA2xB,EAAA,CACA,QAAAtN,IAAA6+C,EAAAvxC,WAAA3xB,GAAA,SACA,MACAuqF,EADA54D,EAAA3xB,GACAohD,MACAopC,EAAAtnB,EAAAvxC,WAAA3xB,GACAyqF,EAAAD,EAAAppC,MACAspC,EAAAF,EAAAhG,SAAAtwF,EACA5W,EAAA6F,KAAAC,IAAAqnG,EAAAntG,OAAAitG,EAAAjtG,OAAAotG,GAEA,IAAA,IAAA9sG,EAAA,EAAAsZ,EAAAwzF,EAAA9sG,EAAAN,EAAAM,IAAAsZ,IACAqzF,EAAArzF,GAAAuzF,EAAA7sG,GAIA,OAAAX,KAGA6yE,mBACA,MAAA04B,EAAAvrG,KAAA00C,WAAAkwC,OAEA,IAAA,IAAAjkF,EAAA,EAAAqzB,EAAAu3E,EAAA1sB,MAAAl+E,EAAAqzB,EAAArzB,IACAqpG,GAAAnC,oBAAA0D,EAAA5qG,GAEAqpG,GAAA/2E,YAEAs4E,EAAAxD,OAAApnG,EAAAqpG,GAAAxiG,EAAAwiG,GAAA1kG,EAAA0kG,GAAA/qE,GAIA4zC,eACA,SAAA66B,EAAA92B,EAAA00B,GACA,MAAAnnC,EAAAyS,EAAAzS,MACAojC,EAAA3wB,EAAA2wB,SACAR,EAAAnwB,EAAAmwB,WACA4G,EAAA,IAAAxpC,EAAAl7D,YAAAqiG,EAAAjrG,OAAAknG,GACA,IAAAjvF,EAAA,EACAqvF,EAAA,EAEA,IAAA,IAAAhnG,EAAA,EAAA4P,EAAA+6F,EAAAjrG,OAAAM,EAAA4P,EAAA5P,IAAA,CAEA2X,EADAs+D,EAAAg3B,6BACAtC,EAAA3qG,GAAAi2E,EAAA50E,KAAA6rG,OAAAj3B,EAAA3/D,OAEAq0F,EAAA3qG,GAAA4mG,EAGA,IAAA,IAAAttF,EAAA,EAAAA,EAAAstF,EAAAttF,IACA0zF,EAAAhG,KAAAxjC,EAAA7rD,KAIA,OAAA,IAAAgvF,GAAAqG,EAAApG,EAAAR,GAIA,GAAA,OAAA/mG,KAAAsY,MAEA,OADArK,QAAAC,KAAA,+EACAlO,KAGA,MAAA8tG,EAAA,IAAA7D,GACAqB,EAAAtrG,KAAAsY,MAAA6rD,MACAzvB,EAAA10C,KAAA00C,WAEA,IAAA,MAAAx0C,KAAAw0C,EAAA,CACA,MACAq5D,EAAAL,EADAh5D,EAAAx0C,GACAorG,GACAwC,EAAAt9E,aAAAtwB,EAAA6tG,GAIA,MAAA7D,EAAAlqG,KAAAkqG,gBAEA,IAAA,MAAAhqG,KAAAgqG,EAAA,CACA,MAAA8D,EAAA,GACA5C,EAAAlB,EAAAhqG,GAEA,IAAA,IAAAS,EAAA,EAAAqzB,EAAAo3E,EAAA/qG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MACAotG,EAAAL,EADAtC,EAAAzqG,GACA2qG,GACA0C,EAAAxtG,KAAAutG,GAGAD,EAAA5D,gBAAAhqG,GAAA8tG,EAGAF,EAAA3D,qBAAAnqG,KAAAmqG,qBAEA,MAAAC,EAAApqG,KAAAoqG,OAEA,IAAA,IAAAzpG,EAAA,EAAA4P,EAAA65F,EAAA/pG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAmtG,EAAAG,SAAA3B,EAAA7lG,MAAA6lG,EAAAztB,MAAAytB,EAAA/B,eAGA,OAAAuD,EAGAj7B,SACA,MAAA7wE,EAAA,CACAg6E,SAAA,CACAxzE,QAAA,IACAzI,KAAA,iBACAk8E,UAAA,0BASA,GALAj6E,EAAAk5E,KAAAl7E,KAAAk7E,KACAl5E,EAAAjC,KAAAC,KAAAD,KACA,KAAAC,KAAAE,OAAA8B,EAAA9B,KAAAF,KAAAE,MACAwI,OAAAg7B,KAAA1jC,KAAA0xF,UAAArxF,OAAA,IAAA2B,EAAA0vF,SAAA1xF,KAAA0xF,eAEAtqD,IAAApnC,KAAA8zF,WAAA,CACA,MAAAA,EAAA9zF,KAAA8zF,WAEA,IAAA,MAAA/wE,KAAA+wE,OACA1sD,IAAA0sD,EAAA/wE,KAAA/gB,EAAA+gB,GAAA+wE,EAAA/wE,IAGA,OAAA/gB,EAIAA,EAAAA,KAAA,CACA0yC,WAAA,IAEA,MAAAp8B,EAAAtY,KAAAsY,MAEA,OAAAA,IACAtW,EAAAA,KAAAsW,MAAA,CACAvY,KAAAuY,EAAA6rD,MAAAl7D,YAAA/I,KACAikE,MAAAj3D,MAAAnE,UAAA2H,MAAAwI,KAAAZ,EAAA6rD,SAIA,MAAAzvB,EAAA10C,KAAA00C,WAEA,IAAA,MAAA3xB,KAAA2xB,EAAA,CACA,MAAAkiC,EAAAliC,EAAA3xB,GACA/gB,EAAAA,KAAA0yC,WAAA3xB,GAAA6zD,EAAAwc,OAAApxF,EAAAA,MAGA,MAAAkoG,EAAA,GACA,IAAAgE,GAAA,EAEA,IAAA,MAAAnrF,KAAA/iB,KAAAkqG,gBAAA,CACA,MAAAiE,EAAAnuG,KAAAkqG,gBAAAnnF,GACAohD,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAAqzB,EAAAm6E,EAAA9tG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAi2E,EAAAu3B,EAAAxtG,GACAwjE,EAAA3jE,KAAAo2E,EAAAwc,OAAApxF,EAAAA,OAGAmiE,EAAA9jE,OAAA,IACA6pG,EAAAnnF,GAAAohD,EACA+pC,GAAA,GAIAA,IACAlsG,EAAAA,KAAAkoG,gBAAAA,EACAloG,EAAAA,KAAAmoG,qBAAAnqG,KAAAmqG,sBAGA,MAAAC,EAAApqG,KAAAoqG,OAEAA,EAAA/pG,OAAA,IACA2B,EAAAA,KAAAooG,OAAA5mG,KAAAgxF,MAAAhxF,KAAAC,UAAA2mG,KAGA,MAAAC,EAAArqG,KAAAqqG,eASA,OAPA,OAAAA,IACAroG,EAAAA,KAAAqoG,eAAA,CACAxwF,OAAAwwF,EAAAxwF,OAAAnK,UACAoL,OAAAuvF,EAAAvvF,SAIA9Y,EAGA6wE,QAeA,OAAA,IAAAo3B,IAAAp4F,KAAA7R,MAGA6yE,KAAAjxC,GAEA5hC,KAAAsY,MAAA,KACAtY,KAAA00C,WAAA,GACA10C,KAAAkqG,gBAAA,GACAlqG,KAAAoqG,OAAA,GACApqG,KAAAkmF,YAAA,KACAlmF,KAAAqqG,eAAA,KAEA,MAAAroG,EAAA,GAEAhC,KAAAE,KAAA0hC,EAAA1hC,KAEA,MAAAoY,EAAAspB,EAAAtpB,MAEA,OAAAA,GACAtY,KAAAouG,SAAA91F,EAAAomE,MAAA18E,IAIA,MAAA0yC,EAAA9S,EAAA8S,WAEA,IAAA,MAAAx0C,KAAAw0C,EAAA,CACA,MAAAkiC,EAAAliC,EAAAx0C,GACAF,KAAAwwB,aAAAtwB,EAAA02E,EAAA8H,MAAA18E,IAIA,MAAAkoG,EAAAtoE,EAAAsoE,gBAEA,IAAA,MAAAhqG,KAAAgqG,EAAA,CACA,MAAA/lC,EAAA,GACAinC,EAAAlB,EAAAhqG,GAEA,IAAA,IAAAS,EAAA,EAAA4P,EAAA66F,EAAA/qG,OAAAM,EAAA4P,EAAA5P,IACAwjE,EAAA3jE,KAAA4qG,EAAAzqG,GAAA+9E,MAAA18E,IAGAhC,KAAAkqG,gBAAAhqG,GAAAikE,EAGAnkE,KAAAmqG,qBAAAvoE,EAAAuoE,qBAEA,MAAAC,EAAAxoE,EAAAwoE,OAEA,IAAA,IAAAzpG,EAAA,EAAA4P,EAAA65F,EAAA/pG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAX,KAAAiuG,SAAA3B,EAAA7lG,MAAA6lG,EAAAztB,MAAAytB,EAAA/B,eAIA,MAAArkB,EAAAtkD,EAAAskD,YAEA,OAAAA,IACAlmF,KAAAkmF,YAAAA,EAAAxH,SAIA,MAAA2rB,EAAAzoE,EAAAyoE,eAWA,OATA,OAAAA,IACArqG,KAAAqqG,eAAAA,EAAA3rB,SAIA1+E,KAAAsqG,UAAA7jG,MAAAm7B,EAAA0oE,UAAA7jG,MACAzG,KAAAsqG,UAAAzrB,MAAAj9C,EAAA0oE,UAAAzrB,MAEA7+E,KAAA0xF,SAAA9vD,EAAA8vD,SACA1xF,KAGA6yE,UACA7yE,KAAAksC,cAAA,CACAnsC,KAAA,aAMAkqG,GAAAlhG,UAAAskG,kBAAA,EAEA,MAAAgB,GAAA,IAAA1iB,GAEA2iB,GAAA,IAAAhlB,GAEAilB,GAAA,IAAAnmB,GAEAomB,GAAA,IAAA5rB,GAEA6rB,GAAA,IAAA7rB,GAEA8rB,GAAA,IAAA9rB,GAEA+rB,GAAA,IAAA/rB,GAEAgsB,GAAA,IAAAhsB,GAEAisB,GAAA,IAAAjsB,GAEAksB,GAAA,IAAAlsB,GAEAmsB,GAAA,IAAAnsB,GAEAosB,GAAA,IAAApsB,GAEAqsB,GAAA,IAAAl5B,GAEAm5B,GAAA,IAAAn5B,GAEAo5B,GAAA,IAAAp5B,GAEAq5B,GAAA,IAAAxsB,GAEAysB,GAAA,IAAAzsB,GAEA,MAAA0sB,WAAAze,GACAhe,YAAAoT,EAAA,IAAAgkB,GAAA7V,EAAA,IAAA6S,IACAhsB,QACAj7E,KAAAD,KAAA,OACAC,KAAAimF,SAAAA,EACAjmF,KAAAo0F,SAAAA,EACAp0F,KAAAuvG,qBAGA18B,KAAAjxC,GAaA,OAZAq5C,MAAAppE,KAAA+vB,QAEAwF,IAAAxF,EAAA4tE,wBACAxvG,KAAAwvG,sBAAA5tE,EAAA4tE,sBAAA9+F,cAGA02B,IAAAxF,EAAA6tE,wBACAzvG,KAAAyvG,sBAAA/mG,OAAA26B,OAAA,GAAAzB,EAAA6tE,wBAGAzvG,KAAAo0F,SAAAxyD,EAAAwyD,SACAp0F,KAAAimF,SAAArkD,EAAAqkD,SACAjmF,KAGA6yE,qBACA,MAAAoT,EAAAjmF,KAAAimF,SAEA,GAAAA,EAAAonB,iBAAA,CACA,MAAAnD,EAAAjkB,EAAAikB,gBACAxmE,EAAAh7B,OAAAg7B,KAAAwmE,GAEA,GAAAxmE,EAAArjC,OAAA,EAAA,CACA,MAAA+qG,EAAAlB,EAAAxmE,EAAA,IAEA,QAAA0D,IAAAgkE,EAAA,CACAprG,KAAAwvG,sBAAA,GACAxvG,KAAAyvG,sBAAA,GAEA,IAAA,IAAA3iF,EAAA,EAAA4iF,EAAAtE,EAAA/qG,OAAAysB,EAAA4iF,EAAA5iF,IAAA,CACA,MAAA5sB,EAAAkrG,EAAAt+E,GAAA5sB,MAAAyvG,OAAA7iF,GACA9sB,KAAAwvG,sBAAAhvG,KAAA,GACAR,KAAAyvG,sBAAAvvG,GAAA4sB,SAIA,CACA,MAAA8iF,EAAA3pB,EAAA2pB,kBAEAxoE,IAAAwoE,GAAAA,EAAAvvG,OAAA,GACA4N,QAAApK,MAAA,yGAKAgvE,QAAAg9B,EAAAC,GACA,MAAA7pB,EAAAjmF,KAAAimF,SACAmO,EAAAp0F,KAAAo0F,SACArQ,EAAA/jF,KAAA+jF,YACA,QAAA38C,IAAAgtD,EAAA,OAQA,GANA,OAAAnO,EAAAokB,gBAAApkB,EAAAykB,wBAEA6D,GAAA18F,KAAAo0E,EAAAokB,gBAEAkE,GAAA5qB,aAAAI,IAEA,IAAA8rB,EAAAtmB,IAAAd,iBAAA8lB,IAAA,OAOA,GALAF,GAAAx8F,KAAAkyE,GAAA9rB,SAEAq2C,GAAAz8F,KAAAg+F,EAAAtmB,KAAA5F,aAAA0qB,IAGA,OAAApoB,EAAAC,cACA,IAAAooB,GAAAyB,cAAA9pB,EAAAC,aAAA,OAGA,IAAA8pB,EAEA,GAAA/pB,EAAAonB,iBAAA,CACA,MAAA/0F,EAAA2tE,EAAA3tE,MACAtD,EAAAixE,EAAAvxC,WAAA1/B,SACAi7F,EAAAhqB,EAAAikB,gBAAAl1F,SACAm1F,EAAAlkB,EAAAkkB,qBACA/tB,EAAA6J,EAAAvxC,WAAA0nC,GACA0Z,EAAA7P,EAAAvxC,WAAAohD,IACAsU,EAAAnkB,EAAAmkB,OACAE,EAAArkB,EAAAqkB,UAEA,GAAA,OAAAhyF,EAEA,GAAApL,MAAAhM,QAAAkzF,GACA,IAAA,IAAAzzF,EAAA,EAAAqzB,EAAAo2E,EAAA/pG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAuvG,EAAA9b,EAAAkY,EAAA/B,eAIA,IAAA,IAAAtwF,EAHA/T,KAAAiS,IAAAm0F,EAAA7lG,MAAA6jG,EAAA7jG,OAGA4kG,EAFAnlG,KAAAC,IAAAmmG,EAAA7lG,MAAA6lG,EAAAztB,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEA5kE,EAAAoxF,EAAApxF,GAAA,EAAA,CACA,MAAAnS,EAAAwQ,EAAAu+D,KAAA58D,GACA3R,EAAAgQ,EAAAu+D,KAAA58D,EAAA,GACA9S,EAAAmR,EAAAu+D,KAAA58D,EAAA,GACA+1F,EAAAG,GAAAnwG,KAAAkwG,EAAAL,EAAAvB,GAAAt5F,EAAAi7F,EAAA9F,EAAA/tB,EAAA0Z,EAAAhuF,EAAAQ,EAAAnB,GAEA6oG,IACAA,EAAAI,UAAAlqG,KAAA4N,MAAAmG,EAAA,GAEA+1F,EAAAK,KAAA9F,cAAA+B,EAAA/B,cACAuF,EAAAtvG,KAAAwvG,SAIA,CAIA,IAAA,IAAArvG,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGAutB,EAFA9tB,KAAAC,IAAAmS,EAAAumE,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEAl+E,EAAAqzB,EAAArzB,GAAA,EAAA,CACA,MAAAmH,EAAAwQ,EAAAu+D,KAAAl2E,GACA2H,EAAAgQ,EAAAu+D,KAAAl2E,EAAA,GACAwG,EAAAmR,EAAAu+D,KAAAl2E,EAAA,GACAqvG,EAAAG,GAAAnwG,KAAAo0F,EAAAyb,EAAAvB,GAAAt5F,EAAAi7F,EAAA9F,EAAA/tB,EAAA0Z,EAAAhuF,EAAAQ,EAAAnB,GAEA6oG,IACAA,EAAAI,UAAAlqG,KAAA4N,MAAAnT,EAAA,GAEAmvG,EAAAtvG,KAAAwvG,UAIA,QAAA5oE,IAAApyB,EAEA,GAAA9H,MAAAhM,QAAAkzF,GACA,IAAA,IAAAzzF,EAAA,EAAAqzB,EAAAo2E,EAAA/pG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAuvG,EAAA9b,EAAAkY,EAAA/B,eAIA,IAAA,IAAAtwF,EAHA/T,KAAAiS,IAAAm0F,EAAA7lG,MAAA6jG,EAAA7jG,OAGA4kG,EAFAnlG,KAAAC,IAAAmmG,EAAA7lG,MAAA6lG,EAAAztB,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEA5kE,EAAAoxF,EAAApxF,GAAA,EAAA,CAIA+1F,EAAAG,GAAAnwG,KAAAkwG,EAAAL,EAAAvB,GAAAt5F,EAAAi7F,EAAA9F,EAAA/tB,EAAA0Z,EAHA77E,EACAA,EAAA,EACAA,EAAA,GAGA+1F,IACAA,EAAAI,UAAAlqG,KAAA4N,MAAAmG,EAAA,GAEA+1F,EAAAK,KAAA9F,cAAA+B,EAAA/B,cACAuF,EAAAtvG,KAAAwvG,SAIA,CAIA,IAAA,IAAArvG,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGAutB,EAFA9tB,KAAAC,IAAA6O,EAAA6pE,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEAl+E,EAAAqzB,EAAArzB,GAAA,EAAA,CAIAqvG,EAAAG,GAAAnwG,KAAAo0F,EAAAyb,EAAAvB,GAAAt5F,EAAAi7F,EAAA9F,EAAA/tB,EAAA0Z,EAHAn1F,EACAA,EAAA,EACAA,EAAA,GAGAqvG,IACAA,EAAAI,UAAAlqG,KAAA4N,MAAAnT,EAAA,GAEAmvG,EAAAtvG,KAAAwvG,WAKA/pB,EAAAqqB,YACAriG,QAAApK,MAAA,8FAgCA,SAAAssG,GAAAl+C,EAAAmiC,EAAAyb,EAAAtmB,EAAAv0E,EAAAi7F,EAAA9F,EAAA/tB,EAAA0Z,EAAAhuF,EAAAQ,EAAAnB,GACAqnG,GAAA3G,oBAAA7yF,EAAAlN,GAEA2mG,GAAA5G,oBAAA7yF,EAAA1M,GAEAomG,GAAA7G,oBAAA7yF,EAAA7N,GAEA,MAAAopG,EAAAt+C,EAAAu9C,sBAEA,GAAAS,GAAAM,EAAA,CACAzB,GAAA7pF,IAAA,EAAA,EAAA,GAEA8pF,GAAA9pF,IAAA,EAAA,EAAA,GAEA+pF,GAAA/pF,IAAA,EAAA,EAAA,GAEA,IAAA,IAAAtkB,EAAA,EAAAqzB,EAAAi8E,EAAA5vG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA6vG,EAAAD,EAAA5vG,GACAyqG,EAAA6E,EAAAtvG,GACA,IAAA6vG,IAEA7B,GAAA9G,oBAAAuD,EAAAtjG,GAEA8mG,GAAA/G,oBAAAuD,EAAA9iG,GAEAumG,GAAAhH,oBAAAuD,EAAAjkG,GAEAgjG,GACA2E,GAAA9Y,gBAAA2Y,GAAA6B,GAEAzB,GAAA/Y,gBAAA4Y,GAAA4B,GAEAxB,GAAAhZ,gBAAA6Y,GAAA2B,KAEA1B,GAAA9Y,gBAAA2Y,GAAAhqB,IAAA6pB,IAAAgC,GAEAzB,GAAA/Y,gBAAA4Y,GAAAjqB,IAAA8pB,IAAA+B,GAEAxB,GAAAhZ,gBAAA6Y,GAAAlqB,IAAA+pB,IAAA8B,KAIAhC,GAAAlxF,IAAAwxF,IAEAL,GAAAnxF,IAAAyxF,IAEAL,GAAApxF,IAAA0xF,IAGA/8C,EAAA+hC,gBACA/hC,EAAAw+C,cAAA3oG,EAAA0mG,IACAv8C,EAAAw+C,cAAAnoG,EAAAmmG,IACAx8C,EAAAw+C,cAAAtpG,EAAAunG,KAGA,MAAAsB,EA/EA,SAAA/9C,EAAAmiC,EAAAyb,EAAAtmB,EAAAqjB,EAAAC,EAAAC,EAAA1+C,GACA,IAAAsiD,EAQA,GALAA,EA9iQA,IA6iQAtc,EAAApyD,KACAunD,EAAAonB,kBAAA7D,EAAAD,EAAAD,GAAA,EAAAx+C,GAEAm7B,EAAAonB,kBAAA/D,EAAAC,EAAAC,EA/iQA,IA+iQA1Y,EAAApyD,KAAAosB,GAGA,OAAAsiD,EAAA,OAAA,KAEArB,GAAAx9F,KAAAu8C,GAEAihD,GAAA1rB,aAAA1xB,EAAA8xB,aAEA,MAAA1nE,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAA8mB,IACA,OAAAhzF,EAAAwzF,EAAA7gB,MAAA3yE,EAAAwzF,EAAA5gB,IAAA,KACA,CACA5yE,SAAAA,EACA+xC,MAAAihD,GAAA3wB,QACAzsB,OAAAA,GA2DA2+C,CAAA3+C,EAAAmiC,EAAAyb,EAAAtmB,EAAAilB,GAAAC,GAAAC,GAAAU,IAEA,GAAAY,EAAA,CACA5zB,IACA6yB,GAAApH,oBAAAzrB,EAAAt0E,GAEAonG,GAAArH,oBAAAzrB,EAAA9zE,GAEA6mG,GAAAtH,oBAAAzrB,EAAAj1E,GAEA6oG,EAAA5zB,GAAA+Y,GAAAkB,MAAA+Y,GAAAZ,GAAAC,GAAAC,GAAAO,GAAAC,GAAAC,GAAA,IAAAp5B,KAGA+f,IACAmZ,GAAApH,oBAAA/R,EAAAhuF,GAEAonG,GAAArH,oBAAA/R,EAAAxtF,GAEA6mG,GAAAtH,oBAAA/R,EAAA3uF,GAEA6oG,EAAAla,IAAAX,GAAAkB,MAAA+Y,GAAAZ,GAAAC,GAAAC,GAAAO,GAAAC,GAAAC,GAAA,IAAAp5B,KAGA,MAAAs6B,EAAA,CACAvoG,EAAAA,EACAQ,EAAAA,EACAnB,EAAAA,EACAy9E,OAAA,IAAAhC,GACA2nB,cAAA,GAEApV,GAAAgB,UAAAqY,GAAAC,GAAAC,GAAA2B,EAAAzrB,QACAorB,EAAAK,KAAAA,EAGA,OAAAL,EAnHAV,GAAAvmG,UAAA4qF,QAAA,EAsHA,MAAAkd,WAAA5G,GACAp3B,YAAA9vE,EAAA,EAAAu3B,EAAA,EAAAqxC,EAAA,EAAAmlC,EAAA,EAAAC,EAAA,EAAAC,EAAA,GACA/1B,QACAj7E,KAAAD,KAAA,cACAC,KAAA8zF,WAAA,CACA/wF,MAAAA,EACAu3B,OAAAA,EACAqxC,MAAAA,EACAmlC,cAAAA,EACAC,eAAAA,EACAC,cAAAA,GAEA,MAAAnjG,EAAA7N,KAEA8wG,EAAA5qG,KAAA4N,MAAAg9F,GACAC,EAAA7qG,KAAA4N,MAAAi9F,GACAC,EAAA9qG,KAAA4N,MAAAk9F,GAEA,MAAA1F,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAA0F,EAAA,EACAC,EAAA,EAoBA,SAAAC,EAAA52F,EAAAnY,EAAA4zE,EAAAo7B,EAAAC,EAAAvuG,EAAAu3B,EAAAqxC,EAAA4lC,EAAAC,EAAAjH,GACA,MAAAkH,EAAA1uG,EAAAwuG,EACAG,EAAAp3E,EAAAk3E,EACAG,EAAA5uG,EAAA,EACA6uG,EAAAt3E,EAAA,EACAu3E,EAAAlmC,EAAA,EACAmmC,EAAAP,EAAA,EACAQ,EAAAP,EAAA,EACA,IAAAQ,EAAA,EACAC,EAAA,EACA,MAAAnsB,EAAA,IAAAlD,GAEA,IAAA,IAAAW,EAAA,EAAAA,EAAAwuB,EAAAxuB,IAAA,CACA,MAAAj+E,EAAAi+E,EAAAmuB,EAAAE,EAEA,IAAA,IAAAtuB,EAAA,EAAAA,EAAAwuB,EAAAxuB,IAAA,CACA,MAAA97E,EAAA87E,EAAAmuB,EAAAE,EAEA7rB,EAAAtrE,GAAAhT,EAAA6pG,EACAvrB,EAAAzjF,GAAAiD,EAAAgsG,EACAxrB,EAAA7P,GAAA47B,EAEAZ,EAAAzwG,KAAAslF,EAAAt+E,EAAAs+E,EAAAxgF,EAAAwgF,EAAA7mD,GAEA6mD,EAAAtrE,GAAA,EACAsrE,EAAAzjF,GAAA,EACAyjF,EAAA7P,GAAAtK,EAAA,EAAA,GAAA,EAEA4/B,EAAA/qG,KAAAslF,EAAAt+E,EAAAs+E,EAAAxgF,EAAAwgF,EAAA7mD,GAEAusE,EAAAhrG,KAAA8iF,EAAAiuB,GACA/F,EAAAhrG,KAAA,EAAA+iF,EAAAiuB,GAEAQ,GAAA,GAQA,IAAA,IAAAzuB,EAAA,EAAAA,EAAAiuB,EAAAjuB,IACA,IAAA,IAAAD,EAAA,EAAAA,EAAAiuB,EAAAjuB,IAAA,CACA,MAAAx7E,EAAAopG,EAAA5tB,EAAAwuB,EAAAvuB,EACAj7E,EAAA4oG,EAAA5tB,EAAAwuB,GAAAvuB,EAAA,GACAp8E,EAAA+pG,GAAA5tB,EAAA,GAAAwuB,GAAAvuB,EAAA,GACA/jF,EAAA0xG,GAAA5tB,EAAA,GAAAwuB,EAAAvuB,EAEA+nB,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAEAyyG,GAAA,EAKApkG,EAAAogG,SAAAkD,EAAAc,EAAA1H,GAEA4G,GAAAc,EAEAf,GAAAc,EA9EAZ,EAAA,IAAA,IAAA,KAAA,GAAA,EAAAzlC,EAAArxC,EAAAv3B,EAAAiuG,EAAAD,EAAA,GAEAK,EAAA,IAAA,IAAA,IAAA,GAAA,EAAAzlC,EAAArxC,GAAAv3B,EAAAiuG,EAAAD,EAAA,GAEAK,EAAA,IAAA,IAAA,IAAA,EAAA,EAAAruG,EAAA4oE,EAAArxC,EAAAw2E,EAAAE,EAAA,GAEAI,EAAA,IAAA,IAAA,IAAA,GAAA,EAAAruG,EAAA4oE,GAAArxC,EAAAw2E,EAAAE,EAAA,GAEAI,EAAA,IAAA,IAAA,IAAA,GAAA,EAAAruG,EAAAu3B,EAAAqxC,EAAAmlC,EAAAC,EAAA,GAEAK,EAAA,IAAA,IAAA,KAAA,GAAA,EAAAruG,EAAAu3B,GAAAqxC,EAAAmlC,EAAAC,EAAA,GAGA/wG,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAkEA34B,gBAAA7wE,GACA,OAAA,IAAA6uG,GAAA7uG,EAAAe,MAAAf,EAAAs4B,OAAAt4B,EAAA2pE,MAAA3pE,EAAA8uG,cAAA9uG,EAAA+uG,eAAA/uG,EAAAgvG,gBAQA,SAAAkB,GAAAzuE,GACA,MAAAk8C,EAAA,GAEA,IAAA,MAAAnlE,KAAAipB,EAAA,CACAk8C,EAAAnlE,GAAA,GAEA,IAAA,MAAApY,KAAAqhC,EAAAjpB,GAAA,CACA,MAAAxM,EAAAy1B,EAAAjpB,GAAApY,GAEA4L,IAAAA,EAAAylF,SAAAzlF,EAAA6rE,WAAA7rE,EAAAkhF,WAAAlhF,EAAA+oE,WAAA/oE,EAAAo3E,WAAAp3E,EAAAgwE,WAAAhwE,EAAA0uE,WAAA1uE,EAAA20E,cACAhD,EAAAnlE,GAAApY,GAAA4L,EAAA0wE,QACAxxE,MAAAhM,QAAA8M,GACA2xE,EAAAnlE,GAAApY,GAAA4L,EAAA0C,QAEAivE,EAAAnlE,GAAApY,GAAA4L,GAKA,OAAA2xE,EAEA,SAAAwyB,GAAAC,GACA,MAAAC,EAAA,GAEA,IAAA,IAAA73F,EAAA,EAAAA,EAAA43F,EAAA/xG,OAAAma,IAAA,CACA,MAAA0+D,EAAAg5B,GAAAE,EAAA53F,IAEA,IAAA,MAAApY,KAAA82E,EACAm5B,EAAAjwG,GAAA82E,EAAA92E,GAIA,OAAAiwG,EAGA,MAAAC,GAAA,CACA5zB,MAAAwzB,GACAK,MAAAJ,IAsBA,MAAAK,WAAAxb,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,iBACAC,KAAAyyG,QAAA,GACAzyG,KAAAoyG,SAAA,GACApyG,KAAA0yG,aAzBA,gGA0BA1yG,KAAA2yG,eAxBA,iEAyBA3yG,KAAAy8F,UAAA,EACAz8F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAAi3F,KAAA,EAEAj3F,KAAA4yG,QAAA,EAEA5yG,KAAA6yG,UAAA,EAEA7yG,KAAA8yG,WAAA,CACAC,aAAA,EAEAC,WAAA,EAEAC,aAAA,EAEAC,kBAAA,GAKAlzG,KAAAmzG,uBAAA,CACAxyF,MAAA,CAAA,EAAA,EAAA,GACAy7D,GAAA,CAAA,EAAA,GACA0Z,IAAA,CAAA,EAAA,IAEA91F,KAAAozG,yBAAAhsE,EACApnC,KAAAqzG,oBAAA,EACArzG,KAAAszG,YAAA,UAEAlsE,IAAA0sD,SACA1sD,IAAA0sD,EAAAp/C,YACAzmC,QAAApK,MAAA,2FAGA7D,KAAAknG,UAAApT,IAIAjhB,KAAAjxC,GAYA,OAXAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2yG,eAAA/wE,EAAA+wE,eACA3yG,KAAA0yG,aAAA9wE,EAAA8wE,aACA1yG,KAAAoyG,SAAAF,GAAAtwE,EAAAwwE,UACApyG,KAAAyyG,QAAA/pG,OAAA26B,OAAA,GAAAzB,EAAA6wE,SACAzyG,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA4yG,OAAAhxE,EAAAgxE,OACA5yG,KAAA6yG,SAAAjxE,EAAAixE,SACA7yG,KAAA8yG,WAAApqG,OAAA26B,OAAA,GAAAzB,EAAAkxE,YACA9yG,KAAAszG,YAAA1xE,EAAA0xE,YACAtzG,KAGA6yE,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GACA55E,EAAAsxG,YAAAtzG,KAAAszG,YACAtxG,EAAAowG,SAAA,GAEA,IAAA,MAAAlyG,KAAAF,KAAAoyG,SAAA,CACA,MACAtyG,EADAE,KAAAoyG,SAAAlyG,GACAJ,MAEAA,GAAAA,EAAA48E,UACA16E,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,IACAD,MAAAA,EAAAszF,OAAAxX,GAAAV,MAEAp7E,GAAAA,EAAA2zF,QACAzxF,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,IACAD,MAAAA,EAAA05F,UAEA15F,GAAAA,EAAAi3E,UACA/0E,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,KACAD,MAAAA,EAAA4P,WAEA5P,GAAAA,EAAAslF,UACApjF,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,KACAD,MAAAA,EAAA4P,WAEA5P,GAAAA,EAAAk+E,UACAh8E,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,KACAD,MAAAA,EAAA4P,WAEA5P,GAAAA,EAAA+5E,UACA73E,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,KACAD,MAAAA,EAAA4P,WAEA5P,GAAAA,EAAAovF,UACAltF,EAAAowG,SAAAlyG,GAAA,CACAH,KAAA,KACAD,MAAAA,EAAA4P,WAGA1N,EAAAowG,SAAAlyG,GAAA,CACAJ,MAAAA,GAKA4I,OAAAg7B,KAAA1jC,KAAAyyG,SAAApyG,OAAA,IAAA2B,EAAAywG,QAAAzyG,KAAAyyG,SACAzwG,EAAA0wG,aAAA1yG,KAAA0yG,aACA1wG,EAAA2wG,eAAA3yG,KAAA2yG,eACA,MAAAG,EAAA,GAEA,IAAA,MAAA/vF,KAAA/iB,KAAA8yG,YACA,IAAA9yG,KAAA8yG,WAAA/vF,KAAA+vF,EAAA/vF,IAAA,GAIA,OADAra,OAAAg7B,KAAAovE,GAAAzyG,OAAA,IAAA2B,EAAA8wG,WAAAA,GACA9wG,GAKAwwG,GAAAzpG,UAAAwqG,kBAAA,EAEA,MAAAC,WAAA3iB,GACAhe,cACAoI,QACAj7E,KAAAD,KAAA,SACAC,KAAA4jF,mBAAA,IAAA+H,GACA3rF,KAAA6jF,iBAAA,IAAA8H,GACA3rF,KAAA8jF,wBAAA,IAAA6H,GAGA9Y,KAAAjxC,EAAA2yD,GAKA,OAJAtZ,MAAAppE,KAAA+vB,EAAA2yD,GACAv0F,KAAA4jF,mBAAA/xE,KAAA+vB,EAAAgiD,oBACA5jF,KAAA6jF,iBAAAhyE,KAAA+vB,EAAAiiD,kBACA7jF,KAAA8jF,wBAAAjyE,KAAA+vB,EAAAkiD,yBACA9jF,KAGA6yE,kBAAA1jE,GACAnP,KAAAgmF,mBAAA,GAAA,GACA,MAAAn5D,EAAA7sB,KAAA+jF,YAAA1N,SACA,OAAAlnE,EAAA8V,KAAA4H,EAAA,IAAAA,EAAA,IAAAA,EAAA,KAAAoG,YAGA4/C,kBAAA7hE,GACAiqE,MAAA0X,kBAAA3hF,GACAhR,KAAA4jF,mBAAA/xE,KAAA7R,KAAA+jF,aAAA9rB,SAGA4a,kBAAA+f,EAAAC,GACA5X,MAAA+K,kBAAA4M,EAAAC,GACA7yF,KAAA4jF,mBAAA/xE,KAAA7R,KAAA+jF,aAAA9rB,SAGA4a,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKAwzG,GAAAzqG,UAAAmpF,UAAA,EAEA,MAAAuhB,WAAAD,GACA3gC,YAAA6gC,EAAA,GAAAC,EAAA,EAAA3kB,EAAA,GAAAC,EAAA,KACAhU,QACAj7E,KAAAD,KAAA,oBACAC,KAAA0zG,IAAAA,EACA1zG,KAAA8+D,KAAA,EACA9+D,KAAAgvF,KAAAA,EACAhvF,KAAAivF,IAAAA,EACAjvF,KAAA4zG,MAAA,GACA5zG,KAAA2zG,OAAAA,EACA3zG,KAAA6zG,KAAA,KACA7zG,KAAA8zG,UAAA,GAEA9zG,KAAA+zG,WAAA,EAEA/zG,KAAAg0G,yBAGAnhC,KAAAjxC,EAAA2yD,GAWA,OAVAtZ,MAAAppE,KAAA+vB,EAAA2yD,GACAv0F,KAAA0zG,IAAA9xE,EAAA8xE,IACA1zG,KAAA8+D,KAAAl9B,EAAAk9B,KACA9+D,KAAAgvF,KAAAptD,EAAAotD,KACAhvF,KAAAivF,IAAArtD,EAAAqtD,IACAjvF,KAAA4zG,MAAAhyE,EAAAgyE,MACA5zG,KAAA2zG,OAAA/xE,EAAA+xE,OACA3zG,KAAA6zG,KAAA,OAAAjyE,EAAAiyE,KAAA,KAAAnrG,OAAA26B,OAAA,GAAAzB,EAAAiyE,MACA7zG,KAAA8zG,UAAAlyE,EAAAkyE,UACA9zG,KAAA+zG,WAAAnyE,EAAAmyE,WACA/zG,KAYA6yE,eAAAohC,GAEA,MAAAC,EAAA,GAAAl0G,KAAAm0G,gBAAAF,EACAj0G,KAAA0zG,IAAA,EAAAvgC,GAAAjtE,KAAAkuG,KAAAF,GACAl0G,KAAAg0G,yBAOAnhC,iBACA,MAAAqhC,EAAAhuG,KAAAo7B,IAAA,GAAA4xC,GAAAlzE,KAAA0zG,KACA,MAAA,GAAA1zG,KAAAm0G,gBAAAD,EAGArhC,kBACA,OAAA,EAAAM,GAAAjtE,KAAAkuG,KAAAluG,KAAAo7B,IAAA,GAAA4xC,GAAAlzE,KAAA0zG,KAAA1zG,KAAA8+D,MAGA+T,eAEA,OAAA7yE,KAAA8zG,UAAA5tG,KAAAC,IAAAnG,KAAA2zG,OAAA,GAGA9gC,gBAEA,OAAA7yE,KAAA8zG,UAAA5tG,KAAAiS,IAAAnY,KAAA2zG,OAAA,GAuCA9gC,cAAAwhC,EAAAC,EAAA9sG,EAAAlC,EAAAvC,EAAAu3B,GACAt6B,KAAA2zG,OAAAU,EAAAC,EAEA,OAAAt0G,KAAA6zG,OACA7zG,KAAA6zG,KAAA,CACAr+D,SAAA,EACA6+D,UAAA,EACAC,WAAA,EACAC,QAAA,EACAC,QAAA,EACAzxG,MAAA,EACAu3B,OAAA,IAIAt6B,KAAA6zG,KAAAr+D,SAAA,EACAx1C,KAAA6zG,KAAAQ,UAAAA,EACAr0G,KAAA6zG,KAAAS,WAAAA,EACAt0G,KAAA6zG,KAAAU,QAAA/sG,EACAxH,KAAA6zG,KAAAW,QAAAlvG,EACAtF,KAAA6zG,KAAA9wG,MAAAA,EACA/C,KAAA6zG,KAAAv5E,OAAAA,EACAt6B,KAAAg0G,yBAGAnhC,kBACA,OAAA7yE,KAAA6zG,OACA7zG,KAAA6zG,KAAAr+D,SAAA,GAGAx1C,KAAAg0G,yBAGAnhC,yBACA,MAAAmc,EAAAhvF,KAAAgvF,KACA,IAAAnyD,EAAAmyD,EAAA9oF,KAAAo7B,IAAA,GAAA4xC,GAAAlzE,KAAA0zG,KAAA1zG,KAAA8+D,KACAxkC,EAAA,EAAAuC,EACA95B,EAAA/C,KAAA2zG,OAAAr5E,EACAhgB,GAAA,GAAAvX,EACA,MAAA8wG,EAAA7zG,KAAA6zG,KAEA,GAAA,OAAA7zG,KAAA6zG,MAAA7zG,KAAA6zG,KAAAr+D,QAAA,CACA,MAAA6+D,EAAAR,EAAAQ,UACAC,EAAAT,EAAAS,WACAh6F,GAAAu5F,EAAAU,QAAAxxG,EAAAsxG,EACAx3E,GAAAg3E,EAAAW,QAAAl6E,EAAAg6E,EACAvxG,GAAA8wG,EAAA9wG,MAAAsxG,EACA/5E,GAAAu5E,EAAAv5E,OAAAg6E,EAGA,MAAAG,EAAAz0G,KAAA+zG,WACA,IAAAU,IAAAn6F,GAAA00E,EAAAylB,EAAAz0G,KAAA00G,gBACA10G,KAAA6jF,iBAAA8wB,gBAAAr6F,EAAAA,EAAAvX,EAAA85B,EAAAA,EAAAvC,EAAA00D,EAAAhvF,KAAAivF,KACAjvF,KAAA8jF,wBAAAjyE,KAAA7R,KAAA6jF,kBAAA5rB,SAGA4a,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GAUA,OATA55E,EAAAiwD,OAAAyhD,IAAA1zG,KAAA0zG,IACA1xG,EAAAiwD,OAAA6M,KAAA9+D,KAAA8+D,KACA98D,EAAAiwD,OAAA+8B,KAAAhvF,KAAAgvF,KACAhtF,EAAAiwD,OAAAg9B,IAAAjvF,KAAAivF,IACAjtF,EAAAiwD,OAAA2hD,MAAA5zG,KAAA4zG,MACA5xG,EAAAiwD,OAAA0hD,OAAA3zG,KAAA2zG,OACA,OAAA3zG,KAAA6zG,OAAA7xG,EAAAiwD,OAAA4hD,KAAAnrG,OAAA26B,OAAA,GAAArjC,KAAA6zG,OACA7xG,EAAAiwD,OAAA6hD,UAAA9zG,KAAA8zG,UACA9xG,EAAAiwD,OAAA8hD,WAAA/zG,KAAA+zG,WACA/xG,GAKAyxG,GAAA1qG,UAAA6rG,qBAAA,EAEA,MAAAlB,GAAA,GAGA,MAAAmB,WAAAhkB,GACAhe,YAAAmc,EAAAC,EAAA6lB,GAIA,GAHA75B,QACAj7E,KAAAD,KAAA,cAEA,IAAA+0G,EAAAC,wBAEA,YADA9mG,QAAApK,MAAA,0GAIA7D,KAAA80G,aAAAA,EACA,MAAAE,EAAA,IAAAvB,GAAAC,GAbA,EAaA1kB,EAAAC,GACA+lB,EAAAjlB,OAAA/vF,KAAA+vF,OACAilB,EAAA7nB,GAAAloE,IAAA,GAAA,EAAA,GACA+vF,EAAA5iB,OAAA,IAAAxP,GAAA,EAAA,EAAA,IACA5iF,KAAAsd,IAAA03F,GACA,MAAAC,EAAA,IAAAxB,GAAAC,GAlBA,EAkBA1kB,EAAAC,GACAgmB,EAAAllB,OAAA/vF,KAAA+vF,OACAklB,EAAA9nB,GAAAloE,IAAA,GAAA,EAAA,GACAgwF,EAAA7iB,OAAA,IAAAxP,IAAA,EAAA,EAAA,IACA5iF,KAAAsd,IAAA23F,GACA,MAAAC,EAAA,IAAAzB,GAAAC,GAvBA,EAuBA1kB,EAAAC,GACAimB,EAAAnlB,OAAA/vF,KAAA+vF,OACAmlB,EAAA/nB,GAAAloE,IAAA,EAAA,EAAA,GACAiwF,EAAA9iB,OAAA,IAAAxP,GAAA,EAAA,EAAA,IACA5iF,KAAAsd,IAAA43F,GACA,MAAAC,EAAA,IAAA1B,GAAAC,GA5BA,EA4BA1kB,EAAAC,GACAkmB,EAAAplB,OAAA/vF,KAAA+vF,OACAolB,EAAAhoB,GAAAloE,IAAA,EAAA,GAAA,GACAkwF,EAAA/iB,OAAA,IAAAxP,GAAA,GAAA,EAAA,IACA5iF,KAAAsd,IAAA63F,GACA,MAAAC,EAAA,IAAA3B,GAAAC,GAjCA,EAiCA1kB,EAAAC,GACAmmB,EAAArlB,OAAA/vF,KAAA+vF,OACAqlB,EAAAjoB,GAAAloE,IAAA,GAAA,EAAA,GACAmwF,EAAAhjB,OAAA,IAAAxP,GAAA,EAAA,EAAA,IACA5iF,KAAAsd,IAAA83F,GACA,MAAAC,EAAA,IAAA5B,GAAAC,GAtCA,EAsCA1kB,EAAAC,GACAomB,EAAAtlB,OAAA/vF,KAAA+vF,OACAslB,EAAAloB,GAAAloE,IAAA,GAAA,EAAA,GACAowF,EAAAjjB,OAAA,IAAAxP,GAAA,EAAA,GAAA,IACA5iF,KAAAsd,IAAA+3F,GAGAxiC,OAAAzhD,EAAAkkF,GACA,OAAAt1G,KAAA+R,QAAA/R,KAAA2yF,oBACA,MAAAmiB,EAAA90G,KAAA80G,cACAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAr1G,KAAAyqB,SACA8qF,EAAAnkF,EAAAokF,GAAAhgE,QACAigE,EAAArkF,EAAAskF,kBACAtkF,EAAAokF,GAAAhgE,SAAA,EACA,MAAA8lC,EAAAw5B,EAAAz2B,QAAA/C,gBACAw5B,EAAAz2B,QAAA/C,iBAAA,EACAlqD,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAN,GACA5jF,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAL,GACA7jF,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAJ,GACA9jF,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAH,GACA/jF,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAF,GACAN,EAAAz2B,QAAA/C,gBAAAA,EACAlqD,EAAAukF,gBAAAb,EAAA,GACA1jF,EAAAxgB,OAAA0kG,EAAAD,GACAjkF,EAAAukF,gBAAAF,GACArkF,EAAAokF,GAAAhgE,QAAA+/D,GAKA,MAAAK,WAAAr7B,GACA1H,YAAAxjB,EAAAorB,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,EAAAC,GAIAC,MAHA5rB,OAAAjoB,IAAAioB,EAAAA,EAAA,GACAorB,OAAArzC,IAAAqzC,EAAAA,EAAAnL,EAEAqL,EAAAC,EAAAC,EAAAC,EADA9oD,OAAAoV,IAAApV,EAAAA,EAAA2+C,EACA5wE,EAAAg7E,EAAAC,GACAh7E,KAAAw7E,OAAA,EAGAnsB,aACA,OAAArvD,KAAA2vD,MAGAN,WAAAvvD,GACAE,KAAA2vD,MAAA7vD,GAKA81G,GAAA7sG,UAAA8sG,eAAA,EAEA,MAAAC,WAAA73B,GACApL,YAAAzvB,EAAA/O,EAAA0hE,GACA51F,OAAA61F,UAAA3hE,KACApmC,QAAAC,KAAA,oGACAmmC,EAAA0hE,GAGA96B,MAAA73B,EAAAA,EAAA/O,GACAA,EAAAA,GAAA,GAOAr0C,KAAAq+E,QAAA,IAAAu3B,QAAAxuE,EAAAiN,EAAAomC,QAAApmC,EAAAsmC,MAAAtmC,EAAAumC,MAAAvmC,EAAAwmC,UAAAxmC,EAAAymC,UAAAzmC,EAAAriB,OAAAqiB,EAAAt0C,KAAAs0C,EAAA0mC,WAAA1mC,EAAA2mC,UACAh7E,KAAAq+E,QAAA3C,uBAAA,EACA17E,KAAAq+E,QAAA/C,qBAAAl0C,IAAAiN,EAAAinC,iBAAAjnC,EAAAinC,gBACAt7E,KAAAq+E,QAAAvD,eAAA1zC,IAAAiN,EAAAymC,UAAAzmC,EAAAymC,UAAA5K,EACAlwE,KAAAq+E,QAAA43B,kBAAA,EAGApjC,2BAAAzhD,EAAAitD,GACAr+E,KAAAq+E,QAAAt+E,KAAAs+E,EAAAt+E,KACAC,KAAAq+E,QAAArsD,OAAA4+C,EAEA5wE,KAAAq+E,QAAArD,SAAAqD,EAAArD,SACAh7E,KAAAq+E,QAAA/C,gBAAA+C,EAAA/C,gBACAt7E,KAAAq+E,QAAAvD,UAAAuD,EAAAvD,UACA96E,KAAAq+E,QAAAxD,UAAAwD,EAAAxD,UACA,MAAAq7B,EAAA,CACA9D,SAAA,CACA+D,UAAA,CACAr2G,MAAA,OAGA4yG,aAEA,qYAmBAC,eAEA,gVAmBA1sB,EAAA,IAAA4qB,GAAA,EAAA,EAAA,GACAzc,EAAA,IAAAoe,GAAA,CACAtyG,KAAA,sBACAkyG,SAAAF,GAAAgE,EAAA9D,UACAM,aAAAwD,EAAAxD,aACAC,eAAAuD,EAAAvD,eACA3wE,KAj2RA,EAk2RAk1D,SA91RA,IAg2RA9C,EAAAge,SAAA+D,UAAAr2G,MAAAu+E,EACA,MAAA+3B,EAAA,IAAA9G,GAAArpB,EAAAmO,GACAiiB,EAAAh4B,EAAAvD,UAEAuD,EAAAvD,YAAA1K,IAAAiO,EAAAvD,UAAA5K,GAMA,OALA,IAAA2kC,GAAA,EAAA,GAAA70G,MACAijD,OAAA7xB,EAAAglF,GACA/3B,EAAAvD,UAAAu7B,EACAD,EAAAnwB,SAAAxH,UACA23B,EAAAhiB,SAAA3V,UACAz+E,KAGA6yE,MAAAzhD,EAAAzQ,EAAAgrD,EAAA2qC,GACA,MAAAb,EAAArkF,EAAAskF,kBAEA,IAAA,IAAA/0G,EAAA,EAAAA,EAAA,EAAAA,IACAywB,EAAAukF,gBAAA31G,KAAAW,GACAywB,EAAAtF,MAAAnL,EAAAgrD,EAAA2qC,GAGAllF,EAAAukF,gBAAAF,IAKAK,GAAA/sG,UAAAgsG,yBAAA,EAEA,MAAAwB,GAAA,IAAA3zB,GAEA4zB,GAAA,IAAA5zB,GAEA6zB,GAAA,IAAAz/B,GAEA,MAAA0/B,GACA7jC,YAAA+R,EAAA,IAAAhC,GAAA,EAAA,EAAA,GAAA6D,EAAA,GAEAzmF,KAAA4kF,OAAAA,EACA5kF,KAAAymF,SAAAA,EAGA5T,IAAA+R,EAAA6B,GAGA,OAFAzmF,KAAA4kF,OAAA/yE,KAAA+yE,GACA5kF,KAAAymF,SAAAA,EACAzmF,KAGA6yE,cAAArrE,EAAAlC,EAAA25B,EAAAg3C,GAGA,OAFAj2E,KAAA4kF,OAAA3/D,IAAAzd,EAAAlC,EAAA25B,GACAj/B,KAAAymF,SAAAxQ,EACAj2E,KAGA6yE,8BAAA+R,EAAAx2B,GAGA,OAFApuD,KAAA4kF,OAAA/yE,KAAA+yE,GACA5kF,KAAAymF,UAAAr4B,EAAAmzB,IAAAvhF,KAAA4kF,QACA5kF,KAGA6yE,sBAAA/qE,EAAAQ,EAAAnB,GACA,MAAAy9E,EAAA2xB,GAAApgC,WAAAhvE,EAAAmB,GAAAkjF,MAAAgrB,GAAArgC,WAAAruE,EAAAQ,IAAA2qB,YAIA,OADAjzB,KAAA22G,8BAAA/xB,EAAA98E,GACA9H,KAGA6yE,KAAA2T,GAGA,OAFAxmF,KAAA4kF,OAAA/yE,KAAA20E,EAAA5B,QACA5kF,KAAAymF,SAAAD,EAAAC,SACAzmF,KAGA6yE,YAEA,MAAA+jC,EAAA,EAAA52G,KAAA4kF,OAAAvkF,SAGA,OAFAL,KAAA4kF,OAAAxO,eAAAwgC,GACA52G,KAAAymF,UAAAmwB,EACA52G,KAGA6yE,SAGA,OAFA7yE,KAAAymF,WAAA,EACAzmF,KAAA4kF,OAAAomB,SACAhrG,KAGA6yE,gBAAAzkB,GACA,OAAApuD,KAAA4kF,OAAArD,IAAAnzB,GAAApuD,KAAAymF,SAGA5T,iBAAAyT,GACA,OAAAtmF,KAAA0oF,gBAAApC,EAAAzsE,QAAAysE,EAAAxrE,OAGA+3D,aAAAzkB,EAAAj/C,GACA,OAAAA,EAAA0C,KAAA7R,KAAA4kF,QAAAxO,gBAAAp2E,KAAA0oF,gBAAAt6B,IAAA9wC,IAAA8wC,GAGAykB,cAAAgkC,EAAA1nG,GACA,MAAAqyB,EAAAq1E,EAAA/+C,MAAAy+C,IACAjyB,EAAAtkF,KAAA4kF,OAAArD,IAAA//C,GAEA,GAAA,IAAA8iD,EAEA,OAAA,IAAAtkF,KAAA0oF,gBAAAmuB,EAAApwG,OACA0I,EAAA0C,KAAAglG,EAAApwG,OAIA,KAGA,MAAAQ,IAAA4vG,EAAApwG,MAAA86E,IAAAvhF,KAAA4kF,QAAA5kF,KAAAymF,UAAAnC,EAEA,OAAAr9E,EAAA,GAAAA,EAAA,EACA,KAGAkI,EAAA0C,KAAA2vB,GAAA40C,eAAAnvE,GAAAqW,IAAAu5F,EAAApwG,OAGAosE,eAAAgkC,GAEA,MAAAC,EAAA92G,KAAA0oF,gBAAAmuB,EAAApwG,OACAswG,EAAA/2G,KAAA0oF,gBAAAmuB,EAAAnwG,KACA,OAAAowG,EAAA,GAAAC,EAAA,GAAAA,EAAA,GAAAD,EAAA,EAGAjkC,cAAAjmC,GACA,OAAAA,EAAAoqE,gBAAAh3G,MAGA6yE,iBAAAyT,GACA,OAAAA,EAAA0wB,gBAAAh3G,MAGA6yE,cAAA1jE,GACA,OAAAA,EAAA0C,KAAA7R,KAAA4kF,QAAAxO,gBAAAp2E,KAAAymF,UAGA5T,aAAAl1C,EAAAs5E,GACA,MAAA/lB,EAAA+lB,GAAAR,GAAAjM,gBAAA7sE,GAEAu5E,EAAAl3G,KAAAm3G,cAAAZ,IAAA5yB,aAAAhmD,GACAinD,EAAA5kF,KAAA4kF,OAAAvI,aAAA6U,GAAAj+D,YAEA,OADAjzB,KAAAymF,UAAAywB,EAAA31B,IAAAqD,GACA5kF,KAGA6yE,UAAA57D,GAEA,OADAjX,KAAAymF,UAAAxvE,EAAAsqE,IAAAvhF,KAAA4kF,QACA5kF,KAGA6yE,OAAA2T,GACA,OAAAA,EAAA5B,OAAA8C,OAAA1nF,KAAA4kF,SAAA4B,EAAAC,WAAAzmF,KAAAymF,SAGA5T,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKA02G,GAAA3tG,UAAAquG,SAAA,EAEA,MAAAC,GAAA,IAAAjvB,GAEAkvB,GAAA,IAAA10B,GAEA,MAAA20B,GACA1kC,YAAAkV,EAAA,IAAA2uB,GAAAtwG,EAAA,IAAAswG,GAAA9vG,EAAA,IAAA8vG,GAAArwG,EAAA,IAAAqwG,GAAAc,EAAA,IAAAd,GAAAe,EAAA,IAAAf,IACA12G,KAAA03G,OAAA,CAAA3vB,EAAA3hF,EAAAQ,EAAAP,EAAAmxG,EAAAC,GAGA5kC,IAAAkV,EAAA3hF,EAAAQ,EAAAP,EAAAmxG,EAAAC,GACA,MAAAC,EAAA13G,KAAA03G,OAOA,OANAA,EAAA,GAAA7lG,KAAAk2E,GACA2vB,EAAA,GAAA7lG,KAAAzL,GACAsxG,EAAA,GAAA7lG,KAAAjL,GACA8wG,EAAA,GAAA7lG,KAAAxL,GACAqxG,EAAA,GAAA7lG,KAAA2lG,GACAE,EAAA,GAAA7lG,KAAA4lG,GACAz3G,KAGA6yE,KAAA8kC,GACA,MAAAD,EAAA13G,KAAA03G,OAEA,IAAA,IAAA/2G,EAAA,EAAAA,EAAA,EAAAA,IACA+2G,EAAA/2G,GAAAkR,KAAA8lG,EAAAD,OAAA/2G,IAGA,OAAAX,KAGA6yE,wBAAA/lD,GACA,MAAA4qF,EAAA13G,KAAA03G,OACA//B,EAAA7qD,EAAAupD,SACAuhC,EAAAjgC,EAAA,GACAkgC,EAAAlgC,EAAA,GACAmgC,EAAAngC,EAAA,GACAogC,EAAApgC,EAAA,GACAqgC,EAAArgC,EAAA,GACAsgC,EAAAtgC,EAAA,GACAugC,EAAAvgC,EAAA,GACAwgC,EAAAxgC,EAAA,GACAygC,EAAAzgC,EAAA,GACA0gC,EAAA1gC,EAAA,GACA2gC,EAAA3gC,EAAA,IACA4gC,EAAA5gC,EAAA,IACA6gC,EAAA7gC,EAAA,IACA8gC,EAAA9gC,EAAA,IACA+gC,EAAA/gC,EAAA,IACAghC,EAAAhhC,EAAA,IAOA,OANA+/B,EAAA,GAAAkB,cAAAb,EAAAH,EAAAO,EAAAH,EAAAO,EAAAH,EAAAO,EAAAH,GAAAvlF,YACAykF,EAAA,GAAAkB,cAAAb,EAAAH,EAAAO,EAAAH,EAAAO,EAAAH,EAAAO,EAAAH,GAAAvlF,YACAykF,EAAA,GAAAkB,cAAAb,EAAAF,EAAAM,EAAAF,EAAAM,EAAAF,EAAAM,EAAAF,GAAAxlF,YACAykF,EAAA,GAAAkB,cAAAb,EAAAF,EAAAM,EAAAF,EAAAM,EAAAF,EAAAM,EAAAF,GAAAxlF,YACAykF,EAAA,GAAAkB,cAAAb,EAAAD,EAAAK,EAAAD,EAAAK,EAAAD,EAAAK,EAAAD,GAAAzlF,YACAykF,EAAA,GAAAkB,cAAAb,EAAAD,EAAAK,EAAAD,EAAAK,EAAAD,EAAAK,EAAAD,GAAAzlF,YACAjzB,KAGA6yE,iBAAA5gB,GACA,MAAAg0B,EAAAh0B,EAAAg0B,SAKA,OAJA,OAAAA,EAAAokB,gBAAApkB,EAAAykB,wBAEA2M,GAAAxlG,KAAAo0E,EAAAokB,gBAAA1mB,aAAA1xB,EAAA8xB,aAEA/jF,KAAAyoF,iBAAA4uB,IAGAxkC,iBAAAgmC,GAOA,OANAxB,GAAAx9F,OAAAoL,IAAA,EAAA,EAAA,GAEAoyF,GAAAv8F,OAAA,kBAEAu8F,GAAA1zB,aAAAk1B,EAAA90B,aAEA/jF,KAAAyoF,iBAAA4uB,IAGAxkC,iBAAAyT,GACA,MAAAoxB,EAAA13G,KAAA03G,OACA79F,EAAAysE,EAAAzsE,OACAi/F,GAAAxyB,EAAAxrE,OAEA,IAAA,IAAAna,EAAA,EAAAA,EAAA,EAAAA,IAAA,CAGA,GAFA+2G,EAAA/2G,GAAA+nF,gBAAA7uE,GAEAi/F,EACA,OAAA,EAIA,OAAA,EAGAjmC,cAAAjmC,GACA,MAAA8qE,EAAA13G,KAAA03G,OAEA,IAAA,IAAA/2G,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,MAAA6lF,EAAAkxB,EAAA/2G,GAMA,GAJA22G,GAAA9vG,EAAAg/E,EAAA5B,OAAAp9E,EAAA,EAAAolC,EAAAz0B,IAAA3Q,EAAAolC,EAAAzmC,IAAAqB,EACA8vG,GAAAhyG,EAAAkhF,EAAA5B,OAAAt/E,EAAA,EAAAsnC,EAAAz0B,IAAA7S,EAAAsnC,EAAAzmC,IAAAb,EACAgyG,GAAAr4E,EAAAunD,EAAA5B,OAAA3lD,EAAA,EAAA2N,EAAAz0B,IAAA8mB,EAAA2N,EAAAzmC,IAAA84B,EAEAunD,EAAAkC,gBAAA4uB,IAAA,EACA,OAAA,EAIA,OAAA,EAGAzkC,cAAAzkB,GACA,MAAAspD,EAAA13G,KAAA03G,OAEA,IAAA,IAAA/2G,EAAA,EAAAA,EAAA,EAAAA,IACA,GAAA+2G,EAAA/2G,GAAA+nF,gBAAAt6B,GAAA,EACA,OAAA,EAIA,OAAA,EAGAykB,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKA,SAAA+4G,KACA,IAAA9wE,EAAA,KACA+wE,GAAA,EACAC,EAAA,KACAC,EAAA,KAEA,SAAAC,EAAApyG,EAAAkP,GACAgjG,EAAAlyG,EAAAkP,GACAijG,EAAAjxE,EAAAjmB,sBAAAm3F,GAGA,MAAA,CACA1yG,MAAA,YACA,IAAAuyG,GACA,OAAAC,IACAC,EAAAjxE,EAAAjmB,sBAAAm3F,GACAH,GAAA,IAEApgD,KAAA,WACA3wB,EAAA7lB,qBAAA82F,GACAF,GAAA,GAEAI,iBAAA,SAAA38F,GACAw8F,EAAAx8F,GAEA48F,WAAA,SAAAv5G,GACAmoC,EAAAnoC,IAKA,SAAAw5G,GAAAC,EAAAC,GACA,MAAAC,EAAAD,EAAAC,SACAC,EAAA,IAAAC,QA6GA,MAAA,CACA97F,IA3CA,SAAA+4D,GAEA,OADAA,EAAAg3B,+BAAAh3B,EAAAA,EAAA50E,MACA03G,EAAA77F,IAAA+4D,IA0CAz0E,OAvCA,SAAAy0E,GACAA,EAAAg3B,+BAAAh3B,EAAAA,EAAA50E,MACA,MAAAA,EAAA03G,EAAA77F,IAAA+4D,GAEA50E,IACAu3G,EAAAK,aAAA53G,EAAA0nG,QACAgQ,EAAAG,OAAAjjC,KAkCA3zB,OA9BA,SAAA2zB,EAAAkjC,GACA,GAAAljC,EAAAs0B,oBAAA,CACA,MAAA6O,EAAAL,EAAA77F,IAAA+4D,GAWA,cATAmjC,GAAAA,EAAAvxG,QAAAouE,EAAApuE,UACAkxG,EAAAz0F,IAAA2xD,EAAA,CACA8yB,OAAA9yB,EAAA8yB,OACA3pG,KAAA62E,EAAA72E,KACAi6G,gBAAApjC,EAAAqjC,YACAzxG,QAAAouE,EAAApuE,WAOAouE,EAAAg3B,+BAAAh3B,EAAAA,EAAA50E,MACA,MAAAA,EAAA03G,EAAA77F,IAAA+4D,QAEAxvC,IAAAplC,EACA03G,EAAAz0F,IAAA2xD,EApGA,SAAAA,EAAAkjC,GACA,MAAA31C,EAAAyS,EAAAzS,MACAqjC,EAAA5wB,EAAA4wB,MACAkC,EAAA6P,EAAAW,eACAX,EAAAY,WAAAL,EAAApQ,GACA6P,EAAAa,WAAAN,EAAA31C,EAAAqjC,GACA5wB,EAAAqxB,mBACA,IAAAloG,EAAAw5G,EAAAc,MA8BA,OA5BAl2C,aAAAilC,aACArpG,EAAAw5G,EAAAc,MACAl2C,aAAAmlC,aACAr7F,QAAAC,KAAA,wEACAi2D,aAAAykC,YACAhyB,EAAAsyB,yBACAuQ,EACA15G,EAAAw5G,EAAAe,WAEArsG,QAAAC,KAAA,2EAGAnO,EAAAw5G,EAAAgB,eAEAp2C,aAAAukC,WACA3oG,EAAAw5G,EAAAiB,MACAr2C,aAAA6kC,YACAjpG,EAAAw5G,EAAAkB,aACAt2C,aAAA2kC,WACA/oG,EAAAw5G,EAAAmB,IACAv2C,aAAAikC,UACAroG,EAAAw5G,EAAAoB,MACAx2C,aAAAmkC,YAEAnkC,aAAAqkC,qBADAzoG,EAAAw5G,EAAAqB,eAKA,CACAlR,OAAAA,EACA3pG,KAAAA,EACAi6G,gBAAA71C,EAAA02C,kBACAryG,QAAAouE,EAAApuE,SA2DA0xG,CAAAtjC,EAAAkjC,IACA93G,EAAAwG,QAAAouE,EAAApuE,WAxDA,SAAAkhG,EAAA9yB,EAAAkjC,GACA,MAAA31C,EAAAyS,EAAAzS,MACAsjC,EAAA7wB,EAAA6wB,YACA8R,EAAAY,WAAAL,EAAApQ,IAEA,IAAAjC,EAAA5oB,MAEA06B,EAAAuB,cAAAhB,EAAA,EAAA31C,IAEAs1C,EACAF,EAAAuB,cAAAhB,EAAArS,EAAAxwF,OAAAktD,EAAA02C,kBAAA12C,EAAAsjC,EAAAxwF,OAAAwwF,EAAA5oB,OAEA06B,EAAAuB,cAAAhB,EAAArS,EAAAxwF,OAAAktD,EAAA02C,kBAAA12C,EAAA42C,SAAAtT,EAAAxwF,OAAAwwF,EAAAxwF,OAAAwwF,EAAA5oB,QAGA4oB,EAAA5oB,OAAA,GA0CAm8B,CAAAh5G,EAAA0nG,OAAA9yB,EAAAkjC,GACA93G,EAAAwG,QAAAouE,EAAApuE,WAWA,MAAAyyG,WAAAhR,GACAp3B,YAAA9vE,EAAA,EAAAu3B,EAAA,EAAAw2E,EAAA,EAAAC,EAAA,GACA91B,QACAj7E,KAAAD,KAAA,gBACAC,KAAA8zF,WAAA,CACA/wF,MAAAA,EACAu3B,OAAAA,EACAw2E,cAAAA,EACAC,eAAAA,GAEA,MAAAmK,EAAAn4G,EAAA,EACAo4G,EAAA7gF,EAAA,EACAi3E,EAAArrG,KAAA4N,MAAAg9F,GACAU,EAAAtrG,KAAA4N,MAAAi9F,GACAe,EAAAP,EAAA,EACAQ,EAAAP,EAAA,EACA4J,EAAAr4G,EAAAwuG,EACA8J,EAAA/gF,EAAAk3E,EAEAlG,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAA,IAAAjoB,EAAA,EAAAA,EAAAwuB,EAAAxuB,IAAA,CACA,MAAAj+E,EAAAi+E,EAAA83B,EAAAF,EAEA,IAAA,IAAA73B,EAAA,EAAAA,EAAAwuB,EAAAxuB,IAAA,CACA,MAAA97E,EAAA87E,EAAA83B,EAAAF,EACAjK,EAAAzwG,KAAAgH,GAAAlC,EAAA,GACAimG,EAAA/qG,KAAA,EAAA,EAAA,GACAgrG,EAAAhrG,KAAA8iF,EAAAiuB,GACA/F,EAAAhrG,KAAA,EAAA+iF,EAAAiuB,IAIA,IAAA,IAAAjuB,EAAA,EAAAA,EAAAiuB,EAAAjuB,IACA,IAAA,IAAAD,EAAA,EAAAA,EAAAiuB,EAAAjuB,IAAA,CACA,MAAAx7E,EAAAw7E,EAAAwuB,EAAAvuB,EACAj7E,EAAAg7E,EAAAwuB,GAAAvuB,EAAA,GACAp8E,EAAAm8E,EAAA,EAAAwuB,GAAAvuB,EAAA,GACA/jF,EAAA8jF,EAAA,EAAAwuB,EAAAvuB,EACA+nB,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAIAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAGA34B,gBAAA7wE,GACA,OAAA,IAAAi5G,GAAAj5G,EAAAe,MAAAf,EAAAs4B,OAAAt4B,EAAA8uG,cAAA9uG,EAAA+uG,iBAiRA,MAAAuK,GAAA,CACAC,kBA7QA,iFA8QAC,uBA5QA,6DA6QAC,mBA3QA,6EA4QAC,wBA1QA,2DA2QAC,eAzQA,maA0QAC,oBAxQA,wFAyQAC,aAvQA,uCAwQAC,mBAtQA,+GAuQAC,MArQA,q/JAsQAC,sBApQA,g8BAqQAC,yBAnQA,6nBAoQAC,8BAlQA,4HAmQAC,4BAjQA,qEAkQAC,uBAhQA,2EAiQAC,eA/PA,+HAgQAC,oBA9PA,qHA+PAC,kBA7PA,wJA8PAC,aA5PA,iRA6PAC,OA3PA,mxEA4PAC,4BA1PA,21HA2PAC,qBAzPA,2jBA0PAC,4BAxPA,kJAyPAC,uBAvPA,mKAwPAC,qBAtPA,6MAuPAC,0BArPA,mEAsPAC,mBApPA,sDAqPAC,wBAnPA,4uFAoPAC,gBAlPA,u0CAmPAC,4BAjPA,yOAkPAC,qBAhPA,yTAiPAC,mBA/OA,+RAgPAC,8BA1NA,4oCA2NAC,cA/OA,4oBAgPAC,WA9OA,wDA+OAC,gBA7OA,qDA8OAC,aA5OA,2RA6OAC,kBA3OA,2MA4OAC,0BA1OA,iYA2OAC,kBAzOA,uTA0OAC,uBAxOA,iGAyOAC,sBAvOA,wtFAwOAC,kBAtOA,+yJAuOAC,qBAnOA,oEAoOAC,0BAlOA,20BAmOAC,sBAjOA,sMAkOAC,2BAhOA,goCAiOAC,yBA/NA,mgEAgOAC,8BA9NA,yzLA+NAC,sBA7NA,60HA8NAC,qBA5NA,syBA6NAC,oBA3NA,2QA4NAC,qBA1NA,mLA2NAC,0BAzNA,yKA0NAC,wBAxNA,sLAyNAC,mBAvNA,+XAwNAC,aAtNA,oJAuNAC,kBArNA,mDAsNAC,sBApNA,kVAqNAC,2BAnNA,uMAoNAC,sBAlNA,uKAmNAC,2BAjNA,qEAkNAC,mBAhNA,uUAiNAC,wBA/MA,0NAgNAC,mBA9MA,omBA+MAC,sBA7MA,o2BA8MAC,qBA5MA,mqBA6MAC,qBA3MA,iJA4MAC,mBA1MA,iJA2MAC,cAzMA,mOA0MAC,wBAxMA,6+BAyMAC,gCAvMA,yEAwMAC,+BAtMA,mXAuMAC,wBArMA,mRAsMAC,gBApMA,mLAqMAC,QAnMA,4jDAoMAC,6BAlMA,4EAmMAC,eAjMA,oNAkMAC,mBAhMA,gFAiMAC,wBA/LA,2UAgMAC,sBA9LA,uKA+LAC,2BA7LA,qEA8LAC,wBA5LA,26RA6LAC,sBA3LA,mxCA4LAC,iBA1LA,kzCA2LAC,yBAzLA,k5CA0LAC,gBAxLA,kOAyLAC,qBAvLA,ghCAwLAC,gBAtLA,+XAuLAC,kBArLA,qdAsLAC,qBApLA,0LAqLAC,0BAnLA,mEAoLAC,qBAlLA,6FAmLAC,0BAjLA,oyCAkLAC,sBAhLA,m2BAiLAC,2BA/KA,q2FAgLAC,iBA9KA,yFA+KAC,eA7KA,wIA8KAC,UA5KA,qEA6KAC,kBA3KA,oFA4KAC,gBA1KA,yIA2KAC,WAzKA,8GA0KAC,gBAxKA,kTAyKAC,gBAvKA,4NAwKAC,gBAtKA,8JAuKAC,UArKA,0VAsKAC,UApKA,iOAqKAC,WAnKA,83BAoKAC,WAlKA,wuBAmKAC,kBAjKA,iuBAkKAC,kBAhKA,ktBAiKAC,cA/JA,0WAgKAC,cA9JA,+LA+JAC,gBA7JA,wwBA8JAC,gBA5JA,+hBA6JAC,eA3JA,qqDA4JAC,eA1JA,o5BA2JAC,iBAzJA,s0EA0JAC,iBAxJA,6nCAyJAC,gBAvJA,igDAwJAC,gBAtJA,k5BAuJAC,gBArJA,onBAsJAC,gBApJA,4+BAqJAC,eAnJA,4kEAoJAC,eAlJA,gmCAmJAC,kBAjJA,0uGAkJAC,kBAhJA,irCAiJAC,cA/IA,myDAgJAC,cA9IA,oiCA+IAC,YA7IA,6vBA8IAC,YA5IA,qrBA6IAC,YA3IA,maA4IAC,YA1IA,qZA2IAC,YAzIA,muBA0IAC,YAxIA,unCA+IAC,GAAA,CACApH,OAAA,CACAqH,QAAA,CACAhkH,MAAA,IAAA4lG,GAAA,WAEAhpC,QAAA,CACA58D,MAAA,GAEAogB,IAAA,CACApgB,MAAA,MAEAikH,YAAA,CACAjkH,MAAA,IAAAk3E,IAEAgtC,aAAA,CACAlkH,MAAA,IAAAk3E,IAEAyjB,SAAA,CACA36F,MAAA,MAEAq5F,UAAA,CACAr5F,MAAA,IAGAmkH,YAAA,CACAxoB,YAAA,CACA37F,MAAA,OAGAokH,OAAA,CACAtoB,OAAA,CACA97F,MAAA,MAEAqkH,WAAA,CACArkH,OAAA,GAEAi8F,aAAA,CACAj8F,MAAA,GAGAskH,IAAA,CACAtkH,MAAA,KAGAk8F,gBAAA,CACAl8F,MAAA,KAEAukH,YAAA,CACAvkH,MAAA,IAGAwkH,MAAA,CACA1pB,MAAA,CACA96F,MAAA,MAEA+6F,eAAA,CACA/6F,MAAA,IAGAykH,SAAA,CACA7pB,SAAA,CACA56F,MAAA,MAEA66F,kBAAA,CACA76F,MAAA,IAGA0kH,YAAA,CACAhpB,YAAA,CACA17F,MAAA,OAGA2kH,QAAA,CACA3pB,QAAA,CACAh7F,MAAA,MAEAi7F,UAAA,CACAj7F,MAAA,IAGA4kH,UAAA,CACA1pB,UAAA,CACAl7F,MAAA,MAEAo7F,YAAA,CACAp7F,MAAA,IAAAi2E,GAAA,EAAA,KAGA4uC,gBAAA,CACAxpB,gBAAA,CACAr7F,MAAA,MAEAs7F,kBAAA,CACAt7F,MAAA,GAEAu7F,iBAAA,CACAv7F,MAAA,IAGA8kH,aAAA,CACAtpB,aAAA,CACAx7F,MAAA,OAGA+kH,aAAA,CACAtpB,aAAA,CACAz7F,MAAA,OAGAglH,YAAA,CACA7oB,YAAA,CACAn8F,MAAA,OAGAm3F,IAAA,CACA8tB,WAAA,CACAjlH,MAAA,OAEAklH,QAAA,CACAllH,MAAA,GAEAmlH,OAAA,CACAnlH,MAAA,KAEAolH,SAAA,CACAplH,MAAA,IAAA4lG,GAAA,YAGAkN,OAAA,CACAuS,kBAAA,CACArlH,MAAA,IAEAslH,WAAA,CACAtlH,MAAA,IAEAulH,kBAAA,CACAvlH,MAAA,GACAwlH,WAAA,CACA9jF,UAAA,GACA7gB,MAAA,KAGA4kG,wBAAA,CACAzlH,MAAA,GACAwlH,WAAA,CACAE,WAAA,GACAC,iBAAA,GACAC,aAAA,GACAC,cAAA,KAGAC,qBAAA,CACA9lH,MAAA,IAEA+lH,wBAAA,CACA/lH,MAAA,IAEAgmH,WAAA,CACAhmH,MAAA,GACAwlH,WAAA,CACA3kG,MAAA,GACA3L,SAAA,GACAwsB,UAAA,GACAnlB,SAAA,GACA0pG,QAAA,GACAC,YAAA,GACAC,MAAA,KAGAC,iBAAA,CACApmH,MAAA,GACAwlH,WAAA,CACAE,WAAA,GACAC,iBAAA,GACAC,aAAA,GACAC,cAAA,KAGAQ,cAAA,CACArmH,MAAA,IAEAsmH,iBAAA,CACAtmH,MAAA,IAEAumH,YAAA,CACAvmH,MAAA,GACAwlH,WAAA,CACA3kG,MAAA,GACA3L,SAAA,GACAixG,MAAA,GACA5pG,SAAA,KAGAiqG,kBAAA,CACAxmH,MAAA,GACAwlH,WAAA,CACAE,WAAA,GACAC,iBAAA,GACAC,aAAA,GACAC,cAAA,GACAY,iBAAA,GACAC,gBAAA,KAGAC,eAAA,CACA3mH,MAAA,IAEA4mH,kBAAA,CACA5mH,MAAA,IAEA6mH,iBAAA,CACA7mH,MAAA,GACAwlH,WAAA,CACA9jF,UAAA,GACAolF,SAAA,GACAC,YAAA,KAIAC,eAAA,CACAhnH,MAAA,GACAwlH,WAAA,CACA3kG,MAAA,GACA3L,SAAA,GACAjS,MAAA,GACAu3B,OAAA,KAGAysF,MAAA,CACAjnH,MAAA,MAEAknH,MAAA,CACAlnH,MAAA,OAGAyH,OAAA,CACAu8G,QAAA,CACAhkH,MAAA,IAAA4lG,GAAA,WAEAhpC,QAAA,CACA58D,MAAA,GAEAsjD,KAAA,CACAtjD,MAAA,GAEAi3B,MAAA,CACAj3B,MAAA,GAEAogB,IAAA,CACApgB,MAAA,MAEA26F,SAAA,CACA36F,MAAA,MAEAq5F,UAAA,CACAr5F,MAAA,GAEAikH,YAAA,CACAjkH,MAAA,IAAAk3E,KAGA6hC,OAAA,CACAiL,QAAA,CACAhkH,MAAA,IAAA4lG,GAAA,WAEAhpC,QAAA,CACA58D,MAAA,GAEA+Z,OAAA,CACA/Z,MAAA,IAAAi2E,GAAA,GAAA,KAEA72C,SAAA,CACAp/B,MAAA,GAEAogB,IAAA,CACApgB,MAAA,MAEA26F,SAAA,CACA36F,MAAA,MAEAq5F,UAAA,CACAr5F,MAAA,GAEAikH,YAAA,CACAjkH,MAAA,IAAAk3E,MAKAiwC,GAAA,CACAC,MAAA,CACA9U,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAI,YAAAJ,GAAAK,OAAAL,GAAAS,MAAAT,GAAAU,SAAAV,GAAA5sB,MACAyb,aAAA4I,GAAAoH,eACA/P,eAAA2I,GAAAmH,gBAEA0E,QAAA,CACA/U,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAI,YAAAJ,GAAAK,OAAAL,GAAAS,MAAAT,GAAAU,SAAAV,GAAAW,YAAAX,GAAA5sB,IAAA4sB,GAAAjR,OAAA,CACAhZ,SAAA,CACA95F,MAAA,IAAA4lG,GAAA,OAGAgN,aAAA4I,GAAAsH,iBACAjQ,eAAA2I,GAAAqH,kBAEAyE,MAAA,CACAhV,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAI,YAAAJ,GAAAK,OAAAL,GAAAS,MAAAT,GAAAU,SAAAV,GAAAW,YAAAX,GAAAY,QAAAZ,GAAAa,UAAAb,GAAAc,gBAAAd,GAAA5sB,IAAA4sB,GAAAjR,OAAA,CACAhZ,SAAA,CACA95F,MAAA,IAAA4lG,GAAA,IAEA5L,SAAA,CACAh6F,MAAA,IAAA4lG,GAAA,UAEAzL,UAAA,CACAn6F,MAAA,OAGA4yG,aAAA4I,GAAA4H,eACAvQ,eAAA2I,GAAA2H,gBAEAoE,SAAA,CACAjV,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAK,OAAAL,GAAAS,MAAAT,GAAAU,SAAAV,GAAAW,YAAAX,GAAAY,QAAAZ,GAAAa,UAAAb,GAAAc,gBAAAd,GAAAe,aAAAf,GAAAgB,aAAAhB,GAAA5sB,IAAA4sB,GAAAjR,OAAA,CACAhZ,SAAA,CACA95F,MAAA,IAAA4lG,GAAA,IAEAjM,UAAA,CACA35F,MAAA,GAEA45F,UAAA,CACA55F,MAAA,GAEAg8F,gBAAA,CACAh8F,MAAA,MAIA4yG,aAAA4I,GAAA8H,kBACAzQ,eAAA2I,GAAA6H,mBAEAmE,KAAA,CACAlV,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAS,MAAAT,GAAAU,SAAAV,GAAAW,YAAAX,GAAAY,QAAAZ,GAAAa,UAAAb,GAAAc,gBAAAd,GAAAiB,YAAAjB,GAAA5sB,IAAA4sB,GAAAjR,OAAA,CACAhZ,SAAA,CACA95F,MAAA,IAAA4lG,GAAA,OAGAgN,aAAA4I,GAAAgI,cACA3Q,eAAA2I,GAAA+H,eAEA7oB,OAAA,CACA4X,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAY,QAAAZ,GAAAa,UAAAb,GAAAc,gBAAAd,GAAA5sB,IAAA,CACAuD,OAAA,CACA16F,MAAA,SAGA4yG,aAAA4I,GAAAwH,gBACAnQ,eAAA2I,GAAAuH,iBAEAt7G,OAAA,CACA6qG,SAAAD,GAAA,CAAA0R,GAAAt8G,OAAAs8G,GAAA5sB,MACAyb,aAAA4I,GAAAkI,YACA7Q,eAAA2I,GAAAiI,aAEAgE,OAAA,CACAnV,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAA5sB,IAAA,CACAlgE,MAAA,CACAj3B,MAAA,GAEA48F,SAAA,CACA58F,MAAA,GAEA0nH,UAAA,CACA1nH,MAAA,MAGA4yG,aAAA4I,GAAAkH,gBACA7P,eAAA2I,GAAAiH,iBAEA52C,MAAA,CACAymC,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAc,kBACAjS,aAAA4I,GAAA4G,WACAvP,eAAA2I,GAAA2G,YAEAr9B,OAAA,CACAwtB,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAY,QAAAZ,GAAAa,UAAAb,GAAAc,gBAAA,CACAjoD,QAAA,CACA58D,MAAA,MAGA4yG,aAAA4I,GAAA0H,gBACArQ,eAAA2I,GAAAyH,iBAEAlK,OAAA,CACAzG,SAAAD,GAAA,CAAA0R,GAAAhL,OAAAgL,GAAA5sB,MACAyb,aAAA4I,GAAAsI,YACAjR,eAAA2I,GAAAqI,aAEAnhD,WAAA,CACA4vC,SAAA,CACA2R,YAAA,CACAjkH,MAAA,IAAAk3E,IAEAywC,IAAA,CACA3nH,MAAA,OAGA4yG,aAAA4I,GAAAwG,gBACAnP,eAAA2I,GAAAuG,iBAMA6F,KAAA,CACAtV,SAAAD,GAAA,CAAA0R,GAAAK,OAAA,CACAxnD,QAAA,CACA58D,MAAA,MAGA4yG,aAAA4I,GAAA0G,UACArP,eAAA2I,GAAAyG,WAEA4F,SAAA,CACAvV,SAAA,CACA+D,UAAA,CACAr2G,MAAA,OAGA4yG,aAAA4I,GAAAgH,cACA3P,eAAA2I,GAAA+G,eAEAuF,aAAA,CACAxV,SAAAD,GAAA,CAAA0R,GAAApH,OAAAoH,GAAAc,gBAAA,CACAkD,kBAAA,CACA/nH,MAAA,IAAA8iF,IAEAklC,aAAA,CACAhoH,MAAA,GAEAioH,YAAA,CACAjoH,MAAA,QAGA4yG,aAAA4I,GAAA8G,kBACAzP,eAAA2I,GAAA6G,mBAEAj4C,OAAA,CACAkoC,SAAAD,GAAA,CAAA0R,GAAAjR,OAAAiR,GAAA5sB,IAAA,CACAt2E,MAAA,CACA7gB,MAAA,IAAA4lG,GAAA,IAEAhpC,QAAA,CACA58D,MAAA,MAGA4yG,aAAA4I,GAAAoI,YACA/Q,eAAA2I,GAAAmI,cAmEA,SAAAuE,GAAA52F,EAAA62F,EAAA7/C,EAAA8/C,EAAAlvB,GACA,MAAAmvB,EAAA,IAAAziB,GAAA,GACA,IACA0iB,EACAC,EAFAC,EAAA,EAGAC,EAAA,KACAC,EAAA,EACAC,EAAA,KAgHA,SAAAC,EAAA/nG,EAAAqW,GACAoxC,EAAAsxC,QAAA/4F,MAAA+nG,SAAA/nG,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,EAAA0uB,EAAAgiE,GAGA,MAAA,CACA2vB,cAAA,WACA,OAAAR,GAEAS,cAAA,SAAAjoG,EAAAqW,EAAA,GACAmxF,EAAAljG,IAAAtE,GACA2nG,EAAAtxF,EACA0xF,EAAAP,EAAAG,IAEAO,cAAA,WACA,OAAAP,GAEAQ,cAAA,SAAA9xF,GACAsxF,EAAAtxF,EACA0xF,EAAAP,EAAAG,IAEA13G,OAlIA,SAAAm4G,EAAAzT,GACA,IAAA0T,GAAA,EACAxmD,GAAA,IAAA8yC,EAAA9hB,QAAA8hB,EAAA9yC,WAAA,KAEAA,GAAAA,EAAAka,YACAla,EAAAylD,EAAApqG,IAAA2kD,IAKA,MAAAgzC,EAAApkF,EAAAokF,GACAyT,EAAAzT,EAAA0T,YAAA1T,EAAA0T,aAEAD,GAAA,aAAAA,EAAAE,uBACA3mD,EAAA,MAGA,OAAAA,EACAkmD,EAAAP,EAAAG,GACA9lD,GAAAA,EAAAixB,UACAi1B,EAAAlmD,EAAA,GACAwmD,GAAA,IAGA53F,EAAAg4F,WAAAJ,IACA53F,EAAAtF,MAAAsF,EAAAi4F,eAAAj4F,EAAAk4F,eAAAl4F,EAAAm4F,kBAGA/mD,IAAAA,EAAAqzC,eAAArzC,EAAAiY,UAAA/K,SACAtoC,IAAAihF,IACAA,EAAA,IAAA/Y,GAAA,IAAAuB,GAAA,EAAA,EAAA,GAAA,IAAA2B,GAAA,CACAtyG,KAAA,yBACAkyG,SAAAF,GAAA+U,GAAAS,KAAAtV,UACAM,aAAAuU,GAAAS,KAAAhV,aACAC,eAAAsU,GAAAS,KAAA/U,eACA3wE,KA1yUA,EA2yUA21D,WAAA,EACAC,YAAA,EACAX,KAAA,KAEAoxB,EAAApiC,SAAAujC,gBAAA,UACAnB,EAAApiC,SAAAujC,gBAAA,MAEAnB,EAAAoB,eAAA,SAAAr4F,EAAAkkF,EAAA5xB,GACA1jF,KAAA+jF,YAAA2lC,aAAAhmC,EAAAK,cAIAr7E,OAAAC,eAAA0/G,EAAAj0B,SAAA,SAAA,CACAv2E,IAAA,WACA,OAAA7d,KAAAoyG,SAAAxW,OAAA97F,SAGAooH,EAAAjlE,OAAAolE,IAGAA,EAAAj0B,SAAAge,SAAAxW,OAAA97F,MAAA0iE,EACA6lD,EAAAj0B,SAAAge,SAAA+R,WAAArkH,MAAA0iE,EAAAqzC,gBAAA,IAAArzC,EAAAkZ,uBAAA,EAAA,EAEA6sC,IAAA/lD,GAAAgmD,IAAAhmD,EAAAh6D,SAAAigH,IAAAr3F,EAAAu4F,cACAtB,EAAAj0B,SAAA9X,aAAA,EACAisC,EAAA/lD,EACAgmD,EAAAhmD,EAAAh6D,QACAigH,EAAAr3F,EAAAu4F,aAIAZ,EAAAp+E,QAAA09E,EAAAA,EAAApiC,SAAAoiC,EAAAj0B,SAAA,EAAA,EAAA,OACA5xB,GAAAA,EAAAka,iBACAt1C,IAAAghF,IACAA,EAAA,IAAA9Y,GAAA,IAAA2L,GAAA,EAAA,GAAA,IAAAzI,GAAA,CACAtyG,KAAA,qBACAkyG,SAAAF,GAAA+U,GAAAzkD,WAAA4vC,UACAM,aAAAuU,GAAAzkD,WAAAkwC,aACAC,eAAAsU,GAAAzkD,WAAAmwC,eACA3wE,KAn1UA,EAo1UA21D,WAAA,EACAC,YAAA,EACAX,KAAA,KAEAmxB,EAAAniC,SAAAujC,gBAAA,UAEA9gH,OAAAC,eAAAy/G,EAAAh0B,SAAA,MAAA,CACAv2E,IAAA,WACA,OAAA7d,KAAAoyG,SAAAqV,IAAA3nH,SAGAooH,EAAAjlE,OAAAmlE,IAGAA,EAAAh0B,SAAAge,SAAAqV,IAAA3nH,MAAA0iE,GAEA,IAAAA,EAAA6Y,kBACA7Y,EAAAmvB,eAGAy2B,EAAAh0B,SAAAge,SAAA2R,YAAAjkH,MAAA+R,KAAA2wD,EAAA7kC,QAEA4qF,IAAA/lD,GAAAgmD,IAAAhmD,EAAAh6D,SAAAigH,IAAAr3F,EAAAu4F,cACAvB,EAAAh0B,SAAA9X,aAAA,EACAisC,EAAA/lD,EACAgmD,EAAAhmD,EAAAh6D,QACAigH,EAAAr3F,EAAAu4F,aAIAZ,EAAAp+E,QAAAy9E,EAAAA,EAAAniC,SAAAmiC,EAAAh0B,SAAA,EAAA,EAAA,SA4BA,SAAAw1B,GAAArQ,EAAAzG,EAAAp+D,EAAA8kE,GACA,MAAAqQ,EAAAtQ,EAAAuQ,aAAAvQ,EAAAwQ,oBACAC,EAAAxQ,EAAAC,SAAA,KAAA3G,EAAAj1F,IAAA,2BACAosG,EAAAzQ,EAAAC,UAAA,OAAAuQ,EACAE,EAAA,GACAC,EAAAC,EAAA,MACA,IAAAjiD,EAAAgiD,EAgDA,SAAAE,EAAAC,GACA,OAAA9Q,EAAAC,SAAAF,EAAAgR,gBAAAD,GACAN,EAAAQ,mBAAAF,GAGA,SAAAG,EAAAH,GACA,OAAA9Q,EAAAC,SAAAF,EAAAmR,kBAAAJ,GACAN,EAAAW,qBAAAL,GA6BA,SAAAF,EAAAE,GACA,MAAAM,EAAA,GACAC,EAAA,GACAC,EAAA,GAEA,IAAA,IAAAnqH,EAAA,EAAAA,EAAAkpH,EAAAlpH,IACAiqH,EAAAjqH,GAAA,EACAkqH,EAAAlqH,GAAA,EACAmqH,EAAAnqH,GAAA,EAGA,MAAA,CAEAslF,SAAA,KACA8kC,QAAA,KACAnuB,WAAA,EACAguB,cAAAA,EACAC,kBAAAA,EACAC,kBAAAA,EACA74D,OAAAq4D,EACA51E,WAAA,GACAp8B,MAAA,MA8CA,SAAA0yG,IACA,MAAAJ,EAAAziD,EAAAyiD,cAEA,IAAA,IAAAjqH,EAAA,EAAAqzB,EAAA42F,EAAAvqH,OAAAM,EAAAqzB,EAAArzB,IACAiqH,EAAAjqH,GAAA,EAIA,SAAAsqH,EAAAr0C,GACAs0C,EAAAt0C,EAAA,GAGA,SAAAs0C,EAAAt0C,EAAAu0C,GACA,MAAAP,EAAAziD,EAAAyiD,cACAC,EAAA1iD,EAAA0iD,kBACAC,EAAA3iD,EAAA2iD,kBAQA,GAPAF,EAAAh0C,GAAA,EAEA,IAAAi0C,EAAAj0C,KACA2iC,EAAA6R,wBAAAx0C,GACAi0C,EAAAj0C,GAAA,GAGAk0C,EAAAl0C,KAAAu0C,EAAA,EACA3R,EAAAC,SAAAF,EAAAzG,EAAAj1F,IAAA,2BACA27F,EAAAC,SAAA,sBAAA,4BAAA7iC,EAAAu0C,GACAL,EAAAl0C,GAAAu0C,GAIA,SAAAE,IACA,MAAAT,EAAAziD,EAAAyiD,cACAC,EAAA1iD,EAAA0iD,kBAEA,IAAA,IAAAlqH,EAAA,EAAAqzB,EAAA62F,EAAAxqH,OAAAM,EAAAqzB,EAAArzB,IACAkqH,EAAAlqH,KAAAiqH,EAAAjqH,KACA44G,EAAA+R,yBAAA3qH,GACAkqH,EAAAlqH,GAAA,GAKA,SAAA4qH,EAAAjzG,EAAA8qC,EAAArjD,EAAAgnG,EAAA8G,EAAA52F,IACA,IAAAuiG,EAAAC,UAAA15G,IAAAw5G,EAAAmB,KAAA36G,IAAAw5G,EAAAkB,aAGAlB,EAAAgS,oBAAAjzG,EAAA8qC,EAAArjD,EAAAgnG,EAAA8G,EAAA52F,GAFAsiG,EAAAiS,qBAAAlzG,EAAA8qC,EAAArjD,EAAA8tG,EAAA52F,GAoKA,SAAAw0G,IACAC,IACAvjD,IAAAgiD,IACAhiD,EAAAgiD,EACAE,EAAAliD,EAAAlW,SAIA,SAAAy5D,IACAvB,EAAAlkC,SAAA,KACAkkC,EAAAY,QAAA,KACAZ,EAAAvtB,WAAA,EAGA,MAAA,CACA+uB,MApXA,SAAA15D,EAAAmiC,EAAA22B,EAAA9kC,EAAA3tE,GACA,IAAAszG,GAAA,EAEA,GAAA3B,EAAA,CACA,MAAA7hD,EAoDA,SAAA6d,EAAA8kC,EAAA32B,GACA,MAAAwI,GAAA,IAAAxI,EAAAwI,UACA,IAAAivB,EAAA3B,EAAAjkC,EAAAjjF,SAEAokC,IAAAykF,IACAA,EAAA,GACA3B,EAAAjkC,EAAAjjF,IAAA6oH,GAGA,IAAAC,EAAAD,EAAAd,EAAA/nH,SAEAokC,IAAA0kF,IACAA,EAAA,GACAD,EAAAd,EAAA/nH,IAAA8oH,GAGA,IAAA1jD,EAAA0jD,EAAAlvB,QAEAx1D,IAAAghC,IACAA,EAAAgiD,EAjCA5Q,EAAAC,SAAAF,EAAAwS,oBACA/B,EAAAgC,wBAiCAF,EAAAlvB,GAAAx0B,GAGA,OAAAA,EA3EA6jD,CAAAhmC,EAAA8kC,EAAA32B,GAEAjsB,IAAAC,IACAD,EAAAC,EACAiiD,EAAAliD,EAAAlW,SAGA25D,EAgGA,SAAA3lC,EAAA3tE,GACA,MAAA4zG,EAAA/jD,EAAAzzB,WACAy3E,EAAAlmC,EAAAvxC,WACA,IAAA03E,EAAA,EAEA,IAAA,MAAArpG,KAAAopG,EAAA,CACA,MAAAE,EAAAH,EAAAnpG,GACAupG,EAAAH,EAAAppG,GACA,QAAAqkB,IAAAilF,EAAA,OAAA,EACA,GAAAA,EAAAz1C,YAAA01C,EAAA,OAAA,EACA,GAAAD,EAAArqH,OAAAsqH,EAAAtqH,KAAA,OAAA,EACAoqH,IAGA,OAAAjkD,EAAAikD,gBAAAA,GACAjkD,EAAA7vD,QAAAA,EA/GAgkE,CAAA2J,EAAA3tE,GACAszG,GAkHA,SAAA3lC,EAAA3tE,GACA,MAAAhV,EAAA,GACAoxC,EAAAuxC,EAAAvxC,WACA,IAAA03E,EAAA,EAEA,IAAA,MAAArpG,KAAA2xB,EAAA,CACA,MAAAkiC,EAAAliC,EAAA3xB,GACA/gB,EAAA,GACAA,EAAA40E,UAAAA,EAEAA,EAAA50E,OACAA,EAAAA,KAAA40E,EAAA50E,MAGAsB,EAAAyf,GAAA/gB,EACAoqH,IAGAjkD,EAAAzzB,WAAApxC,EACA6kE,EAAAikD,cAAAA,EACAjkD,EAAA7vD,MAAAA,EAtIAi0G,CAAAtmC,EAAA3tE,OACA,CACA,MAAAskF,GAAA,IAAAxI,EAAAwI,UAEAz0B,EAAA8d,WAAAA,EAAAjjF,IAAAmlE,EAAA4iD,UAAAA,EAAA/nH,IAAAmlE,EAAAy0B,YAAAA,IACAz0B,EAAA8d,SAAAA,EAAAjjF,GACAmlE,EAAA4iD,QAAAA,EAAA/nH,GACAmlE,EAAAy0B,UAAAA,EACAgvB,GAAA,IAIA,IAAA35D,EAAAohC,kBACAu4B,GAAA,GAGA,OAAAtzG,GACAo8B,EAAAuO,OAAA3qC,EAAAihG,EAAAiT,sBAGAZ,KAuKA,SAAA35D,EAAAmiC,EAAA22B,EAAA9kC,GACA,IAAA,IAAAuzB,EAAAC,WAAAxnD,EAAAohC,iBAAApN,EAAAwmC,4BACA,OAAA3Z,EAAAj1F,IAAA,0BAAA,OAGAmtG,IACA,MAAAmB,EAAAlmC,EAAAvxC,WACAg4E,EAAA3B,EAAA4B,gBACAC,EAAAx4B,EAAA+e,uBAEA,IAAA,MAAAjzG,KAAAwsH,EAAA,CACA,MAAAG,EAAAH,EAAAxsH,GAEA,GAAA2sH,EAAAroF,UAAA,EAAA,CACA,IAAA8nF,EAAAH,EAAAjsH,GAOA,QALAknC,IAAAklF,IACA,mBAAApsH,GAAA+xD,EAAAqhC,iBAAAg5B,EAAAr6D,EAAAqhC,gBACA,kBAAApzF,GAAA+xD,EAAAshC,gBAAA+4B,EAAAr6D,EAAAshC,qBAGAnsD,IAAAklF,EAAA,CACA,MAAAvlB,EAAAulB,EAAAvlB,WACA3jD,EAAAkpE,EAAA/kB,SACA3wB,EAAAliC,EAAA72B,IAAAyuG,GAEA,QAAAllF,IAAAwvC,EAAA,SACA,MAAA8yB,EAAA9yB,EAAA8yB,OACA3pG,EAAA62E,EAAA72E,KACAi6G,EAAApjC,EAAAojC,gBAEA,GAAAsS,EAAA1e,6BAAA,CACA,MAAA5rG,EAAAsqH,EAAAtqH,KACA6rG,EAAA7rG,EAAA6rG,OACA52F,EAAAq1G,EAAAr1G,OAEA,GAAAjV,GAAAA,EAAA8qH,6BAAA,CACA,IAAA,IAAAnsH,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACAuqH,EAAA2B,EAAAroF,SAAA7jC,EAAAqB,EAAAmpH,mBAGA,IAAAl5D,EAAAohC,sBAAAjsD,IAAA6+C,EAAA+mC,oBACA/mC,EAAA+mC,kBAAAhrH,EAAAmpH,iBAAAnpH,EAAA68E,YAGA,IAAA,IAAAl+E,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACAsqH,EAAA4B,EAAAroF,SAAA7jC,GAIA44G,EAAAY,WAAAZ,EAAA0T,aAAAvjB,GAEA,IAAA,IAAA/oG,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACA4qH,EAAAsB,EAAAroF,SAAA7jC,EAAAyiD,EAAAypE,EAAAE,aAAAhtH,EAAAgnG,EAAA8G,EAAAmM,GAAA/iG,EAAAmsC,EAAAypE,EAAAE,aAAApsH,GAAAq5G,OAEA,CACA,GAAAsS,EAAAY,2BAAA,CACA,IAAA,IAAAvsH,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACAuqH,EAAA2B,EAAAroF,SAAA7jC,EAAA2rH,EAAAnB,mBAGA,IAAAl5D,EAAAohC,sBAAAjsD,IAAA6+C,EAAA+mC,oBACA/mC,EAAA+mC,kBAAAV,EAAAnB,iBAAAmB,EAAAztC,YAGA,IAAA,IAAAl+E,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACAsqH,EAAA4B,EAAAroF,SAAA7jC,GAIA44G,EAAAY,WAAAZ,EAAA0T,aAAAvjB,GAEA,IAAA,IAAA/oG,EAAA,EAAAA,EAAAksH,EAAAE,aAAApsH,IACA4qH,EAAAsB,EAAAroF,SAAA7jC,EAAAyiD,EAAAypE,EAAAE,aAAAhtH,EAAAgnG,EAAA3jD,EAAA42D,EAAA52D,EAAAypE,EAAAE,aAAApsH,EAAAq5G,SAGA,QAAA5yE,IAAAwlF,EAAA,CACA,MAAA9sH,EAAA8sH,EAAA1sH,GAEA,QAAAknC,IAAAtnC,EACA,OAAAA,EAAAO,QACA,KAAA,EACAk5G,EAAA4T,gBAAAN,EAAAroF,SAAA1kC,GACA,MAEA,KAAA,EACAy5G,EAAA6T,gBAAAP,EAAAroF,SAAA1kC,GACA,MAEA,KAAA,EACAy5G,EAAA8T,gBAAAR,EAAAroF,SAAA1kC,GACA,MAEA,QACAy5G,EAAA+T,gBAAAT,EAAAroF,SAAA1kC,MAOAurH,IA3QAkC,CAAAt7D,EAAAmiC,EAAA22B,EAAA9kC,GAEA,OAAA3tE,GACAihG,EAAAY,WAAAZ,EAAAiT,qBAAA93E,EAAA72B,IAAAvF,GAAAoxF,UAiVA+hB,MAAAA,EACAC,kBAAAA,EACAjtC,QAxEA,WACAgtC,IAEA,IAAA,MAAA+B,KAAAtD,EAAA,CACA,MAAA2B,EAAA3B,EAAAsD,GAEA,IAAA,MAAAC,KAAA5B,EAAA,CACA,MAAAC,EAAAD,EAAA4B,GAEA,IAAA,MAAA7wB,KAAAkvB,EACArB,EAAAqB,EAAAlvB,GAAA3qC,eACA65D,EAAAlvB,UAGAivB,EAAA4B,UAGAvD,EAAAsD,KAwDAE,wBApDA,SAAAznC,GACA,QAAA7+C,IAAA8iF,EAAAjkC,EAAAjjF,IAAA,OACA,MAAA6oH,EAAA3B,EAAAjkC,EAAAjjF,IAEA,IAAA,MAAAyqH,KAAA5B,EAAA,CACA,MAAAC,EAAAD,EAAA4B,GAEA,IAAA,MAAA7wB,KAAAkvB,EACArB,EAAAqB,EAAAlvB,GAAA3qC,eACA65D,EAAAlvB,UAGAivB,EAAA4B,UAGAvD,EAAAjkC,EAAAjjF,KAsCA2qH,uBAnCA,SAAA5C,GACA,IAAA,MAAAyC,KAAAtD,EAAA,CACA,MAAA2B,EAAA3B,EAAAsD,GACA,QAAApmF,IAAAykF,EAAAd,EAAA/nH,IAAA,SACA,MAAA8oH,EAAAD,EAAAd,EAAA/nH,IAEA,IAAA,MAAA45F,KAAAkvB,EACArB,EAAAqB,EAAAlvB,GAAA3qC,eACA65D,EAAAlvB,UAGAivB,EAAAd,EAAA/nH,MAyBAgoH,eAAAA,EACAC,gBAAAA,EACAI,wBAAAA,GAIA,SAAAuC,GAAArU,EAAAzG,EAAA+a,EAAArU,GACA,MAAAC,EAAAD,EAAAC,SACA,IAAAqU,EAiCA9tH,KAAA+tH,QA/BA,SAAAjuH,GACAguH,EAAAhuH,GA+BAE,KAAA4Q,OA5BA,SAAAnK,EAAAo4E,GACA06B,EAAAyU,WAAAF,EAAArnH,EAAAo4E,GACAgvC,EAAA5qE,OAAA47B,EAAAivC,EAAA,IA2BA9tH,KAAAiuH,gBAxBA,SAAAxnH,EAAAo4E,EAAAqvC,GACA,GAAA,IAAAA,EAAA,OACA,IAAAlE,EAAAp3E,EAEA,GAAA6mE,EACAuQ,EAAAzQ,EACA3mE,EAAA,2BAKA,GAHAo3E,EAAAlX,EAAAj1F,IAAA,0BACA+0B,EAAA,2BAEA,OAAAo3E,EAEA,YADA/7G,QAAApK,MAAA,kIAKAmmH,EAAAp3E,GAAAk7E,EAAArnH,EAAAo4E,EAAAqvC,GACAL,EAAA5qE,OAAA47B,EAAAivC,EAAAI,IASA,SAAAC,GAAA5U,EAAAzG,EAAAhf,GACA,IAAAs6B,EAeA,SAAAC,EAAA31B,GACA,GAAA,UAAAA,EAAA,CACA,GAAA6gB,EAAA+U,yBAAA/U,EAAAgV,cAAAhV,EAAAiV,YAAA91B,UAAA,GAAA6gB,EAAA+U,yBAAA/U,EAAAkV,gBAAAlV,EAAAiV,YAAA91B,UAAA,EACA,MAAA,QAGAA,EAAA,UAGA,MAAA,YAAAA,GACA6gB,EAAA+U,yBAAA/U,EAAAgV,cAAAhV,EAAAmV,cAAAh2B,UAAA,GAAA6gB,EAAA+U,yBAAA/U,EAAAkV,gBAAAlV,EAAAmV,cAAAh2B,UAAA,EACA,UAIA,OAKA,MAAA+gB,EAAA,oBAAAkV,wBAAApV,aAAAoV,wBAAA,oBAAAC,+BAAArV,aAAAqV,8BAGA,IAAAl2B,OAAAtxD,IAAA0sD,EAAA4E,UAAA5E,EAAA4E,UAAA,QACA,MAAAm2B,EAAAR,EAAA31B,GAEAm2B,IAAAn2B,IACAzqF,QAAAC,KAAA,uBAAAwqF,EAAA,uBAAAm2B,EAAA,YACAn2B,EAAAm2B,GAGA,MAAA5b,EAAAwG,GAAA3G,EAAAxrE,IAAA,sBACAwnF,GAAA,IAAAh7B,EAAAg7B,uBACAC,EAAAxV,EAAAuQ,aAAAvQ,EAAAyV,yBACAC,EAAA1V,EAAAuQ,aAAAvQ,EAAA2V,gCACAC,EAAA5V,EAAAuQ,aAAAvQ,EAAA6V,kBACAC,EAAA9V,EAAAuQ,aAAAvQ,EAAA+V,2BACAC,EAAAhW,EAAAuQ,aAAAvQ,EAAAwQ,oBACAyF,EAAAjW,EAAAuQ,aAAAvQ,EAAAkW,4BACAC,EAAAnW,EAAAuQ,aAAAvQ,EAAAoW,qBACAC,EAAArW,EAAAuQ,aAAAvQ,EAAAsW,8BACAC,EAAAb,EAAA,EACAc,EAAAtW,GAAA3G,EAAAxrE,IAAA,qBAGA,MAAA,CACAmyE,SAAAA,EACAxG,YAAAA,EACA+c,iBA7DA,WACA,QAAA5oF,IAAAgnF,EAAA,OAAAA,EAEA,IAAA,IAAAtb,EAAAxrE,IAAA,kCAAA,CACA,MAAA0iF,EAAAlX,EAAAj1F,IAAA,kCACAuwG,EAAA7U,EAAAuQ,aAAAE,EAAAiG,qCAEA7B,EAAA,EAGA,OAAAA,GAoDAC,gBAAAA,EACA31B,UAAAA,EACAo2B,uBAAAA,EACAC,YAAAA,EACAE,kBAAAA,EACAE,eAAAA,EACAE,eAAAA,EACAE,cAAAA,EACAC,kBAAAA,EACAE,YAAAA,EACAE,oBAAAA,EACAE,eAAAA,EACAC,sBAAAA,EACAG,oBAnBAJ,GAAAC,EAoBAI,WAnBA1W,EAAAF,EAAAuQ,aAAAvQ,EAAA6W,aAAA,GAuBA,SAAAC,GAAA/K,GACA,MAAAz3G,EAAA7N,KACA,IAAAswH,EAAA,KACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACA,MAAAjqC,EAAA,IAAAkwB,GACAga,EAAA,IAAA15C,GACA25C,EAAA,CACA7wH,MAAA,KACAw8E,aAAA,GA0DA,SAAAs0C,IACAD,EAAA7wH,QAAAwwH,IACAK,EAAA7wH,MAAAwwH,EACAK,EAAAr0C,YAAAi0C,EAAA,GAGA1iH,EAAAgjH,UAAAN,EACA1iH,EAAAijH,gBAAA,EAGA,SAAAC,EAAArZ,EAAAh0B,EAAA9D,EAAAoxC,GACA,MAAAC,EAAA,OAAAvZ,EAAAA,EAAAr3G,OAAA,EACA,IAAA6wH,EAAA,KAEA,GAAA,IAAAD,EAAA,CAGA,GAFAC,EAAAP,EAAA7wH,OAEA,IAAAkxH,GAAA,OAAAE,EAAA,CACA,MAAAC,EAAAvxC,EAAA,EAAAqxC,EACAG,EAAA1tC,EAAAE,mBACA8sC,EAAAlmB,gBAAA4mB,IAEA,OAAAF,GAAAA,EAAA7wH,OAAA8wH,KACAD,EAAA,IAAA9nB,aAAA+nB,IAGA,IAAA,IAAAxwH,EAAA,EAAA0wH,EAAAzxC,EAAAj/E,IAAAswH,IAAAtwH,EAAA0wH,GAAA,EACA7qC,EAAA30E,KAAA6lG,EAAA/2G,IAAAgjF,aAAAytC,EAAAV,GACAlqC,EAAA5B,OAAAl1E,QAAAwhH,EAAAG,GACAH,EAAAG,EAAA,GAAA7qC,EAAAC,SAIAkqC,EAAA7wH,MAAAoxH,EACAP,EAAAr0C,aAAA,EAKA,OAFAzuE,EAAAgjH,UAAAI,EACApjH,EAAAijH,gBAAA,EACAI,EA/FAlxH,KAAA2wH,QAAAA,EACA3wH,KAAA6wH,UAAA,EACA7wH,KAAA8wH,gBAAA,EAEA9wH,KAAAkd,KAAA,SAAAw6F,EAAA4Z,EAAA5tC,GACA,MAAAluC,EAAA,IAAAkiE,EAAAr3G,QAAAixH,GAEA,IAAAf,GAAAC,EAIA,OAHAA,EAAAc,EACAhB,EAAAS,EAAArZ,EAAAh0B,EAAA,GACA6sC,EAAA7Y,EAAAr3G,OACAm1C,GAGAx1C,KAAAuxH,aAAA,WACAd,GAAA,EACAM,EAAA,OAGA/wH,KAAAwxH,WAAA,WACAf,GAAA,EACAG,KAGA5wH,KAAAyxH,SAAA,SAAAr9B,EAAA1Q,EAAAguC,GACA,MAAAha,EAAAtjB,EAAAiE,eACAC,EAAAlE,EAAAkE,iBACAC,EAAAnE,EAAAmE,YACAo5B,EAAArM,EAAAznG,IAAAu2E,GAEA,IAAAo8B,GAAA,OAAA9Y,GAAA,IAAAA,EAAAr3G,QAAAowH,IAAAl4B,EAEAk4B,EAEAM,EAAA,MAEAH,QAEA,CACA,MAAAgB,EAAAnB,EAAA,EAAAF,EACAsB,EAAA,EAAAD,EACA,IAAAV,EAAAS,EAAAG,eAAA,KACAnB,EAAA7wH,MAAAoxH,EAEAA,EAAAH,EAAArZ,EAAAh0B,EAAAmuC,EAAAH,GAEA,IAAA,IAAA/wH,EAAA,EAAAA,IAAAkxH,IAAAlxH,EACAuwH,EAAAvwH,GAAA2vH,EAAA3vH,GAGAgxH,EAAAG,cAAAZ,EACAlxH,KAAA8wH,gBAAAx4B,EAAAt4F,KAAA6wH,UAAA,EACA7wH,KAAA6wH,WAAAe,IA+CA,SAAAG,GAAA3gG,GACA,IAAA62F,EAAA,IAAAtO,QAEA,SAAAqY,EAAA3zC,EAAA5D,GAOA,OANAA,IAAAjL,EACA6O,EAAA5D,QAAAnL,EACAmL,IAAAhL,IACA4O,EAAA5D,QAAAlL,GAGA8O,EAiCA,SAAA4zC,EAAA5wH,GACA,MAAAg9E,EAAAh9E,EAAA8N,OACAkvE,EAAAx6C,oBAAA,UAAAouF,GACA,MAAAC,EAAAjK,EAAApqG,IAAAwgE,QAEAj3C,IAAA8qF,IACAjK,EAAApO,OAAAx7B,GACA6zC,EAAAzzC,WAQA,MAAA,CACA5gE,IA9CA,SAAAwgE,GACA,GAAAA,GAAAA,EAAA3B,YAAA,IAAA2B,EAAA3C,sBAAA,CACA,MAAAjB,EAAA4D,EAAA5D,QAEA,GAAAA,IAAAjL,GAAAiL,IAAAhL,EAAA,CACA,GAAAw4C,EAAA3gF,IAAA+2C,GAAA,CAEA,OAAA2zC,EADA/J,EAAApqG,IAAAwgE,GAAAA,QACAA,EAAA5D,SACA,CACA,MAAA9qB,EAAA0uB,EAAA1uB,MAEA,GAAAA,GAAAA,EAAAr1B,OAAA,EAAA,CACA,MAAAm7E,EAAArkF,EAAAskF,kBACAZ,EAAA,IAAAgB,GAAAnmD,EAAAr1B,OAAA,GAKA,OAJAw6E,EAAAqd,2BAAA/gG,EAAAitD,GACA4pC,EAAAhjG,IAAAo5D,EAAAy2B,GACA1jF,EAAAukF,gBAAAF,GACAp3B,EAAAz6C,iBAAA,UAAAquF,GACAD,EAAAld,EAAAz2B,QAAAA,EAAA5D,SAGA,OAAA,OAMA,OAAA4D,GAoBAI,QANA,WACAwpC,EAAA,IAAAtO,UAx3BAsN,GAAAmL,SAAA,CACAhgB,SAAAD,GAAA,CAAA8U,GAAAI,SAAAjV,SAAA,CACAlY,UAAA,CACAp6F,MAAA,GAEAs6F,aAAA,CACAt6F,MAAA,MAEAq6F,mBAAA,CACAr6F,MAAA,GAEAu6F,sBAAA,CACAv6F,MAAA,MAEAy6F,qBAAA,CACAz6F,MAAA,IAAAi2E,GAAA,EAAA,IAEAukB,mBAAA,CACAx6F,MAAA,MAEA65F,UAAA,CACA75F,MAAA,IAAA4lG,GAAA,IAEAxJ,aAAA,CACAp8F,MAAA,GAEAq8F,gBAAA,CACAr8F,MAAA,MAEAuyH,wBAAA,CACAvyH,MAAA,IAAAi2E,IAEAu8C,uBAAA,CACAxyH,MAAA,MAEAs8F,UAAA,CACAt8F,MAAA,GAEAu8F,aAAA,CACAv8F,MAAA,MAEAw8F,oBAAA,CACAx8F,MAAA,GAEAy8F,gBAAA,CACAz8F,MAAA,IAAA4lG,GAAA,IAEA3L,kBAAA,CACAj6F,MAAA,GAEA47F,qBAAA,CACA57F,MAAA,MAEAk6F,aAAA,CACAl6F,MAAA,IAAA4lG,GAAA,EAAA,EAAA,IAEA/J,gBAAA,CACA77F,MAAA,SAGA4yG,aAAA4I,GAAA8H,kBACAzQ,eAAA2I,GAAA6H,mBAo0BA,MAAAoP,WAAA/e,GACA3gC,YAAAv4D,GAAA,EAAAyiB,EAAA,EAAAF,EAAA,EAAAC,GAAA,EAAAkyD,EAAA,GAAAC,EAAA,KACAhU,QACAj7E,KAAAD,KAAA,qBACAC,KAAA8+D,KAAA,EACA9+D,KAAA6zG,KAAA,KACA7zG,KAAAsa,KAAAA,EACAta,KAAA+8B,MAAAA,EACA/8B,KAAA68B,IAAAA,EACA78B,KAAA88B,OAAAA,EACA98B,KAAAgvF,KAAAA,EACAhvF,KAAAivF,IAAAA,EACAjvF,KAAAg0G,yBAGAnhC,KAAAjxC,EAAA2yD,GAUA,OATAtZ,MAAAppE,KAAA+vB,EAAA2yD,GACAv0F,KAAAsa,KAAAsnB,EAAAtnB,KACAta,KAAA+8B,MAAA6E,EAAA7E,MACA/8B,KAAA68B,IAAA+E,EAAA/E,IACA78B,KAAA88B,OAAA8E,EAAA9E,OACA98B,KAAAgvF,KAAAptD,EAAAotD,KACAhvF,KAAAivF,IAAArtD,EAAAqtD,IACAjvF,KAAA8+D,KAAAl9B,EAAAk9B,KACA9+D,KAAA6zG,KAAA,OAAAjyE,EAAAiyE,KAAA,KAAAnrG,OAAA26B,OAAA,GAAAzB,EAAAiyE,MACA7zG,KAGA6yE,cAAAwhC,EAAAC,EAAA9sG,EAAAlC,EAAAvC,EAAAu3B,GACA,OAAAt6B,KAAA6zG,OACA7zG,KAAA6zG,KAAA,CACAr+D,SAAA,EACA6+D,UAAA,EACAC,WAAA,EACAC,QAAA,EACAC,QAAA,EACAzxG,MAAA,EACAu3B,OAAA,IAIAt6B,KAAA6zG,KAAAr+D,SAAA,EACAx1C,KAAA6zG,KAAAQ,UAAAA,EACAr0G,KAAA6zG,KAAAS,WAAAA,EACAt0G,KAAA6zG,KAAAU,QAAA/sG,EACAxH,KAAA6zG,KAAAW,QAAAlvG,EACAtF,KAAA6zG,KAAA9wG,MAAAA,EACA/C,KAAA6zG,KAAAv5E,OAAAA,EACAt6B,KAAAg0G,yBAGAnhC,kBACA,OAAA7yE,KAAA6zG,OACA7zG,KAAA6zG,KAAAr+D,SAAA,GAGAx1C,KAAAg0G,yBAGAnhC,yBACA,MAAA53D,GAAAjb,KAAA+8B,MAAA/8B,KAAAsa,OAAA,EAAAta,KAAA8+D,MACA5jD,GAAAlb,KAAA68B,IAAA78B,KAAA88B,SAAA,EAAA98B,KAAA8+D,MACA0a,GAAAx5E,KAAA+8B,MAAA/8B,KAAAsa,MAAA,EACAm/D,GAAAz5E,KAAA68B,IAAA78B,KAAA88B,QAAA,EACA,IAAAxiB,EAAAk/D,EAAAv+D,EACA8hB,EAAAy8C,EAAAv+D,EACA4hB,EAAA48C,EAAAv+D,EACA4hB,EAAA28C,EAAAv+D,EAEA,GAAA,OAAAlb,KAAA6zG,MAAA7zG,KAAA6zG,KAAAr+D,QAAA,CACA,MAAAg9E,GAAAxyH,KAAA+8B,MAAA/8B,KAAAsa,MAAAta,KAAA6zG,KAAAQ,UAAAr0G,KAAA8+D,KACA2zD,GAAAzyH,KAAA68B,IAAA78B,KAAA88B,QAAA98B,KAAA6zG,KAAAS,WAAAt0G,KAAA8+D,KACAxkD,GAAAk4G,EAAAxyH,KAAA6zG,KAAAU,QACAx3E,EAAAziB,EAAAk4G,EAAAxyH,KAAA6zG,KAAA9wG,MACA85B,GAAA41F,EAAAzyH,KAAA6zG,KAAAW,QACA13E,EAAAD,EAAA41F,EAAAzyH,KAAA6zG,KAAAv5E,OAGAt6B,KAAA6jF,iBAAA6uC,iBAAAp4G,EAAAyiB,EAAAF,EAAAC,EAAA98B,KAAAgvF,KAAAhvF,KAAAivF,KACAjvF,KAAA8jF,wBAAAjyE,KAAA7R,KAAA6jF,kBAAA5rB,SAGA4a,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GASA,OARA55E,EAAAiwD,OAAA6M,KAAA9+D,KAAA8+D,KACA98D,EAAAiwD,OAAA33C,KAAAta,KAAAsa,KACAtY,EAAAiwD,OAAAl1B,MAAA/8B,KAAA+8B,MACA/6B,EAAAiwD,OAAAp1B,IAAA78B,KAAA68B,IACA76B,EAAAiwD,OAAAn1B,OAAA98B,KAAA88B,OACA96B,EAAAiwD,OAAA+8B,KAAAhvF,KAAAgvF,KACAhtF,EAAAiwD,OAAAg9B,IAAAjvF,KAAAivF,IACA,OAAAjvF,KAAA6zG,OAAA7xG,EAAAiwD,OAAA4hD,KAAAnrG,OAAA26B,OAAA,GAAArjC,KAAA6zG,OACA7xG,GAKAuwH,GAAAxpH,UAAA4pH,sBAAA,EAEA,MAAAC,WAAApgB,GACA3/B,YAAAihB,GACA7Y,MAAA6Y,GACA9zF,KAAAD,KAAA,qBAKA6yH,GAAA7pH,UAAA8pH,qBAAA,EAEA,MAEAC,GAAA5sH,KAAAD,IAAA,EADA,GAMA8sH,GAAA,CAAA,KAAA,KAAA,IAAA,KAAA,KAAA,MACAC,GAAAC,EAAAF,GAAA1yH,OAGA+vH,GAAA,GACA8C,GAAA,CACArgD,CAAAZ,GAAA,EACAY,CAAAX,GAAA,EACAW,CAAAT,GAAA,EACAS,CAAAR,GAAA,EACAQ,CAAAP,GAAA,EACAO,CAAAN,GAAA,EACAM,CAAAV,GAAA,GAGAghD,GAAA,IAAAZ,IAEAa,WACAA,GAAAC,UACAA,GAAAC,QACAA,IACAC,KAEAC,GAAA,IAAA9tB,GAEA,IAAA+tB,GAAA,KAEA,MAAAC,IAAA,EAAAxtH,KAAA+F,KAAA,IAAA,EACA0nH,GAAA,EAAAD,GAGAE,GAAA,CAAA,IAAAhxC,GAAA,EAAA,EAAA,GAAA,IAAAA,IAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,GAAA,GAAA,IAAAA,IAAA,EAAA,GAAA,GAAA,IAAAA,GAAA,EAAA8wC,GAAAC,IAAA,IAAA/wC,GAAA,EAAA8wC,IAAAC,IAAA,IAAA/wC,GAAA+wC,GAAA,EAAAD,IAAA,IAAA9wC,IAAA+wC,GAAA,EAAAD,IAAA,IAAA9wC,GAAA8wC,GAAAC,GAAA,GAAA,IAAA/wC,IAAA8wC,GAAAC,GAAA,IAgBA,MAAAE,GACAhhD,YAAAzhD,GACApxB,KAAA8zH,UAAA1iG,EACApxB,KAAA+zH,sBAAA,KACA/zH,KAAAg0H,cAsaA,SAAA7D,GACA,MAAA8D,EAAA,IAAA7qB,aAAA+mB,GACA+D,EAAA,IAAAtxC,GAAA,EAAA,EAAA,GA2GA,OA1GA,IAAAgwC,GAAA,CACA1yH,KAAA,wBACAuyG,QAAA,CACA5nG,EAAAslH,GAEA/d,SAAA,CACAxW,OAAA,CACA97F,MAAA,MAEAk/E,QAAA,CACAl/E,MAAA,GAEAm0H,QAAA,CACAn0H,MAAAm0H,GAEAE,YAAA,CACAr0H,OAAA,GAEAs0H,OAAA,CACAt0H,MAAA,GAEAu0H,OAAA,CACAv0H,MAAA,GAEAo0H,SAAA,CACAp0H,MAAAo0H,GAEAI,cAAA,CACAx0H,MAAAozH,GAAAjhD,MAEAsiD,eAAA,CACAz0H,MAAAozH,GAAAjhD,OAGAygC,aAAA8hB,KACA7hB,eAEA,gVAeA8hB,myCAkDAv9B,SAjvXA,EAkvXAS,WAAA,EACAC,YAAA,IAjhBA88B,CAAAtE,IACApwH,KAAA20H,gBAAA,KACA30H,KAAA40H,eAAA,KAEA50H,KAAA60H,iBAAA70H,KAAAg0H,eAWAnhD,UAAAyiC,EAAAwf,EAAA,EAAA9lC,EAAA,GAAAC,EAAA,KACAwkC,GAAAzzH,KAAA8zH,UAAApe,kBAEA,MAAAqf,EAAA/0H,KAAAg1H,mBAYA,OAVAh1H,KAAAi1H,eAAA3f,EAAAtmB,EAAAC,EAAA8lC,GAEAD,EAAA,GACA90H,KAAAk1H,MAAAH,EAAA,EAAA,EAAAD,GAGA90H,KAAAm1H,YAAAJ,GAEA/0H,KAAAo1H,SAAAL,GAEAA,EASAliD,oBAAAwiD,GACA,OAAAr1H,KAAAs1H,aAAAD,GASAxiD,YAAAq/C,GACA,OAAAlyH,KAAAs1H,aAAApD,GAQAr/C,uBACA,OAAA7yE,KAAA40H,iBACA50H,KAAA40H,eAAAW,KAEAv1H,KAAA60H,iBAAA70H,KAAA40H,iBASA/hD,+BACA,OAAA7yE,KAAA20H,kBACA30H,KAAA20H,gBAAAa,KAEAx1H,KAAA60H,iBAAA70H,KAAA20H,kBAUA9hD,UACA7yE,KAAAg0H,cAAAv1C,UAEA,OAAAz+E,KAAA40H,gBAAA50H,KAAA40H,eAAAn2C,UACA,OAAAz+E,KAAA20H,iBAAA30H,KAAA20H,gBAAAl2C,UAEA,IAAA,IAAA99E,EAAA,EAAAA,EAAAyyH,GAAA/yH,OAAAM,IACAyyH,GAAAzyH,GAAA89E,UAKA5L,SAAA4iD,GACAz1H,KAAA+zH,sBAAAt1C,UAEAz+E,KAAA8zH,UAAAne,gBAAA8d,IAEAgC,EAAAt3C,aAAA,EAEAu3C,GAAAD,EAAA,EAAA,EAAAA,EAAA1yH,MAAA0yH,EAAAn7F,QAGAu4C,aAAAwL,GACAo1C,GAAAzzH,KAAA8zH,UAAApe,kBAEA,MAAAqf,EAAA/0H,KAAAg1H,iBAAA32C,GAQA,OANAr+E,KAAA21H,iBAAAt3C,EAAA02C,GAEA/0H,KAAAm1H,YAAAJ,GAEA/0H,KAAAo1H,SAAAL,GAEAA,EAGAliD,iBAAAwL,GAEA,MAAA3mE,EAAA,CACAmjE,UAAA9K,EACA+K,UAAA/K,EACAuL,iBAAA,EACAv7E,KAAAswE,EACAr+C,OAtxWA4+C,KAuxWAoK,SAAA46C,GAAAv3C,GAAAA,EAAArD,SAAA5I,EACAkM,aAAA,GAGAy2C,EAAAc,GAAAn+G,GAIA,OAFAq9G,EAAAz2C,aAAAD,EACAr+E,KAAA+zH,sBAAA8B,GAAAn+G,GACAq9G,EAGAliD,iBAAAuhB,GACA,MAAA0hC,EAAA,IAAAxmB,GAAA8jB,GAAA,GAAAh/B,GAEAp0F,KAAA8zH,UAAAiC,QAAAD,EAAA3C,IAGAtgD,eAAAyiC,EAAAtmB,EAAAC,EAAA8lC,GACA,MAEAiB,EAAA,IAAAviB,GAFA,GACA,EACAzkB,EAAAC,GACAgnC,EAAA,CAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACAC,EAAA,CAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GACA9kG,EAAApxB,KAAA8zH,UACAqC,EAAA/kG,EAAAg4F,UACAmL,EAAAnjG,EAAAmjG,eACA5K,EAAAv4F,EAAAu4F,YACAv4F,EAAAu3F,cAAA6K,IACApiG,EAAAu4F,YA91WA,EA+1WAv4F,EAAAmjG,eAAAtiD,EACA7gD,EAAAg4F,WAAA,EACA,MAAAgN,EAAA,IAAAnvB,GAAA,CACA/mG,KAAA,mBACA8hC,KAx4WA,EAy4WA41D,YAAA,EACAD,WAAA,IAEA0+B,EAAA,IAAA/mB,GAAA,IAAAuB,GAAAulB,GACA,IAAAE,GAAA,EACA,MAAA9zD,EAAA8yC,EAAA9yC,WAEAA,EACAA,EAAAixB,UACA2iC,EAAAz1G,MAAA9O,KAAA2wD,GACA8yC,EAAA9yC,WAAA,KACA8zD,GAAA,IAGAF,EAAAz1G,MAAA9O,KAAA2hH,IACA8C,GAAA,GAGA,IAAA,IAAA31H,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,MAAA41H,EAAA51H,EAAA,EAEA,GAAA41H,GACAP,EAAA7oC,GAAAloE,IAAA,EAAAgxG,EAAAt1H,GAAA,GACAq1H,EAAA5jC,OAAA8jC,EAAAv1H,GAAA,EAAA,IACA,GAAA41H,GACAP,EAAA7oC,GAAAloE,IAAA,EAAA,EAAAgxG,EAAAt1H,IACAq1H,EAAA5jC,OAAA,EAAA8jC,EAAAv1H,GAAA,KAEAq1H,EAAA7oC,GAAAloE,IAAA,EAAAgxG,EAAAt1H,GAAA,GACAq1H,EAAA5jC,OAAA,EAAA,EAAA8jC,EAAAv1H,KAGA+0H,GAAAX,EAAAwB,EAAAzD,GAAAnyH,EAAA,EAAAmyH,GAAA,EAAAA,GAAAA,IAEA1hG,EAAAukF,gBAAAof,GAEAuB,GACAllG,EAAAxgB,OAAAylH,EAAAL,GAGA5kG,EAAAxgB,OAAA0kG,EAAA0gB,GAGAK,EAAApwC,SAAAxH,UACA43C,EAAAjiC,SAAA3V,UACArtD,EAAAu4F,YAAAA,EACAv4F,EAAAmjG,eAAAA,EACAnjG,EAAAg4F,UAAA+M,EACA7gB,EAAA9yC,WAAAA,EAGAqQ,iBAAAwL,EAAA02C,GACA,MAAA3jG,EAAApxB,KAAA8zH,UAEAz1C,EAAAw3B,cACA,MAAA71G,KAAA40H,iBACA50H,KAAA40H,eAAAW,MAGA,MAAAv1H,KAAA20H,kBACA30H,KAAA20H,gBAAAa,MAIA,MAAAphC,EAAA/V,EAAAw3B,cAAA71G,KAAA40H,eAAA50H,KAAA20H,gBACAve,EAAA,IAAA9G,GAAA8jB,GAAA,GAAAh/B,GACAge,EAAAhe,EAAAge,SACAA,EAAA,OAAAtyG,MAAAu+E,EAEAA,EAAAw3B,eACAzD,EAAA,UAAAtyG,MAAAmlB,IAAA,EAAAo5D,EAAA1uB,MAAA5sD,MAAA,EAAAs7E,EAAA1uB,MAAAr1B,QAGA83E,EAAA,cAAAtyG,MAAAozH,GAAA70C,EAAArD,UACAo3B,EAAA,eAAAtyG,MAAAozH,GAAA6B,EAAA12C,QAAArD,UAEA06C,GAAAX,EAAA,EAAA,EAAA,EAAAjC,GAAA,EAAAA,IAEA1hG,EAAAukF,gBAAAof,GACA3jG,EAAAxgB,OAAAwlG,EAAA+c,IAGAtgD,YAAAkiD,GACA,MAAA3jG,EAAApxB,KAAA8zH,UACA1K,EAAAh4F,EAAAg4F,UACAh4F,EAAAg4F,WAAA,EAEA,IAAA,IAAAzoH,EAAA,EAAAA,EAAAqyH,GAAAryH,IAAA,CACA,MAAAm0H,EAAA5uH,KAAA+F,KAAAqnH,GAAA3yH,GAAA2yH,GAAA3yH,GAAA2yH,GAAA3yH,EAAA,GAAA2yH,GAAA3yH,EAAA,IACAuzH,EAAAN,IAAAjzH,EAAA,GAAAizH,GAAAvzH,QAEAL,KAAAk1H,MAAAH,EAAAp0H,EAAA,EAAAA,EAAAm0H,EAAAZ,GAGA9iG,EAAAg4F,UAAAA,EAWAv2C,MAAAkiD,EAAAyB,EAAAC,EAAA3B,EAAAZ,GACA,MAAAwC,EAAA12H,KAAA+zH,sBAEA/zH,KAAA22H,UAAA5B,EAAA2B,EAAAF,EAAAC,EAAA3B,EAAA,cAAAZ,GAEAl0H,KAAA22H,UAAAD,EAAA3B,EAAA0B,EAAAA,EAAA3B,EAAA,eAAAZ,GAGArhD,UAAA+jD,EAAAC,EAAAL,EAAAC,EAAAK,EAAAt1F,EAAA0yF,GACA,MAAA9iG,EAAApxB,KAAA8zH,UACAiD,EAAA/2H,KAAAg0H,cAEA,gBAAAxyF,GAAA,iBAAAA,GACAvzB,QAAApK,MAAA,8DAIA,MACAmzH,EAAA,IAAA1nB,GAAA8jB,GAAAqD,GAAAM,GACAE,EAAAF,EAAA3kB,SACA8kB,EAAA7D,GAAAmD,GAAA,EACAW,EAAAntE,SAAA8sE,GAAA5wH,KAAA2F,IAAA,EAAAqrH,GAAA,EAAAhxH,KAAA2F,GAAA,GACAurH,EAAAN,EAAAK,EACAn4C,EAAAh1B,SAAA8sE,GAAA,EAAA5wH,KAAA4N,MANA,EAMAsjH,GAAAhH,GAEApxC,EAAAoxC,IACAniH,QAAAC,KAAA,iBAAA4oH,kDAAA93C,2CAGA,MAAAi1C,EAAA,GACA,IAAAoD,EAAA,EAEA,IAAA,IAAA12H,EAAA,EAAAA,EAAAyvH,KAAAzvH,EAAA,CACA,MAAA6G,EAAA7G,EAAAy2H,EACAE,EAAApxH,KAAAW,KAAAW,EAAAA,EAAA,GACAysH,EAAAzzH,KAAA82H,GAEA,GAAA32H,EACA02H,GAAAC,EACA32H,EAAAq+E,IACAq4C,GAAA,EAAAC,GAIA,IAAA,IAAA32H,EAAA,EAAAA,EAAAszH,EAAA5zH,OAAAM,IACAszH,EAAAtzH,GAAAszH,EAAAtzH,GAAA02H,EAGAJ,EAAA,OAAAn3H,MAAA82H,EAAAv4C,QACA44C,EAAA,QAAAn3H,MAAAk/E,EACAi4C,EAAA,QAAAn3H,MAAAm0H,EACAgD,EAAA,YAAAn3H,MAAA,gBAAA0hC,EAEA0yF,IACA+C,EAAA,SAAAn3H,MAAAo0H,GAGA+C,EAAA,OAAAn3H,MAAAq3H,EACAF,EAAA,OAAAn3H,MA/XA,EA+XA02H,EACAS,EAAA,cAAAn3H,MAAAozH,GAAA0D,EAAAv4C,QAAArD,UACAi8C,EAAA,eAAAn3H,MAAAozH,GAAA0D,EAAAv4C,QAAArD,UACA,MAAAu8C,EAAAlE,GAAAoD,GAIAf,GAAAmB,EAHA,EAAA3wH,KAAAiS,IAAA,EAAA26G,GAAA,EAAAyE,IACA,IAAAd,EAAA,EAAA,EAAA3D,IAAA,EAAAyE,GAAAd,EAAAxD,EAAAwD,EApYA,EADA,EAqYA,GAEA,EAAAc,EAAA,EAAAA,GAEAnmG,EAAAukF,gBAAAkhB,GACAzlG,EAAAxgB,OAAAomH,EAAA7D,KAKA,SAAAyC,GAAAv3C,GACA,YAAAj3C,IAAAi3C,GAAAA,EAAAt+E,OAAAswE,IACAgO,EAAArD,WAAA/I,GAAAoM,EAAArD,WAAA9I,GAAAmM,EAAArD,WAAA7I,GAGA,SAAAohD,KACA,MAAAH,EAAA,GACAC,EAAA,GACAC,EAAA,GACA,IAAAkE,EAvZA,EAyZA,IAAA,IAAA72H,EAAA,EAAAA,EAAAqyH,GAAAryH,IAAA,CACA,MAAA82H,EAAAvxH,KAAAD,IAAA,EAAAuxH,GAEAnE,EAAA7yH,KAAAi3H,GAEA,IAAA3C,EAAA,EAAA2C,EAEA92H,EAAAsyH,EACA6B,EAAA/B,GAAApyH,EAjaA,EADA,EAkaA,GACA,GAAAA,IACAm0H,EAAA,GAGAxB,EAAA9yH,KAAAs0H,GAEA,MAAA4C,EAAA,GAAAD,EAAA,GACAtxH,GAAAuxH,EAAA,EACAv/G,EAAA,EAAAu/G,EAAA,EACA7hC,EAAA,CAAA1vF,EAAAA,EAAAgS,EAAAhS,EAAAgS,EAAAA,EAAAhS,EAAAA,EAAAgS,EAAAA,EAAAhS,EAAAgS,GACAw/G,EAAA,EACA1mB,EAAA,EACA2mB,EAAA,EACAC,EAAA,EACAC,EAAA,EACA9iH,EAAA,IAAAo0F,aAAAwuB,EAAA3mB,EAAA0mB,GACAv7C,EAAA,IAAAgtB,aAAAyuB,EAAA5mB,EAAA0mB,GACAvnB,EAAA,IAAAhH,aAAA0uB,EAAA7mB,EAAA0mB,GAEA,IAAA,IAAAtnB,EAAA,EAAAA,EAAAsnB,EAAAtnB,IAAA,CACA,MAAA7oG,EAAA6oG,EAAA,EAAA,EAAA,EAAA,EACA/qG,EAAA+qG,EAAA,EAAA,GAAA,EACA0nB,EAAA,CAAAvwH,EAAAlC,EAAA,EAAAkC,EAAA,EAAA,EAAAlC,EAAA,EAAAkC,EAAA,EAAA,EAAAlC,EAAA,EAAA,EAAAkC,EAAAlC,EAAA,EAAAkC,EAAA,EAAA,EAAAlC,EAAA,EAAA,EAAAkC,EAAAlC,EAAA,EAAA,GACA0P,EAAAiQ,IAAA8yG,EAAAH,EAAA3mB,EAAAZ,GACAj0B,EAAAn3D,IAAA4wE,EAAAgiC,EAAA5mB,EAAAZ,GACA,MAAA2nB,EAAA,CAAA3nB,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACAD,EAAAnrF,IAAA+yG,EAAAF,EAAA7mB,EAAAZ,GAGA,MAAAqH,EAAA,IAAAzN,GACAyN,EAAAlnF,aAAA,WAAA,IAAA82E,GAAAtyF,EAAA4iH,IACAlgB,EAAAlnF,aAAA,KAAA,IAAA82E,GAAAlrB,EAAAy7C,IACAngB,EAAAlnF,aAAA,YAAA,IAAA82E,GAAA8I,EAAA0nB,IAEA1E,EAAA5yH,KAAAk3G,GAEA8f,EAvcA,GAwcAA,IAIA,MAAA,CACApE,WAAAA,EACAC,UAAAA,EACAC,QAAAA,GAIA,SAAAuC,GAAAn+G,GACA,MAAAq9G,EAAA,IAAA92C,GAAA,EAAA60C,GAAA,EAAAA,GAAAp7G,GAIA,OAHAq9G,EAAA12C,QAAA5D,QAAA/K,EACAqlD,EAAA12C,QAAAn+E,KAAA,eACA60H,EAAA52C,aAAA,EACA42C,EAGA,SAAAW,GAAAvmH,EAAA3H,EAAAlC,EAAAvC,EAAAu3B,GACAnrB,EAAAivE,SAAAn5D,IAAAzd,EAAAlC,EAAAvC,EAAAu3B,GACAnrB,EAAA+uE,QAAAj5D,IAAAzd,EAAAlC,EAAAvC,EAAAu3B,GAmHA,SAAAk7F,KACA,MAAAkC,EAAA,IAAA3hD,GAAA,EAAA,GA+DA,OA9DA,IAAA68C,GAAA,CACA1yH,KAAA,0BACAkyG,SAAA,CACAxW,OAAA,CACA97F,MAAA,MAEA43H,UAAA,CACA53H,MAAA43H,GAEApD,cAAA,CACAx0H,MAAAozH,GAAAjhD,MAEAsiD,eAAA,CACAz0H,MAAAozH,GAAAjhD,OAGAygC,aAAA8hB,KACA7hB,eAEA,uLAUA8hB,63BA6BAv9B,SApzXA,EAqzXAS,WAAA,EACAC,YAAA,IAKA,SAAA29B,KAwCA,OAvCA,IAAA3C,GAAA,CACA1yH,KAAA,kBACAkyG,SAAA,CACAxW,OAAA,CACA97F,MAAA,MAEAw0H,cAAA,CACAx0H,MAAAozH,GAAAjhD,MAEAsiD,eAAA,CACAz0H,MAAAozH,GAAAjhD,OAGAygC,aAAA8hB,KACA7hB,eAEA,0JASA8hB,mSAUAv9B,SA/1XA,EAg2XAS,WAAA,EACAC,YAAA,IAKA,SAAA48B,KACA,MAEA,+rCA6DA,SAAAC,KACA,MAEA,29CAoFA,SAAAwD,GAAA7mG,GACA,IAAA8mG,EAAA,IAAAve,QACAwe,EAAA,KA6CA,SAAAlG,EAAA5wH,GACA,MAAAg9E,EAAAh9E,EAAA8N,OACAkvE,EAAAx6C,oBAAA,UAAAouF,GACA,MAAAmG,EAAAF,EAAAr6G,IAAAwgE,QAEAj3C,IAAAgxF,IACAF,EAAAre,OAAAx7B,GACA+5C,EAAA35C,WAaA,MAAA,CACA5gE,IAhEA,SAAAwgE,GACA,GAAAA,GAAAA,EAAA3B,YAAA,IAAA2B,EAAA3C,sBAAA,CACA,MAAAjB,EAAA4D,EAAA5D,QACA49C,EAAA59C,IAAAjL,GAAAiL,IAAAhL,EACA6oD,EAAA79C,IAAAnL,GAAAmL,IAAAlL,EAEA,GAAA8oD,GAAAC,EAAA,CAEA,GAAAJ,EAAA5wF,IAAA+2C,GACA,OAAA65C,EAAAr6G,IAAAwgE,GAAAA,QACA,CACA,MAAA1uB,EAAA0uB,EAAA1uB,MAEA,GAAA0oE,GAAA1oE,GAAAA,EAAAr1B,OAAA,GAAAg+F,GAAA3oE,GAmBA,SAAAA,GACA,IAAAkvB,EAAA,EACA,MAAAx+E,EAAA,EAEA,IAAA,IAAAM,EAAA,EAAAA,EAAAN,EAAAM,SACAymC,IAAAuoB,EAAAhvD,IAAAk+E,IAGA,OAAAA,IAAAx+E,EA3BAk4H,CAAA5oE,GAAA,CACA,MAAA8lD,EAAArkF,EAAAskF,kBACA,OAAAyiB,IAAAA,EAAA,IAAAtE,GAAAziG,IACA,MAAA0jF,EAAAujB,EAAAF,EAAAK,oBAAAn6C,GAAA85C,EAAAM,YAAAp6C,GAIA,OAHA65C,EAAAjzG,IAAAo5D,EAAAy2B,GACA1jF,EAAAukF,gBAAAF,GACAp3B,EAAAz6C,iBAAA,UAAAquF,GACAnd,EAAAz2B,QAGA,OAAA,OAMA,OAAAA,GAoCAI,QAXA,WACAy5C,EAAA,IAAAve,QAEA,OAAAwe,IACAA,EAAA15C,UACA05C,EAAA,QAUA,SAAAO,GAAAnf,GACA,MAAAzG,EAAA,GAEA,SAAA6lB,EAAAz4H,GACA,QAAAknC,IAAA0rE,EAAA5yG,GACA,OAAA4yG,EAAA5yG,GAGA,IAAA8pH,EAEA,OAAA9pH,GACA,IAAA,sBACA8pH,EAAAzQ,EAAAof,aAAA,wBAAApf,EAAAof,aAAA,4BAAApf,EAAAof,aAAA,8BACA,MAEA,IAAA,iCACA3O,EAAAzQ,EAAAof,aAAA,mCAAApf,EAAAof,aAAA,uCAAApf,EAAAof,aAAA,yCACA,MAEA,IAAA,gCACA3O,EAAAzQ,EAAAof,aAAA,kCAAApf,EAAAof,aAAA,sCAAApf,EAAAof,aAAA,wCACA,MAEA,IAAA,iCACA3O,EAAAzQ,EAAAof,aAAA,mCAAApf,EAAAof,aAAA,yCACA,MAEA,QACA3O,EAAAzQ,EAAAof,aAAAz4H,GAIA,OADA4yG,EAAA5yG,GAAA8pH,EACAA,EAGA,MAAA,CACA1iF,IAAA,SAAApnC,GACA,OAAA,OAAAy4H,EAAAz4H,IAEAgd,KAAA,SAAAs8F,GACAA,EAAAC,SACAkf,EAAA,2BAEAA,EAAA,uBACAA,EAAA,qBACAA,EAAA,0BACAA,EAAA,iCACAA,EAAA,4BACAA,EAAA,0BACAA,EAAA,2BACAA,EAAA,2BAGAA,EAAA,4BACAA,EAAA,gCAEA96G,IAAA,SAAA3d,GACA,MAAA8pH,EAAA2O,EAAAz4H,GAMA,OAJA,OAAA8pH,GACA/7G,QAAAC,KAAA,wBAAAhO,EAAA,6BAGA8pH,IAKA,SAAA4O,GAAArf,EAAA7kE,EAAAm5E,EAAA3D,GACA,MAAAp3B,EAAA,GACA+lC,EAAA,IAAAlf,QAEA,SAAAmf,EAAAz3H,GACA,MAAA4kF,EAAA5kF,EAAA8N,OAEA,OAAA82E,EAAA3tE,OACAo8B,EAAAvyC,OAAA8jF,EAAA3tE,OAGA,IAAA,MAAApY,KAAA+lF,EAAAvxC,WACAA,EAAAvyC,OAAA8jF,EAAAvxC,WAAAx0C,IAGA+lF,EAAApiD,oBAAA,UAAAi1F,UACAhmC,EAAA7M,EAAAjjF,IACA,MAAA4zE,EAAAiiD,EAAAh7G,IAAAooE,GAEArP,IACAliC,EAAAvyC,OAAAy0E,GACAiiD,EAAAhf,OAAA5zB,IAGAikC,EAAAwD,wBAAAznC,IAEA,IAAAA,EAAAwmC,kCACAxmC,EAAA+mC,kBAIAa,EAAAkL,OAAAjmC,aA8BA,SAAAkmC,EAAA/yC,GACA,MAAAqlB,EAAA,GACA2tB,EAAAhzC,EAAA3tE,MACA4gH,EAAAjzC,EAAAvxC,WAAA1/B,SACA,IAAAxM,EAAA,EAEA,GAAA,OAAAywH,EAAA,CACA,MAAA90D,EAAA80D,EAAA90D,MACA37D,EAAAywH,EAAAzwH,QAEA,IAAA,IAAA7H,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAAM,EAAA4P,EAAA5P,GAAA,EAAA,CACA,MAAAmH,EAAAq8D,EAAAxjE,EAAA,GACA2H,EAAA67D,EAAAxjE,EAAA,GACAwG,EAAAg9D,EAAAxjE,EAAA,GACA2qG,EAAA9qG,KAAAsH,EAAAQ,EAAAA,EAAAnB,EAAAA,EAAAW,QAEA,CACA,MAAAq8D,EAAA+0D,EAAA/0D,MACA37D,EAAA0wH,EAAA1wH,QAEA,IAAA,IAAA7H,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAA,EAAA,EAAAM,EAAA4P,EAAA5P,GAAA,EAAA,CACA,MAAAmH,EAAAnH,EAAA,EACA2H,EAAA3H,EAAA,EACAwG,EAAAxG,EAAA,EACA2qG,EAAA9qG,KAAAsH,EAAAQ,EAAAA,EAAAnB,EAAAA,EAAAW,IAIA,MAAA8uE,EAAA,IAAA2yB,GAAA+B,GAAA,MAAAvC,GAAAJ,IAAA2C,EAAA,GACA10B,EAAApuE,QAAAA,EAGA,MAAA2wH,EAAAN,EAAAh7G,IAAAooE,GACAkzC,GAAAzkF,EAAAvyC,OAAAg3H,GAEAN,EAAA5zG,IAAAghE,EAAArP,GAsBA,MAAA,CACA/4D,IArFA,SAAAo0C,EAAAg0B,GACA,OAAA,IAAA6M,EAAA7M,EAAAjjF,MACAijF,EAAAriD,iBAAA,UAAAk1F,GACAhmC,EAAA7M,EAAAjjF,KAAA,EACA6qH,EAAAkL,OAAAjmC,cAHA7M,GAqFAhjC,OA9EA,SAAAgjC,GACA,MAAAkmC,EAAAlmC,EAAAvxC,WAEA,IAAA,MAAAx0C,KAAAisH,EACAz3E,EAAAuO,OAAAkpE,EAAAjsH,GAAAq5G,EAAA0T,cAIA,MAAA/iB,EAAAjkB,EAAAikB,gBAEA,IAAA,MAAAhqG,KAAAgqG,EAAA,CACA,MAAA/lC,EAAA+lC,EAAAhqG,GAEA,IAAA,IAAAS,EAAA,EAAA4P,EAAA4zD,EAAA9jE,OAAAM,EAAA4P,EAAA5P,IACA+zC,EAAAuO,OAAAkhB,EAAAxjE,GAAA44G,EAAA0T,gBAiEAmM,sBAtBA,SAAAnzC,GACA,MAAAozC,EAAAR,EAAAh7G,IAAAooE,GAEA,GAAAozC,EAAA,CACA,MAAAJ,EAAAhzC,EAAA3tE,MAEA,OAAA2gH,GAEAI,EAAA7wH,QAAAywH,EAAAzwH,SACAwwH,EAAA/yC,QAIA+yC,EAAA/yC,GAGA,OAAA4yC,EAAAh7G,IAAAooE,KAUA,SAAAqzC,GAAA/f,EAAAzG,EAAA+a,EAAArU,GACA,MAAAC,EAAAD,EAAAC,SACA,IAAAqU,EAMA/tH,EAAAi6G,EAkCAh6G,KAAA+tH,QAtCA,SAAAjuH,GACAguH,EAAAhuH,GAsCAE,KAAAouG,SAjCA,SAAAtuG,GACAC,EAAAD,EAAAC,KACAi6G,EAAAl6G,EAAAk6G,iBAgCAh6G,KAAA4Q,OA7BA,SAAAnK,EAAAo4E,GACA06B,EAAAggB,aAAAzL,EAAAjvC,EAAA9+E,EAAA0G,EAAAuzG,GACA6T,EAAA5qE,OAAA47B,EAAAivC,EAAA,IA4BA9tH,KAAAiuH,gBAzBA,SAAAxnH,EAAAo4E,EAAAqvC,GACA,GAAA,IAAAA,EAAA,OACA,IAAAlE,EAAAp3E,EAEA,GAAA6mE,EACAuQ,EAAAzQ,EACA3mE,EAAA,6BAKA,GAHAo3E,EAAAlX,EAAAj1F,IAAA,0BACA+0B,EAAA,6BAEA,OAAAo3E,EAEA,YADA/7G,QAAApK,MAAA,yIAKAmmH,EAAAp3E,GAAAk7E,EAAAjvC,EAAA9+E,EAAA0G,EAAAuzG,EAAAkU,GACAL,EAAA5qE,OAAA47B,EAAAivC,EAAAI,IAUA,SAAAsL,GAAAjgB,GACA,MAIA3oG,EAAA,CACAqF,MAAA,EACAwjH,MAAA,EACAC,UAAA,EACAnyH,OAAA,EACAoyH,MAAA,GAyCA,MAAA,CACAZ,OAnDA,CACAjmC,WAAA,EACAhX,SAAA,GAkDAlrE,OAAAA,EACAgpH,SAAA,KACAC,WAAA,EACApO,MAbA,WACA76G,EAAAqF,QACArF,EAAA6oH,MAAA,EACA7oH,EAAA8oH,UAAA,EACA9oH,EAAArJ,OAAA,EACAqJ,EAAA+oH,MAAA,GASA12E,OA5CA,SAAA47B,EAAAivC,EAAAgM,GAGA,OAFAlpH,EAAA6oH,QAEA3L,GACA,KAAAvU,EAAAwgB,UACAnpH,EAAA8oH,WAAAI,GAAAj7C,EAAA,GACA,MAEA,KAAA06B,EAAAygB,MACAppH,EAAA+oH,OAAAG,GAAAj7C,EAAA,GACA,MAEA,KAAA06B,EAAA0gB,WACArpH,EAAA+oH,OAAAG,GAAAj7C,EAAA,GACA,MAEA,KAAA06B,EAAA2gB,UACAtpH,EAAA+oH,OAAAG,EAAAj7C,EACA,MAEA,KAAA06B,EAAA4gB,OACAvpH,EAAArJ,QAAAuyH,EAAAj7C,EACA,MAEA,QACA5wE,QAAApK,MAAA,sCAAAiqH,MAuBA,SAAAsM,GAAAtyH,EAAAQ,GACA,OAAAR,EAAA,GAAAQ,EAAA,GAGA,SAAA+xH,GAAAvyH,EAAAQ,GACA,OAAApC,KAAAiO,IAAA7L,EAAA,IAAApC,KAAAiO,IAAArM,EAAA,IAGA,SAAAwyH,GAAA/gB,GACA,MAAAghB,EAAA,GACAhqB,EAAA,IAAAnH,aAAA,GACAoxB,EAAA,GAEA,IAAA,IAAA75H,EAAA,EAAAA,EAAA,EAAAA,IACA65H,EAAA75H,GAAA,CAAAA,EAAA,GAkFA,MAAA,CACAsiD,OAhFA,SAAAgP,EAAAg0B,EAAAmO,EAAA22B,GACA,MAAA0P,EAAAxoE,EAAAu9C,sBAGAnvG,OAAA+mC,IAAAqzF,EAAA,EAAAA,EAAAp6H,OACA,IAAAq6H,EAAAH,EAAAt0C,EAAAjjF,IAEA,QAAAokC,IAAAszF,GAAAA,EAAAr6H,SAAAA,EAAA,CAEAq6H,EAAA,GAEA,IAAA,IAAA/5H,EAAA,EAAAA,EAAAN,EAAAM,IACA+5H,EAAA/5H,GAAA,CAAAA,EAAA,GAGA45H,EAAAt0C,EAAAjjF,IAAA03H,EAIA,IAAA,IAAA/5H,EAAA,EAAAA,EAAAN,EAAAM,IAAA,CACA,MAAA6vG,EAAAkqB,EAAA/5H,GACA6vG,EAAA,GAAA7vG,EACA6vG,EAAA,GAAAiqB,EAAA95H,GAGA+5H,EAAAryH,KAAAgyH,IAEA,IAAA,IAAA15H,EAAA,EAAAA,EAAA,EAAAA,IACAA,EAAAN,GAAAq6H,EAAA/5H,GAAA,IACA65H,EAAA75H,GAAA,GAAA+5H,EAAA/5H,GAAA,GACA65H,EAAA75H,GAAA,GAAA+5H,EAAA/5H,GAAA,KAEA65H,EAAA75H,GAAA,GAAAwf,OAAAw6G,iBACAH,EAAA75H,GAAA,GAAA,GAIA65H,EAAAnyH,KAAA+xH,IACA,MAAAxqB,EAAA3pB,EAAAikB,gBAAAl1F,SACA4lH,EAAA30C,EAAAikB,gBAAAtlB,OACA,IAAAi2C,EAAA,EAEA,IAAA,IAAAl6H,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,MAAA6vG,EAAAgqB,EAAA75H,GACA2X,EAAAk4F,EAAA,GACA1wG,EAAA0wG,EAAA,GAEAl4F,IAAA6H,OAAAw6G,kBAAA76H,GACA8vG,GAAA3pB,EAAAr2E,aAAA,cAAAjP,KAAAivG,EAAAt3F,IACA2tE,EAAAz1D,aAAA,cAAA7vB,EAAAivG,EAAAt3F,IAGAsiH,GAAA30C,EAAAr2E,aAAA,cAAAjP,KAAAi6H,EAAAtiH,IACA2tE,EAAAz1D,aAAA,cAAA7vB,EAAAi6H,EAAAtiH,IAGAi4F,EAAA5vG,GAAAb,EACA+6H,GAAA/6H,IAEA8vG,IAAA,IAAA3pB,EAAA9rD,aAAA,cAAAx5B,IACAslF,EAAAujC,gBAAA,cAAA7oH,GAGAi6H,IAAA,IAAA30C,EAAA9rD,aAAA,cAAAx5B,IACAslF,EAAAujC,gBAAA,cAAA7oH,GAGA4vG,EAAA5vG,GAAA,GAOA,MAAAm6H,EAAA70C,EAAAkkB,qBAAA,EAAA,EAAA0wB,EACA9P,EAAAgQ,cAAAC,SAAAzhB,EAAA,2BAAAuhB,GACA/P,EAAAgQ,cAAAC,SAAAzhB,EAAA,wBAAAhJ,KAQA,SAAA0qB,GAAA1hB,EAAAzmB,EAAAp+C,EAAAm5E,GACA,IAAAqN,EAAA,IAAAvhB,QA+BA,SAAAwhB,EAAA95H,GACA,MAAA+5H,EAAA/5H,EAAA8N,OACAisH,EAAAv3F,oBAAA,UAAAs3F,GACAzmF,EAAAvyC,OAAAi5H,EAAA9nC,gBACA,OAAA8nC,EAAA7nC,eAAA7+C,EAAAvyC,OAAAi5H,EAAA7nC,eAGA,MAAA,CACAtwC,OArCA,SAAAgP,GACA,MAAAh8C,EAAA43G,EAAAj9G,OAAAqF,MACAgwE,EAAAh0B,EAAAg0B,SACAo1C,EAAAvoC,EAAAj1E,IAAAo0C,EAAAg0B,GAmBA,OAjBAi1C,EAAAr9G,IAAAw9G,KAAAplH,IACA68E,EAAA7vC,OAAAo4E,GACAH,EAAAj2G,IAAAo2G,EAAAplH,IAGAg8C,EAAAohC,mBACA,IAAAphC,EAAAqpE,iBAAA,UAAAH,IACAlpE,EAAAruB,iBAAA,UAAAu3F,GAGAzmF,EAAAuO,OAAAgP,EAAAqhC,eAAAimB,EAAA0T,cAEA,OAAAh7D,EAAAshC,eACA7+C,EAAAuO,OAAAgP,EAAAshC,cAAAgmB,EAAA0T,eAIAoO,GAgBA58C,QAbA,WACAy8C,EAAA,IAAAvhB,UAgBA,MAAA4hB,WAAAhhD,GACA1H,YAAA7wE,EAAA,KAAAe,EAAA,EAAAu3B,EAAA,EAAAqxC,EAAA,GACAsP,MAAA,MACAj7E,KAAA2vD,MAAA,CACA3tD,KAAAA,EACAe,MAAAA,EACAu3B,OAAAA,EACAqxC,MAAAA,GAEA3rE,KAAA66E,UAAA9K,EACA/vE,KAAA86E,UAAA/K,EACA/vE,KAAAw7H,MAAA3rD,EACA7vE,KAAAs7E,iBAAA,EACAt7E,KAAAw7E,OAAA,EACAx7E,KAAAy7E,gBAAA,EACAz7E,KAAAs8E,aAAA,GAKAi/C,GAAAxyH,UAAA0yH,sBAAA,EAEA,MAAAC,WAAAnhD,GACA1H,YAAA7wE,EAAA,KAAAe,EAAA,EAAAu3B,EAAA,EAAAqxC,EAAA,GAQAsP,MAAA,MACAj7E,KAAA2vD,MAAA,CACA3tD,KAAAA,EACAe,MAAAA,EACAu3B,OAAAA,EACAqxC,MAAAA,GAEA3rE,KAAA66E,UAAA9K,EACA/vE,KAAA86E,UAAA/K,EACA/vE,KAAAw7H,MAAA3rD,EACA7vE,KAAAs7E,iBAAA,EACAt7E,KAAAw7E,OAAA,EACAx7E,KAAAy7E,gBAAA,EACAz7E,KAAAs8E,aAAA,GAKAo/C,GAAA3yH,UAAA4yH,iBAAA,EA4CA,MAAAC,GAAA,IAAArhD,GACAshD,GAAA,IAAAN,GACAO,GAAA,IAAAJ,GACAK,GAAA,IAAAnmB,GAGAomB,GAAA,GACAC,GAAA,GAEAC,GAAA,IAAA9yB,aAAA,IACA+yB,GAAA,IAAA/yB,aAAA,GACAgzB,GAAA,IAAAhzB,aAAA,GAEA,SAAAizB,GAAAl4D,EAAAm4D,EAAA5oF,GACA,MAAA6oF,EAAAp4D,EAAA,GACA,GAAAo4D,GAAA,GAAAA,EAAA,EAAA,OAAAp4D,EAGA,MAAAt5D,EAAAyxH,EAAA5oF,EACA,IAAAntC,EAAAy1H,GAAAnxH,GAOA,QALAu8B,IAAA7gC,IACAA,EAAA,IAAA6iG,aAAAv+F,GACAmxH,GAAAnxH,GAAAtE,GAGA,IAAA+1H,EAAA,CACAC,EAAA7sH,QAAAnJ,EAAA,GAEA,IAAA,IAAA5F,EAAA,EAAAsW,EAAA,EAAAtW,IAAA27H,IAAA37H,EACAsW,GAAAy8B,EACAywB,EAAAxjE,GAAA+O,QAAAnJ,EAAA0Q,GAIA,OAAA1Q,EAGA,SAAAi2H,GAAA10H,EAAAQ,GACA,GAAAR,EAAAzH,SAAAiI,EAAAjI,OAAA,OAAA,EAEA,IAAA,IAAAM,EAAA,EAAA4P,EAAAzI,EAAAzH,OAAAM,EAAA4P,EAAA5P,IACA,GAAAmH,EAAAnH,KAAA2H,EAAA3H,GAAA,OAAA,EAGA,OAAA,EAGA,SAAA87H,GAAA30H,EAAAQ,GACA,IAAA,IAAA3H,EAAA,EAAA4P,EAAAjI,EAAAjI,OAAAM,EAAA4P,EAAA5P,IACAmH,EAAAnH,GAAA2H,EAAA3H,GAKA,SAAA+7H,GAAA5gD,EAAAjxE,GACA,IAAAtE,EAAA01H,GAAApxH,QAEAu8B,IAAA7gC,IACAA,EAAA,IAAAuiG,WAAAj+F,GACAoxH,GAAApxH,GAAAtE,GAGA,IAAA,IAAA5F,EAAA,EAAAA,IAAAkK,IAAAlK,EACA4F,EAAA5F,GAAAm7E,EAAA6gD,sBAGA,OAAAp2H,EAOA,SAAAq2H,GAAArjB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAA,EAAA,KAAAjB,IACAk3G,EAAAsjB,UAAA78H,KAAA88H,KAAAz6H,GACAiB,EAAA,GAAAjB,GAIA,SAAA06H,GAAAxjB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MAEA,QAAA8jC,IAAA/kC,EAAAmF,EACAlE,EAAA,KAAAjB,EAAAmF,GAAAlE,EAAA,KAAAjB,EAAAiD,IACAi0G,EAAAyjB,UAAAh9H,KAAA88H,KAAAz6H,EAAAmF,EAAAnF,EAAAiD,GACAhC,EAAA,GAAAjB,EAAAmF,EACAlE,EAAA,GAAAjB,EAAAiD,OAEA,CACA,GAAAk3H,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAA0jB,WAAAj9H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAIA,SAAA66H,GAAA3jB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MAEA,QAAA8jC,IAAA/kC,EAAAmF,EACAlE,EAAA,KAAAjB,EAAAmF,GAAAlE,EAAA,KAAAjB,EAAAiD,GAAAhC,EAAA,KAAAjB,EAAA48B,IACAs6E,EAAA4jB,UAAAn9H,KAAA88H,KAAAz6H,EAAAmF,EAAAnF,EAAAiD,EAAAjD,EAAA48B,GACA37B,EAAA,GAAAjB,EAAAmF,EACAlE,EAAA,GAAAjB,EAAAiD,EACAhC,EAAA,GAAAjB,EAAA48B,QAEA,QAAAmI,IAAA/kC,EAAAkE,EACAjD,EAAA,KAAAjB,EAAAkE,GAAAjD,EAAA,KAAAjB,EAAA0d,GAAAzc,EAAA,KAAAjB,EAAAiG,IACAixG,EAAA4jB,UAAAn9H,KAAA88H,KAAAz6H,EAAAkE,EAAAlE,EAAA0d,EAAA1d,EAAAiG,GACAhF,EAAA,GAAAjB,EAAAkE,EACAjD,EAAA,GAAAjB,EAAA0d,EACAzc,EAAA,GAAAjB,EAAAiG,OAEA,CACA,GAAAk0H,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAA6jB,WAAAp9H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAIA,SAAAg7H,GAAA9jB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MAEA,QAAA8jC,IAAA/kC,EAAAmF,EACAlE,EAAA,KAAAjB,EAAAmF,GAAAlE,EAAA,KAAAjB,EAAAiD,GAAAhC,EAAA,KAAAjB,EAAA48B,GAAA37B,EAAA,KAAAjB,EAAA4zE,IACAsjC,EAAA+jB,UAAAt9H,KAAA88H,KAAAz6H,EAAAmF,EAAAnF,EAAAiD,EAAAjD,EAAA48B,EAAA58B,EAAA4zE,GACA3yE,EAAA,GAAAjB,EAAAmF,EACAlE,EAAA,GAAAjB,EAAAiD,EACAhC,EAAA,GAAAjB,EAAA48B,EACA37B,EAAA,GAAAjB,EAAA4zE,OAEA,CACA,GAAAumD,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAAgkB,WAAAv9H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAKA,SAAAm7H,GAAAjkB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACA+yE,EAAAh0E,EAAAg0E,SAEA,QAAAjvC,IAAAivC,EAAA,CACA,GAAAmmD,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAAkkB,iBAAAz9H,KAAA88H,MAAA,EAAAz6H,GACAo6H,GAAAn5H,EAAAjB,OACA,CACA,GAAAm6H,GAAAl5H,EAAA+yE,GAAA,OACA+lD,GAAAn3G,IAAAoxD,GACAkjC,EAAAkkB,iBAAAz9H,KAAA88H,MAAA,EAAAV,IACAK,GAAAn5H,EAAA+yE,IAIA,SAAAqnD,GAAAnkB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACA+yE,EAAAh0E,EAAAg0E,SAEA,QAAAjvC,IAAAivC,EAAA,CACA,GAAAmmD,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAAokB,iBAAA39H,KAAA88H,MAAA,EAAAz6H,GACAo6H,GAAAn5H,EAAAjB,OACA,CACA,GAAAm6H,GAAAl5H,EAAA+yE,GAAA,OACA8lD,GAAAl3G,IAAAoxD,GACAkjC,EAAAokB,iBAAA39H,KAAA88H,MAAA,EAAAX,IACAM,GAAAn5H,EAAA+yE,IAIA,SAAAunD,GAAArkB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACA+yE,EAAAh0E,EAAAg0E,SAEA,QAAAjvC,IAAAivC,EAAA,CACA,GAAAmmD,GAAAl5H,EAAAjB,GAAA,OACAk3G,EAAAskB,iBAAA79H,KAAA88H,MAAA,EAAAz6H,GACAo6H,GAAAn5H,EAAAjB,OACA,CACA,GAAAm6H,GAAAl5H,EAAA+yE,GAAA,OACA6lD,GAAAj3G,IAAAoxD,GACAkjC,EAAAskB,iBAAA79H,KAAA88H,MAAA,EAAAZ,IACAO,GAAAn5H,EAAA+yE,IAKA,SAAAynD,GAAAvkB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAA,EAAA,KAAAjB,IACAk3G,EAAAwkB,UAAA/9H,KAAA88H,KAAAz6H,GACAiB,EAAA,GAAAjB,GAIA,SAAA27H,GAAAzkB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAA0kB,WAAAj+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAGA,SAAA67H,GAAA3kB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAA4kB,WAAAn+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAGA,SAAA+7H,GAAA7kB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAA8kB,WAAAr+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAIA,SAAAi8H,GAAA/kB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAA,EAAA,KAAAjB,IACAk3G,EAAAglB,WAAAv+H,KAAA88H,KAAAz6H,GACAiB,EAAA,GAAAjB,GAIA,SAAAm8H,GAAAjlB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAAklB,YAAAz+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAGA,SAAAq8H,GAAAnlB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAAolB,YAAA3+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAGA,SAAAu8H,GAAArlB,EAAAl3G,GACA,MAAAiB,EAAAtD,KAAAsD,MACAk5H,GAAAl5H,EAAAjB,KACAk3G,EAAAslB,YAAA7+H,KAAA88H,KAAAz6H,GACAo6H,GAAAn5H,EAAAjB,IAIA,SAAAy8H,GAAAvlB,EAAAl3G,EAAAy5E,GACA,MAAAx4E,EAAAtD,KAAAsD,MACAuuB,EAAAiqD,EAAA6gD,sBAEAr5H,EAAA,KAAAuuB,IACA0nF,EAAAwkB,UAAA/9H,KAAA88H,KAAAjrG,GACAvuB,EAAA,GAAAuuB,GAGAiqD,EAAAijD,iBAAA18H,GAAAu5H,GAAA/pG,GAGA,SAAAmtG,GAAAzlB,EAAAl3G,EAAAy5E,GACA,MAAAx4E,EAAAtD,KAAAsD,MACAuuB,EAAAiqD,EAAA6gD,sBAEAr5H,EAAA,KAAAuuB,IACA0nF,EAAAwkB,UAAA/9H,KAAA88H,KAAAjrG,GACAvuB,EAAA,GAAAuuB,GAGAiqD,EAAAmjD,aAAA58H,GAAAy5H,GAAAjqG,GAGA,SAAAqtG,GAAA3lB,EAAAl3G,EAAAy5E,GACA,MAAAx4E,EAAAtD,KAAAsD,MACAuuB,EAAAiqD,EAAA6gD,sBAEAr5H,EAAA,KAAAuuB,IACA0nF,EAAAwkB,UAAA/9H,KAAA88H,KAAAjrG,GACAvuB,EAAA,GAAAuuB,GAGAiqD,EAAAqjD,mBAAA98H,GAAA05H,GAAAlqG,GAGA,SAAAutG,GAAA7lB,EAAAl3G,EAAAy5E,GACA,MAAAx4E,EAAAtD,KAAAsD,MACAuuB,EAAAiqD,EAAA6gD,sBAEAr5H,EAAA,KAAAuuB,IACA0nF,EAAAwkB,UAAA/9H,KAAA88H,KAAAjrG,GACAvuB,EAAA,GAAAuuB,GAGAiqD,EAAAujD,kBAAAh9H,GAAAw5H,GAAAhqG,GAiHA,SAAAytG,GAAA/lB,EAAAl3G,GACAk3G,EAAAgmB,WAAAv/H,KAAA88H,KAAAz6H,GAIA,SAAAm9H,GAAAjmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,GACAm2D,EAAA0jB,WAAAj9H,KAAA88H,KAAA96H,GAGA,SAAAy9H,GAAAlmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,GACAm2D,EAAA6jB,WAAAp9H,KAAA88H,KAAA96H,GAGA,SAAA09H,GAAAnmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,GACAm2D,EAAAgkB,WAAAv9H,KAAA88H,KAAA96H,GAIA,SAAA29H,GAAApmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,GACAm2D,EAAAkkB,iBAAAz9H,KAAA88H,MAAA,EAAA96H,GAGA,SAAA49H,GAAArmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,GACAm2D,EAAAokB,iBAAA39H,KAAA88H,MAAA,EAAA96H,GAGA,SAAA69H,GAAAtmB,EAAAl3G,GACA,MAAAL,EAAAq6H,GAAAh6H,EAAArC,KAAAojD,KAAA,IACAm2D,EAAAskB,iBAAA79H,KAAA88H,MAAA,EAAA96H,GAIA,SAAA89H,GAAAvmB,EAAAl3G,GACAk3G,EAAAwmB,WAAA//H,KAAA88H,KAAAz6H,GAIA,SAAA29H,GAAAzmB,EAAAl3G,GACAk3G,EAAA0kB,WAAAj+H,KAAA88H,KAAAz6H,GAGA,SAAA49H,GAAA1mB,EAAAl3G,GACAk3G,EAAA4kB,WAAAn+H,KAAA88H,KAAAz6H,GAGA,SAAA69H,GAAA3mB,EAAAl3G,GACAk3G,EAAA8kB,WAAAr+H,KAAA88H,KAAAz6H,GAIA,SAAA89H,GAAA5mB,EAAAl3G,GACAk3G,EAAA6mB,YAAApgI,KAAA88H,KAAAz6H,GAIA,SAAAg+H,GAAA9mB,EAAAl3G,GACAk3G,EAAAklB,YAAAz+H,KAAA88H,KAAAz6H,GAGA,SAAAi+H,GAAA/mB,EAAAl3G,GACAk3G,EAAAolB,YAAA3+H,KAAA88H,KAAAz6H,GAGA,SAAAk+H,GAAAhnB,EAAAl3G,GACAk3G,EAAAslB,YAAA7+H,KAAA88H,KAAAz6H,GAIA,SAAAm+H,GAAAjnB,EAAAl3G,EAAAy5E,GACA,MAAAjxE,EAAAxI,EAAAhC,OACA+K,EAAAsxH,GAAA5gD,EAAAjxE,GACA0uG,EAAAwmB,WAAA//H,KAAA88H,KAAA1xH,GAEA,IAAA,IAAAzK,EAAA,EAAAA,IAAAkK,IAAAlK,EACAm7E,EAAAijD,iBAAA18H,EAAA1B,IAAAi7H,GAAAxwH,EAAAzK,IAIA,SAAA8/H,GAAAlnB,EAAAl3G,EAAAy5E,GACA,MAAAjxE,EAAAxI,EAAAhC,OACA+K,EAAAsxH,GAAA5gD,EAAAjxE,GACA0uG,EAAAwmB,WAAA//H,KAAA88H,KAAA1xH,GAEA,IAAA,IAAAzK,EAAA,EAAAA,IAAAkK,IAAAlK,EACAm7E,EAAAqjD,mBAAA98H,EAAA1B,IAAAo7H,GAAA3wH,EAAAzK,IAgGA,SAAA+/H,GAAA19H,EAAA29H,EAAA7D,GACA98H,KAAAgD,GAAAA,EACAhD,KAAA88H,KAAAA,EACA98H,KAAAsD,MAAA,GACAtD,KAAAg7H,SA1SA,SAAAj7H,GACA,OAAAA,GACA,KAAA,KACA,OAAA68H,GAGA,KAAA,MACA,OAAAG,GAGA,KAAA,MACA,OAAAG,GAGA,KAAA,MACA,OAAAG,GAGA,KAAA,MACA,OAAAG,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,KACA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,KAAA,MACA,OAAAE,GAGA,KAAA,KACA,OAAAE,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAE,GAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAE,GAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAE,GAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAE,IAkMAwB,CAAAD,EAAA5gI,MAGA,SAAA8gI,GAAA79H,EAAA29H,EAAA7D,GACA98H,KAAAgD,GAAAA,EACAhD,KAAA88H,KAAAA,EACA98H,KAAAsD,MAAA,GACAtD,KAAAojD,KAAAu9E,EAAAv9E,KACApjD,KAAAg7H,SAvGA,SAAAj7H,GACA,OAAAA,GACA,KAAA,KACA,OAAAu/H,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,KACA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,KAAA,MACA,OAAAC,GAGA,KAAA,KACA,OAAAC,GAGA,KAAA,MACA,OAAAE,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MACA,OAAAC,GAGA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAC,GAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,KAAA,MAEA,OAAAC,IAiBAK,CAAAH,EAAA5gI,MAaA,SAAAghI,GAAA/9H,GACAhD,KAAAgD,GAAAA,EACAhD,KAAAghI,IAAA,GACAhhI,KAAAkgB,IAAA,GAbA2gH,GAAA93H,UAAAk4H,YAAA,SAAAj/H,GACA,MAAAsB,EAAAtD,KAAAsD,MAEAtB,aAAAonG,cAAA9lG,EAAAjD,SAAA2B,EAAA3B,SACAL,KAAAsD,MAAA,IAAA8lG,aAAApnG,EAAA3B,SAGAo8H,GAAAn5H,EAAAtB,IASA++H,GAAAh4H,UAAAiyH,SAAA,SAAAzhB,EAAAz5G,EAAAg8E,GACA,MAAAklD,EAAAhhI,KAAAghI,IAEA,IAAA,IAAArgI,EAAA,EAAAkK,EAAAm2H,EAAA3gI,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA6Z,EAAAwmH,EAAArgI,GACA6Z,EAAAwgH,SAAAzhB,EAAAz5G,EAAA0a,EAAAxX,IAAA84E,KAMA,MAAAolD,GAAA,sBASA,SAAAC,GAAAC,EAAAC,GACAD,EAAAJ,IAAAxgI,KAAA6gI,GACAD,EAAAlhH,IAAAmhH,EAAAr+H,IAAAq+H,EAGA,SAAAC,GAAAX,EAAA7D,EAAAsE,GACA,MAAA9qF,EAAAqqF,EAAAzgI,KACAqhI,EAAAjrF,EAAAj2C,OAIA,IAFA6gI,GAAAjgH,UAAA,IAEA,CACA,MAAA9P,EAAA+vH,GAAA7oH,KAAAi+B,GACAkrF,EAAAN,GAAAjgH,UACA,IAAAje,EAAAmO,EAAA,GACA,MAAAswH,EAAA,MAAAtwH,EAAA,GACAuwH,EAAAvwH,EAAA,GAGA,GAFAswH,IAAAz+H,GAAA,QAEAokC,IAAAs6F,GAAA,MAAAA,GAAAF,EAAA,IAAAD,EAAA,CAEAJ,GAAAC,OAAAh6F,IAAAs6F,EAAA,IAAAhB,GAAA19H,EAAA29H,EAAA7D,GAAA,IAAA+D,GAAA79H,EAAA29H,EAAA7D,IACA,MACA,CAGA,IAAA91H,EADAo6H,EAAAlhH,IACAld,QAEAokC,IAAApgC,IACAA,EAAA,IAAA+5H,GAAA/9H,GACAm+H,GAAAC,EAAAp6H,IAGAo6H,EAAAp6H,IAMA,SAAA26H,GAAApoB,EAAAwR,GACA/qH,KAAAghI,IAAA,GACAhhI,KAAAkgB,IAAA,GACA,MAAArV,EAAA0uG,EAAAqoB,oBAAA7W,EAAAxR,EAAAsoB,iBAEA,IAAA,IAAAlhI,EAAA,EAAAA,EAAAkK,IAAAlK,EAAA,CACA,MAAAktH,EAAAtU,EAAAuoB,iBAAA/W,EAAApqH,GAEA2gI,GAAAzT,EADAtU,EAAAwoB,mBAAAhX,EAAA8C,EAAA3tH,MACAF,OAsCA,SAAAgiI,GAAAzoB,EAAAx5G,EAAAimG,GACA,MAAAkQ,EAAAqD,EAAA0oB,aAAAliI,GAGA,OAFAw5G,EAAA2oB,aAAAhsB,EAAAlQ,GACAuT,EAAA4oB,cAAAjsB,GACAA,EAtCAyrB,GAAA54H,UAAAiyH,SAAA,SAAAzhB,EAAAr5G,EAAAJ,EAAAg8E,GACA,MAAAthE,EAAAxa,KAAAkgB,IAAAhgB,QACAknC,IAAA5sB,GAAAA,EAAAwgH,SAAAzhB,EAAAz5G,EAAAg8E,IAGA6lD,GAAA54H,UAAAq5H,YAAA,SAAA7oB,EAAAtnD,EAAA/xD,GACA,MAAAmC,EAAA4vD,EAAA/xD,QACAknC,IAAA/kC,GAAArC,KAAAg7H,SAAAzhB,EAAAr5G,EAAAmC,IAIAs/H,GAAAU,OAAA,SAAA9oB,EAAAynB,EAAAzgI,EAAAu7E,GACA,IAAA,IAAAn7E,EAAA,EAAAkK,EAAAm2H,EAAA3gI,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA6Z,EAAAwmH,EAAArgI,GACA0B,EAAA9B,EAAAia,EAAAxX,KAEA,IAAAX,EAAAi6E,aAEA9hE,EAAAwgH,SAAAzhB,EAAAl3G,EAAAvC,MAAAg8E,KAKA6lD,GAAAW,aAAA,SAAAtB,EAAAzgI,GACA,MAAAgG,EAAA,GAEA,IAAA,IAAA5F,EAAA,EAAAkK,EAAAm2H,EAAA3gI,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA6Z,EAAAwmH,EAAArgI,GACA6Z,EAAAxX,MAAAzC,GAAAgG,EAAA/F,KAAAga,GAGA,OAAAjU,GAUA,IAAAg8H,GAAA,EAYA,SAAAC,GAAAxnD,GACA,OAAAA,GACA,KAAA/I,EACA,MAAA,CAAA,SAAA,aAEA,KAAAC,EACA,MAAA,CAAA,OAAA,aAEA,KAAAE,EACA,MAAA,CAAA,OAAA,aAEA,KAAAC,EACA,MAAA,CAAA,OAAA,kBAEA,KAAAC,EACA,MAAA,CAAA,OAAA,mBAEA,KAAAC,EACA,MAAA,CAAA,OAAA,oBAEA,KAAAJ,EACA,MAAA,CAAA,QAAA,oCAEA,KAvtaA,KAwtaA,MAAA,CAAA,SAAA,aAEA,QAEA,OADAlkE,QAAAC,KAAA,4CAAA8sE,GACA,CAAA,SAAA,cAIA,SAAAynD,GAAAlpB,EAAArD,EAAAn2G,GACA,MAAA2iI,EAAAnpB,EAAAopB,mBAAAzsB,EAAAqD,EAAAqpB,gBACAC,EAAAtpB,EAAAupB,iBAAA5sB,GAAAr1G,OACA,OAAA6hI,GAAA,KAAAG,EAAA,GAGA9iI,EAAAke,cAAA,OAAA4kH,EAAA,OAhDA,SAAA78B,GACA,MAAA2zB,EAAA3zB,EAAAj2F,MAAA,MAEA,IAAA,IAAApP,EAAA,EAAAA,EAAAg5H,EAAAt5H,OAAAM,IACAg5H,EAAAh5H,GAAAA,EAAA,EAAA,KAAAg5H,EAAAh5H,GAGA,OAAAg5H,EAAAj5H,KAAA,MAyCAqiI,CAAAxpB,EAAAypB,gBAAA9sB,IAGA,SAAA+sB,GAAAC,EAAAloD,GACA,MAAA3N,EAAAm1D,GAAAxnD,GACA,MAAA,QAAAkoD,EAAA,2BAAA71D,EAAA,GAAA,WAAAA,EAAA,GAAA,MAGA,SAAA81D,GAAAD,EAAAloD,GACA,MAAA3N,EAAAm1D,GAAAxnD,GACA,MAAA,QAAAkoD,EAAA,mCAAA71D,EAAA,GAAAA,EAAA,GAAA,MAGA,SAAA+1D,GAAAF,EAAAvZ,GACA,IAAA0Z,EAEA,OAAA1Z,GACA,KAp2aA,EAq2aA0Z,EAAA,SACA,MAEA,KAv2aA,EAw2aAA,EAAA,WACA,MAEA,KA12aA,EA22aAA,EAAA,kBACA,MAEA,KA72aA,EA82aAA,EAAA,aACA,MAEA,KAh3aA,EAi3aAA,EAAA,SACA,MAEA,QACAp1H,QAAAC,KAAA,+CAAAy7G,GACA0Z,EAAA,SAGA,MAAA,QAAAH,EAAA,2BAAAG,EAAA,0BA0CA,SAAAC,GAAAt9B,GACA,MAAA,KAAAA,EAGA,SAAAu9B,GAAAv9B,EAAAlS,GACA,OAAAkS,EAAAxuF,QAAA,kBAAAs8E,EAAA0vC,cAAAhsH,QAAA,mBAAAs8E,EAAA2vC,eAAAjsH,QAAA,wBAAAs8E,EAAA4vC,mBAAAlsH,QAAA,oBAAAs8E,EAAA6vC,gBAAAnsH,QAAA,mBAAAs8E,EAAA8vC,eAAApsH,QAAA,yBAAAs8E,EAAA+vC,oBAAArsH,QAAA,0BAAAs8E,EAAAgwC,qBAAAtsH,QAAA,2BAAAs8E,EAAAiwC,sBAGA,SAAAC,GAAAh+B,EAAAlS,GACA,OAAAkS,EAAAxuF,QAAA,uBAAAs8E,EAAAmwC,mBAAAzsH,QAAA,yBAAAs8E,EAAAmwC,kBAAAnwC,EAAAowC,qBAIA,MAAAC,GAAA,mCAEA,SAAAC,GAAAp+B,GACA,OAAAA,EAAAxuF,QAAA2sH,GAAAE,IAGA,SAAAA,GAAAlzH,EAAAmzH,GACA,MAAAt+B,EAAAsV,GAAAgpB,GAEA,QAAAl9F,IAAA4+D,EACA,MAAA,IAAAl8C,MAAA,6BAAAw6E,EAAA,KAGA,OAAAF,GAAAp+B,GAIA,MAAAu+B,GAAA,+FACAC,GAAA,+IAEA,SAAAC,GAAAz+B,GACA,OAAAA,EAAAxuF,QAAAgtH,GAAAE,IAAAltH,QAAA+sH,GAAAI,IAGA,SAAAA,GAAAxzH,EAAA1K,EAAAC,EAAAk+H,GAEA,OADA32H,QAAAC,KAAA,uHACAw2H,GAAAvzH,EAAA1K,EAAAC,EAAAk+H,GAGA,SAAAF,GAAAvzH,EAAA1K,EAAAC,EAAAk+H,GACA,IAAA5+B,EAAA,GAEA,IAAA,IAAArlG,EAAAsf,SAAAxZ,GAAA9F,EAAAsf,SAAAvZ,GAAA/F,IACAqlG,GAAA4+B,EAAAptH,QAAA,eAAA,KAAA7W,EAAA,MAAA6W,QAAA,uBAAA7W,GAGA,OAAAqlG,EAIA,SAAA6+B,GAAA/wC,GACA,IAAAgxC,EAAA,aAAAhxC,EAAA4E,UAAA,sBAAA5E,EAAA4E,UAAA,QAUA,MARA,UAAA5E,EAAA4E,UACAosC,GAAA,2BACA,YAAAhxC,EAAA4E,UACAosC,GAAA,6BACA,SAAAhxC,EAAA4E,YACAosC,GAAA,2BAGAA,EA0EA,SAAAC,GAAA3zG,EAAA4zG,EAAAlxC,EAAAo2B,GAGA,MAAA3Q,EAAAnoF,EAAA6oD,aACAw4B,EAAA3e,EAAA2e,QACA,IAAAC,EAAA5e,EAAA4e,aACAC,EAAA7e,EAAA6e,eACA,MAAAsyB,EA9EA,SAAAnxC,GACA,IAAAmxC,EAAA,uBAUA,OA/hbA,IAuhbAnxC,EAAAoxC,cACAD,EAAA,qBAvhbA,IAwhbAnxC,EAAAoxC,cACAD,EAAA,0BAxhbA,IAyhbAnxC,EAAAoxC,gBACAD,EAAA,sBAGAA,EAmEAE,CAAArxC,GACAsxC,EAjEA,SAAAtxC,GACA,IAAAsxC,EAAA,mBAEA,GAAAtxC,EAAA8H,OACA,OAAA9H,EAAAuxC,YACA,KAAA/1D,EACA,KAAAC,EACA61D,EAAA,mBACA,MAEA,KAAA11D,EACA,KAAAC,EACAy1D,EAAA,sBAKA,OAAAA,EAgDAE,CAAAxxC,GACAyxC,EA9CA,SAAAzxC,GACA,IAAAyxC,EAAA,yBAEA,GAAAzxC,EAAA8H,OACA,OAAA9H,EAAAuxC,YACA,KAAA91D,EACA,KAAAI,EACA41D,EAAA,yBAKA,OAAAA,EAkCAC,CAAA1xC,GACA2xC,EAhCA,SAAA3xC,GACA,IAAA2xC,EAAA,uBAEA,GAAA3xC,EAAA8H,OACA,OAAA9H,EAAA+H,SACA,KApibA,EAqibA4pC,EAAA,2BACA,MAEA,KAvibA,EAwibAA,EAAA,sBACA,MAEA,KA1ibA,EA2ibAA,EAAA,sBAKA,OAAAA,EAaAC,CAAA5xC,GACA6xC,EAAAv0G,EAAA+0E,YAAA,EAAA/0E,EAAA+0E,YAAA,EACAy/B,EAAA9xC,EAAA2lB,SAAA,GA7LA,SAAA3lB,GAEA,MADA,CAAAA,EAAA+xC,sBAAA/xC,EAAAgyC,cAAAhyC,EAAAgH,SAAAhH,EAAAiyC,uBAAAjyC,EAAAwG,oBAAAxG,EAAAwF,aAAA,aAAAxF,EAAAkyC,SAAA,kDAAA,IAAAlyC,EAAAmyC,oBAAAnyC,EAAAg7B,yBAAAh7B,EAAAoyC,2BAAA,wCAAA,GAAApyC,EAAAqyC,sBAAAryC,EAAAsyC,6BAAA,2CAAA,IAAAtyC,EAAAuyC,2BAAAvyC,EAAA8H,QAAA9H,EAAAoI,eAAApI,EAAAwyC,kCAAA,gDAAA,IACAlmI,OAAAkjI,IAAA5iI,KAAA,MA2LA6lI,CAAAzyC,GACA0yC,EAzLA,SAAA/zB,GACA,MAAAg0B,EAAA,GAEA,IAAA,MAAAvmI,KAAAuyG,EAAA,CACA,MAAA3yG,EAAA2yG,EAAAvyG,IACA,IAAAJ,GACA2mI,EAAAjmI,KAAA,WAAAN,EAAA,IAAAJ,GAGA,OAAA2mI,EAAA/lI,KAAA,MAgLAgmI,CAAAj0B,GACAsY,EAAAxR,EAAAotB,gBACA,IAAAC,EAAAC,EACAC,EAAAhzC,EAAAwf,YAAA,YAAAxf,EAAAwf,YAAA,KAAA,GAEAxf,EAAA++B,qBACA+T,EAAA,CAAAJ,GAAApmI,OAAAkjI,IAAA5iI,KAAA,MAEAkmI,EAAAvmI,OAAA,IACAumI,GAAA,MAGAC,EAAA,CAAAjB,EAAAY,GAAApmI,OAAAkjI,IAAA5iI,KAAA,MAEAmmI,EAAAxmI,OAAA,IACAwmI,GAAA,QAGAD,EAAA,CAAA/B,GAAA/wC,GAAA,uBAAAA,EAAAizC,WAAAP,EAAA1yC,EAAAkzC,WAAA,yBAAA,GAAAlzC,EAAAmzC,gBAAA,+BAAA,GAAAnzC,EAAAozC,uBAAA,0BAAA,GAAA,wBAAAvB,EAAA,qBAAA7xC,EAAAqzC,SAAArzC,EAAAszC,QAAAtzC,EAAAmD,IAAA,kBAAA,GAAAnD,EAAAszC,QAAAtzC,EAAAuzC,QAAA,mBAAA,GAAAvzC,EAAA5zE,IAAA,kBAAA,GAAA4zE,EAAA8H,OAAA,qBAAA,GAAA9H,EAAA8H,OAAA,WAAA2pC,EAAA,GAAAzxC,EAAA4G,SAAA,uBAAA,GAAA5G,EAAA8G,MAAA,oBAAA,GAAA9G,EAAA0H,YAAA,0BAAA,GAAA1H,EAAAgH,QAAA,sBAAA,GAAAhH,EAAAkH,UAAA,wBAAA,GAAAlH,EAAAkH,WAAAlH,EAAAwzC,qBAAA,gCAAA,GAAAxzC,EAAAkH,WAAAlH,EAAAiyC,sBAAA,iCAAA,GAAAjyC,EAAAsG,aAAA,2BAAA,GAAAtG,EAAAuG,sBAAA,qCAAA,GAAAvG,EAAAwG,mBAAA,kCAAA,GAAAxG,EAAAqH,iBAAArH,EAAAozC,uBAAA,8BAAA,GAAApzC,EAAA2H,YAAA,0BAAA,GAAA3H,EAAA4H,qBAAA,mCAAA,GAAA5H,EAAA6H,gBAAA,8BAAA,GAAA7H,EAAAwH,aAAA,2BAAA,GAAAxH,EAAAyH,aAAA,2BAAA,GAAAzH,EAAA2G,SAAA,uBAAA,GAAA3G,EAAAoI,aAAA,2BAAA,GAAApI,EAAAqI,gBAAA,8BAAA,GAAArI,EAAAuI,aAAA,2BAAA,GAAAvI,EAAAyzC,eAAA,sBAAA,GAAAzzC,EAAAqD,aAAA,oBAAA,GAAArD,EAAA0zC,aAAA,0BAAA,GAAA1zC,EAAA2zC,UAAA,iBAAA,GAAA3zC,EAAA4zC,cAAA,0BAAA,GAAA5zC,EAAAwF,YAAA,sBAAA,GAAAxF,EAAA6zC,SAAA,uBAAA,GAAA7zC,EAAA8zC,iBAAA,uBAAA,GAAA9zC,EAAA8b,aAAA,2BAAA,GAAA9b,EAAA8mC,eAAA,IAAA9mC,EAAAwF,YAAA,2BAAA,GAAAxF,EAAA+zC,YAAA,uBAAA,GAAA/zC,EAAAg0C,UAAA,qBAAA,GAAAh0C,EAAAi0C,iBAAA,wBAAA,GAAAj0C,EAAAi0C,iBAAA,WAAA9C,EAAA,GAAAnxC,EAAA0I,gBAAA,8BAAA,GAAA1I,EAAAg7B,uBAAA,0BAAA,GAAAh7B,EAAAg7B,wBAAAh7B,EAAAoyC,2BAAA,8BAAA,GAAA,4BAAA,gCAAA,iCAAA,2BAAA,6BAAA,+BAAA,+BAAA,wBAAA,mCAAA,SAAA,8BAAA,kCAAA,SAAA,2BAAA,yBAAA,qBAAA,qBAAA,4BAAA,SAAA,iCAAA,0BAAA,6BAAA,0BAAA,SAAA,0BAAA,iCAAA,iCAAA,iCAAA,iCAAA,4BAAA,mCAAA,mCAAA,mCAAA,mCAAA,UAAA,mCAAA,mCAAA,mCAAA,mCAAA,WAAA,SAAA,sBAAA,8BAAA,+BAAA,SAAA,MAAA9lI,OAAAkjI,IAAA5iI,KAAA,MACAmmI,EAAA,CAAAjB,EAAAf,GAAA/wC,GAAA,uBAAAA,EAAAizC,WAAAP,EAAA,wBAAAb,EAAA7xC,EAAAszC,QAAAtzC,EAAAmD,IAAA,kBAAA,GAAAnD,EAAAszC,QAAAtzC,EAAAuzC,QAAA,mBAAA,GAAAvzC,EAAA5zE,IAAA,kBAAA,GAAA4zE,EAAA0G,OAAA,qBAAA,GAAA1G,EAAA8H,OAAA,qBAAA,GAAA9H,EAAA8H,OAAA,WAAAwpC,EAAA,GAAAtxC,EAAA8H,OAAA,WAAA2pC,EAAA,GAAAzxC,EAAA8H,OAAA,WAAA6pC,EAAA,GAAA3xC,EAAA4G,SAAA,uBAAA,GAAA5G,EAAA8G,MAAA,oBAAA,GAAA9G,EAAA0H,YAAA,0BAAA,GAAA1H,EAAAgH,QAAA,sBAAA,GAAAhH,EAAAkH,UAAA,wBAAA,GAAAlH,EAAAkH,WAAAlH,EAAAwzC,qBAAA,gCAAA,GAAAxzC,EAAAkH,WAAAlH,EAAAiyC,sBAAA,iCAAA,GAAAjyC,EAAAoG,UAAA,wBAAA,GAAApG,EAAAsG,aAAA,2BAAA,GAAAtG,EAAAuG,sBAAA,qCAAA,GAAAvG,EAAAwG,mBAAA,kCAAA,GAAAxG,EAAA2H,YAAA,0BAAA,GAAA3H,EAAA4H,qBAAA,mCAAA,GAAA5H,EAAA6H,gBAAA,8BAAA,GAAA7H,EAAAwH,aAAA,2BAAA,GAAAxH,EAAAyH,aAAA,2BAAA,GAAAzH,EAAA2G,SAAA,uBAAA,GAAA3G,EAAAqF,UAAA,wBAAA,GAAArF,EAAA6F,UAAA,oBAAA,GAAA7F,EAAAoI,aAAA,2BAAA,GAAApI,EAAAqI,gBAAA,8BAAA,GAAArI,EAAAuI,aAAA,2BAAA,GAAAvI,EAAAyzC,eAAA,sBAAA,GAAAzzC,EAAAqD,cAAArD,EAAAmzC,gBAAA,oBAAA,GAAAnzC,EAAA0zC,aAAA,0BAAA,GAAA1zC,EAAA2zC,UAAA,iBAAA,GAAA3zC,EAAA4zC,cAAA,0BAAA,GAAA5zC,EAAAmI,YAAA,0BAAA,GAAAnI,EAAAwF,YAAA,sBAAA,GAAAxF,EAAA+zC,YAAA,uBAAA,GAAA/zC,EAAAg0C,UAAA,qBAAA,GAAAh0C,EAAAi0C,iBAAA,wBAAA,GAAAj0C,EAAAi0C,iBAAA,WAAA9C,EAAA,GAAAnxC,EAAAkF,mBAAA,8BAAA,GAAAlF,EAAAk0C,wBAAA,oCAAA,GAAAl0C,EAAAg7B,uBAAA,0BAAA,GAAAh7B,EAAAg7B,wBAAAh7B,EAAAoyC,2BAAA,8BAAA,IAAApyC,EAAAuyC,2BAAAvyC,EAAA8H,SAAA9H,EAAAwyC,kCAAA,0BAAA,GAAA,2BAAA,+BAAA,+BAllbA,IAklbAxyC,EAAA61B,YAAA,uBAAA,GAllbA,IAklbA71B,EAAA61B,YAAArO,GAAA,0BAAA,GAllbA,IAmlbAxnB,EAAA61B,YAAAyZ,GAAA,cAAAtvC,EAAA61B,aAAA,GAAA71B,EAAAgF,UAAA,oBAAA,GAAAhF,EAAA9hE,SAAA2+C,EAAA,iBAAA,GAAA2qC,GAAA,wBACAxnB,EAAA5zE,IAAA+iH,GAAA,mBAAAnvC,EAAAm0C,aAAA,GAAAn0C,EAAA0G,OAAAyoC,GAAA,sBAAAnvC,EAAAo0C,gBAAA,GAAAp0C,EAAA8H,OAAAqnC,GAAA,sBAAAnvC,EAAAq0C,gBAAA,GAAAr0C,EAAA0H,YAAAynC,GAAA,2BAAAnvC,EAAAs0C,qBAAA,GAAAt0C,EAAA6H,gBAAAsnC,GAAA,+BAAAnvC,EAAAu0C,yBAAA,GAAAv0C,EAAA4G,SAAAuoC,GAAA,wBAAAnvC,EAAAw0C,kBAAA,GAAAnF,GAAA,sBAAArvC,EAAAygC,gBAAAzgC,EAAAy0C,aAAA,yBAAAz0C,EAAAy0C,aAAA,GAAA,MAAAnoI,OAAAkjI,IAAA5iI,KAAA,OAGAgyG,EAAA0xB,GAAA1xB,GACAA,EAAA6wB,GAAA7wB,EAAA5e,GACA4e,EAAAsxB,GAAAtxB,EAAA5e,GACA6e,EAAAyxB,GAAAzxB,GACAA,EAAA4wB,GAAA5wB,EAAA7e,GACA6e,EAAAqxB,GAAArxB,EAAA7e,GACA4e,EAAA+xB,GAAA/xB,GACAC,EAAA8xB,GAAA9xB,GAEA7e,EAAA2lB,WAAA,IAAA3lB,EAAA++B,sBAEAiU,EAAA,oBACAF,EAAA,CAAA,uBAAA,sBAAA,6BAAAlmI,KAAA,MAAA,KAAAkmI,EACAC,EAAA,CAAA,qBAAA/yC,EAAAwf,cAAA3gC,GAAA,GAAA,+BAAAmhB,EAAAwf,cAAA3gC,GAAA,GAAA,oCAAA,uCAAA,4BAAA,8BAAA,oCAAA,qCAAA,6CAAA,uCAAA,uCAAA,+CAAA,0CAAAjyE,KAAA,MAAA,KAAAmmI,GAGA,MAAA2B,EAAA1B,EAAAF,EAAAl0B,EACA+1B,EAAA3B,EAAAD,EAAAl0B,EAGA+1B,EAAA1G,GAAAzoB,EAAAA,EAAAgV,cAAAia,GACAG,EAAA3G,GAAAzoB,EAAAA,EAAAkV,gBAAAga,GAaA,GAZAlvB,EAAAqvB,aAAA7d,EAAA2d,GACAnvB,EAAAqvB,aAAA7d,EAAA4d,QAEAvhG,IAAA0sD,EAAAsf,oBACAmG,EAAAsvB,mBAAA9d,EAAA,EAAAj3B,EAAAsf,sBACA,IAAAtf,EAAA8b,cAEA2J,EAAAsvB,mBAAA9d,EAAA,EAAA,YAGAxR,EAAAuvB,YAAA/d,GAEA35F,EAAA23G,MAAAC,kBAAA,CACA,MAAAC,EAAA1vB,EAAA2vB,kBAAAne,GAAAlqH,OACAsoI,EAAA5vB,EAAAupB,iBAAA4F,GAAA7nI,OACAuoI,EAAA7vB,EAAAupB,iBAAA6F,GAAA9nI,OACA,IAAAwoI,GAAA,EACAC,GAAA,EAEA,IAAA,IAAA/vB,EAAAqoB,oBAAA7W,EAAAxR,EAAAgwB,aAAA,CACAF,GAAA,EACA,MAAAG,EAAA/G,GAAAlpB,EAAAmvB,EAAA,UACAe,EAAAhH,GAAAlpB,EAAAovB,EAAA,YACA16H,QAAApK,MAAA,oCAAA01G,EAAAmwB,WAAA,sBAAAnwB,EAAAqoB,oBAAA7W,EAAAxR,EAAAowB,iBAAA,yBAAAV,EAAA,KAAAO,EAAA,KAAAC,OACA,KAAAR,EACAh7H,QAAAC,KAAA,wCAAA+6H,GACA,KAAAE,GAAA,KAAAC,IACAE,GAAA,GAGAA,IACAtpI,KAAA4pI,YAAA,CACAP,SAAAA,EACAJ,WAAAA,EACAv2B,aAAA,CACA/rG,IAAAwiI,EACAz6E,OAAAk4E,GAEAj0B,eAAA,CACAhsG,IAAAyiI,EACA16E,OAAAm4E,KAaA,IAAAgD,EAWA3d,EAyBA,OAvCA3S,EAAAuwB,aAAApB,GACAnvB,EAAAuwB,aAAAnB,GAIA3oI,KAAA+6H,YAAA,WAKA,YAJA3zF,IAAAyiG,IACAA,EAAA,IAAAlI,GAAApoB,EAAAwR,IAGA8e,GAMA7pI,KAAA2sH,cAAA,WAKA,YAJAvlF,IAAA8kF,IACAA,EA/RA,SAAA3S,EAAAwR,GACA,MAAAr2E,EAAA,GACA7pC,EAAA0uG,EAAAqoB,oBAAA7W,EAAAxR,EAAAwwB,mBAEA,IAAA,IAAAppI,EAAA,EAAAA,EAAAkK,EAAAlK,IAAA,CACA,MAAAktH,EAAAtU,EAAAywB,gBAAAjf,EAAApqH,GACAT,EAAA2tH,EAAA3tH,KACA,IAAA6sH,EAAA,EACAc,EAAA9tH,OAAAw5G,EAAA0wB,aAAAld,EAAA,GACAc,EAAA9tH,OAAAw5G,EAAA2wB,aAAAnd,EAAA,GACAc,EAAA9tH,OAAAw5G,EAAA4wB,aAAApd,EAAA,GAEAr4E,EAAAx0C,GAAA,CACAH,KAAA8tH,EAAA9tH,KACAykC,SAAA+0E,EAAA6wB,kBAAArf,EAAA7qH,GACA6sH,aAAAA,GAIA,OAAAr4E,EA4QA21F,CAAA9wB,EAAAwR,IAGAmB,GAIAlsH,KAAAk0C,QAAA,WACAg2E,EAAAyD,uBAAA3tH,MACAu5G,EAAA+wB,cAAAvf,GACA/qH,KAAA+qH,aAAA3jF,GAIApnC,KAAAE,KAAA4zF,EAAAizC,WACA/mI,KAAAgD,GAAAu/H,KACAviI,KAAAglI,SAAAA,EACAhlI,KAAAuqI,UAAA,EACAvqI,KAAA+qH,QAAAA,EACA/qH,KAAA0yG,aAAAg2B,EACA1oI,KAAA2yG,eAAAg2B,EACA3oI,KAGA,SAAAwqI,GAAAp5G,EAAA62F,EAAAwiB,EAAA33B,EAAA0G,EAAA0Q,EAAArX,GACA,MAAA+mB,EAAA,GACAngB,EAAAD,EAAAC,SACAqV,EAAAtV,EAAAsV,uBACAoB,EAAA1W,EAAA0W,oBACAV,EAAAhW,EAAAgW,kBACAM,EAAAtW,EAAAsW,eACA,IAAAp3B,EAAA8gB,EAAA9gB,UACA,MAAAgyC,EAAA,CACAC,kBAAA,QACAC,qBAAA,eACAC,mBAAA,SACA5jC,kBAAA,QACA6jC,oBAAA,UACAC,kBAAA,QACAC,iBAAA,OACAC,qBAAA,WACAC,qBAAA,WACAC,mBAAA,SACAC,kBAAA,QACAC,mBAAA,SACAC,eAAA,SACAC,eAAA,SACAC,eAAA,UAEAC,EAAA,CAAA,YAAA,WAAA,yBAAA,iBAAA,aAAA,kBAAA,MAAA,cAAA,SAAA,iBAAA,SAAA,aAAA,iBAAA,eAAA,WAAA,mBAAA,QAAA,cAAA,sBAAA,UAAA,YAAA,uBAAA,wBAAA,YAAA,eAAA,wBAAA,qBAAA,kBAAA,cAAA,uBAAA,kBAAA,0BAAA,eAAA,eAAA,cAAA,WAAA,YAAA,UAAA,eAAA,eAAA,iBAAA,YAAA,gBAAA,MAAA,SAAA,UAAA,cAAA,kBAAA,yBAAA,WAAA,WAAA,mBAAA,eAAA,eAAA,qBAAA,eAAA,iBAAA,gBAAA,gBAAA,oBAAA,qBAAA,uBAAA,sBAAA,mBAAA,gBAAA,cAAA,0BAAA,cAAA,YAAA,oBAAA,sBAAA,eAAA,YAAA,SAAA,YAAA,eAAA,kBAAA,gBA4BA,SAAAC,EAAAxrH,GACA,IAAA86D,EAWA,OATA96D,GAAAA,EAAAw8D,UACA1B,EAAA96D,EAAA86D,SACA96D,GAAAA,EAAAy+D,qBACA1wE,QAAAC,KAAA,6HACA8sE,EAAA96D,EAAAm+D,QAAArD,UAEAA,EAAA/I,EAGA+I,EAiNA,MAAA,CACA2wD,cA/MA,SAAAv3C,EAAAwe,EAAAg5B,EAAAt2B,EAAArjD,GACA,MAAAglC,EAAAqe,EAAAre,IACAvD,EAAAU,EAAAy3C,uBAAAv2B,EAAA5hB,YAAA,KACAkI,GAAAxH,EAAAy3C,uBAAApB,EAAAxiB,GAAApqG,IAAAu2E,EAAAwH,QAAAlI,GACAsyC,EAAA0E,EAAAt2C,EAAAr0F,MAGAonI,EAAAl1E,EAAA+hC,cAhDA,SAAA/hC,GACA,MACA65E,EADA75E,EAAAkiC,SACA23C,MAEA,GAAA5b,EACA,OAAA,KACA,CAOA,MAAA6b,EAAAvc,EACAwc,EAAA9lI,KAAA4N,OAAAi4H,EAAA,IAAA,GACA5E,EAAAjhI,KAAAC,IAAA6lI,EAAAF,EAAAzrI,QAEA,OAAA8mI,EAAA2E,EAAAzrI,QACA4N,QAAAC,KAAA,qCAAA49H,EAAAzrI,OAAA,6BAAA8mI,EAAA,KACA,GAGAA,GA0BA8E,CAAAh6E,GAAA,EAUA,IAAAygD,EAAAC,EAEA,GAVA,OAAAve,EAAAsE,YACAA,EAAA8gB,EAAA6U,gBAAAj6B,EAAAsE,WAEAA,IAAAtE,EAAAsE,WACAzqF,QAAAC,KAAA,oCAAAkmF,EAAAsE,UAAA,uBAAAA,EAAA,aAMAstC,EAAA,CACA,MAAA9vB,EAAA+Q,GAAA+e,GACAtzB,EAAAwD,EAAAxD,aACAC,EAAAuD,EAAAvD,oBAEAD,EAAAte,EAAAse,aACAC,EAAAve,EAAAue,eAGA,MAAA8C,EAAArkF,EAAAskF,kBACAw2B,EAAA93C,EAAA+E,UAAA,EACAgzC,EAAA/3C,EAAA8F,UAAA,EAiGA,MAhGA,CACAuf,SAAAA,EACAusB,SAAAA,EACAe,WAAA3yC,EAAAr0F,KACA2yG,aAAAA,EACAC,eAAAA,EACAF,QAAAre,EAAAqe,QACAogB,qBAAA,IAAAz+B,EAAAy+B,oBACAvf,YAAAlf,EAAAkf,YACA5a,UAAAA,EACAsuC,YAAA,IAAA/0E,EAAAohC,gBACA4zC,iBAAA,IAAAh1E,EAAAohC,iBAAA,OAAAphC,EAAAshC,cACA2zC,uBAAApX,EACAyE,eAAA,OAAA9e,EAAAi2B,EAAAj2B,EAAAp3B,SAAAjtD,EAAAmjG,eACAr0G,MAAAk0E,EAAAl0E,IACA+nH,YAAAyD,EAAAt3C,EAAAl0E,KACAs6E,SAAApG,EAAAoG,OACA0tC,eAAAwD,EAAAt3C,EAAAoG,QACAoB,SAAAA,EACAypC,WAAAzpC,GAAAA,EAAAnhB,QACA0tD,eAAAuD,EAAA9vC,GACAkqC,eAAAlqC,IAAAA,EAAAnhB,UAAA/K,GAAAksB,EAAAnhB,UAAA9K,GACA+qB,WAAAtG,EAAAsG,SACA4tC,iBAAAoD,EAAAt3C,EAAAsG,UACAE,QAAAxG,EAAAwG,MACAY,cAAApH,EAAAoH,YACA4sC,oBAAAsD,EAAAt3C,EAAAoH,aACAV,UAAA1G,EAAA0G,QACAE,YAAA5G,EAAA4G,UACAssC,qBAptbA,IAotbAlzC,EAAA6G,cACA8qC,sBAttbA,IAstbA3xC,EAAA6G,cACAf,UAAAiyC,EACA/xC,aAAA+xC,KAAA/3C,EAAAgG,aACAC,sBAAA8xC,KAAA/3C,EAAAiG,sBACAC,mBAAA6xC,KAAA/3C,EAAAkG,mBACAa,kBAAA/G,EAAA+G,gBACAG,eAAAlH,EAAAkH,aACAC,eAAAnH,EAAAmH,aACAE,cAAArH,EAAAqH,YACAC,uBAAAtH,EAAAsH,qBACAC,kBAAAvH,EAAAuH,gBACA0sC,wBAAAqD,EAAAt3C,EAAAuH,iBACAlB,WAAArG,EAAAqG,SACAtB,UAAA+yC,EACAjwC,cAAA7H,EAAA6H,YACAtC,YAAAvF,EAAAuF,YAAAvF,EAAAuF,UAAApzF,EAAA,GAAA6tF,EAAAuF,UAAA55E,EAAA,GAAAq0E,EAAAuF,UAAArxF,EAAA,GACA4zF,aAAA9H,EAAA8H,aAAA,EACAC,kBAAA/H,EAAA+H,gBACAE,eAAAjI,EAAAiI,aACAR,QAAAzH,EAAAyH,QACA0rC,iBAAAnzC,EAAA4G,aAAA/oC,EAAAg0B,YAAAh0B,EAAAg0B,SAAAvxC,WAAA+1D,QACAtT,aAAA/C,EAAA+C,aACAqwC,cAAA,IAAApzC,EAAA+C,gBAAAllC,EAAAg0B,YAAAh0B,EAAAg0B,SAAAvxC,WAAA/zB,OAAA,IAAAsxC,EAAAg0B,SAAAvxC,WAAA/zB,MAAA4mF,SACAkgC,aAAArzC,EAAAl0E,KAAAk0E,EAAA0G,SAAA1G,EAAA4G,WAAA5G,EAAAqH,aAAArH,EAAAqG,UAAArG,EAAAoH,aAAApH,EAAAkH,cAAAlH,EAAAmH,cAAAnH,EAAAgG,cAAAhG,EAAAiG,uBAAAjG,EAAAkG,oBAAAlG,EAAA+G,iBAAA/G,EAAA+H,iBAAA/H,EAAAiI,cAAAjI,EAAAsH,sBAAAtH,EAAAuH,iBACA+rC,gBAAAtzC,EAAAl0E,KAAAk0E,EAAA0G,SAAA1G,EAAA4G,WAAA5G,EAAAqH,aAAArH,EAAAqG,UAAArG,EAAAoH,aAAApH,EAAAkH,cAAAlH,EAAAmH,cAAAnH,EAAAkG,oBAAAlG,EAAA8H,aAAA,GAAA9H,EAAA+H,iBAAA/H,EAAAiI,cAAAjI,EAAAsH,sBAAAtH,EAAAuH,kBAAAvH,EAAA+G,iBACAlE,MAAAA,EACAmwC,OAAAhzC,EAAA6C,IACAowC,QAAApwC,GAAAA,EAAAm1C,UACA9yC,cAAAlF,EAAAkF,YACAkD,gBAAApI,EAAAoI,gBACAsyB,uBAAAA,EACA6Y,UAAA,IAAA11E,EAAA+hC,eAAAmzC,EAAA,EACAA,SAAAA,EACAS,iBAAA1X,EACAtgB,eAAA39C,EAAAg0B,YAAAh0B,EAAAg0B,SAAAikB,gBAAAl1F,SACA4lH,eAAA3oE,EAAAg0B,YAAAh0B,EAAAg0B,SAAAikB,gBAAAtlB,OACA4+C,aAAA5wB,EAAAy5B,YAAAhsI,OACAsjI,eAAA/wB,EAAAxkD,MAAA/tD,OACAojI,cAAA7wB,EAAA05B,KAAAjsI,OACAqjI,kBAAA9wB,EAAA25B,SAAAlsI,OACAujI,cAAAhxB,EAAA45B,KAAAnsI,OACAwjI,mBAAAjxB,EAAAgT,qBAAAvlH,OACA0jI,qBAAAnxB,EAAA6T,eAAApmH,OACAyjI,oBAAAlxB,EAAAuT,cAAA9lH,OACA4jI,kBAAApxB,EAAAge,UACAqT,oBAAArxB,EAAAie,gBACA9+F,OAAAoiE,EAAApiE,OACA8mE,UAAA1E,EAAA0E,UACAivC,iBAAA32G,EAAAq7G,UAAAj3F,SAAAo2F,EAAAvrI,OAAA,EACA6kI,cAAA9zG,EAAAq7G,UAAA1sI,KACA4pH,YAAAv1B,EAAA6E,WAAA7nE,EAAAu4F,YA53bA,EA63bAqe,wBAAA52G,EAAA42G,wBACAhvC,mBAAA5E,EAAA4E,mBACA6uC,YAn6bA,IAm6bAzzC,EAAApyD,KACA8lG,UAr6bA,IAq6bA1zC,EAAApyD,KACAumG,kBAAAnhG,IAAAgtD,EAAAm0C,cAAAn0C,EAAAm0C,aACAn1B,oBAAAhf,EAAAgf,oBACAyyB,qBAAAzxC,EAAA0e,YAAA1e,EAAA0e,WAAAC,YACAkzB,mBAAA7xC,EAAA0e,YAAA1e,EAAA0e,WAAAE,UACAmzB,qBAAA/xC,EAAA0e,YAAA1e,EAAA0e,WAAAG,YACAozB,0BAAAjyC,EAAA0e,YAAA1e,EAAA0e,WAAAI,iBACAgzB,2BAAAzsB,GAAA3G,EAAAxrE,IAAA,kBACA8+F,6BAAA3sB,GAAA3G,EAAAxrE,IAAA,sBACAg/F,kCAAA7sB,GAAA3G,EAAAxrE,IAAA,0BACAolG,sBAAAt4C,EAAAs4C,0BAmFAC,mBA9EA,SAAA74C,GACA,MAAA3vB,EAAA,GASA,GAPA2vB,EAAAkyC,SACA7hE,EAAA3jE,KAAAszF,EAAAkyC,WAEA7hE,EAAA3jE,KAAAszF,EAAA6e,gBACAxuC,EAAA3jE,KAAAszF,EAAA4e,oBAGAtrE,IAAA0sD,EAAA2e,QACA,IAAA,MAAAvyG,KAAA4zF,EAAA2e,QACAtuC,EAAA3jE,KAAAN,GACAikE,EAAA3jE,KAAAszF,EAAA2e,QAAAvyG,IAIA,IAAA,IAAA4zF,EAAA++B,oBAAA,CACA,IAAA,IAAAlyH,EAAA,EAAAA,EAAA8qI,EAAAprI,OAAAM,IACAwjE,EAAA3jE,KAAAszF,EAAA23C,EAAA9qI,KAGAwjE,EAAA3jE,KAAA4wB,EAAAmjG,gBACApwD,EAAA3jE,KAAA4wB,EAAA+0E,aAIA,OADAhiC,EAAA3jE,KAAAszF,EAAA44C,uBACAvoE,EAAAzjE,QAoDAq6H,YAjDA,SAAA3mC,GACA,MAAA4xC,EAAA0E,EAAAt2C,EAAAr0F,MACA,IAAAqyG,EAEA,GAAA4zB,EAAA,CACA,MAAA9vB,EAAA+Q,GAAA+e,GACA5zB,EAAAE,GAAA5zB,MAAAw3B,EAAA9D,eAEAA,EAAAhe,EAAAge,SAGA,OAAAA,GAuCAw6B,eApCA,SAAA94C,EAAAkxC,GACA,IAAAja,EAEA,IAAA,IAAA3oH,EAAA,EAAAyqI,EAAAjT,EAAAv5H,OAAA+B,EAAAyqI,EAAAzqI,IAAA,CACA,MAAA0qI,EAAAlT,EAAAx3H,GAEA,GAAA0qI,EAAA9H,WAAAA,EAAA,CACAja,EAAA+hB,IACA/hB,EAAAwf,UACA,OASA,YALAnjG,IAAA2jF,IACAA,EAAA,IAAAga,GAAA3zG,EAAA4zG,EAAAlxC,EAAAo2B,GACA0P,EAAAp5H,KAAAuqH,IAGAA,GAmBAgiB,eAhBA,SAAAhiB,GACA,GAAA,KAAAA,EAAAwf,UAAA,CAEA,MAAA5pI,EAAAi5H,EAAA/0H,QAAAkmH,GACA6O,EAAAj5H,GAAAi5H,EAAAA,EAAAv5H,OAAA,GACAu5H,EAAAh+E,MAEAmvE,EAAA72E,YAWA0lF,SAAAA,GAIA,SAAAoT,KACA,IAAA1nB,EAAA,IAAA3L,QAyBA,MAAA,CACA97F,IAxBA,SAAAo0C,GACA,IAAA/xC,EAAAolG,EAAAznG,IAAAo0C,GAOA,YALA7qB,IAAAlnB,IACAA,EAAA,GACAolG,EAAArgG,IAAAgtC,EAAA/xC,IAGAA,GAiBA/d,OAdA,SAAA8vD,GACAqzD,EAAAzL,OAAA5nD,IAcAhP,OAXA,SAAAgP,EAAAlvC,EAAAjjB,GACAwlH,EAAAznG,IAAAo0C,GAAAlvC,GAAAjjB,GAWA2+E,QARA,WACA6mC,EAAA,IAAA3L,UAWA,SAAAszB,GAAAnlI,EAAAQ,GACA,OAAAR,EAAAolI,aAAA5kI,EAAA4kI,WACAplI,EAAAolI,WAAA5kI,EAAA4kI,WACAplI,EAAA2pF,cAAAnpF,EAAAmpF,YACA3pF,EAAA2pF,YAAAnpF,EAAAmpF,YACA3pF,EAAAijH,UAAAziH,EAAAyiH,QACAjjH,EAAAijH,QAAA/nH,GAAAsF,EAAAyiH,QAAA/nH,GACA8E,EAAAssF,SAAApxF,KAAAsF,EAAA8rF,SAAApxF,GACA8E,EAAAssF,SAAApxF,GAAAsF,EAAA8rF,SAAApxF,GACA8E,EAAAm3B,IAAA32B,EAAA22B,EACAn3B,EAAAm3B,EAAA32B,EAAA22B,EAEAn3B,EAAA9E,GAAAsF,EAAAtF,GAIA,SAAAmqI,GAAArlI,EAAAQ,GACA,OAAAR,EAAAolI,aAAA5kI,EAAA4kI,WACAplI,EAAAolI,WAAA5kI,EAAA4kI,WACAplI,EAAA2pF,cAAAnpF,EAAAmpF,YACA3pF,EAAA2pF,YAAAnpF,EAAAmpF,YACA3pF,EAAAm3B,IAAA32B,EAAA22B,EACA32B,EAAA22B,EAAAn3B,EAAAm3B,EAEAn3B,EAAA9E,GAAAsF,EAAAtF,GAIA,SAAAoqI,GAAA9nB,GACA,MAAA+nB,EAAA,GACA,IAAAC,EAAA,EACA,MAAAC,EAAA,GACAC,EAAA,GACAjuH,EAAA,GACAkuH,EAAA,CACAzqI,IAAA,GAUA,SAAA0qI,EAAAz7E,EAAAg0B,EAAAmO,EAAA84C,EAAAjuG,EAAAqtE,GACA,IAAAqhC,EAAAN,EAAAC,GACA,MAAA3b,EAAArM,EAAAznG,IAAAu2E,GA4BA,YA1BAhtD,IAAAumG,GACAA,EAAA,CACA3qI,GAAAivD,EAAAjvD,GACAivD,OAAAA,EACAg0B,SAAAA,EACAmO,SAAAA,EACA22B,QAAA4G,EAAA5G,SAAA0iB,EACAP,WAAAA,EACAz7C,YAAAx/B,EAAAw/B,YACAxyD,EAAAA,EACAqtE,MAAAA,GAEA+gC,EAAAC,GAAAK,IAEAA,EAAA3qI,GAAAivD,EAAAjvD,GACA2qI,EAAA17E,OAAAA,EACA07E,EAAA1nD,SAAAA,EACA0nD,EAAAv5C,SAAAA,EACAu5C,EAAA5iB,QAAA4G,EAAA5G,SAAA0iB,EACAE,EAAAT,WAAAA,EACAS,EAAAl8C,YAAAx/B,EAAAw/B,YACAk8C,EAAA1uG,EAAAA,EACA0uG,EAAArhC,MAAAA,GAGAghC,IACAK,EA+CA,MAAA,CACAJ,OAAAA,EACAC,aAAAA,EACAjuH,YAAAA,EACArC,KAxFA,WACAowH,EAAA,EACAC,EAAAltI,OAAA,EACAmtI,EAAAntI,OAAA,EACAkf,EAAAlf,OAAA,GAqFAG,KAjDA,SAAAyxD,EAAAg0B,EAAAmO,EAAA84C,EAAAjuG,EAAAqtE,GACA,MAAAqhC,EAAAD,EAAAz7E,EAAAg0B,EAAAmO,EAAA84C,EAAAjuG,EAAAqtE,GAEAlY,EAAA8H,aAAA,EACAsxC,EAAAhtI,KAAAmtI,IACA,IAAAv5C,EAAA70E,YACAA,EAAA/e,KAAAmtI,GAEAJ,EAAA/sI,KAAAmtI,IA0CAhjG,QAtCA,SAAAsnB,EAAAg0B,EAAAmO,EAAA84C,EAAAjuG,EAAAqtE,GACA,MAAAqhC,EAAAD,EAAAz7E,EAAAg0B,EAAAmO,EAAA84C,EAAAjuG,EAAAqtE,GAEAlY,EAAA8H,aAAA,EACAsxC,EAAA7iG,QAAAgjG,IACA,IAAAv5C,EAAA70E,YACAA,EAAAorB,QAAAgjG,GAEAJ,EAAA5iG,QAAAgjG,IA+BAC,OArBA,WAEA,IAAA,IAAAjtI,EAAA2sI,EAAAt5G,EAAAq5G,EAAAhtI,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAgtI,EAAAN,EAAA1sI,GACA,GAAA,OAAAgtI,EAAA3qI,GAAA,MACA2qI,EAAA3qI,GAAA,KACA2qI,EAAA17E,OAAA,KACA07E,EAAA1nD,SAAA,KACA0nD,EAAAv5C,SAAA,KACAu5C,EAAA5iB,QAAA,KACA4iB,EAAArhC,MAAA,OAYAjkG,KA5BA,SAAAwlI,EAAAC,GACAP,EAAAltI,OAAA,GAAAktI,EAAAllI,KAAAwlI,GAAAZ,IACAO,EAAAntI,OAAA,GAAAmtI,EAAAnlI,KAAAylI,GAAAX,IACA5tH,EAAAlf,OAAA,GAAAkf,EAAAlX,KAAAylI,GAAAX,MA6BA,SAAAY,GAAAzoB,GACA,IAAA0oB,EAAA,IAAAr0B,QAwBA,MAAA,CACA97F,IAvBA,SAAAy3F,EAAA24B,GACA,IAAA9tI,EAcA,OAZA,IAAA6tI,EAAA1mG,IAAAguE,IACAn1G,EAAA,IAAAitI,GAAA9nB,GACA0oB,EAAA/oH,IAAAqwF,EAAA,CAAAn1G,KAEA8tI,GAAAD,EAAAnwH,IAAAy3F,GAAAj1G,QACAF,EAAA,IAAAitI,GAAA9nB,GACA0oB,EAAAnwH,IAAAy3F,GAAA90G,KAAAL,IAEAA,EAAA6tI,EAAAnwH,IAAAy3F,GAAA24B,GAIA9tI,GASAs+E,QANA,WACAuvD,EAAA,IAAAr0B,UASA,SAAAu0B,KACA,MAAAt7B,EAAA,GACA,MAAA,CACA/0F,IAAA,SAAAswH,GACA,QAAA/mG,IAAAwrE,EAAAu7B,EAAAnrI,IACA,OAAA4vG,EAAAu7B,EAAAnrI,IAGA,IAAAovG,EAEA,OAAA+7B,EAAApuI,MACA,IAAA,mBACAqyG,EAAA,CACA5wE,UAAA,IAAAohD,GACAjiE,MAAA,IAAA+kF,IAEA,MAEA,IAAA,YACA0M,EAAA,CACAp9F,SAAA,IAAA4tE,GACAphD,UAAA,IAAAohD,GACAjiE,MAAA,IAAA+kF,GACArpF,SAAA,EACA0pG,QAAA,EACAC,YAAA,EACAC,MAAA,GAEA,MAEA,IAAA,aACA7T,EAAA,CACAp9F,SAAA,IAAA4tE,GACAjiE,MAAA,IAAA+kF,GACArpF,SAAA,EACA4pG,MAAA,GAEA,MAEA,IAAA,kBACA7T,EAAA,CACA5wE,UAAA,IAAAohD,GACAgkC,SAAA,IAAAlhB,GACAmhB,YAAA,IAAAnhB,IAEA,MAEA,IAAA,gBACA0M,EAAA,CACAzxF,MAAA,IAAA+kF,GACA1wF,SAAA,IAAA4tE,GACAwrD,UAAA,IAAAxrD,GACAyrD,WAAA,IAAAzrD,IAMA,OADAgwB,EAAAu7B,EAAAnrI,IAAAovG,EACAA,IAqDA,IAAAk8B,GAAA,EAEA,SAAAC,GAAAC,EAAAC,GACA,OAAAA,EAAAn9C,WAAA,EAAA,IAAAk9C,EAAAl9C,WAAA,EAAA,GAGA,SAAAo9C,GAAA57B,EAAA0G,GACA,MAAAl2G,EAAA,IAAA4qI,GACAS,EAxDA,WACA,MAAA/7B,EAAA,GACA,MAAA,CACA/0F,IAAA,SAAAswH,GACA,QAAA/mG,IAAAwrE,EAAAu7B,EAAAnrI,IACA,OAAA4vG,EAAAu7B,EAAAnrI,IAGA,IAAAovG,EAEA,OAAA+7B,EAAApuI,MACA,IAAA,mBASA,IAAA,YACAqyG,EAAA,CACAoT,WAAA,EACAC,iBAAA,EACAC,aAAA,EACAC,cAAA,IAAA5vC,IAEA,MAEA,IAAA,aACAq8B,EAAA,CACAoT,WAAA,EACAC,iBAAA,EACAC,aAAA,EACAC,cAAA,IAAA5vC,GACAwwC,iBAAA,EACAC,gBAAA,KAOA,OADA5T,EAAAu7B,EAAAnrI,IAAAovG,EACAA,IAaAw8B,GACAxmE,EAAA,CACA5/D,QAAA,EACAi8B,KAAA,CACAoqG,mBAAA,EACAC,aAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,YAAA,EACAC,uBAAA,EACAC,iBAAA,EACAC,gBAAA,GAEAC,QAAA,CAAA,EAAA,EAAA,GACAC,MAAA,GACAjD,YAAA,GACAkD,kBAAA,GACA3pB,qBAAA,GACAC,wBAAA,GACAymB,KAAA,GACAkD,WAAA,GACArpB,cAAA,GACAC,iBAAA,GACAmmB,SAAA,GACAkD,aAAA,KACAC,aAAA,KACAthF,MAAA,GACAuhF,YAAA,GACAlpB,eAAA,GACAC,kBAAA,GACA8lB,KAAA,IAGA,IAAA,IAAA7rI,EAAA,EAAAA,EAAA,EAAAA,IAAAynE,EAAAknE,MAAA9uI,KAAA,IAAAoiF,IAEA,MAAAgtD,EAAA,IAAAhtD,GACAzJ,EAAA,IAAAwS,GACAkkD,EAAA,IAAAlkD,GAoOA,MAAA,CACAggC,MAnOA,SAAA/Y,EAAAo1B,GACA,IAAAzhI,EAAA,EACAwZ,EAAA,EACAzX,EAAA,EAEA,IAAA,IAAA3H,EAAA,EAAAA,EAAA,EAAAA,IAAAynE,EAAAknE,MAAA3uI,GAAAskB,IAAA,EAAA,EAAA,GAEA,IAAA4pH,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAx8B,EAAAvqG,KAAAkmI,IAEA,MAAAuB,GAAA,IAAA9H,EAAA9hI,KAAA2F,GAAA,EAEA,IAAA,IAAAlL,EAAA,EAAA4P,EAAAqiG,EAAAvyG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAwtI,EAAAv7B,EAAAjyG,GACAggB,EAAAwtH,EAAAxtH,MACAovH,EAAA5B,EAAA4B,UACA1zH,EAAA8xH,EAAA9xH,SACAowH,EAAA0B,EAAAjkE,QAAAikE,EAAAjkE,OAAAhqD,IAAAiuH,EAAAjkE,OAAAhqD,IAAAm+D,QAAA,KAEA,GAAA8vD,EAAA6B,eACAzpI,GAAAoa,EAAApa,EAAAwpI,EAAAD,EACA/vH,GAAAY,EAAAZ,EAAAgwH,EAAAD,EACAxnI,GAAAqY,EAAArY,EAAAynI,EAAAD,OACA,GAAA3B,EAAA8B,aACA,IAAA,IAAAh2H,EAAA,EAAAA,EAAA,EAAAA,IACAmuD,EAAAknE,MAAAr1H,GAAA+7E,gBAAAm4C,EAAA+B,GAAAC,aAAAl2H,GAAA81H,QAEA,GAAA5B,EAAAiC,mBAAA,CACA,MAAAh+B,EAAA9uG,EAAAua,IAAAswH,GAGA,GAFA/7B,EAAAzxF,MAAA9O,KAAAs8H,EAAAxtH,OAAAy1D,eAAA+3D,EAAA4B,UAAAD,GAEA3B,EAAA78C,WAAA,CACA,MAAApnB,EAAAikE,EAAAjkE,OACAmmE,EAAA1B,EAAA9wH,IAAAswH,GACAkC,EAAA7qB,WAAAt7C,EAAAomE,KACAD,EAAA5qB,iBAAAv7C,EAAAqmE,WACAF,EAAA3qB,aAAAx7C,EAAApvD,OACAu1H,EAAA1qB,cAAAz7C,EAAAsmE,QACApoE,EAAAmnE,kBAAAV,GAAAwB,EACAjoE,EAAAw9C,qBAAAipB,GAAApC,EACArkE,EAAAy9C,wBAAAgpB,GAAAV,EAAAjkE,OAAAvsC,OACAuxG,IAGA9mE,EAAAikE,YAAAwC,GAAAz8B,EACAy8B,SACA,GAAAV,EAAAsC,YAAA,CACA,MAAAr+B,EAAA9uG,EAAAua,IAAAswH,GAQA,GAPA/7B,EAAAp9F,SAAAi9E,sBAAAk8C,EAAApqD,aACAquB,EAAAzxF,MAAA9O,KAAA8O,GAAAy1D,eAAA25D,EAAAD,GACA19B,EAAA/1F,SAAAA,EACA+1F,EAAA2T,QAAA7/G,KAAAiG,IAAAgiI,EAAA3uG,OACA4yE,EAAA4T,YAAA9/G,KAAAiG,IAAAgiI,EAAA3uG,OAAA,EAAA2uG,EAAAuC,WACAt+B,EAAA6T,MAAAkoB,EAAAloB,MAEAkoB,EAAA78C,WAAA,CACA,MAAApnB,EAAAikE,EAAAjkE,OACAmmE,EAAA1B,EAAA9wH,IAAAswH,GACAkC,EAAA7qB,WAAAt7C,EAAAomE,KACAD,EAAA5qB,iBAAAv7C,EAAAqmE,WACAF,EAAA3qB,aAAAx7C,EAAApvD,OACAu1H,EAAA1qB,cAAAz7C,EAAAsmE,QACApoE,EAAAonE,WAAAT,GAAAsB,EACAjoE,EAAA+9C,cAAA4oB,GAAAtC,EACArkE,EAAAg+C,iBAAA2oB,GAAAZ,EAAAjkE,OAAAvsC,OACAyxG,IAGAhnE,EAAAkkE,KAAAyC,GAAA38B,EACA28B,SACA,GAAAZ,EAAAwC,gBAAA,CACA,MAAAv+B,EAAA9uG,EAAAua,IAAAswH,GAIA/7B,EAAAzxF,MAAA9O,KAAA8O,GAAAy1D,eAAA25D,GACA39B,EAAAg8B,UAAAnpH,IAAA,GAAAkpH,EAAAprI,MAAA,EAAA,GACAqvG,EAAAi8B,WAAAppH,IAAA,EAAA,GAAAkpH,EAAA7zG,OAAA,GACA8tC,EAAAmkE,SAAAyC,GAAA58B,EACA48B,SACA,GAAAb,EAAAyC,aAAA,CACA,MAAAx+B,EAAA9uG,EAAAua,IAAAswH,GAKA,GAJA/7B,EAAAzxF,MAAA9O,KAAAs8H,EAAAxtH,OAAAy1D,eAAA+3D,EAAA4B,UAAAD,GACA19B,EAAA/1F,SAAA8xH,EAAA9xH,SACA+1F,EAAA6T,MAAAkoB,EAAAloB,MAEAkoB,EAAA78C,WAAA,CACA,MAAApnB,EAAAikE,EAAAjkE,OACAmmE,EAAA1B,EAAA9wH,IAAAswH,GACAkC,EAAA7qB,WAAAt7C,EAAAomE,KACAD,EAAA5qB,iBAAAv7C,EAAAqmE,WACAF,EAAA3qB,aAAAx7C,EAAApvD,OACAu1H,EAAA1qB,cAAAz7C,EAAAsmE,QACAH,EAAA9pB,iBAAAr8C,EAAAwZ,OAAAsL,KACAqhD,EAAA7pB,gBAAAt8C,EAAAwZ,OAAAuL,IACA7mB,EAAAunE,YAAAb,GAAAuB,EACAjoE,EAAAq+C,eAAAqoB,GAAArC,EACArkE,EAAAs+C,kBAAAooB,GAAAX,EAAAjkE,OAAAvsC,OACAwxG,IAGA/mE,EAAAha,MAAA0gF,GAAA18B,EACA08B,SACA,GAAAX,EAAA0C,kBAAA,CACA,MAAAz+B,EAAA9uG,EAAAua,IAAAswH,GACA/7B,EAAAwU,SAAA/0G,KAAAs8H,EAAAxtH,OAAAy1D,eAAA25D,EAAAD,GACA19B,EAAAyU,YAAAh1G,KAAAs8H,EAAAtnB,aAAAzwC,eAAA25D,EAAAD,GACA1nE,EAAAokE,KAAAyC,GAAA78B,EACA68B,KAIAD,EAAA,IACAx1B,EAAAC,WAMA,IAAA3G,EAAAxrE,IAAA,6BAJA8gC,EAAAqnE,aAAA5rB,GAAAitB,YACA1oE,EAAAsnE,aAAA7rB,GAAAktB,cAMA,IAAAj+B,EAAAxrE,IAAA,kCACA8gC,EAAAqnE,aAAA5rB,GAAAmtB,WACA5oE,EAAAsnE,aAAA7rB,GAAAotB,YAEAhjI,QAAApK,MAAA,gFAKAukE,EAAAinE,QAAA,GAAA9oI,EACA6hE,EAAAinE,QAAA,GAAAtvH,EACAqoD,EAAAinE,QAAA,GAAA/mI,EACA,MAAAm8B,EAAA2jC,EAAA3jC,KAEAA,EAAAoqG,oBAAAA,GAAApqG,EAAAqqG,cAAAA,GAAArqG,EAAAsqG,aAAAA,GAAAtqG,EAAAuqG,iBAAAA,GAAAvqG,EAAAwqG,aAAAA,GAAAxqG,EAAAyqG,wBAAAA,GAAAzqG,EAAA0qG,kBAAAA,GAAA1qG,EAAA2qG,iBAAAA,IACAhnE,EAAAikE,YAAAhsI,OAAAwuI,EACAzmE,EAAAkkE,KAAAjsI,OAAA0uI,EACA3mE,EAAAmkE,SAAAlsI,OAAA2uI,EACA5mE,EAAAha,MAAA/tD,OAAAyuI,EACA1mE,EAAAokE,KAAAnsI,OAAA4uI,EACA7mE,EAAAmnE,kBAAAlvI,OAAA6uI,EACA9mE,EAAAw9C,qBAAAvlH,OAAA6uI,EACA9mE,EAAAunE,YAAAtvI,OAAA8uI,EACA/mE,EAAAq+C,eAAApmH,OAAA8uI,EACA/mE,EAAAonE,WAAAnvI,OAAA+uI,EACAhnE,EAAA+9C,cAAA9lH,OAAA+uI,EACAhnE,EAAAy9C,wBAAAxlH,OAAA6uI,EACA9mE,EAAAs+C,kBAAArmH,OAAA8uI,EACA/mE,EAAAg+C,iBAAA/lH,OAAA+uI,EACA3qG,EAAAoqG,kBAAAA,EACApqG,EAAAqqG,YAAAA,EACArqG,EAAAsqG,WAAAA,EACAtqG,EAAAuqG,eAAAA,EACAvqG,EAAAwqG,WAAAA,EACAxqG,EAAAyqG,sBAAAA,EACAzqG,EAAA0qG,gBAAAA,EACA1qG,EAAA2qG,eAAAA,EACAhnE,EAAA5/D,QAAA8lI,OA8DA4C,UA1DA,SAAAt+B,EAAAlvB,GACA,IAAAmrD,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACA,MAAA7d,EAAA1tC,EAAAE,mBAEA,IAAA,IAAAjjF,EAAA,EAAA4P,EAAAqiG,EAAAvyG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAwtI,EAAAv7B,EAAAjyG,GAEA,GAAAwtI,EAAAiC,mBAAA,CACA,MAAAh+B,EAAAhqC,EAAAikE,YAAAwC,GACAz8B,EAAA5wE,UAAAywD,sBAAAk8C,EAAApqD,aACA6rD,EAAA39C,sBAAAk8C,EAAAh/H,OAAA40E,aACAquB,EAAA5wE,UAAAmjD,IAAAirD,GACAx9B,EAAA5wE,UAAAkqD,mBAAA0lC,GACAyd,SACA,GAAAV,EAAAsC,YAAA,CACA,MAAAr+B,EAAAhqC,EAAAkkE,KAAAyC,GACA38B,EAAAp9F,SAAAi9E,sBAAAk8C,EAAApqD,aACAquB,EAAAp9F,SAAA2uE,aAAAytC,GACAhf,EAAA5wE,UAAAywD,sBAAAk8C,EAAApqD,aACA6rD,EAAA39C,sBAAAk8C,EAAAh/H,OAAA40E,aACAquB,EAAA5wE,UAAAmjD,IAAAirD,GACAx9B,EAAA5wE,UAAAkqD,mBAAA0lC,GACA2d,SACA,GAAAZ,EAAAwC,gBAAA,CACA,MAAAv+B,EAAAhqC,EAAAmkE,SAAAyC,GACA58B,EAAAp9F,SAAAi9E,sBAAAk8C,EAAApqD,aACAquB,EAAAp9F,SAAA2uE,aAAAytC,GAEAye,EAAAsB,WACAh4D,EAAAtnE,KAAAs8H,EAAApqD,aACA5K,EAAAyY,YAAAw/B,GACAye,EAAAx9C,gBAAAlZ,GACAi5B,EAAAg8B,UAAAnpH,IAAA,GAAAkpH,EAAAprI,MAAA,EAAA,GACAqvG,EAAAi8B,WAAAppH,IAAA,EAAA,GAAAkpH,EAAA7zG,OAAA,GACA83E,EAAAg8B,UAAAzqD,aAAAksD,GACAz9B,EAAAi8B,WAAA1qD,aAAAksD,GACAb,SACA,GAAAb,EAAAyC,aAAA,CACA,MAAAx+B,EAAAhqC,EAAAha,MAAA0gF,GACA18B,EAAAp9F,SAAAi9E,sBAAAk8C,EAAApqD,aACAquB,EAAAp9F,SAAA2uE,aAAAytC,GACA0d,SACA,GAAAX,EAAA0C,kBAAA,CACA,MAAAz+B,EAAAhqC,EAAAokE,KAAAyC,GACA78B,EAAA5wE,UAAAywD,sBAAAk8C,EAAApqD,aACAquB,EAAA5wE,UAAAkqD,mBAAA0lC,GACAhf,EAAA5wE,UAAAvO,YACAg8G,OAQA7mE,MAAAA,GAIA,SAAAgpE,GAAAt+B,EAAA0G,GACA,MAAA5G,EAAA,IAAA87B,GAAA57B,EAAA0G,GACA63B,EAAA,GACAC,EAAA,GA4BA,MAAA,CACAp0H,KA3BA,WACAm0H,EAAAhxI,OAAA,EACAixI,EAAAjxI,OAAA,GA0BA+nE,MAPA,CACAipE,YAAAA,EACAC,aAAAA,EACA1+B,OAAAA,GAKA2+B,YAhBA,SAAAvJ,GACAp1B,EAAA+Y,MAAA0lB,EAAArJ,IAgBAwJ,gBAbA,SAAA9tD,GACAkvB,EAAAs+B,UAAAG,EAAA3tD,IAaA+tD,UA1BA,SAAAtD,GACAkD,EAAA7wI,KAAA2tI,IA0BAuD,WAvBA,SAAAC,GACAL,EAAA9wI,KAAAmxI,KA0BA,SAAAC,GAAA9+B,EAAA0G,GACA,IAAAq4B,EAAA,IAAAl4B,QAwBA,MAAA,CACA97F,IAvBA,SAAAy3F,EAAA24B,EAAA,GACA,IAAA6D,EAcA,OAZA,IAAAD,EAAAvqG,IAAAguE,IACAw8B,EAAA,IAAAV,GAAAt+B,EAAA0G,GACAq4B,EAAA5sH,IAAAqwF,EAAA,CAAAw8B,KAEA7D,GAAA4D,EAAAh0H,IAAAy3F,GAAAj1G,QACAyxI,EAAA,IAAAV,GAAAt+B,EAAA0G,GACAq4B,EAAAh0H,IAAAy3F,GAAA90G,KAAAsxI,IAEAA,EAAAD,EAAAh0H,IAAAy3F,GAAA24B,GAIA6D,GASArzD,QANA,WACAozD,EAAA,IAAAl4B,UA2BA,MAAAgxB,WAAA3zC,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,oBACAC,KAAAuoI,aAhidA,KAiidAvoI,KAAAkgB,IAAA,KACAlgB,KAAAy6F,SAAA,KACAz6F,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAAi3F,KAAA,EACAj3F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAUA,OATAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAuoI,aAAA3mG,EAAA2mG,aACAvoI,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,MAKA2qI,GAAA5hI,UAAAgpI,qBAAA,EAoBA,MAAAnH,WAAA5zC,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,uBACAC,KAAA6nH,kBAAA,IAAAjlC,GACA5iF,KAAA8nH,aAAA,EACA9nH,KAAA+nH,YAAA,IACA/nH,KAAAkgB,IAAA,KACAlgB,KAAAy6F,SAAA,KACAz6F,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAAi3F,KAAA,EACAj3F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAUA,OATAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA6nH,kBAAAh2G,KAAA+vB,EAAAimF,mBACA7nH,KAAA8nH,aAAAlmF,EAAAkmF,aACA9nH,KAAA+nH,YAAAnmF,EAAAmmF,YACA/nH,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,MAKA4qI,GAAA7hI,UAAAipI,wBAAA,EAMA,SAAAC,GAAAne,EAAAoe,EAAAC,GACA,IAAAC,EAAA,IAAA76B,GAEA,MAAA86B,EAAA,IAAAt8D,GACAu8D,EAAA,IAAAv8D,GACAw8D,EAAA,IAAA51D,GACA61D,EAAA,IAAA7H,GAAA,CACApC,aA1ndA,OA4ndAkK,EAAA,IAAA7H,GACA8H,EAAA,GACAC,EAAAR,EAAAhjB,eAEA32B,EAAA,CACAo6C,EAzxdA,EA0xdAC,EA3xdA,EA4xdAC,EA1xdA,GA4xdAC,EAAA,IAAAvgC,GAAA,CACAJ,SAAA,CACA4gC,YAAA,CACAlzI,MAAA,MAEAmzI,WAAA,CACAnzI,MAAA,IAAAi2E,IAEAj7D,OAAA,CACAhb,MAAA,GAEAk/E,QAAA,CACAl/E,MAAA,IAGA4yG,aAnCA,2DAoCAC,eAtCA,6kCAwCAugC,EAAAH,EAAAr0D,QACAw0D,EAAAzgC,QAAA0gC,gBAAA,EACA,MAAAC,EAAA,IAAAnpC,GACAmpC,EAAA5iH,aAAA,WAAA,IAAA82E,GAAA,IAAA8B,aAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,IAAA,EAAA,EAAA,KAAA,IACA,MAAAiqC,EAAA,IAAA/jC,GAAA8jC,EAAAL,GACAllI,EAAA7N,KAmHA,SAAAszI,EAAAppE,EAAAwZ,GACA,MAAAuC,EAAAisD,EAAAjvF,OAAAowF,GAGAN,EAAA3gC,SAAA4gC,YAAAlzI,MAAAoqE,EAAAhqD,IAAAm+D,QACA00D,EAAA3gC,SAAA6gC,WAAAnzI,MAAAoqE,EAAAsmE,QACAuC,EAAA3gC,SAAAt3F,OAAAhb,MAAAoqE,EAAApvD,OACAi4H,EAAA3gC,SAAApzB,QAAAl/E,MAAAoqE,EAAAqpE,YAEAzf,EAAAne,gBAAAzrC,EAAAspE,SAEA1f,EAAAhoG,QAEAgoG,EAAA2f,mBAAA/vD,EAAA,KAAAuC,EAAA8sD,EAAAM,EAAA,MAGAH,EAAA9gC,SAAA4gC,YAAAlzI,MAAAoqE,EAAAspE,QAAAn1D,QACA60D,EAAA9gC,SAAA6gC,WAAAnzI,MAAAoqE,EAAAsmE,QACA0C,EAAA9gC,SAAAt3F,OAAAhb,MAAAoqE,EAAApvD,OACAo4H,EAAA9gC,SAAApzB,QAAAl/E,MAAAoqE,EAAAqpE,YAEAzf,EAAAne,gBAAAzrC,EAAAhqD,KAEA4zG,EAAAhoG,QAEAgoG,EAAA2f,mBAAA/vD,EAAA,KAAAuC,EAAAitD,EAAAG,EAAA,MAGA,SAAAK,EAAAzhF,EAAAg0B,EAAAmO,EAAA+5C,EAAA5nB,EAAAC,EAAAzmH,GACA,IAAA0gB,EAAA,KACA,MAAAkzH,GAAA,IAAAxF,EAAAyC,aAAA3+E,EAAA2hF,uBAAA3hF,EAAA4hF,oBAQA,GALApzH,OADA2mB,IAAAusG,EACAA,GAEA,IAAAxF,EAAAyC,aAAA6B,EAAAD,EAGA1e,EAAAtD,uBAAA,IAAAp8B,EAAAmE,aAAA,IAAAnE,EAAAiE,eAAAh4F,QAAA+zF,EAAA+G,iBAAA,IAAA/G,EAAAgH,mBAAAhH,EAAAqG,UAAArG,EAAA+E,UAAA,EAAA,CAGA,MAAA26C,EAAArzH,EAAAy6D,KACA64D,EAAA3/C,EAAAlZ,KACA,IAAA84D,EAAAtB,EAAAoB,QAEA1sG,IAAA4sG,IACAA,EAAA,GACAtB,EAAAoB,GAAAE,GAGA,IAAAC,EAAAD,EAAAD,QAEA3sG,IAAA6sG,IACAA,EAAAxzH,EAAAi+D,QACAs1D,EAAAD,GAAAE,GAGAxzH,EAAAwzH,EA6BA,OA1BAxzH,EAAA4wE,QAAA+C,EAAA/C,QACA5wE,EAAAm8E,UAAAxI,EAAAwI,UAGAn8E,EAAAuhB,KAz+dA,IAw+dAjiC,EACA,OAAAq0F,EAAAoE,WAAApE,EAAAoE,WAAApE,EAAApyD,KAEA,OAAAoyD,EAAAoE,WAAApE,EAAAoE,WAAAA,EAAApE,EAAApyD,MAGAvhB,EAAAg6E,SAAArG,EAAAqG,SACAh6E,EAAA04E,UAAA/E,EAAA+E,UACA14E,EAAA83E,YAAAnE,EAAAmE,YACA93E,EAAA43E,eAAAjE,EAAAiE,eACA53E,EAAA63E,iBAAAlE,EAAAkE,iBACA73E,EAAA06E,gBAAA/G,EAAA+G,gBACA16E,EAAA26E,kBAAAhH,EAAAgH,kBACA36E,EAAA46E,iBAAAjH,EAAAiH,iBACA56E,EAAAo8E,mBAAAzI,EAAAyI,mBACAp8E,EAAAg8E,UAAArI,EAAAqI,WAEA,IAAA0xC,EAAAyC,eAAA,IAAAnwH,EAAAuxH,yBACAvxH,EAAAonG,kBAAA51B,sBAAAk8C,EAAApqD,aACAtjE,EAAAqnG,aAAAvB,EACA9lG,EAAAsnG,YAAAvB,GAGA/lG,EAGA,SAAAyzH,EAAAjiF,EAAAyxB,EAAAywD,EAAAhG,EAAApuI,GACA,IAAA,IAAAkyD,EAAAo/B,QAAA,OAGA,GAFAp/B,EAAA89B,OAAA7uE,KAAAwiE,EAAAqM,UAEA99B,EAAA0hC,QAAA1hC,EAAA2hC,QAAA3hC,EAAA4hC,YACA5hC,EAAAq/B,YAAAr/B,EAAAs/B,eAvgeA,IAugeAxxF,MAAAkyD,EAAAu/B,eAAA4gD,EAAAgC,iBAAAniF,IAAA,CACAA,EAAAg/B,gBAAAjZ,iBAAAm8D,EAAAvwD,mBAAA3xB,EAAA8xB,aAEA,MAAAkC,EAAAisD,EAAAjvF,OAAAgP,GAEAmiC,EAAAniC,EAAAmiC,SAEA,GAAAlnF,MAAAhM,QAAAkzF,GAAA,CACA,MAAAgW,EAAAnkB,EAAAmkB,OAEA,IAAA,IAAAt/D,EAAA,EAAAupG,EAAAjqC,EAAA/pG,OAAAyqC,EAAAupG,EAAAvpG,IAAA,CACA,MAAAwhE,EAAAlC,EAAAt/D,GACAolE,EAAA9b,EAAAkY,EAAA/B,eAEA,GAAA2F,GAAAA,EAAA7e,QAAA,CACA,MAAAijD,EAAAZ,EAAAzhF,EAAAg0B,EAAAiqB,EAAAi+B,EAAAgG,EAAAnlD,KAAAmlD,EAAAllD,IAAAlvF,GAEA+zH,EAAA2f,mBAAAU,EAAA,KAAAluD,EAAAquD,EAAAriF,EAAAq6C,UAGA,GAAAlY,EAAA/C,QAAA,CACA,MAAAijD,EAAAZ,EAAAzhF,EAAAg0B,EAAAmO,EAAA+5C,EAAAgG,EAAAnlD,KAAAmlD,EAAAllD,IAAAlvF,GAEA+zH,EAAA2f,mBAAAU,EAAA,KAAAluD,EAAAquD,EAAAriF,EAAA,OAKA,MAAAxnC,EAAAwnC,EAAAxnC,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACAuzI,EAAAzpH,EAAA9pB,GAAA+iF,EAAAywD,EAAAhG,EAAApuI,GA/OAC,KAAAw1C,SAAA,EACAx1C,KAAAu0I,YAAA,EACAv0I,KAAAs8E,aAAA,EACAt8E,KAAAD,KA5zdA,EA8zdAC,KAAA4Q,OAAA,SAAAgiG,EAAA0C,EAAA5xB,GACA,IAAA,IAAA71E,EAAA2nC,QAAA,OACA,IAAA,IAAA3nC,EAAA0mI,aAAA,IAAA1mI,EAAAyuE,YAAA,OACA,GAAA,IAAAs2B,EAAAvyG,OAAA,OAEA,MAAAo1G,EAAAqe,EAAApe,kBAEA8+B,EAAA1gB,EAAA2gB,oBAEAC,EAAA5gB,EAAA6gB,uBAEAC,EAAA9gB,EAAA1rD,MAEAwsE,EAAAC,YAn0dA,GAq0dAD,EAAAl7B,QAAA/4F,MAAA+nG,SAAA,EAAA,EAAA,EAAA,GAEAksB,EAAAl7B,QAAA/tC,MAAAmpE,SAAA,GAEAF,EAAAG,gBAAA,GAGA,IAAA,IAAAp0I,EAAA,EAAAqzB,EAAA4+E,EAAAvyG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAwtI,EAAAv7B,EAAAjyG,GACAupE,EAAAikE,EAAAjkE,OAEA,QAAA9iC,IAAA8iC,EAAA,CACAj8D,QAAAC,KAAA,wBAAAigI,EAAA,kBACA,SAGA,IAAA,IAAAjkE,EAAAqqE,aAAA,IAAArqE,EAAAoS,YAAA,SAEA+1D,EAAAxgI,KAAAq4D,EAAAsmE,SAEA,MAAAwE,EAAA9qE,EAAA+qE,kBAoBA,GAlBA5C,EAAAvgD,SAAAkjD,GAEA1C,EAAAzgI,KAAAq4D,EAAAsmE,UAEA6B,EAAA7qI,EAAAmrI,GAAAN,EAAA/sI,EAAAqtI,KACAN,EAAA7qI,EAAAmrI,IACAL,EAAA9qI,EAAAtB,KAAA4N,MAAA6+H,EAAAqC,EAAAxtI,GACA6qI,EAAA7qI,EAAA8qI,EAAA9qI,EAAAwtI,EAAAxtI,EACA0iE,EAAAsmE,QAAAhpI,EAAA8qI,EAAA9qI,GAGA6qI,EAAA/sI,EAAAqtI,IACAL,EAAAhtI,EAAAY,KAAA4N,MAAA6+H,EAAAqC,EAAA1vI,GACA+sI,EAAA/sI,EAAAgtI,EAAAhtI,EAAA0vI,EAAA1vI,EACA4kE,EAAAsmE,QAAAlrI,EAAAgtI,EAAAhtI,IAIA,OAAA4kE,EAAAhqD,MAAAgqD,EAAAgrE,oBAn3dA,IAm3dAl1I,KAAAD,KAAA,CACA,MAAAo1I,EAAA,CACAr6D,UAAA5K,EACA2K,UAAA3K,EACAl+C,OAAA4+C,GAEA1G,EAAAhqD,IAAA,IAAA+9D,GAAAo0D,EAAA7qI,EAAA6qI,EAAA/sI,EAAA6vI,GACAjrE,EAAAhqD,IAAAm+D,QAAAn+E,KAAAiuI,EAAAjuI,KAAA,aACAgqE,EAAAspE,QAAA,IAAAv1D,GAAAo0D,EAAA7qI,EAAA6qI,EAAA/sI,EAAA6vI,GACAjrE,EAAAwZ,OAAAswB,yBAGA,GAAA,OAAA9pC,EAAAhqD,IAAA,CACA,MAAAi1H,EAAA,CACAr6D,UAAA/K,EACA8K,UAAA9K,EACA/9C,OAAA4+C,GAEA1G,EAAAhqD,IAAA,IAAA+9D,GAAAo0D,EAAA7qI,EAAA6qI,EAAA/sI,EAAA6vI,GACAjrE,EAAAhqD,IAAAm+D,QAAAn+E,KAAAiuI,EAAAjuI,KAAA,aACAgqE,EAAAwZ,OAAAswB,yBAGA8f,EAAAne,gBAAAzrC,EAAAhqD,KAEA4zG,EAAAhoG,QAEA,MAAAspH,EAAAlrE,EAAAmrE,mBAEA,IAAA,IAAAC,EAAA,EAAAA,EAAAF,EAAAE,IAAA,CACA,MAAAl3D,EAAAlU,EAAAqrE,YAAAD,GAEA/C,EAAAttH,IAAAqtH,EAAA9qI,EAAA42E,EAAA52E,EAAA8qI,EAAAhtI,EAAA84E,EAAA94E,EAAAgtI,EAAA9qI,EAAA42E,EAAAn/C,EAAAqzG,EAAAhtI,EAAA84E,EAAAnI,GAEA2+D,EAAAx2D,SAAAm0D,GAEAroE,EAAAsrE,eAAArH,EAAAmH,GACAlD,EAAAloE,EAAAurE,aACAvB,EAAA5+B,EAAA5xB,EAAAxZ,EAAAwZ,OAAAyqD,EAAAnuI,KAAAD,MAIAmqE,EAAAgrE,oBA75dA,IA65dAl1I,KAAAD,MACAuzI,EAAAppE,EAAAwZ,GAGAxZ,EAAAoS,aAAA,EAGAzuE,EAAAyuE,aAAA,EAEAw3C,EAAAne,gBAAAF,EAAA++B,EAAAE,IAqIA,SAAAgB,GAAAn8B,EAAAzG,EAAA0G,GACA,MAAAC,EAAAD,EAAAC,SA4LA,MAAAk8B,EAAA,IA1LA,WACA,IAAAC,GAAA,EACA,MAAAj1H,EAAA,IAAAg8D,GACA,IAAAk5D,EAAA,KACA,MAAAC,EAAA,IAAAn5D,GAAA,EAAA,EAAA,EAAA,GACA,MAAA,CACAo5D,QAAA,SAAAC,GACAH,IAAAG,GAAAJ,IACAr8B,EAAAy8B,UAAAA,EAAAA,EAAAA,EAAAA,GACAH,EAAAG,IAGAC,UAAA,SAAAC,GACAN,EAAAM,GAEAxtB,SAAA,SAAAniH,EAAAwZ,EAAAzX,EAAAR,EAAAkxF,IACA,IAAAA,IACAzyF,GAAAuB,EACAiY,GAAAjY,EACAQ,GAAAR,GAGA6Y,EAAAsE,IAAA1e,EAAAwZ,EAAAzX,EAAAR,IAEA,IAAAguI,EAAApuD,OAAA/mE,KACA44F,EAAA4O,WAAA5hH,EAAAwZ,EAAAzX,EAAAR,GACAguI,EAAAjkI,KAAA8O,KAGA8qG,MAAA,WACAmqB,GAAA,EACAC,EAAA,KACAC,EAAA7wH,KAAA,EAAA,EAAA,EAAA,MA2JAq5D,EAAA,IAtJA,WACA,IAAAs3D,GAAA,EACAO,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,MAAA,CACAvB,QAAA,SAAAn9C,GACAA,EACA3pC,EAAAurD,EAAA+8B,YAEAvoF,EAAAwrD,EAAA+8B,aAGAP,QAAA,SAAAQ,GACAJ,IAAAI,GAAAX,IACAr8B,EAAAg9B,UAAAA,GACAJ,EAAAI,IAGAC,QAAA,SAAA9+C,GACA,GAAA0+C,IAAA1+C,EAAA,CACA,GAAAA,EACA,OAAAA,GACA,KA9keA,EA+keA6hB,EAAA7hB,UAAA6hB,EAAAk9B,OACA,MAEA,KAjleA,EAkleAl9B,EAAA7hB,UAAA6hB,EAAAm9B,QACA,MAEA,KApleA,EAqleAn9B,EAAA7hB,UAAA6hB,EAAAo9B,MACA,MAEA,KAvleA,EAwleAp9B,EAAA7hB,UAAA6hB,EAAAq9B,QACA,MAEA,KA1leA,EA2leAr9B,EAAA7hB,UAAA6hB,EAAAs9B,OACA,MAEA,KA7leA,EA8leAt9B,EAAA7hB,UAAA6hB,EAAAu9B,QACA,MAEA,KAhmeA,EAimeAv9B,EAAA7hB,UAAA6hB,EAAAw9B,SACA,MAEA,KAnmeA,EAomeAx9B,EAAA7hB,UAAA6hB,EAAAy9B,UACA,MAEA,QACAz9B,EAAA7hB,UAAA6hB,EAAAq9B,aAGAr9B,EAAA7hB,UAAA6hB,EAAAq9B,QAGAR,EAAA1+C,IAGAu+C,UAAA,SAAAC,GACAN,EAAAM,GAEAxtB,SAAA,SAAA/8C,GACA0qE,IAAA1qE,IACA4tC,EAAA09B,WAAAtrE,GACA0qE,EAAA1qE,IAGA8/C,MAAA,WACAmqB,GAAA,EACAO,EAAA,KACAC,EAAA,KACAC,EAAA,QAyEA93D,EAAA,IApEA,WACA,IAAAq3D,GAAA,EACAsB,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,MAAA,CACA3C,QAAA,SAAA4C,GACA9B,IACA8B,EACA1pF,EAAAurD,EAAAo+B,cAEA5pF,EAAAwrD,EAAAo+B,gBAIA5B,QAAA,SAAA6B,GACAV,IAAAU,GAAAhC,IACAr8B,EAAAq+B,YAAAA,GACAV,EAAAU,IAGApB,QAAA,SAAA1+C,EAAAC,EAAA6/C,GACAT,IAAAr/C,GAAAs/C,IAAAr/C,GAAAs/C,IAAAO,IACAr+B,EAAAzhB,YAAAA,EAAAC,EAAA6/C,GACAT,EAAAr/C,EACAs/C,EAAAr/C,EACAs/C,EAAAO,IAGAC,MAAA,SAAA5/C,EAAAC,EAAAC,GACAm/C,IAAAr/C,GAAAs/C,IAAAr/C,GAAAs/C,IAAAr/C,IACAohB,EAAAu+B,UAAA7/C,EAAAC,EAAAC,GACAm/C,EAAAr/C,EACAs/C,EAAAr/C,EACAs/C,EAAAr/C,IAGA89C,UAAA,SAAAC,GACAN,EAAAM,GAEAxtB,SAAA,SAAApS,GACAmhC,IAAAnhC,IACAiD,EAAAw+B,aAAAzhC,GACAmhC,EAAAnhC,IAGAmV,MAAA,WACAmqB,GAAA,EACAsB,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,QASA,IAAAO,EAAA,GACAC,EAAA,KACAC,EAAA,GACAC,EAAA,KACAC,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,MAAAlqB,EAAAxV,EAAAuQ,aAAAvQ,EAAA2/B,kCACA,IAAAC,GAAA,EACA3wI,EAAA,EACA,MAAA4wI,EAAA7/B,EAAAuQ,aAAAvQ,EAAA8/B,UAEA,IAAAD,EAAAv0I,QAAA,UACA2D,EAAA0I,WAAA,cAAAmH,KAAA+gI,GAAA,IACAD,EAAA3wI,GAAA,IACA,IAAA4wI,EAAAv0I,QAAA,eACA2D,EAAA0I,WAAA,kBAAAmH,KAAA+gI,GAAA,IACAD,EAAA3wI,GAAA,GAGA,IAAA8wI,EAAA,KACAC,EAAA,GACA,MAAAC,EAAAjgC,EAAAuQ,aAAAvQ,EAAAkgC,aACAC,EAAAngC,EAAAuQ,aAAAvQ,EAAAogC,UACAC,GAAA,IAAAj9D,IAAAhD,UAAA6/D,GACAK,GAAA,IAAAl9D,IAAAhD,UAAA+/D,GAEA,SAAAI,EAAA/5I,EAAAoP,EAAA0vE,GACA,MAAA78E,EAAA,IAAAsmG,WAAA,GAEAjqB,EAAAk7B,EAAAugC,gBACAvgC,EAAAwgC,YAAAh6I,EAAAs+E,GACAk7B,EAAAygC,cAAAj6I,EAAAw5G,EAAA0gC,mBAAA1gC,EAAA2gC,SACA3gC,EAAAygC,cAAAj6I,EAAAw5G,EAAA4gC,mBAAA5gC,EAAA2gC,SAEA,IAAA,IAAAv5I,EAAA,EAAAA,EAAAk+E,EAAAl+E,IACA44G,EAAA6gC,WAAAjrI,EAAAxO,EAAA,EAAA44G,EAAA8gC,KAAA,EAAA,EAAA,EAAA9gC,EAAA8gC,KAAA9gC,EAAAqB,cAAA54G,GAGA,OAAAq8E,EAGA,MAAAi8D,EAAA,GAcA,SAAAtsF,EAAAhrD,IACA,IAAAg1I,EAAAh1I,KACAu2G,EAAAvrD,OAAAhrD,GACAg1I,EAAAh1I,IAAA,GAIA,SAAA+qD,EAAA/qD,IACA,IAAAg1I,EAAAh1I,KACAu2G,EAAAxrD,QAAA/qD,GACAg1I,EAAAh1I,IAAA,GAvBAs3I,EAAA/gC,EAAAghC,YAAAT,EAAAvgC,EAAAghC,WAAAhhC,EAAAghC,WAAA,GACAD,EAAA/gC,EAAAihC,kBAAAV,EAAAvgC,EAAAihC,iBAAAjhC,EAAAkhC,4BAAA,GAEA9E,EAAAjtB,SAAA,EAAA,EAAA,EAAA,GACApqC,EAAAoqC,SAAA,GACAnqC,EAAAmqC,SAAA,GACA16D,EAAAurD,EAAA+8B,YACAh4D,EAAAk4D,QAzweA,GA0weAkE,GAAA,GACAC,EAhzeA,GAizeA3sF,EAAAurD,EAAAqhC,WACA/F,EAtyeA,GA+1eA,MAAAgG,EAAA,CACAhoE,CAAAzD,GAAAmqC,EAAAuhC,SACAC,IAAAxhC,EAAAyhC,cACAC,IAAA1hC,EAAA2hC,uBAGA,GAAAzhC,EACAohC,EA71eA,KA61eAthC,EAAA4hC,IACAN,EA71eA,KA61eAthC,EAAA6hC,QACA,CACA,MAAApxB,EAAAlX,EAAAj1F,IAAA,oBAEA,OAAAmsG,IACA6wB,EAn2eA,KAm2eA7wB,EAAAqxB,QACAR,EAn2eA,KAm2eA7wB,EAAAsxB,SAIA,MAAAC,EAAA,CACAC,IAAAjiC,EAAAkiC,KACAC,IAAAniC,EAAAoiC,IACAC,IAAAriC,EAAAsiC,UACAC,IAAAviC,EAAAwiC,UACAC,IAAAziC,EAAA0iC,mBACAC,IAAA3iC,EAAA4iC,UACAC,IAAA7iC,EAAA8iC,UACAC,IAAA/iC,EAAAgjC,oBACAC,IAAAjjC,EAAAkjC,oBACAC,IAAAnjC,EAAAojC,oBACAC,IAAArjC,EAAAsjC,qBAGA,SAAAhI,EAAA39C,EAAAI,EAAAF,EAAAC,EAAAI,EAAAF,EAAAC,EAAAwB,GACA,GAh4eA,IAg4eA9B,GAcA,IALA,IAAAkhD,IACApqF,EAAAurD,EAAAujC,OACA1E,GAAA,GAt4eA,IAy4eAlhD,EAkEAO,EAAAA,GAAAH,EACAC,EAAAA,GAAAH,EACAI,EAAAA,GAAAH,EAEAC,IAAAghD,GAAA7gD,IAAAghD,IACAl/B,EAAAwjC,sBAAAlC,EAAAvjD,GAAAujD,EAAApjD,IACA6gD,EAAAhhD,EACAmhD,EAAAhhD,GAGAL,IAAAmhD,GAAAlhD,IAAAmhD,GAAAjhD,IAAAmhD,GAAAlhD,IAAAmhD,IACAp/B,EAAAyjC,kBAAAzB,EAAAnkD,GAAAmkD,EAAAlkD,GAAAkkD,EAAAhkD,GAAAgkD,EAAA/jD,IACA+gD,EAAAnhD,EACAohD,EAAAnhD,EACAqhD,EAAAnhD,EACAohD,EAAAnhD,GAGA6gD,EAAAnhD,EACA0hD,EAAA,UApFA,GAAA1hD,IAAAmhD,GAAAr/C,IAAA4/C,EAAA,CAOA,GANAN,IAAAlpE,GAAAqpE,IAAArpE,IACAmqC,EAAAjiB,cAAAiiB,EAAAuhC,UACAxC,EAAAlpE,EACAqpE,EAAArpE,GAGA4pB,EACA,OAAA9B,GACA,KAv5eA,EAw5eAqiB,EAAAyjC,kBAAAzjC,EAAAoiC,IAAApiC,EAAAkjC,oBAAAljC,EAAAoiC,IAAApiC,EAAAkjC,qBACA,MAEA,KA15eA,EA25eAljC,EAAA0jC,UAAA1jC,EAAAoiC,IAAApiC,EAAAoiC,KACA,MAEA,KA75eA,EA85eApiC,EAAAyjC,kBAAAzjC,EAAAkiC,KAAAliC,EAAAkiC,KAAAliC,EAAAgjC,oBAAAhjC,EAAAkjC,qBACA,MAEA,KAh6eA,EAi6eAljC,EAAAyjC,kBAAAzjC,EAAAkiC,KAAAliC,EAAAsiC,UAAAtiC,EAAAkiC,KAAAliC,EAAAwiC,WACA,MAEA,QACA9tI,QAAApK,MAAA,uCAAAqzF,QAIA,OAAAA,GACA,KA76eA,EA86eAqiB,EAAAyjC,kBAAAzjC,EAAAwiC,UAAAxiC,EAAAkjC,oBAAAljC,EAAAoiC,IAAApiC,EAAAkjC,qBACA,MAEA,KAh7eA,EAi7eAljC,EAAA0jC,UAAA1jC,EAAAwiC,UAAAxiC,EAAAoiC,KACA,MAEA,KAn7eA,EAo7eApiC,EAAA0jC,UAAA1jC,EAAAkiC,KAAAliC,EAAAgjC,qBACA,MAEA,KAt7eA,EAu7eAhjC,EAAA0jC,UAAA1jC,EAAAkiC,KAAAliC,EAAAsiC,WACA,MAEA,QACA5tI,QAAApK,MAAA,uCAAAqzF,GAKAqhD,EAAA,KACAC,EAAA,KACAE,EAAA,KACAC,EAAA,KACAN,EAAAnhD,EACA0hD,EAAA5/C,QAxEA,IAAAo/C,IACArqF,EAAAwrD,EAAAujC,OACA1E,GAAA,GA2HA,SAAAsC,EAAA5S,GACA+Q,IAAA/Q,IACAA,EACAvuB,EAAA2jC,UAAA3jC,EAAA4jC,IAEA5jC,EAAA2jC,UAAA3jC,EAAA6jC,KAGAvE,EAAA/Q,GAIA,SAAA6S,EAAA0C,GAvhfA,IAwhfAA,GACArvF,EAAAurD,EAAAqhC,WAEAyC,IAAAvE,IA1hfA,IA2hfAuE,EACA9jC,EAAA8jC,SAAA9jC,EAAA+jC,MA3hfA,IA4hfAD,EACA9jC,EAAA8jC,SAAA9jC,EAAAgkC,OAEAhkC,EAAA8jC,SAAA9jC,EAAAikC,kBAIAzvF,EAAAwrD,EAAAqhC,WAGA9B,EAAAuE,EAUA,SAAAI,EAAA9kD,EAAA+kD,EAAAtyI,GACAutF,GACA3qC,EAAAurD,EAAAokC,qBAEA3E,IAAA0E,GAAAzE,IAAA7tI,IACAmuG,EAAA5gB,cAAA+kD,EAAAtyI,GACA4tI,EAAA0E,EACAzE,EAAA7tI,IAGA2iD,EAAAwrD,EAAAokC,qBAaA,SAAAC,EAAAC,QACAz2G,IAAAy2G,IAAAA,EAAAtkC,EAAAukC,SAAA/uB,EAAA,GAEAuqB,IAAAuE,IACAtkC,EAAAqkC,cAAAC,GACAvE,EAAAuE,GA4IA,MAAA,CACAnkC,QAAA,CACA/4F,MAAAg1H,EACAhqE,MAAA2S,EACAg4B,QAAA/3B,GAEAvwB,OAAAA,EACAD,QAAAA,EACAgwF,gBAxZA,SAAA5uI,EAAA6uI,GAGA,OAFA,OAAAA,GAAA,OAAA/F,IAAA+F,EAAA/F,GAEAC,EAAA/oI,KAAA6uI,IACAzkC,EAAAwkC,gBAAA5uI,EAAA6uI,GACA9F,EAAA/oI,GAAA6uI,EAEAvkC,IAEAtqG,IAAAoqG,EAAA0kC,mBACA/F,EAAA3+B,EAAA2kC,aAAAF,GAGA7uI,IAAAoqG,EAAA2kC,cACAhG,EAAA3+B,EAAA0kC,kBAAAD,KAIA,IAuYAG,kBAhaA,SAAAH,GACAA,IAAA/F,IACA1+B,EAAAwkC,gBAAAxkC,EAAA2kC,YAAAF,GACA/F,EAAA+F,IA8ZAI,WAlYA,SAAArzB,GACA,OAAAotB,IAAAptB,IACAxR,EAAA6kC,WAAArzB,GACAotB,EAAAptB,GACA,IA+XA8pB,YAAAA,EACAwJ,YAnPA,SAAAjqD,EAAAkqD,GAz+eA,IA0+eAlqD,EAAApyD,KAAA+rB,EAAAwrD,EAAAqhC,WAAA5sF,EAAAurD,EAAAqhC,WACA,IAAA9S,EA5+eA,IA4+eA1zC,EAAApyD,KACAs8G,IAAAxW,GAAAA,GACA4S,EAAA5S,GAz+eA,IA0+eA1zC,EAAA8C,WAAA,IAAA9C,EAAA70E,YAAAs1H,EA3+eA,GA2+eAA,EAAAzgD,EAAA8C,SAAA9C,EAAAkD,cAAAlD,EAAAgD,SAAAhD,EAAAiD,SAAAjD,EAAAqD,mBAAArD,EAAAmD,cAAAnD,EAAAoD,cAAApD,EAAA4E,oBACA1a,EAAAk4D,QAAApiD,EAAAsD,WACApZ,EAAAw2D,QAAA1gD,EAAAuD,WACArZ,EAAAy3D,QAAA3hD,EAAAwD,YACA+9C,EAAAI,QAAA3hD,EAAAqE,YACA,MAAAL,EAAAhE,EAAAgE,aACA7Z,EAAAu2D,QAAA18C,GAEAA,IACA7Z,EAAAw3D,QAAA3hD,EAAAyD,kBACAtZ,EAAAi4D,QAAApiD,EAAA0D,YAAA1D,EAAA2D,WAAA3D,EAAA4D,iBACAzZ,EAAAs5D,MAAAzjD,EAAA6D,YAAA7D,EAAA8D,aAAA9D,EAAA+D,eAGAslD,EAAArpD,EAAAuE,cAAAvE,EAAAwE,oBAAAxE,EAAAyE,qBACA,IAAAzE,EAAA2E,gBAAA/qC,EAAAurD,EAAAglC,0BAAAxwF,EAAAwrD,EAAAglC,2BAgOA7D,aAAAA,EACAC,YAAAA,EACA6D,aA9LA,SAAAz7I,GACAA,IAAAg2I,IACAI,GAAA5/B,EAAAklC,UAAA17I,GACAg2I,EAAAh2I,IA4LA06I,iBAAAA,EACA1I,eA3KA,SAAA52D,GACAA,EACAnwB,EAAAurD,EAAAmlC,cAEA3wF,EAAAwrD,EAAAmlC,eAwKAd,cAAAA,EACA7D,YA3JA,SAAA4E,EAAAC,GACA,OAAAtF,GACAsE,IAGA,IAAAiB,EAAAtF,EAAAD,QAEAlyG,IAAAy3G,IACAA,EAAA,CACA9+I,UAAAqnC,EACAi3C,aAAAj3C,GAEAmyG,EAAAD,GAAAuF,GAGAA,EAAA9+I,OAAA4+I,GAAAE,EAAAxgE,UAAAugE,IACArlC,EAAAwgC,YAAA4E,EAAAC,GAAAtE,EAAAqE,IACAE,EAAA9+I,KAAA4+I,EACAE,EAAAxgE,QAAAugE,IA0IAE,cAtIA,WACA,MAAAD,EAAAtF,EAAAD,QAEAlyG,IAAAy3G,QAAAz3G,IAAAy3G,EAAA9+I,OACAw5G,EAAAwgC,YAAA8E,EAAA9+I,KAAA,MACA8+I,EAAA9+I,UAAAqnC,EACAy3G,EAAAxgE,aAAAj3C,IAiIA23G,qBA7HA,WACA,IACAxlC,EAAAwlC,qBAAA/lI,MAAAugG,EAAA/zF,WACA,MAAA3hB,GACAoK,QAAApK,MAAA,oBAAAA,KA0HAu2I,WAtHA,WACA,IACA7gC,EAAA6gC,WAAAphI,MAAAugG,EAAA/zF,WACA,MAAA3hB,GACAoK,QAAApK,MAAA,oBAAAA,KAmHAm7I,WA/GA,WACA,IACAzlC,EAAAylC,WAAAhmI,MAAAugG,EAAA/zF,WACA,MAAA3hB,GACAoK,QAAApK,MAAA,oBAAAA,KA4GAq6E,QAvGA,SAAAA,IACA,IAAA07D,EAAAlyD,OAAAxJ,KACAq7B,EAAAr7B,QAAAA,EAAA12E,EAAA02E,EAAA54E,EAAA44E,EAAAj/C,EAAAi/C,EAAAjI,GACA2jE,EAAA/nI,KAAAqsE,KAqGAE,SAjGA,SAAAA,IACA,IAAAy7D,EAAAnyD,OAAAtJ,KACAm7B,EAAAn7B,SAAAA,EAAA52E,EAAA42E,EAAA94E,EAAA84E,EAAAn/C,EAAAm/C,EAAAnI,GACA4jE,EAAAhoI,KAAAusE,KA+FAqtC,MA1FA,WAEAlS,EAAAxrD,QAAAwrD,EAAAujC,OACAvjC,EAAAxrD,QAAAwrD,EAAAqhC,WACArhC,EAAAxrD,QAAAwrD,EAAA+8B,YACA/8B,EAAAxrD,QAAAwrD,EAAAokC,qBACApkC,EAAAxrD,QAAAwrD,EAAAmlC,cACAnlC,EAAAxrD,QAAAwrD,EAAAo+B,cACAp+B,EAAAxrD,QAAAwrD,EAAAglC,0BACAhlC,EAAAjiB,cAAAiiB,EAAAuhC,UACAvhC,EAAA0jC,UAAA1jC,EAAAoiC,IAAApiC,EAAAkiC,MACAliC,EAAAyjC,kBAAAzjC,EAAAoiC,IAAApiC,EAAAkiC,KAAAliC,EAAAoiC,IAAApiC,EAAAkiC,MACAliC,EAAAy8B,WAAA,GAAA,GAAA,GAAA,GACAz8B,EAAA4O,WAAA,EAAA,EAAA,EAAA,GACA5O,EAAAg9B,WAAA,GACAh9B,EAAA7hB,UAAA6hB,EAAAo9B,MACAp9B,EAAA09B,WAAA,GACA19B,EAAAq+B,YAAA,YACAr+B,EAAAzhB,YAAAyhB,EAAAm9B,OAAA,EAAA,YACAn9B,EAAAu+B,UAAAv+B,EAAA0lC,KAAA1lC,EAAA0lC,KAAA1lC,EAAA0lC,MACA1lC,EAAAw+B,aAAA,GACAx+B,EAAA8jC,SAAA9jC,EAAA+jC,MACA/jC,EAAA2jC,UAAA3jC,EAAA6jC,KACA7jC,EAAA5gB,cAAA,EAAA,GACA4gB,EAAAqkC,cAAArkC,EAAAukC,UACAvkC,EAAAwkC,gBAAAxkC,EAAA2kC,YAAA,OAEA,IAAAzkC,IACAF,EAAAwkC,gBAAAxkC,EAAA0kC,iBAAA,MACA1kC,EAAAwkC,gBAAAxkC,EAAA2lC,iBAAA,OAGA3lC,EAAA6kC,WAAA,MACA7kC,EAAAklC,UAAA,GACAllC,EAAAr7B,QAAA,EAAA,EAAAq7B,EAAAv/B,OAAAj3E,MAAAw2G,EAAAv/B,OAAA1/C,QACAi/E,EAAAn7B,SAAA,EAAA,EAAAm7B,EAAAv/B,OAAAj3E,MAAAw2G,EAAAv/B,OAAA1/C,QAEA09G,EAAA,GACAsB,EAAA,KACAC,EAAA,GACAtB,EAAA,KACAC,EAAA,GACAC,EAAA,KACAC,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAW,EAAA30H,IAAA,EAAA,EAAAs0F,EAAAv/B,OAAAj3E,MAAAw2G,EAAAv/B,OAAA1/C,QACAu/G,EAAA50H,IAAA,EAAA,EAAAs0F,EAAAv/B,OAAAj3E,MAAAw2G,EAAAv/B,OAAA1/C,QACAq7G,EAAAlqB,QACAntC,EAAAmtC,QACAltC,EAAAktC,UAiCA,SAAA0zB,GAAAC,EAAAtsC,EAAA1qC,EAAAk9C,EAAA9L,EAAA5mF,EAAAi7F,GACA,MAAApU,EAAAD,EAAAC,SACAsV,EAAAvV,EAAAuV,YACAM,EAAA7V,EAAA6V,eACAF,EAAA3V,EAAA2V,eACAgB,EAAA3W,EAAA2W,WAEAkvB,EAAA,IAAA1lC,QAEA,IAAA//B,EAKA0lE,GAAA,EAEA,IACAA,EAAA,oBAAAC,iBAAA,OAAA,IAAAA,gBAAA,EAAA,GAAAtlE,WAAA,MACA,MAAAvrC,IAGA,SAAA8wG,EAAAz8I,EAAAu3B,GAEA,OAAAglH,EAAA,IAAAC,gBAAAx8I,EAAAu3B,GAAAzY,SAAAwW,gBAAA,+BAAA,UAGA,SAAAonH,EAAA9vF,EAAA+vF,EAAAC,EAAAC,GACA,IAAA7oH,EAAA,EAOA,IALA44B,EAAA5sD,MAAA68I,GAAAjwF,EAAAr1B,OAAAslH,KACA7oH,EAAA6oH,EAAA15I,KAAAiS,IAAAw3C,EAAA5sD,MAAA4sD,EAAAr1B,SAIAvD,EAAA,IAAA,IAAA2oH,EAAA,CAEA,GAAA,oBAAAnjE,kBAAA5sB,aAAA4sB,kBAAA,oBAAAxC,mBAAApqB,aAAAoqB,mBAAA,oBAAAyC,aAAA7sB,aAAA6sB,YAAA,CACA,MAAA1oE,EAAA4rI,EAAA5rE,GAAA5tE,KAAA4N,MACA/Q,EAAA+Q,EAAAijB,EAAA44B,EAAA5sD,OACAu3B,EAAAxmB,EAAAijB,EAAA44B,EAAAr1B,aACA8M,IAAAwyC,IAAAA,EAAA4lE,EAAAz8I,EAAAu3B,IAEA,MAAA0/C,EAAA2lE,EAAAH,EAAAz8I,EAAAu3B,GAAAs/C,EACAI,EAAAj3E,MAAAA,EACAi3E,EAAA1/C,OAAAA,EAIA,OAHA0/C,EAAAC,WAAA,MACAG,UAAAzqB,EAAA,EAAA,EAAA5sD,EAAAu3B,GACArsB,QAAAC,KAAA,uDAAAyhD,EAAA5sD,MAAA,IAAA4sD,EAAAr1B,OAAA,SAAAv3B,EAAA,IAAAu3B,EAAA,MACA0/C,EAMA,MAJA,SAAArqB,GACA1hD,QAAAC,KAAA,yDAAAyhD,EAAA5sD,MAAA,IAAA4sD,EAAAr1B,OAAA,MAGAq1B,EAIA,OAAAA,EAGA,SAAAkwF,EAAAlwF,GACA,OAAAgkB,GAAAhkB,EAAA5sD,QAAA4wE,GAAAhkB,EAAAr1B,QAQA,SAAAwlH,EAAAzhE,EAAA0hE,GACA,OAAA1hE,EAAA/C,iBAAAykE,GAAA1hE,EAAAvD,YAAA/K,GAAAsO,EAAAvD,YAAA5K,EAGA,SAAA8vE,EAAA7wI,EAAAkvE,EAAAt7E,EAAAu3B,EAAAqxC,EAAA,GACAyzE,EAAAY,eAAA7wI,GAEAm2G,EAAAznG,IAAAwgE,GACA4hE,cAAA/5I,KAAAg6I,KAAAh6I,KAAAiS,IAAApV,EAAAu3B,EAAAqxC,IAGA,SAAAw0E,EAAAC,EAAAC,EAAAC,GACA,IAAA,IAAA7mC,EAAA,OAAA4mC,EAEA,GAAA,OAAAD,EAAA,CACA,QAAAh5G,IAAAg4G,EAAAgB,GAAA,OAAAhB,EAAAgB,GACAnyI,QAAAC,KAAA,2EAAAkyI,EAAA,KAGA,IAAAhlE,EAAAilE,EAwBA,OAtBAA,IAAAjB,EAAAmB,MACAD,IAAAlB,EAAA/kC,QAAAj/B,EAAAgkE,EAAAoB,MACAF,IAAAlB,EAAA9kC,aAAAl/B,EAAAgkE,EAAAqB,MACAH,IAAAlB,EAAAxkC,gBAAAx/B,EAAAgkE,EAAAsB,KAGAL,IAAAjB,EAAAuB,MACAL,IAAAlB,EAAA/kC,QAAAj/B,EAAAgkE,EAAAwB,QACAN,IAAAlB,EAAA9kC,aAAAl/B,EAAAgkE,EAAAyB,QACAP,IAAAlB,EAAAxkC,gBAAAx/B,EAAAgkE,EAAA0B,OAGAT,IAAAjB,EAAA/E,OACAiG,IAAAlB,EAAA/kC,QAAAj/B,EAAAgkE,EAAA2B,SACAT,IAAAlB,EAAA9kC,aAAAl/B,EAAAgkE,EAAA4B,SACAV,IAAAlB,EAAAxkC,gBAAAx/B,EAAAgkE,EAAA6B,QAGA7lE,IAAAgkE,EAAAqB,MAAArlE,IAAAgkE,EAAAoB,MAAAplE,IAAAgkE,EAAA4B,SAAA5lE,IAAAgkE,EAAA2B,SACAjuC,EAAAj1F,IAAA,0BAGAu9D,EAIA,SAAA8lE,EAAAh/H,GACA,OAAAA,IAAA6tD,GAAA7tD,IAAA8tD,GAAA9tD,IAAA+tD,EACAmvE,EAAAlF,QAGAkF,EAAA+B,OAIA,SAAAlvB,EAAA5wH,GACA,MAAAg9E,EAAAh9E,EAAA8N,OACAkvE,EAAAx6C,oBAAA,UAAAouF,GAiBA,SAAA5zC,GACA,MAAA+iE,EAAA97B,EAAAznG,IAAAwgE,GACA,QAAAj3C,IAAAg6G,EAAAC,YAAA,OAEAjC,EAAAkC,cAAAF,EAAAG,gBAEAj8B,EAAAnjH,OAAAk8E,GAtBAmjE,CAAAnjE,GAEAA,EAAAojE,gBACApC,EAAAxlC,OAAAx7B,GAGAwvC,EAAAkL,OAAAj9C,WAGA,SAAA4lE,EAAArgJ,GACA,MAAAyzG,EAAAzzG,EAAA8N,OACA2lG,EAAAjxE,oBAAA,UAAA69G,GAcA,SAAA5sC,GACA,MAAAz2B,EAAAy2B,EAAAz2B,QACAsjE,EAAAr8B,EAAAznG,IAAAi3F,GACAssC,EAAA97B,EAAAznG,IAAAwgE,GACA,IAAAy2B,EAAA,YAEA1tE,IAAAg6G,EAAAG,iBACAnC,EAAAkC,cAAAF,EAAAG,gBAEA1zB,EAAAkL,OAAAj9C,YAGAg5B,EAAAt2B,cACAs2B,EAAAt2B,aAAAC,UAGA,GAAAq2B,EAAAC,wBACA,IAAA,IAAAp0G,EAAA,EAAAA,EAAA,EAAAA,IACAy+I,EAAAwC,kBAAAD,EAAAE,mBAAAlhJ,IAEAghJ,EAAAG,oBAAA1C,EAAA2C,mBAAAJ,EAAAG,mBAAAnhJ,SAGAy+I,EAAAwC,kBAAAD,EAAAE,oBAEAF,EAAAG,oBAAA1C,EAAA2C,mBAAAJ,EAAAG,oBACAH,EAAAK,gCAAA5C,EAAAwC,kBAAAD,EAAAK,gCACAL,EAAAM,0BAAA7C,EAAA2C,mBAAAJ,EAAAM,0BACAN,EAAAO,0BAAA9C,EAAA2C,mBAAAJ,EAAAO,0BAGA,GAAAptC,EAAAh2B,6BACA,IAAA,IAAAn+E,EAAA,EAAAqzB,EAAAqqD,EAAAh+E,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAwhJ,EAAA78B,EAAAznG,IAAAwgE,EAAA19E,IAEAwhJ,EAAAZ,iBACAnC,EAAAkC,cAAAa,EAAAZ,gBAEA1zB,EAAAkL,OAAAj9C,YAGAwpC,EAAAnjH,OAAAk8E,EAAA19E,IAIA2kH,EAAAnjH,OAAAk8E,GACAinC,EAAAnjH,OAAA2yG,GA3DAstC,CAAAttC,GA+DA,IAAAutC,EAAA,EAkBA,SAAAC,EAAAjkE,EAAAkkE,GACA,MAAAnB,EAAA97B,EAAAznG,IAAAwgE,GAGA,GAFAA,EAAAojE,gBAgqBA,SAAApjE,GACA,MAAApoE,EAAA43G,EAAAj9G,OAAAqF,MAEAopI,EAAAxhI,IAAAwgE,KAAApoE,IACAopI,EAAAp6H,IAAAo5D,EAAApoE,GAEAooE,EAAAp7B,UAtqBAu/F,CAAAnkE,GAEAA,EAAA71E,QAAA,GAAA44I,EAAAqB,YAAApkE,EAAA71E,QAAA,CACA,MAAAmnD,EAAA0uB,EAAA1uB,MAEA,QAAAvoB,IAAAuoB,EACA1hD,QAAAC,KAAA,6EACA,CAAA,IAAA,IAAAyhD,EAAAE,SAIA,YADA6yF,EAAAtB,EAAA/iE,EAAAkkE,GAFAt0I,QAAAC,KAAA,2EAOAk6D,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAqF,EAAA7E,WAAA6G,EAAAG,gBA2BA,SAAAoB,EAAAtkE,EAAAkkE,GACA,MAAAnB,EAAA97B,EAAAznG,IAAAwgE,GAEAA,EAAA71E,QAAA,GAAA44I,EAAAqB,YAAApkE,EAAA71E,QA4NA,SAAA44I,EAAA/iE,EAAAkkE,GACA,GAAA,IAAAlkE,EAAA1uB,MAAAtvD,OAAA,OACAuiJ,EAAAxB,EAAA/iE,GACAjW,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAqF,EAAA5E,iBAAA4G,EAAAG,gBAEAnC,EAAAyD,YAAAzD,EAAA0D,oBAAAzkE,EAAA7C,OAEA4jE,EAAAyD,YAAAzD,EAAA2D,+BAAA1kE,EAAA9C,kBAEA6jE,EAAAyD,YAAAzD,EAAA4D,iBAAA3kE,EAAA5C,iBAEA2jE,EAAAyD,YAAAzD,EAAA6D,mCAAA7D,EAAA8D,MAEA,MAAAC,EAAA9kE,IAAAA,EAAA+kE,qBAAA/kE,EAAA1uB,MAAA,GAAAyzF,qBACAlnE,EAAAmC,EAAA1uB,MAAA,IAAA0uB,EAAA1uB,MAAA,GAAAusB,cACAmnE,EAAA,GAEA,IAAA,IAAA1iJ,EAAA,EAAAA,EAAA,EAAAA,IAIA0iJ,EAAA1iJ,GAHAwiJ,GAAAjnE,EAGAA,EAAAmC,EAAA1uB,MAAAhvD,GAAAgvD,MAAA0uB,EAAA1uB,MAAAhvD,GAFA8+I,EAAAphE,EAAA1uB,MAAAhvD,IAAA,GAAA,EAAA0uH,GAMA,MAAA1/D,EAAA0zF,EAAA,GACAtD,EAAAF,EAAAlwF,IAAA8pD,EACA4mC,EAAAztH,EAAA0wH,QAAAjlE,EAAArsD,QACAsuH,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,MACAwjJ,EAAApD,EAAA9hE,EAAAjD,eAAAilE,EAAAC,GAEA,IAAAnlE,EAEA,GAHAqoE,EAAApE,EAAA5E,iBAAAn8D,EAAA0hE,GAGAoD,EAAA,CACA,IAAA,IAAAxiJ,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACAw6E,EAAAkoE,EAAA1iJ,GAAAw6E,QAEA,IAAA,IAAAlhE,EAAA,EAAAA,EAAAkhE,EAAA96E,OAAA4Z,IAAA,CACA,MAAAwpI,EAAAtoE,EAAAlhE,GAEAokE,EAAArsD,SAAA4+C,GAAAyN,EAAArsD,SAAA2+C,EACA,OAAA0vE,EACAj4E,EAAA22E,qBAAAK,EAAA3E,4BAAA95I,EAAAsZ,EAAAspI,EAAAE,EAAA1gJ,MAAA0gJ,EAAAnpH,OAAA,EAAAmpH,EAAAzhJ,MAEAiM,QAAAC,KAAA,mGAGAk6D,EAAAgyE,WAAAgF,EAAA3E,4BAAA95I,EAAAsZ,EAAAspI,EAAAE,EAAA1gJ,MAAA0gJ,EAAAnpH,OAAA,EAAA+lH,EAAAC,EAAAmD,EAAAzhJ,OAKAo/I,EAAAnB,cAAA9kE,EAAA96E,OAAA,MACA,CACA86E,EAAAkD,EAAAlD,QAEA,IAAA,IAAAx6E,EAAA,EAAAA,EAAA,EAAAA,IACA,GAAAu7E,EAAA,CACA9T,EAAAgyE,WAAAgF,EAAA3E,4BAAA95I,EAAA,EAAA4iJ,EAAAF,EAAA1iJ,GAAAoC,MAAAsgJ,EAAA1iJ,GAAA25B,OAAA,EAAA+lH,EAAAC,EAAA+C,EAAA1iJ,GAAAqB,MAEA,IAAA,IAAAiY,EAAA,EAAAA,EAAAkhE,EAAA96E,OAAA4Z,IAAA,CACA,MACAypI,EADAvoE,EAAAlhE,GACA01C,MAAAhvD,GAAAgvD,MACAyY,EAAAgyE,WAAAgF,EAAA3E,4BAAA95I,EAAAsZ,EAAA,EAAAspI,EAAAG,EAAA3gJ,MAAA2gJ,EAAAppH,OAAA,EAAA+lH,EAAAC,EAAAoD,EAAA1hJ,WAEA,CACAomE,EAAAgyE,WAAAgF,EAAA3E,4BAAA95I,EAAA,EAAA4iJ,EAAAlD,EAAAC,EAAA+C,EAAA1iJ,IAEA,IAAA,IAAAsZ,EAAA,EAAAA,EAAAkhE,EAAA96E,OAAA4Z,IAAA,CACA,MAAAwpI,EAAAtoE,EAAAlhE,GACAmuD,EAAAgyE,WAAAgF,EAAA3E,4BAAA95I,EAAAsZ,EAAA,EAAAspI,EAAAlD,EAAAC,EAAAmD,EAAA9zF,MAAAhvD,KAKAygJ,EAAAnB,cAAA9kE,EAAA96E,OAGAy/I,EAAAzhE,EAAA0hE,IAEAC,EAAAZ,EAAA5E,iBAAAn8D,EAAA1uB,EAAA5sD,MAAA4sD,EAAAr1B,QAGA8mH,EAAAqB,UAAApkE,EAAA71E,QACA61E,EAAA/0D,UAAA+0D,EAAA/0D,SAAA+0D,GAhTAslE,CAAAvC,EAAA/iE,EAAAkkE,IAIAn6E,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAqF,EAAA5E,iBAAA4G,EAAAG,iBAGA,MAAAqC,EAAA,CACA/wE,CAAAjD,GAAAwvE,EAAAyE,OACAhxE,CAAAhD,GAAAuvE,EAAA0E,cACAjxE,CAAA/C,GAAAsvE,EAAA2E,iBAEAC,EAAA,CACAnxE,CAAA9C,GAAAqvE,EAAAlF,QACArnE,CAAA7C,GAAAovE,EAAA6E,uBACApxE,CAAA5C,GAAAmvE,EAAA8E,sBACArxE,CAAA3C,GAAAkvE,EAAA+B,OACAtuE,CAAA1C,GAAAivE,EAAA+E,sBACAtxE,CAAAzC,GAAAgvE,EAAAgF,sBAGA,SAAAZ,EAAAa,EAAAhmE,EAAA0hE,GAmCA,GAlCAA,GACAX,EAAApF,cAAAqK,EAAAjF,EAAAkF,eAAAV,EAAAvlE,EAAA1D,QAEAykE,EAAApF,cAAAqK,EAAAjF,EAAAmF,eAAAX,EAAAvlE,EAAAzD,QAEAypE,IAAAjF,EAAAoF,YAAAH,IAAAjF,EAAAqF,kBACArF,EAAApF,cAAAqK,EAAAjF,EAAAsF,eAAAd,EAAAvlE,EAAAm9C,QAGA4jB,EAAApF,cAAAqK,EAAAjF,EAAAjF,mBAAA6J,EAAA3lE,EAAAxD,YAEAukE,EAAApF,cAAAqK,EAAAjF,EAAAnF,mBAAA+J,EAAA3lE,EAAAvD,cAEAskE,EAAApF,cAAAqK,EAAAjF,EAAAkF,eAAAlF,EAAA0E,eAEA1E,EAAApF,cAAAqK,EAAAjF,EAAAmF,eAAAnF,EAAA0E,eAEAO,IAAAjF,EAAAoF,YAAAH,IAAAjF,EAAAqF,kBACArF,EAAApF,cAAAqK,EAAAjF,EAAAsF,eAAAtF,EAAA0E,eAGAzlE,EAAA1D,QAAA9K,GAAAwO,EAAAzD,QAAA/K,GACA5hE,QAAAC,KAAA,iIAGAkxI,EAAApF,cAAAqK,EAAAjF,EAAAjF,mBAAA+G,EAAA7iE,EAAAxD,YAEAukE,EAAApF,cAAAqK,EAAAjF,EAAAnF,mBAAAiH,EAAA7iE,EAAAvD,YAEAuD,EAAAvD,YAAA/K,GAAAsO,EAAAvD,YAAA5K,GACAjiE,QAAAC,KAAA,qIAIA,IAAA4kG,EAAAxrE,IAAA,kCAAA,CACA,MAAA0iF,EAAAlX,EAAAj1F,IAAA,kCACA,GAAAwgE,EAAAt+E,OAAAywE,IAAA,IAAAsiC,EAAAxrE,IAAA,4BAAA,OAEA,IAAA,IAAAmyE,GAAAp7B,EAAAt+E,OAAA0wE,IAAA,IAAAqiC,EAAAxrE,IAAA,iCAAA,QAEA+2C,EAAAtD,WAAA,GAAAuqC,EAAAznG,IAAAwgE,GAAAsmE,uBACAvF,EAAAwF,cAAAP,EAAAr6B,EAAA66B,2BAAA3+I,KAAAC,IAAAk4E,EAAAtD,WAAAy+B,EAAAwW,qBAEA1K,EAAAznG,IAAAwgE,GAAAsmE,oBAAAtmE,EAAAtD,aAKA,SAAA6nE,EAAAxB,EAAA/iE,QACAj3C,IAAAg6G,EAAAC,cACAD,EAAAC,aAAA,EACAhjE,EAAAz6C,iBAAA,UAAAquF,GACAmvB,EAAAG,eAAAnC,EAAAtF,gBACAjsB,EAAAkL,OAAAj9C,YAIA,SAAA4mE,EAAAtB,EAAA/iE,EAAAkkE,GACA,IAAA8B,EAAAjF,EAAA7E,WACAl8D,EAAAo9C,uBAAA4oB,EAAAjF,EAAAqF,kBACApmE,EAAAs9C,kBAAA0oB,EAAAjF,EAAAoF,YACA5B,EAAAxB,EAAA/iE,GACAjW,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAsK,EAAAjD,EAAAG,gBAEAnC,EAAAyD,YAAAzD,EAAA0D,oBAAAzkE,EAAA7C,OAEA4jE,EAAAyD,YAAAzD,EAAA2D,+BAAA1kE,EAAA9C,kBAEA6jE,EAAAyD,YAAAzD,EAAA4D,iBAAA3kE,EAAA5C,iBAEA2jE,EAAAyD,YAAAzD,EAAA6D,mCAAA7D,EAAA8D,MAEA,MAAAxD,EA9SA,SAAArhE,GACA,OAAAo7B,IACAp7B,EAAA1D,QAAA9K,GAAAwO,EAAAzD,QAAA/K,GAAAwO,EAAAvD,YAAA/K,GAAAsO,EAAAvD,YAAA5K,GA4SA40E,CAAAzmE,KAAA,IAAAwhE,EAAAxhE,EAAA1uB,OACAA,EAAA8vF,EAAAphE,EAAA1uB,MAAA+vF,GAAA,EAAAvwB,GACA4wB,EAAAF,EAAAlwF,IAAA8pD,EACA4mC,EAAAztH,EAAA0wH,QAAAjlE,EAAArsD,QACA,IAGAyxH,EAHAnD,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,MACAwjJ,EAAApD,EAAA9hE,EAAAjD,eAAAilE,EAAAC,GACAkD,EAAAa,EAAAhmE,EAAA0hE,GAEA,MAAA5kE,EAAAkD,EAAAlD,QAEA,GAAAkD,EAAA0mE,eAEAxB,EAAAnE,EAAA4F,gBAEAvrC,EAEA8pC,EADAllE,EAAAt+E,OAAAywE,EACA4uE,EAAA6F,mBACA5mE,EAAAt+E,OAAAwwE,EACA6uE,EAAA8F,kBACA7mE,EAAAt+E,OAAA2wE,EACA0uE,EAAA+F,iBAEA/F,EAAAgG,kBAGA/mE,EAAAt+E,OAAAywE,GACAviE,QAAApK,MAAA,gEAKAw6E,EAAArsD,SAAA6+C,GAAA0yE,IAAAnE,EAAA4F,iBAIA3mE,EAAAt+E,OAAAuwE,GAAA+N,EAAAt+E,OAAAwwE,IACAtiE,QAAAC,KAAA,+FACAmwE,EAAAt+E,KAAAuwE,EACAgwE,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,OAIAs+E,EAAArsD,SAAA8+C,GAAAyyE,IAAAnE,EAAA4F,kBAGAzB,EAAAnE,EAAAiG,cAIAhnE,EAAAt+E,OAAA2wE,IACAziE,QAAAC,KAAA,oFACAmwE,EAAAt+E,KAAA2wE,EACA4vE,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,QAKAqoE,EAAAgyE,WAAAgF,EAAA7E,WAAA,EAAAgJ,EAAA5zF,EAAA5sD,MAAA4sD,EAAAr1B,OAAA,EAAA+lH,EAAAC,EAAA,WACA,GAAAjiE,EAAAnC,cAIA,GAAAf,EAAA96E,OAAA,GAAA0/I,EAAA,CACA,IAAA,IAAAp/I,EAAA,EAAAqzB,EAAAmnD,EAAA96E,OAAAM,EAAAqzB,EAAArzB,IACA8iJ,EAAAtoE,EAAAx6E,GACAynE,EAAAgyE,WAAAgF,EAAA7E,WAAA55I,EAAA4iJ,EAAAE,EAAA1gJ,MAAA0gJ,EAAAnpH,OAAA,EAAA+lH,EAAAC,EAAAmD,EAAAzhJ,MAGAq8E,EAAA/C,iBAAA,EACA8lE,EAAAnB,cAAA9kE,EAAA96E,OAAA,OAEA+nE,EAAAgyE,WAAAgF,EAAA7E,WAAA,EAAAgJ,EAAA5zF,EAAA5sD,MAAA4sD,EAAAr1B,OAAA,EAAA+lH,EAAAC,EAAA3wF,EAAA3tD,MACAo/I,EAAAnB,cAAA,OAEA,GAAA5hE,EAAA+kE,oBAAA,CACA,IAAA,IAAAziJ,EAAA,EAAAqzB,EAAAmnD,EAAA96E,OAAAM,EAAAqzB,EAAArzB,IACA8iJ,EAAAtoE,EAAAx6E,GAEA09E,EAAArsD,SAAA4+C,GAAAyN,EAAArsD,SAAA2+C,EACA,OAAA0vE,EACAj4E,EAAA22E,qBAAAK,EAAA7E,WAAA55I,EAAA4iJ,EAAAE,EAAA1gJ,MAAA0gJ,EAAAnpH,OAAA,EAAAmpH,EAAAzhJ,MAEAiM,QAAAC,KAAA,kGAGAk6D,EAAAgyE,WAAAgF,EAAA7E,WAAA55I,EAAA4iJ,EAAAE,EAAA1gJ,MAAA0gJ,EAAAnpH,OAAA,EAAA+lH,EAAAC,EAAAmD,EAAAzhJ,MAIAo/I,EAAAnB,cAAA9kE,EAAA96E,OAAA,OACA,GAAAg+E,EAAAo9C,qBACArzD,EAAA42E,WAAAI,EAAAqF,iBAAA,EAAAlB,EAAA5zF,EAAA5sD,MAAA4sD,EAAAr1B,OAAAq1B,EAAAgc,MAAA,EAAA00E,EAAAC,EAAA3wF,EAAA3tD,MACAo/I,EAAAnB,cAAA,OACA,GAAA5hE,EAAAs9C,gBACAvzD,EAAA42E,WAAAI,EAAAoF,WAAA,EAAAjB,EAAA5zF,EAAA5sD,MAAA4sD,EAAAr1B,OAAAq1B,EAAAgc,MAAA,EAAA00E,EAAAC,EAAA3wF,EAAA3tD,MACAo/I,EAAAnB,cAAA,OAMA,GAAA9kE,EAAA96E,OAAA,GAAA0/I,EAAA,CACA,IAAA,IAAAp/I,EAAA,EAAAqzB,EAAAmnD,EAAA96E,OAAAM,EAAAqzB,EAAArzB,IACA8iJ,EAAAtoE,EAAAx6E,GACAynE,EAAAgyE,WAAAgF,EAAA7E,WAAA55I,EAAA4iJ,EAAAlD,EAAAC,EAAAmD,GAGAplE,EAAA/C,iBAAA,EACA8lE,EAAAnB,cAAA9kE,EAAA96E,OAAA,OAEA+nE,EAAAgyE,WAAAgF,EAAA7E,WAAA,EAAAgJ,EAAAlD,EAAAC,EAAA3wF,GACAyxF,EAAAnB,cAAA,EAIAH,EAAAzhE,EAAA0hE,IACAC,EAAAqE,EAAAhmE,EAAA1uB,EAAA5sD,MAAA4sD,EAAAr1B,QAGA8mH,EAAAqB,UAAApkE,EAAA71E,QACA61E,EAAA/0D,UAAA+0D,EAAA/0D,SAAA+0D,GA6FA,SAAAinE,EAAAtH,EAAAlpC,EAAAz2B,EAAAknE,EAAAC,GACA,MAAAnF,EAAAztH,EAAA0wH,QAAAjlE,EAAArsD,QACAsuH,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,MACAwjJ,EAAApD,EAAA9hE,EAAAjD,eAAAilE,EAAAC,GAEAkF,IAAApG,EAAAoF,YAAAgB,IAAApG,EAAAqF,iBACAr8E,EAAA42E,WAAAwG,EAAA,EAAAjC,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,OAAAw6E,EAAAnpC,MAAA,EAAA00E,EAAAC,EAAA,MAEAl4E,EAAAgyE,WAAAoL,EAAA,EAAAjC,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,OAAA,EAAA+lH,EAAAC,EAAA,MAGAl4E,EAAA21E,gBAAAqB,EAAAlB,YAAAF,GAEAoB,EAAAqG,qBAAArG,EAAAlB,YAAAqH,EAAAC,EAAAlgC,EAAAznG,IAAAwgE,GAAAkjE,eAAA,GAEAn5E,EAAA21E,gBAAAqB,EAAAlB,YAAA,MAIA,SAAAwH,EAAAC,EAAA7wC,EAAA8wC,GAGA,GAFAxG,EAAAyG,iBAAAzG,EAAA0G,aAAAH,GAEA7wC,EAAAx2B,cAAAw2B,EAAAv2B,cAAA,CACA,IAAAglE,EAAAnE,EAAAgG,kBAEA,GAAAQ,EAAA,CACA,MAAApnE,EAAAs2B,EAAAt2B,aAEAA,GAAAA,EAAAumE,iBACAvmE,EAAAz+E,OAAAywE,EACA+yE,EAAAnE,EAAA6F,mBACAzmE,EAAAz+E,OAAAwwE,IACAgzE,EAAAnE,EAAA8F,oBAIA,MAAAlmE,EAAA+mE,EAAAjxC,GAEAsqC,EAAA4G,+BAAA5G,EAAA0G,aAAA9mE,EAAAukE,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,aAEA8kH,EAAA6G,oBAAA7G,EAAA0G,aAAAvC,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,QAGA8kH,EAAA8G,wBAAA9G,EAAAlB,YAAAkB,EAAA+G,iBAAA/G,EAAA0G,aAAAH,QACA,GAAA7wC,EAAAx2B,aAAAw2B,EAAAv2B,cAAA,CACA,GAAAqnE,EAAA,CACA,MAAA5mE,EAAA+mE,EAAAjxC,GAEAsqC,EAAA4G,+BAAA5G,EAAA0G,aAAA9mE,EAAAogE,EAAA+F,iBAAArwC,EAAA/xG,MAAA+xG,EAAAx6E,aAEA8kH,EAAA6G,oBAAA7G,EAAA0G,aAAA1G,EAAAiG,cAAAvwC,EAAA/xG,MAAA+xG,EAAAx6E,QAGA8kH,EAAA8G,wBAAA9G,EAAAlB,YAAAkB,EAAAgH,yBAAAhH,EAAA0G,aAAAH,OACA,CAEA,MAAAtnE,GAAA,IAAAy2B,EAAAh2B,6BAAAg2B,EAAAz2B,QAAA,GAAAy2B,EAAAz2B,QACAgiE,EAAAztH,EAAA0wH,QAAAjlE,EAAArsD,QACAsuH,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,MACAwjJ,EAAApD,EAAA9hE,EAAAjD,eAAAilE,EAAAC,GAEA,GAAAsF,EAAA,CACA,MAAA5mE,EAAA+mE,EAAAjxC,GAEAsqC,EAAA4G,+BAAA5G,EAAA0G,aAAA9mE,EAAAukE,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,aAEA8kH,EAAA6G,oBAAA7G,EAAA0G,aAAAvC,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,QAIA8kH,EAAAyG,iBAAAzG,EAAA0G,aAAA,MAkCA,SAAAO,EAAAvxC,GACA,MAAA6sC,EAAAr8B,EAAAznG,IAAAi3F,GACAwxC,GAAA,IAAAxxC,EAAAC,wBAEA,GAAAD,EAAAt2B,aAAA,CACA,GAAA8nE,EAAA,MAAA,IAAAx8F,MAAA,6DAnCA,SAAAk0F,EAAAlpC,GAEA,GADAA,GAAAA,EAAAC,wBACA,MAAA,IAAAjrD,MAAA,2DAGA,GAFAse,EAAA21E,gBAAAqB,EAAAlB,YAAAF,IAEAlpC,EAAAt2B,eAAAs2B,EAAAt2B,aAAAumE,eACA,MAAA,IAAAj7F,MAAA,uEAIAw7D,EAAAznG,IAAAi3F,EAAAt2B,cAAA+iE,gBAAAzsC,EAAAt2B,aAAA7uB,MAAA5sD,QAAA+xG,EAAA/xG,OAAA+xG,EAAAt2B,aAAA7uB,MAAAr1B,SAAAw6E,EAAAx6E,SACAw6E,EAAAt2B,aAAA7uB,MAAA5sD,MAAA+xG,EAAA/xG,MACA+xG,EAAAt2B,aAAA7uB,MAAAr1B,OAAAw6E,EAAAx6E,OACAw6E,EAAAt2B,aAAAlC,aAAA,GAGAgmE,EAAAxtC,EAAAt2B,aAAA,GAEA,MAAA+nE,EAAAjhC,EAAAznG,IAAAi3F,EAAAt2B,cAAA+iE,eAEA,GAAAzsC,EAAAt2B,aAAAxsD,SAAA6+C,EACAuuE,EAAAqG,qBAAArG,EAAAlB,YAAAkB,EAAA+G,iBAAA/G,EAAA7E,WAAAgM,EAAA,OACA,CAAA,GAAAzxC,EAAAt2B,aAAAxsD,SAAA8+C,EAGA,MAAA,IAAAhnB,MAAA,+BAFAs1F,EAAAqG,qBAAArG,EAAAlB,YAAAkB,EAAAgH,yBAAAhH,EAAA7E,WAAAgM,EAAA,IAaAC,CAAA7E,EAAAE,mBAAA/sC,QAEA,GAAAwxC,EAAA,CACA3E,EAAAG,mBAAA,GAEA,IAAA,IAAAnhJ,EAAA,EAAAA,EAAA,EAAAA,IACAynE,EAAA21E,gBAAAqB,EAAAlB,YAAAyD,EAAAE,mBAAAlhJ,IACAghJ,EAAAG,mBAAAnhJ,GAAAy+I,EAAAqH,qBACAf,EAAA/D,EAAAG,mBAAAnhJ,GAAAm0G,GAAA,QAGA1sC,EAAA21E,gBAAAqB,EAAAlB,YAAAyD,EAAAE,oBACAF,EAAAG,mBAAA1C,EAAAqH,qBACAf,EAAA/D,EAAAG,mBAAAhtC,GAAA,GAIA1sC,EAAA21E,gBAAAqB,EAAAlB,YAAA,MAyLA,SAAA6H,EAAAjxC,GACA,OAAA2E,GAAA3E,EAAA71B,+BAAA/4E,KAAAC,IAAAgqH,EAAArb,EAAA91B,SAAA,EAcA,IAAA0nE,IAAA,EACAC,IAAA,EA6BA3mJ,KAAA28H,oBAvtBA,WACA,MAAAiqB,EAAAvE,EAOA,OALAuE,GAAA73B,GACA9gH,QAAAC,KAAA,sCAAA04I,EAAA,+CAAA73B,GAGAszB,GAAA,EACAuE,GAgtBA5mJ,KAAA6mJ,kBA5tBA,WACAxE,EAAA,GA4tBAriJ,KAAAsiJ,aAAAA,EACAtiJ,KAAAq/H,kBAzrBA,SAAAhhD,EAAAkkE,GACA,MAAAnB,EAAA97B,EAAAznG,IAAAwgE,GAEAA,EAAA71E,QAAA,GAAA44I,EAAAqB,YAAApkE,EAAA71E,QACAk6I,EAAAtB,EAAA/iE,EAAAkkE,IAIAn6E,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAqF,EAAAqF,iBAAArD,EAAAG,kBAirBAvhJ,KAAAi/H,aA9qBA,SAAA5gD,EAAAkkE,GACA,MAAAnB,EAAA97B,EAAAznG,IAAAwgE,GAEAA,EAAA71E,QAAA,GAAA44I,EAAAqB,YAAApkE,EAAA71E,QACAk6I,EAAAtB,EAAA/iE,EAAAkkE,IAIAn6E,EAAAw1E,cAAAwB,EAAAtB,SAAAyE,GACAn6E,EAAA2xE,YAAAqF,EAAAoF,WAAApD,EAAAG,kBAsqBAvhJ,KAAA2iJ,eAAAA,EACA3iJ,KAAA8mJ,kBAxOA,SAAAhyC,GACA,MAAAz2B,EAAAy2B,EAAAz2B,QACAsjE,EAAAr8B,EAAAznG,IAAAi3F,GACAssC,EAAA97B,EAAAznG,IAAAwgE,GACAy2B,EAAAlxE,iBAAA,UAAA89G,IAEA,IAAA5sC,EAAAh2B,+BACAsiE,EAAAG,eAAAnC,EAAAtF,gBACAsH,EAAAqB,UAAApkE,EAAA71E,QACAqlH,EAAAkL,OAAAj9C,YAGA,MAAAwqE,GAAA,IAAAxxC,EAAAC,wBACAgyC,GAAA,IAAAjyC,EAAAh2B,6BACA8mE,GAAA,IAAA9wC,EAAA71B,+BACA+nE,EAAA3oE,EAAAs9C,iBAAAt9C,EAAAo9C,qBACAskB,EAAAF,EAAA/qC,IAAA2E,EAQA,IANAA,GAAAp7B,EAAArsD,SAAA2+C,GAAA0N,EAAAt+E,OAAAywE,GAAA6N,EAAAt+E,OAAA0wE,IACA4N,EAAArsD,OAAA4+C,EACA3iE,QAAAC,KAAA,4GAIAo4I,EAAA,CACA3E,EAAAE,mBAAA,GAEA,IAAA,IAAAlhJ,EAAA,EAAAA,EAAA,EAAAA,IACAghJ,EAAAE,mBAAAlhJ,GAAAy+I,EAAA6H,yBAKA,GAFAtF,EAAAE,mBAAAzC,EAAA6H,oBAEAF,EACA,GAAAvtC,EAAAvG,YAAA,CACA,MAAAn3B,EAAAg5B,EAAAz2B,QAEA,IAAA,IAAA19E,EAAA,EAAAqzB,EAAA8nD,EAAAz7E,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAwhJ,EAAA78B,EAAAznG,IAAAi+D,EAAAn7E,SAEAymC,IAAA+6G,EAAAZ,iBACAY,EAAAZ,eAAAnC,EAAAtF,gBACAjsB,EAAAkL,OAAAj9C,kBAIA7tE,QAAAC,KAAA,sHAEA,GAAA03I,EACA,GAAAnsC,EAAA,CACAkoC,EAAAK,+BAAA5C,EAAA6H,oBACAtF,EAAAM,yBAAA7C,EAAAqH,qBAEArH,EAAAyG,iBAAAzG,EAAA0G,aAAAnE,EAAAM,0BAEA,MAAA5B,EAAAztH,EAAA0wH,QAAAjlE,EAAArsD,QACAsuH,EAAA1tH,EAAA0wH,QAAAjlE,EAAAt+E,MACAwjJ,EAAApD,EAAA9hE,EAAAjD,eAAAilE,EAAAC,GACAthE,EAAA+mE,EAAAjxC,GAEAsqC,EAAA4G,+BAAA5G,EAAA0G,aAAA9mE,EAAAukE,EAAAzuC,EAAA/xG,MAAA+xG,EAAAx6E,QAEA8tC,EAAA21E,gBAAAqB,EAAAlB,YAAAyD,EAAAK,gCAEA5C,EAAA8G,wBAAA9G,EAAAlB,YAAAkB,EAAA8H,kBAAA9H,EAAA0G,aAAAnE,EAAAM,0BAEA7C,EAAAyG,iBAAAzG,EAAA0G,aAAA,MAEAhxC,EAAAx2B,cACAqjE,EAAAO,yBAAA9C,EAAAqH,qBACAf,EAAA/D,EAAAO,yBAAAptC,GAAA,IAGA1sC,EAAA21E,gBAAAqB,EAAAlB,YAAA,WAEAjwI,QAAAC,KAAA,mFAMA,GAAAo4I,EAAA,CACAl+E,EAAA2xE,YAAAqF,EAAA5E,iBAAA4G,EAAAG,gBACAiC,EAAApE,EAAA5E,iBAAAn8D,EAAA0hE,GAEA,IAAA,IAAAp/I,EAAA,EAAAA,EAAA,EAAAA,IACA2kJ,EAAA3D,EAAAE,mBAAAlhJ,GAAAm0G,EAAAz2B,EAAA+gE,EAAA8H,kBAAA9H,EAAA3E,4BAAA95I,GAGAm/I,EAAAzhE,EAAA0hE,IACAC,EAAAZ,EAAA5E,iBAAAn8D,EAAAy2B,EAAA/xG,MAAA+xG,EAAAx6E,QAGA8tC,EAAA02E,qBACA,GAAAiI,EAAA,CACA,MAAAjrE,EAAAg5B,EAAAz2B,QAEA,IAAA,IAAA19E,EAAA,EAAAqzB,EAAA8nD,EAAAz7E,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA4kJ,EAAAzpE,EAAAn7E,GACAwhJ,EAAA78B,EAAAznG,IAAA0nI,GACAn9E,EAAA2xE,YAAAqF,EAAA7E,WAAA4H,EAAAZ,gBACAiC,EAAApE,EAAA7E,WAAAgL,EAAAxF,GACAuF,EAAA3D,EAAAE,mBAAA/sC,EAAAywC,EAAAnG,EAAA8H,kBAAAvmJ,EAAAy+I,EAAA7E,YAEAuF,EAAAyF,EAAAxF,IACAC,EAAAZ,EAAA7E,WAAAgL,EAAAzwC,EAAA/xG,MAAA+xG,EAAAx6E,QAIA8tC,EAAA02E,oBACA,CACA,IAAAqI,EAAA/H,EAAA7E,WAEA,GAAAyM,EAEA,GAAAvtC,EAAA,CAEA0tC,EADA9oE,EAAAs9C,gBACAyjB,EAAAoF,WAAApF,EAAAqF,sBAEAx2I,QAAAC,KAAA,gFAIAk6D,EAAA2xE,YAAAoN,EAAA/F,EAAAG,gBACAiC,EAAA2D,EAAA9oE,EAAA0hE,GACAuF,EAAA3D,EAAAE,mBAAA/sC,EAAAz2B,EAAA+gE,EAAA8H,kBAAAC,GAEArH,EAAAzhE,EAAA0hE,IACAC,EAAAmH,EAAA9oE,EAAAy2B,EAAA/xG,MAAA+xG,EAAAx6E,OAAAw6E,EAAAnpC,OAGAvD,EAAA02E,gBAIAhqC,EAAAx2B,aACA+nE,EAAAvxC,IAiGA90G,KAAAonJ,yBA7FA,SAAAtyC,GACA,MAAAirC,EAAAF,EAAA/qC,IAAA2E,EACA39B,GAAA,IAAAg5B,EAAAh2B,6BAAAg2B,EAAAz2B,QAAA,CAAAy2B,EAAAz2B,SAEA,IAAA,IAAA19E,EAAA,EAAAqzB,EAAA8nD,EAAAz7E,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA09E,EAAAvC,EAAAn7E,GAEA,GAAAm/I,EAAAzhE,EAAA0hE,GAAA,CACA,MAAA5wI,EAAA2lG,EAAAC,wBAAAqqC,EAAA5E,iBAAA4E,EAAA7E,WAEAqE,EAAAt5B,EAAAznG,IAAAwgE,GAAAkjE,eAEAn5E,EAAA2xE,YAAA5qI,EAAAyvI,GACAoB,EAAA7wI,EAAAkvE,EAAAy2B,EAAA/xG,MAAA+xG,EAAAx6E,QACA8tC,EAAA02E,mBAgFA9+I,KAAAqnJ,8BA3EA,SAAAvyC,GACA,GAAAA,EAAA71B,+BACA,GAAAw6B,EAAA,CACA,MAAA12G,EAAA+xG,EAAA/xG,MACAu3B,EAAAw6E,EAAAx6E,OACA,IAAAu1D,EAAAuvD,EAAAkI,iBACAxyC,EAAAx2B,cAAAuR,GAAAuvD,EAAAmI,kBACAzyC,EAAAv2B,gBAAAsR,GAAAuvD,EAAAoI,oBACA,MAAA7F,EAAAr8B,EAAAznG,IAAAi3F,GACA1sC,EAAA21E,gBAAAqB,EAAAF,iBAAAyC,EAAAK,gCACA55E,EAAA21E,gBAAAqB,EAAAnB,iBAAA0D,EAAAE,oBAEAzC,EAAAqI,gBAAA,EAAA,EAAA1kJ,EAAAu3B,EAAA,EAAA,EAAAv3B,EAAAu3B,EAAAu1D,EAAAuvD,EAAAlF,SAEA9xE,EAAA21E,gBAAAqB,EAAAF,iBAAA,MACA92E,EAAA21E,gBAAAqB,EAAAnB,iBAAA0D,EAAAK,qCAEA/zI,QAAAC,KAAA,oFA2DAlO,KAAA++H,iBApCA,SAAA1gD,EAAAkkE,GACAlkE,GAAAA,EAAAM,uBACA,IAAA+nE,KACAz4I,QAAAC,KAAA,oHACAw4I,IAAA,GAGAroE,EAAAA,EAAAA,SAGAikE,EAAAjkE,EAAAkkE,IA2BAviJ,KAAAm/H,mBAxBA,SAAA9gD,EAAAkkE,GACAlkE,GAAAA,EAAA02B,2BACA,IAAA4xC,KACA14I,QAAAC,KAAA,2HACAy4I,IAAA,GAGAtoE,EAAAA,EAAAA,SAGAskE,EAAAtkE,EAAAkkE,IAiBA,SAAAmF,GAAAnuC,EAAAzG,EAAA0G,GACA,MAAAC,EAAAD,EAAAC,SAwHA,MAAA,CACA6pC,QAvHA,SAAAlhJ,GACA,IAAA4nH,EACA,GAAA5nH,IAAAiuE,EAAA,OAAAkpC,EAAAqB,cACA,GApmhBA,OAomhBAx4G,EAAA,OAAAm3G,EAAAouC,uBACA,GApmhBA,OAomhBAvlJ,EAAA,OAAAm3G,EAAAquC,uBACA,GApmhBA,OAomhBAxlJ,EAAA,OAAAm3G,EAAAsuC,qBACA,GA9mhBA,OA8mhBAzlJ,EAAA,OAAAm3G,EAAAoB,KACA,GA9mhBA,OA8mhBAv4G,EAAA,OAAAm3G,EAAAiB,MACA,GAAAp4G,IAAAkuE,EAAA,OAAAipC,EAAAgB,eACA,GA9mhBA,OA8mhBAn4G,EAAA,OAAAm3G,EAAAmB,IACA,GAAAt4G,IAAAmuE,EAAA,OAAAgpC,EAAAkB,aACA,GAAAr4G,IAAAouE,EAAA,OAAA+oC,EAAAc,MAEA,GAAAj4G,IAAAquE,EACA,OAAAgpC,EAAAF,EAAAe,YACA0P,EAAAlX,EAAAj1F,IAAA,0BAEA,OAAAmsG,EACAA,EAAA89B,eAEA,MAIA,GArnhBA,OAqnhBA1lJ,EAAA,OAAAm3G,EAAAwuC,MACA,GAAA3lJ,IAAAuuE,EAAA,OAAA4oC,EAAAonC,IACA,GAAAv+I,IAAAwuE,EAAA,OAAA2oC,EAAA8gC,KACA,GArnhBA,OAqnhBAj4I,EAAA,OAAAm3G,EAAAyuC,UACA,GArnhBA,OAqnhBA5lJ,EAAA,OAAAm3G,EAAA0uC,gBACA,GAAA7lJ,IAAAyuE,EAAA,OAAA0oC,EAAAyrC,gBACA,GAAA5iJ,IAAA0uE,EAAA,OAAAyoC,EAAA8rC,cACA,GApnhBA,OAonhBAjjJ,EAAA,OAAAm3G,EAAAgnC,IAEA,GArnhBA,OAqnhBAn+I,EAAA,OAAAm3G,EAAA2uC,YACA,GArnhBA,OAqnhBA9lJ,EAAA,OAAAm3G,EAAA4uC,GACA,GArnhBA,OAqnhBA/lJ,EAAA,OAAAm3G,EAAA6uC,WACA,GArnhBA,OAqnhBAhmJ,EAAA,OAAAm3G,EAAA8uC,YACA,GArnhBA,OAqnhBAjmJ,EAAA,OAAAm3G,EAAA+uC,aAEA,GAAAlmJ,IAAA2uE,GAAA3uE,IAAA4uE,GAAA5uE,IAAA6uE,GAAA7uE,IAAA8uE,EAAA,CAGA,GAFA84C,EAAAlX,EAAAj1F,IAAA,iCAEA,OAAAmsG,EAMA,OAAA,KALA,GAAA5nH,IAAA2uE,EAAA,OAAAi5C,EAAAu+B,6BACA,GAAAnmJ,IAAA4uE,EAAA,OAAAg5C,EAAAw+B,8BACA,GAAApmJ,IAAA6uE,EAAA,OAAA+4C,EAAAy+B,8BACA,GAAArmJ,IAAA8uE,EAAA,OAAA84C,EAAA0+B,8BAMA,GAAAtmJ,IAAA+uE,GAAA/uE,IAAAgvE,GAAAhvE,IAAAivE,GAAAjvE,IAAAkvE,EAAA,CAGA,GAFA04C,EAAAlX,EAAAj1F,IAAA,kCAEA,OAAAmsG,EAMA,OAAA,KALA,GAAA5nH,IAAA+uE,EAAA,OAAA64C,EAAA2+B,gCACA,GAAAvmJ,IAAAgvE,EAAA,OAAA44C,EAAA4+B,gCACA,GAAAxmJ,IAAAivE,EAAA,OAAA24C,EAAA6+B,iCACA,GAAAzmJ,IAAAkvE,EAAA,OAAA04C,EAAA8+B,iCAMA,GAxohBA,QAwohBA1mJ,EAGA,OAFA4nH,EAAAlX,EAAAj1F,IAAA,iCAEA,OAAAmsG,EACAA,EAAA++B,0BAEA,KAIA,IAAA3mJ,IAAAmvE,GAAAnvE,IAAAovE,KACAw4C,EAAAlX,EAAAj1F,IAAA,gCAEA,OAAAmsG,GAAA,CACA,GAAA5nH,IAAAmvE,EAAA,OAAAy4C,EAAAg/B,qBACA,GAAA5mJ,IAAAovE,EAAA,OAAAw4C,EAAAi/B,0BAIA,OAxphBA,QAwphBA7mJ,GAvphBA,QAuphBAA,GAtphBA,QAsphBAA,GArphBA,QAqphBAA,GApphBA,QAophBAA,GAnphBA,QAmphBAA,GAlphBA,QAkphBAA,GAjphBA,QAiphBAA,GAhphBA,QAgphBAA,GA/ohBA,QA+ohBAA,GA9ohBA,QA8ohBAA,GA7ohBA,QA6ohBAA,GA5ohBA,QA4ohBAA,GA3ohBA,QA2ohBAA,GAzohBA,QAyohBAA,GAxohBA,QAwohBAA,GAvohBA,QAuohBAA,GAtohBA,QAsohBAA,GArohBA,QAqohBAA,GApohBA,QAoohBAA,GAnohBA,QAmohBAA,GAlohBA,QAkohBAA,GAjohBA,QAiohBAA,GAhohBA,QAgohBAA,GA/nhBA,QA+nhBAA,GA9nhBA,QA8nhBAA,GA7nhBA,QA6nhBAA,GA5nhBA,QA4nhBAA,GACA4nH,EAAAlX,EAAAj1F,IAAA,iCAEA,OAAAmsG,EAEA5nH,EAEA,MAjphBA,QAqphBAA,GACA4nH,EAAAlX,EAAAj1F,IAAA,gCAEA,OAAAmsG,EAEA5nH,EAEA,MAIAA,IAAAsuE,EACA+oC,EAAAF,EAAA2vC,mBACAl/B,EAAAlX,EAAAj1F,IAAA,uBAEA,OAAAmsG,EACAA,EAAAm/B,wBAEA,WAPA,IAiBA,MAAAC,WAAA31C,GACA5gC,YAAA1O,EAAA,IACA8W,QACAj7E,KAAAqpJ,QAAAllF,GAKAilF,GAAArgJ,UAAAugJ,eAAA,EAEA,MAAAC,WAAA14D,GACAhe,cACAoI,QACAj7E,KAAAD,KAAA,SAKAwpJ,GAAAxgJ,UAAAygJ,SAAA,EAEA,MAAAC,GAAA,CACA1pJ,KAAA,QAGA,MAAA2pJ,GACA72E,cACA7yE,KAAA2pJ,WAAA,KACA3pJ,KAAA4pJ,MAAA,KACA5pJ,KAAA6pJ,MAAA,KAGAh3E,eAWA,OAVA,OAAA7yE,KAAA6pJ,QACA7pJ,KAAA6pJ,MAAA,IAAAN,GACAvpJ,KAAA6pJ,MAAAxuE,kBAAA,EACAr7E,KAAA6pJ,MAAAx4D,SAAA,EACArxF,KAAA6pJ,MAAAC,OAAA,GACA9pJ,KAAA6pJ,MAAAE,WAAA,CACAC,UAAA,IAIAhqJ,KAAA6pJ,MAGAh3E,oBAWA,OAVA,OAAA7yE,KAAA2pJ,aACA3pJ,KAAA2pJ,WAAA,IAAAJ,GACAvpJ,KAAA2pJ,WAAAtuE,kBAAA,EACAr7E,KAAA2pJ,WAAAt4D,SAAA,EACArxF,KAAA2pJ,WAAAM,mBAAA,EACAjqJ,KAAA2pJ,WAAAO,eAAA,IAAAtnE,GACA5iF,KAAA2pJ,WAAAQ,oBAAA,EACAnqJ,KAAA2pJ,WAAAS,gBAAA,IAAAxnE,IAGA5iF,KAAA2pJ,WAGA92E,eAWA,OAVA,OAAA7yE,KAAA4pJ,QACA5pJ,KAAA4pJ,MAAA,IAAAL,GACAvpJ,KAAA4pJ,MAAAvuE,kBAAA,EACAr7E,KAAA4pJ,MAAAv4D,SAAA,EACArxF,KAAA4pJ,MAAAK,mBAAA,EACAjqJ,KAAA4pJ,MAAAM,eAAA,IAAAtnE,GACA5iF,KAAA4pJ,MAAAO,oBAAA,EACAnqJ,KAAA4pJ,MAAAQ,gBAAA,IAAAxnE,IAGA5iF,KAAA4pJ,MAGA/2E,cAAAxxE,GAaA,OAZA,OAAArB,KAAA2pJ,YACA3pJ,KAAA2pJ,WAAAz9G,cAAA7qC,GAGA,OAAArB,KAAA4pJ,OACA5pJ,KAAA4pJ,MAAA19G,cAAA7qC,GAGA,OAAArB,KAAA6pJ,OACA7pJ,KAAA6pJ,MAAA39G,cAAA7qC,GAGArB,KAGA6yE,WAAAw3E,GAkBA,OAjBArqJ,KAAAksC,cAAA,CACAnsC,KAAA,eACAiC,KAAAqoJ,IAGA,OAAArqJ,KAAA2pJ,aACA3pJ,KAAA2pJ,WAAAt4D,SAAA,GAGA,OAAArxF,KAAA4pJ,QACA5pJ,KAAA4pJ,MAAAv4D,SAAA,GAGA,OAAArxF,KAAA6pJ,QACA7pJ,KAAA6pJ,MAAAx4D,SAAA,GAGArxF,KAGA6yE,OAAAw3E,EAAAp0I,EAAAq0I,GACA,IAAAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,MAAAC,EAAA1qJ,KAAA2pJ,WACAgB,EAAA3qJ,KAAA4pJ,MACAgB,EAAA5qJ,KAAA6pJ,MAEA,GAAAQ,GAAA,oBAAAp0I,EAAAgzG,QAAAhgD,gBA0BA,GAzBA,OAAAyhF,IACAH,EAAAt0I,EAAA40I,QAAAR,EAAAS,eAAAR,GAEA,OAAAC,IACAG,EAAA/sH,OAAAg8C,UAAA4wE,EAAA3sH,UAAAD,QACA+sH,EAAA/sH,OAAAk0D,UAAA64D,EAAA11I,SAAA01I,EAAAxrH,SAAAwrH,EAAA3zH,OAEAwzH,EAAAL,gBACAQ,EAAAT,mBAAA,EACAS,EAAAR,eAAAr4I,KAAA04I,EAAAL,iBAEAQ,EAAAT,mBAAA,EAGAM,EAAAH,iBACAM,EAAAP,oBAAA,EACAO,EAAAN,gBAAAv4I,KAAA04I,EAAAH,kBAEAM,EAAAP,oBAAA,EAGAnqJ,KAAAksC,cAAAu9G,MAIAmB,GAAAP,EAAAO,KAAA,CACAH,GAAA,EAEA,IAAA,MAAAM,KAAAV,EAAAO,KAAArqJ,SAAA,CAEA,MAAAyqJ,EAAA/0I,EAAAg1I,aAAAF,EAAAT,GAEA,QAAAljH,IAAAwjH,EAAAd,OAAAiB,EAAAG,WAAA,CAEA,MAAAC,EAAA,IAAA5B,GACA4B,EAAA9vE,kBAAA,EACA8vE,EAAA95D,SAAA,EACAu5D,EAAAd,OAAAiB,EAAAG,WAAAC,EAEAP,EAAAttI,IAAA6tI,GAGA,MAAAA,EAAAP,EAAAd,OAAAiB,EAAAG,WAEA,OAAAF,IACAG,EAAAxtH,OAAAg8C,UAAAqxE,EAAAptH,UAAAD,QACAwtH,EAAAxtH,OAAAk0D,UAAAs5D,EAAAn2I,SAAAm2I,EAAAjsH,SAAAisH,EAAAp0H,OACAo0H,EAAAC,YAAAJ,EAAAlwI,QAGAqwI,EAAA95D,QAAA,OAAA25D,EAKA,MAAAK,EAAAT,EAAAd,OAAA,oBACAwB,EAAAV,EAAAd,OAAA,aACAztI,EAAAgvI,EAAAr2I,SAAAuzE,WAAA+iE,EAAAt2I,UACAu2I,EAAA,IACAhpI,EAAA,KAEAqoI,EAAAb,WAAAC,UAAA3tI,EAAAkvI,EAAAhpI,GACAqoI,EAAAb,WAAAC,UAAA,EACAhqJ,KAAAksC,cAAA,CACAnsC,KAAA,WACAyrJ,WAAAnB,EAAAmB,WACAr8I,OAAAnP,SAEA4qJ,EAAAb,WAAAC,UAAA3tI,GAAAkvI,EAAAhpI,IACAqoI,EAAAb,WAAAC,UAAA,EACAhqJ,KAAAksC,cAAA,CACAnsC,KAAA,aACAyrJ,WAAAnB,EAAAmB,WACAr8I,OAAAnP,aAIA,OAAA2qJ,GAAAN,EAAAoB,YACAjB,EAAAv0I,EAAA40I,QAAAR,EAAAoB,UAAAnB,GAEA,OAAAE,IACAG,EAAAhtH,OAAAg8C,UAAA6wE,EAAA5sH,UAAAD,QACAgtH,EAAAhtH,OAAAk0D,UAAA84D,EAAA31I,SAAA21I,EAAAzrH,SAAAyrH,EAAA5zH,OAEAyzH,EAAAN,gBACAS,EAAAV,mBAAA,EACAU,EAAAT,eAAAr4I,KAAA24I,EAAAN,iBAEAS,EAAAV,mBAAA,EAGAO,EAAAJ,iBACAO,EAAAR,oBAAA,EACAQ,EAAAP,gBAAAv4I,KAAA24I,EAAAJ,kBAEAO,EAAAR,oBAAA,IAmBA,OAZA,OAAAO,IACAA,EAAAr5D,QAAA,OAAAk5D,GAGA,OAAAI,IACAA,EAAAt5D,QAAA,OAAAm5D,GAGA,OAAAI,IACAA,EAAAv5D,QAAA,OAAAo5D,GAGAzqJ,MAKA,MAAA0rJ,WAAA94E,GACAC,YAAAzhD,EAAAmoF,GACAt+B,QACA,MAAAptE,EAAA7N,KACAooE,EAAAh3C,EAAAg3C,MACA,IAAA6gD,EAAA,KACA0iC,EAAA,EACArB,EAAA,KACAsB,EAAA,cACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACArG,GAAA,EACAsG,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,MAAAC,EAAA,GACAC,EAAA,IAAAtlH,IAEAulH,EAAA,IAAAj5C,GACAi5C,EAAA38D,OAAA/hC,OAAA,GACA0+F,EAAAtuE,SAAA,IAAAzB,GACA,MAAAgwE,EAAA,IAAAl5C,GACAk5C,EAAA58D,OAAA/hC,OAAA,GACA2+F,EAAAvuE,SAAA,IAAAzB,GACA,MAAA0sE,EAAA,CAAAqD,EAAAC,GACAC,EAAA,IAAAxD,GACAwD,EAAA78D,OAAA/hC,OAAA,GACA4+F,EAAA78D,OAAA/hC,OAAA,GACA,IAAA6+F,EAAA,KACAC,EAAA,KAwCA,SAAAC,EAAA1rJ,GACA,MAAAgjE,EAAAooF,EAAA5uI,IAAAxc,EAAAgpJ,aAEAhmF,GACAA,EAAAn4B,cAAA,CACAnsC,KAAAsB,EAAAtB,KACAiC,KAAAX,EAAAgpJ,cAKA,SAAA2C,IACAP,EAAAz8I,SAAA,SAAAq0D,EAAAgmF,GACAhmF,EAAAlvB,WAAAk1G,MAEAoC,EAAA3gI,QACA+gI,EAAA,KACAC,EAAA,KAEA1kF,EAAA+1E,kBAAA,MACA/sH,EAAAukF,gBAAAvkF,EAAAskF,mBACAq2C,GAAAxyC,EAAAqoC,kBAAAmK,GACAG,GAAA3yC,EAAAqoC,kBAAAsK,GACAC,GAAA5yC,EAAAwoC,mBAAAoK,GACAC,GAAA7yC,EAAAwoC,mBAAAqK,GACAL,EAAA,KACAG,EAAA,KACAC,EAAA,KACAC,EAAA,KACAH,EAAA,KACAD,EAAA,KACAF,EAAA,KACA7iC,EAAA,KAEAn4G,EAAA8nD,OACA/qD,EAAAo/I,cAAA,EACAp/I,EAAAq+B,cAAA,CACAnsC,KAAA,eA0IA,SAAAmtJ,EAAA7rJ,GACA,MAAA8rJ,EAAAlkC,EAAAkkC,aAEA,IAAA,IAAAxsJ,EAAA,EAAAA,EAAA6rJ,EAAAnsJ,OAAAM,IACA8rJ,EAAAxnI,IAAAkoI,EAAAxsJ,GAAA6rJ,EAAA7rJ,IAIA,IAAA,IAAAA,EAAA,EAAAA,EAAAU,EAAA+rJ,QAAA/sJ,OAAAM,IAAA,CACA,MAAA0pJ,EAAAhpJ,EAAA+rJ,QAAAzsJ,GACA0jE,EAAAooF,EAAA5uI,IAAAwsI,GAEAhmF,IACAA,EAAAn4B,cAAA,CACAnsC,KAAA,eACAiC,KAAAqoJ,IAEAoC,EAAA5yC,OAAAwwC,IAKA,IAAA,IAAA1pJ,EAAA,EAAAA,EAAAU,EAAAgsJ,MAAAhtJ,OAAAM,IAAA,CACA,MAAA0pJ,EAAAhpJ,EAAAgsJ,MAAA1sJ,GACA0jE,EAAAooF,EAAA5uI,IAAAwsI,GAEAhmF,GACAA,EAAAn4B,cAAA,CACAnsC,KAAA,YACAiC,KAAAqoJ,KAlPArqJ,KAAAstJ,kBAAA,EACAttJ,KAAAw1C,SAAA,EACAx1C,KAAAitJ,cAAA,EAEAjtJ,KAAAutJ,cAAA,SAAAj1I,GACA,IAAA+rD,EAAAmoF,EAAAl0I,GAOA,YALA8uB,IAAAi9B,IACAA,EAAA,IAAAqlF,GACA8C,EAAAl0I,GAAA+rD,GAGAA,EAAAmpF,qBAGAxtJ,KAAAytJ,kBAAA,SAAAn1I,GACA,IAAA+rD,EAAAmoF,EAAAl0I,GAOA,YALA8uB,IAAAi9B,IACAA,EAAA,IAAAqlF,GACA8C,EAAAl0I,GAAA+rD,GAGAA,EAAAqpF,gBAGA1tJ,KAAA2tJ,QAAA,SAAAr1I,GACA,IAAA+rD,EAAAmoF,EAAAl0I,GAOA,YALA8uB,IAAAi9B,IACAA,EAAA,IAAAqlF,GACA8C,EAAAl0I,GAAA+rD,GAGAA,EAAAupF,gBA6CA5tJ,KAAA6tJ,0BAAA,SAAA/tJ,GACA6rJ,EAAA7rJ,GAEA,IAAA+N,EAAAo/I,cACAh/I,QAAAC,KAAA,0EAIAlO,KAAA8tJ,sBAAA,SAAAhuJ,GACA8rJ,EAAA9rJ,GAEA,IAAA+N,EAAAo/I,cACAh/I,QAAAC,KAAA,6EAIAlO,KAAA+tJ,kBAAA,WACA,OAAAzD,GAGAtqJ,KAAAguJ,aAAA,WACA,OAAA,OAAAhC,EAAAA,EAAAC,GAGAjsJ,KAAAiuJ,WAAA,WACA,OAAAnC,GAGA9rJ,KAAAkuJ,SAAA,WACA,OAAA7B,GAGArsJ,KAAAkpH,WAAA,WACA,OAAAD,GAGAjpH,KAAAmuJ,WAAAC,eAAAtuJ,GAGA,GAFAmpH,EAAAnpH,EAEA,OAAAmpH,EAAA,CACAA,EAAArlF,iBAAA,SAAAmpH,GACA9jC,EAAArlF,iBAAA,cAAAmpH,GACA9jC,EAAArlF,iBAAA,YAAAmpH,GACA9jC,EAAArlF,iBAAA,UAAAmpH,GACA9jC,EAAArlF,iBAAA,eAAAmpH,GACA9jC,EAAArlF,iBAAA,aAAAmpH,GACA9jC,EAAArlF,iBAAA,MAAAopH,GACA/jC,EAAArlF,iBAAA,qBAAAspH,GACA,MAAAx4G,EAAA6kE,EAAA80C,uBAMA,IAJA,IAAA35G,EAAA45G,oBACA/0C,EAAAg1C,wBAGAnnH,IAAA6hF,EAAA6oB,YAAA/hD,OAAA,CACA,MAAAy+D,EAAA,CACAC,UAAA/5G,EAAA+5G,UACAz3H,MAAA0d,EAAA1d,MACA20C,MAAAj3B,EAAAi3B,MACA2qC,QAAA5hE,EAAA4hE,QACAq1C,uBAAAA,GAEAM,EAAA,IAAAyC,aAAAzlC,EAAA1P,EAAAi1C,GACAvlC,EAAA0lC,kBAAA,CACAC,UAAA3C,SAEA,GAAA1yC,aAAAs1C,sBAAA,CAGA,MAAAL,EAAA,CACAC,WAAA,EACAz3H,MAAA0d,EAAA1d,MACA20C,MAAAj3B,EAAAi3B,MACA2qC,QAAA5hE,EAAA4hE,QACAq1C,uBAAAA,GAEAM,EAAA,IAAAyC,aAAAzlC,EAAA1P,EAAAi1C,GACAvlC,EAAA0lC,kBAAA,CACA5+D,OAAA,CAAAk8D,SAEA,CACArG,EAAAlxG,EAAA+5G,UACA,IAAAK,EAAA,KAEAp6G,EAAAi3B,QACA4gF,EAAAhzC,EAAAguC,iBACA7yG,EAAA4hE,UAAAi2C,GAAAhzC,EAAAiuC,oBACA8E,EAAA53G,EAAA4hE,QAAAiD,EAAA6sC,yBAAA7sC,EAAA4sC,iBACA2I,EAAAp6G,EAAA4hE,QAAAiD,EAAA4rC,iBAAA5rC,EAAA2rC,mBAGA,MAAA6J,EAAA,CACAC,YAAAt6G,EAAA1d,MAAAuiF,EAAA0nC,MAAA1nC,EAAAunC,KACAgO,YAAAA,EACAhf,YAAA6b,GAEAG,EAAA,IAAAmD,eAAAhmC,EAAA1P,GACAyyC,EAAAF,EAAAoD,sBAAAH,GACAhD,EAAAxyC,EAAA0tC,oBACAh+B,EAAA0lC,kBAAA,CACA5+D,OAAA,CAAAi8D,KAGApG,IACAsG,EAAA3yC,EAAA0tC,oBACAkF,EAAA5yC,EAAAktC,qBACAltC,EAAAssC,iBAAAtsC,EAAAusC,aAAAqG,GACA5yC,EAAAysC,+BAAAzsC,EAAAusC,aAAA,EAAAvsC,EAAA0nC,MAAA+K,EAAAmD,aAAAnD,EAAAoD,eACAhnF,EAAA21E,gBAAAxkC,EAAA2kC,YAAAgO,GACA3yC,EAAA2sC,wBAAA3sC,EAAA2kC,YAAA3kC,EAAA2tC,kBAAA3tC,EAAAusC,aAAAqG,GACA5yC,EAAAssC,iBAAAtsC,EAAAusC,aAAA,MAEA,OAAAgJ,IACA1C,EAAA7yC,EAAAktC,qBACAltC,EAAAssC,iBAAAtsC,EAAAusC,aAAAsG,GACA7yC,EAAAysC,+BAAAzsC,EAAAusC,aAAA,EAAAgJ,EAAA9C,EAAAmD,aAAAnD,EAAAoD,eACA71C,EAAA2sC,wBAAA3sC,EAAA2kC,YAAAoO,EAAA/yC,EAAAusC,aAAAsG,GACA7yC,EAAAssC,iBAAAtsC,EAAAusC,aAAA,OAGA19E,EAAA21E,gBAAAxkC,EAAA2kC,YAAA,OAIAoM,QAAArhC,EAAAomC,sBAAAzD,GACA96I,EAAAuoG,WAAA4P,GACAn4G,EAAArK,QACAoH,EAAAo/I,cAAA,EACAp/I,EAAAq+B,cAAA,CACAnsC,KAAA,mBAyCA,MAAAuvJ,EAAA,IAAA1sE,GACA2sE,EAAA,IAAA3sE,GA+CA,SAAA4sE,EAAA9rE,EAAA3xE,GACA,OAAAA,EACA2xE,EAAAK,YAAAlyE,KAAA6xE,EAAA/lD,QAEA+lD,EAAAK,YAAA/L,iBAAAjmE,EAAAgyE,YAAAL,EAAA/lD,QAGA+lD,EAAAE,mBAAA/xE,KAAA6xE,EAAAK,aAAA9rB,SAGAj4D,KAAAwvJ,aAAA,SAAA9rE,GACA,GAAA,OAAAulC,EAAA,OACA2jC,EAAA59D,KAAA29D,EAAA39D,KAAA09D,EAAA19D,KAAAtL,EAAAsL,KACA49D,EAAA39D,IAAA09D,EAAA19D,IAAAy9D,EAAAz9D,IAAAvL,EAAAuL,IAEA49D,IAAAD,EAAA59D,MAAA89D,IAAAF,EAAA39D,MAEAg6B,EAAA0lC,kBAAA,CACAc,UAAA7C,EAAA59D,KACA0gE,SAAA9C,EAAA39D,MAEA49D,EAAAD,EAAA59D,KACA89D,EAAAF,EAAA39D,KAGA,MAAAl9E,EAAA2xE,EAAA3xE,OACAs3I,EAAAuD,EAAAvD,QACAmG,EAAA5C,EAAA76I,GAEA,IAAA,IAAApR,EAAA,EAAAA,EAAA0oJ,EAAAhpJ,OAAAM,IACA6uJ,EAAAnG,EAAA1oJ,GAAAoR,GAGA66I,EAAA7oE,YAAA8N,UAAA+6D,EAAA53I,SAAA43I,EAAAjsE,WAAAisE,EAAA71H,OAEA2sD,EAAA1uE,SAAAnD,KAAA+6I,EAAA53I,UACA0uE,EAAA/C,WAAA9uE,KAAA+6I,EAAAjsE,YACA+C,EAAA3sD,MAAAllB,KAAA+6I,EAAA71H,OACA2sD,EAAA/lD,OAAA9rB,KAAA+6I,EAAAjvH,QACA+lD,EAAAK,YAAAlyE,KAAA+6I,EAAA7oE,aACA,MAAAt5D,EAAAi5D,EAAAj5D,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8pB,EAAA9pB,GAAAgyF,mBAAA,GAIA,IAAA02D,EAAAhpJ,OAtFA,SAAAqjF,EAAAgpE,EAAAC,GACA2C,EAAAr9D,sBAAAy6D,EAAA3oE,aACAwrE,EAAAt9D,sBAAA06D,EAAA5oE,aACA,MAAA4rE,EAAAL,EAAA/mE,WAAAgnE,GACAK,EAAAlD,EAAA7oE,iBAAAxN,SACAw5E,EAAAlD,EAAA9oE,iBAAAxN,SAIA2Y,EAAA4gE,EAAA,KAAAA,EAAA,IAAA,GACA3gE,EAAA2gE,EAAA,KAAAA,EAAA,IAAA,GACAE,GAAAF,EAAA,GAAA,GAAAA,EAAA,GACAG,GAAAH,EAAA,GAAA,GAAAA,EAAA,GACAI,GAAAJ,EAAA,GAAA,GAAAA,EAAA,GACAK,GAAAJ,EAAA,GAAA,GAAAA,EAAA,GACAv1I,EAAA00E,EAAAghE,EACAjzH,EAAAiyD,EAAAihE,EAGAC,EAAAP,IAAAK,EAAAC,GACAtxH,EAAAuxH,GAAAF,EAEAtD,EAAA3oE,YAAA8N,UAAAnO,EAAA1uE,SAAA0uE,EAAA/C,WAAA+C,EAAA3sD,OACA2sD,EAAAxiB,WAAAviC,GACA+kD,EAAA7X,WAAAqkF,GACAxsE,EAAAK,YAAAgJ,QAAArJ,EAAA1uE,SAAA0uE,EAAA/C,WAAA+C,EAAA3sD,OACA2sD,EAAAE,mBAAA/xE,KAAA6xE,EAAAK,aAAA9rB,SAIA,MAAAk4F,EAAAnhE,EAAAkhE,EACAE,EAAAnhE,EAAAihE,EACAG,EAAA/1I,EAAAqkB,EACA2xH,EAAAvzH,GAAA4yH,EAAAhxH,GACA4xH,EAAAT,EAAA7gE,EAAAmhE,EAAAD,EACAK,EAAAT,EAAA9gE,EAAAmhE,EAAAD,EACAzsE,EAAAG,iBAAA8wB,gBAAA07C,EAAAC,EAAAC,EAAAC,EAAAL,EAAAC,GAmDAK,CAAA7D,EAAAF,EAAAC,GAGAC,EAAA/oE,iBAAAhyE,KAAA66I,EAAA7oE,mBAIA7jF,KAAA0wJ,UAAA,WACA,OAAA9D,GAGA5sJ,KAAA2wJ,aAAA,WACA,OAAA,OAAA3E,EACAA,EAAA4E,eAGA,OAAA3E,EACAA,EAAA2E,oBADA,GAOA5wJ,KAAA6wJ,aAAA,SAAAC,GAGA,OAAA9E,IACAA,EAAA4E,eAAAE,GAGA,OAAA7E,QAAA7kH,IAAA6kH,EAAA2E,iBACA3E,EAAA2E,eAAAE,IAKA,IAAAC,EAAA,KAwFA,MAAAjgJ,EAAA,IAAAioG,GACAjoG,EAAAsoG,kBAvFA,SAAAryG,EAAAkP,GAIA,GAHA41I,EAAA51I,EAAA+6I,cAAA1G,GACA+B,EAAAp2I,EAEA,OAAA41I,EAAA,CACA,MAAAoF,EAAApF,EAAAoF,MAEA,OAAAhF,GACA7jF,EAAA+1E,kBAAA8N,EAAAjO,aAGA,IAAAkT,GAAA,EAEAD,EAAA5wJ,SAAAusJ,EAAAvD,QAAAhpJ,SACAusJ,EAAAvD,QAAAhpJ,OAAA,EACA6wJ,GAAA,GAGA,IAAA,IAAAvwJ,EAAA,EAAAA,EAAAswJ,EAAA5wJ,OAAAM,IAAA,CACA,MAAAkzG,EAAAo9C,EAAAtwJ,GACA,IAAAy9E,EAAA,KAEA,GAAA,OAAA6tE,EACA7tE,EAAA6tE,EAAA1W,YAAA1hC,OACA,CACA,MAAAs9C,EAAArF,EAAAsF,gBAAApF,EAAAn4C,GACAzrC,EAAA+1E,kBAAA4N,QAEA3kH,IAAA+pH,EAAAE,qBACA93C,EAAAksC,qBAAAlsC,EAAA2kC,YAAAoO,EAAA/yC,EAAAghC,WAAA4W,EAAAE,oBAAA,GAGA93C,EAAAksC,qBAAAlsC,EAAA2kC,YAAA3kC,EAAA2tC,kBAAA3tC,EAAAghC,WAAA4W,EAAAG,aAAA,GACAlzE,EAAA+yE,EAAA/yE,SAGA,MAAAsF,EAAA2lE,EAAA1oJ,GACA+iF,EAAA/lD,OAAAg8C,UAAAk6B,EAAAj2E,UAAAD,QACA+lD,EAAAG,iBAAAlK,UAAAk6B,EAAAhwB,kBACAH,EAAAtF,SAAAn5D,IAAAm5D,EAAA52E,EAAA42E,EAAA94E,EAAA84E,EAAAr7E,MAAAq7E,EAAA9jD,QAEA,IAAA35B,GACAisJ,EAAAjvH,OAAA9rB,KAAA6xE,EAAA/lD,SAGA,IAAAuzH,GACAtE,EAAAvD,QAAA7oJ,KAAAkjF,GAIAkiE,IACAx9E,EAAA+1E,kBAAA+N,GACA,OAAAK,GAAAhzC,EAAAztF,MAAAygI,IAKA,MAAAY,EAAAlkC,EAAAkkC,aAEA,IAAA,IAAAxsJ,EAAA,EAAAA,EAAA6rJ,EAAAnsJ,OAAAM,IAAA,CACA,MAAA0jE,EAAAmoF,EAAA7rJ,GACA0pJ,EAAA8C,EAAAxsJ,GACA0jE,EAAAphB,OAAAonG,EAAAp0I,EAAAq0I,GAKA,GAFAyG,GAAAA,EAAAhqJ,EAAAkP,GAEA2vI,EAAA,CACA,MAAA7iJ,EAAAipJ,EAAAmD,aACA70H,EAAA0xH,EAAAoD,cACAhnF,EAAA21E,gBAAAxkC,EAAA2lC,iBAAAgN,GACA9jF,EAAA21E,gBAAAxkC,EAAA0kC,iBAAA8N,GAEAxyC,EAAAg4C,sBAAAh4C,EAAA2lC,iBAAA,CAAAoN,IACA/yC,EAAAg4C,sBAAAh4C,EAAA0kC,iBAAA,CAAAqO,IACA/yC,EAAAkuC,gBAAA,EAAA,EAAA1kJ,EAAAu3B,EAAA,EAAA,EAAAv3B,EAAAu3B,EAAAi/E,EAAA+tC,iBAAA/tC,EAAA2gC,SAEA3gC,EAAAg4C,sBAAAh4C,EAAA2lC,iBAAA,CAAA3lC,EAAA2tC,oBACA9+E,EAAA21E,gBAAAxkC,EAAA2lC,iBAAA,MACA92E,EAAA21E,gBAAAxkC,EAAA0kC,iBAAA,MACA71E,EAAA21E,gBAAAxkC,EAAA2kC,YAAAgO,GAGAG,EAAA,QAMArsJ,KAAAo5G,iBAAA,SAAA38F,GACAs0I,EAAAt0I,GAGAzc,KAAAy+E,QAAA,cAKA,SAAA+yE,GAAAlsC,GA8DA,SAAAmsC,EAAAr/C,EAAAhe,GACAge,EAAA11C,QAAA58D,MAAAs0F,EAAA13B,QAEA03B,EAAAzzE,OACAyxF,EAAA0R,QAAAhkH,MAAA+R,KAAAuiF,EAAAzzE,OAGAyzE,EAAAwF,UACAwY,EAAAxY,SAAA95F,MAAA+R,KAAAuiF,EAAAwF,UAAAxjB,eAAAge,EAAAyF,mBAGAzF,EAAAl0E,MACAkyF,EAAAlyF,IAAApgB,MAAAs0F,EAAAl0E,KAGAk0E,EAAAqG,WACA2X,EAAA3X,SAAA36F,MAAAs0F,EAAAqG,UAGArG,EAAAqH,cACA2W,EAAA3W,YAAA37F,MAAAs0F,EAAAqH,aAGArH,EAAA+E,UAAA,IACAiZ,EAAAjZ,UAAAr5F,MAAAs0F,EAAA+E,WAGA,MAAAyC,EAAA0pB,EAAAznG,IAAAu2E,GAAAwH,OAEA,GAAAA,EAAA,CACAwW,EAAAxW,OAAA97F,MAAA87F,EACAwW,EAAA+R,WAAArkH,MAAA87F,EAAAia,gBAAA,IAAAja,EAAAlgB,uBAAA,EAAA,EACA02B,EAAArW,aAAAj8F,MAAAs0F,EAAA2H,aACAqW,EAAAgS,IAAAtkH,MAAAs0F,EAAAgwB,IACAhS,EAAApW,gBAAAl8F,MAAAs0F,EAAA4H,gBAEA,MAAAqoB,EAAAiB,EAAAznG,IAAA+9E,GAAAqkD,mBAEA74G,IAAAi9E,IACAjS,EAAAiS,YAAAvkH,MAAAukH,GA+BA,IAAAqtC,EAoDAC,EA/EAv9D,EAAAsG,WACA0X,EAAA1X,SAAA56F,MAAAs0F,EAAAsG,SACA0X,EAAAzX,kBAAA76F,MAAAs0F,EAAAuG,mBAGAvG,EAAAwG,QACAwX,EAAAxX,MAAA96F,MAAAs0F,EAAAwG,MACAwX,EAAAvX,eAAA/6F,MAAAs0F,EAAAyG,gBAsBAzG,EAAAl0E,IACAwxI,EAAAt9D,EAAAl0E,IACAk0E,EAAAqH,YACAi2D,EAAAt9D,EAAAqH,YACArH,EAAA+G,gBACAu2D,EAAAt9D,EAAA+G,gBACA/G,EAAA4G,UACA02D,EAAAt9D,EAAA4G,UACA5G,EAAA0G,QACA42D,EAAAt9D,EAAA0G,QACA1G,EAAAkH,aACAo2D,EAAAt9D,EAAAkH,aACAlH,EAAAmH,aACAm2D,EAAAt9D,EAAAmH,aACAnH,EAAAqG,SACAi3D,EAAAt9D,EAAAqG,SACArG,EAAAoH,YACAk2D,EAAAt9D,EAAAoH,YACApH,EAAAgG,aACAs3D,EAAAt9D,EAAAgG,aACAhG,EAAAkG,mBACAo3D,EAAAt9D,EAAAkG,mBACAlG,EAAAiG,sBACAq3D,EAAAt9D,EAAAiG,sBACAjG,EAAAsH,qBACAg2D,EAAAt9D,EAAAsH,qBACAtH,EAAAuH,gBACA+1D,EAAAt9D,EAAAuH,gBACAvH,EAAA+H,gBACAu1D,EAAAt9D,EAAA+H,gBACA/H,EAAAiI,eACAq1D,EAAAt9D,EAAAiI,mBAGAj1D,IAAAsqH,IAEAA,EAAA/yE,sBACA+yE,EAAAA,EAAArzE,UAGA,IAAAqzE,EAAAr2E,kBACAq2E,EAAA//D,eAGAygB,EAAA2R,YAAAjkH,MAAA+R,KAAA6/I,EAAA/zH,SAQAy2D,EAAAwG,MACA+2D,EAAAv9D,EAAAwG,MACAxG,EAAAsG,WACAi3D,EAAAv9D,EAAAsG,eAGAtzD,IAAAuqH,IAEAA,EAAAhzE,sBACAgzE,EAAAA,EAAAtzE,UAGA,IAAAszE,EAAAt2E,kBACAs2E,EAAAhgE,eAGAygB,EAAA4R,aAAAlkH,MAAA+R,KAAA8/I,EAAAh0H,SAuJA,SAAAi0H,EAAAx/C,EAAAhe,GACAge,EAAA3Y,UAAA35F,MAAAs0F,EAAAqF,UACA2Y,EAAA1Y,UAAA55F,MAAAs0F,EAAAsF,UAEAtF,EAAAkH,eACA8W,EAAA9W,aAAAx7F,MAAAs0F,EAAAkH,cAGAlH,EAAAmH,eACA6W,EAAA7W,aAAAz7F,MAAAs0F,EAAAmH,cAGAnH,EAAAoH,cACA4W,EAAA5W,YAAA17F,MAAAs0F,EAAAoH,aAGApH,EAAA0G,UACAsX,EAAAtX,QAAAh7F,MAAAs0F,EAAA0G,QACAsX,EAAArX,UAAAj7F,MAAAs0F,EAAA2G,UA14jBA,IA24jBA3G,EAAApyD,OAAAowE,EAAArX,UAAAj7F,QAAA,IAGAs0F,EAAA4G,YACAoX,EAAApX,UAAAl7F,MAAAs0F,EAAA4G,UACAoX,EAAAlX,YAAAp7F,MAAA+R,KAAAuiF,EAAA8G,aAh5jBA,IAi5jBA9G,EAAApyD,MAAAowE,EAAAlX,YAAAp7F,MAAAkrG,UAGA5W,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBAGAiqB,EAAAznG,IAAAu2E,GAAAwH,SAIAwW,EAAAtW,gBAAAh8F,MAAAs0F,EAAA0H,iBA+HA,MAAA,CACA+1D,mBAtgBA,SAAAz/C,EAAAnb,GACAmb,EAAA8S,SAAAplH,MAAA+R,KAAAolF,EAAAt2E,OAEAs2E,EAAA66D,OACA1/C,EAAA4S,QAAAllH,MAAAm3F,EAAAjI,KACAojB,EAAA6S,OAAAnlH,MAAAm3F,EAAAhI,KACAgI,EAAAm1C,YACAh6B,EAAA2S,WAAAjlH,MAAAm3F,EAAA86D,UAggBAC,wBA5fA,SAAA5/C,EAAAhe,EAAA69D,EAAA33H,EAAA43H,GACA99D,EAAA+S,oBACAsqD,EAAAr/C,EAAAhe,GACAA,EAAA+9D,uBACAV,EAAAr/C,EAAAhe,GAoRA,SAAAge,EAAAhe,GACAA,EAAAoH,cACA4W,EAAA5W,YAAA17F,MAAAs0F,EAAAoH,aArRA42D,CAAAhgD,EAAAhe,IACAA,EAAAi+D,oBACAZ,EAAAr/C,EAAAhe,GAkTA,SAAAge,EAAAhe,GACAA,EAAA6H,cACAmW,EAAAnW,YAAAn8F,MAAAs0F,EAAA6H,aAGA7H,EAAAoH,cACA4W,EAAA5W,YAAA17F,MAAAs0F,EAAAoH,aAGApH,EAAA0G,UACAsX,EAAAtX,QAAAh7F,MAAAs0F,EAAA0G,QACAsX,EAAArX,UAAAj7F,MAAAs0F,EAAA2G,UAv2jBA,IAw2jBA3G,EAAApyD,OAAAowE,EAAArX,UAAAj7F,QAAA,IAGAs0F,EAAA4G,YACAoX,EAAApX,UAAAl7F,MAAAs0F,EAAA4G,UACAoX,EAAAlX,YAAAp7F,MAAA+R,KAAAuiF,EAAA8G,aA72jBA,IA82jBA9G,EAAApyD,MAAAowE,EAAAlX,YAAAp7F,MAAAkrG,UAGA5W,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBAzUAi3D,CAAAlgD,EAAAhe,IACAA,EAAAm+D,qBACAd,EAAAr/C,EAAAhe,GAoRA,SAAAge,EAAAhe,GACAge,EAAAtY,SAAAh6F,MAAA+R,KAAAuiF,EAAA0F,UACAsY,EAAAnY,UAAAn6F,MAAAoG,KAAAiS,IAAAi8E,EAAA6F,UAAA,MAEA7F,EAAAoH,cACA4W,EAAA5W,YAAA17F,MAAAs0F,EAAAoH,aAGApH,EAAA0G,UACAsX,EAAAtX,QAAAh7F,MAAAs0F,EAAA0G,QACAsX,EAAArX,UAAAj7F,MAAAs0F,EAAA2G,UA30jBA,IA40jBA3G,EAAApyD,OAAAowE,EAAArX,UAAAj7F,QAAA,IAGAs0F,EAAA4G,YACAoX,EAAApX,UAAAl7F,MAAAs0F,EAAA4G,UACAoX,EAAAlX,YAAAp7F,MAAA+R,KAAAuiF,EAAA8G,aAj1jBA,IAk1jBA9G,EAAApyD,MAAAowE,EAAAlX,YAAAp7F,MAAAkrG,UAGA5W,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBA1SAm3D,CAAApgD,EAAAhe,IACAA,EAAAy3C,wBACA4lB,EAAAr/C,EAAAhe,GAEAA,EAAAq+D,uBAgXA,SAAArgD,EAAAhe,EAAA89D,GACAN,EAAAx/C,EAAAhe,GACAge,EAAAgS,IAAAtkH,MAAAs0F,EAAAgwB,IAEAhwB,EAAAuF,WAAAyY,EAAAzY,UAAA75F,MAAA+R,KAAAuiF,EAAAuF,WAEAvF,EAAA8F,UAAA,IACAkY,EAAAlY,UAAAp6F,MAAAs0F,EAAA8F,UACAkY,EAAAjY,mBAAAr6F,MAAAs0F,EAAA+F,mBAEA/F,EAAAgG,eACAgY,EAAAhY,aAAAt6F,MAAAs0F,EAAAgG,cAGAhG,EAAAiG,wBACA+X,EAAA/X,sBAAAv6F,MAAAs0F,EAAAiG,uBAGAjG,EAAAkG,qBACA8X,EAAA7X,qBAAAz6F,MAAA+R,KAAAuiF,EAAAmG,sBACA6X,EAAA9X,mBAAAx6F,MAAAs0F,EAAAkG,mBAt7jBA,IAw7jBAlG,EAAApyD,MACAowE,EAAA7X,qBAAAz6F,MAAAkrG,WAKA5W,EAAA8H,aAAA,IACAkW,EAAAlW,aAAAp8F,MAAAs0F,EAAA8H,aACAkW,EAAAkgB,uBAAAxyH,MAAAoyJ,EAAA7zE,QACA+zB,EAAAigB,wBAAAvyH,MAAAmlB,IAAAitI,EAAAnvJ,MAAAmvJ,EAAA53H,QAEA85D,EAAA+H,kBACAiW,EAAAjW,gBAAAr8F,MAAAs0F,EAAA+H,iBAGAiW,EAAAhW,UAAAt8F,MAAAs0F,EAAAgI,UAEAhI,EAAAiI,eACA+V,EAAA/V,aAAAv8F,MAAAs0F,EAAAiI,cAGA+V,EAAA9V,oBAAAx8F,MAAAs0F,EAAAkI,oBACA8V,EAAA7V,gBAAAz8F,MAAA+R,KAAAuiF,EAAAmI,kBAGA6V,EAAArY,kBAAAj6F,MAAAs0F,EAAA2F,kBACAqY,EAAApY,aAAAl6F,MAAA+R,KAAAuiF,EAAA4F,cAEA5F,EAAAsH,uBACA0W,EAAA1W,qBAAA57F,MAAAs0F,EAAAsH,sBAGAtH,EAAAuH,kBACAyW,EAAAzW,gBAAA77F,MAAAs0F,EAAAuH,iBAtaA+2D,CAAAtgD,EAAAhe,EAAA89D,GAEAN,EAAAx/C,EAAAhe,IAEAA,EAAAu+D,sBACAlB,EAAAr/C,EAAAhe,GAqaA,SAAAge,EAAAhe,GACAA,EAAAoG,SACA4X,EAAA5X,OAAA16F,MAAAs0F,EAAAoG,QAGApG,EAAA0G,UACAsX,EAAAtX,QAAAh7F,MAAAs0F,EAAA0G,QACAsX,EAAArX,UAAAj7F,MAAAs0F,EAAA2G,UAp+jBA,IAq+jBA3G,EAAApyD,OAAAowE,EAAArX,UAAAj7F,QAAA,IAGAs0F,EAAA4G,YACAoX,EAAApX,UAAAl7F,MAAAs0F,EAAA4G,UACAoX,EAAAlX,YAAAp7F,MAAA+R,KAAAuiF,EAAA8G,aA1+jBA,IA2+jBA9G,EAAApyD,MAAAowE,EAAAlX,YAAAp7F,MAAAkrG,UAGA5W,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBAxbAu3D,CAAAxgD,EAAAhe,IACAA,EAAA29C,qBACA0f,EAAAr/C,EAAAhe,GA0bA,SAAAge,EAAAhe,GACAA,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBA7bAw3D,CAAAzgD,EAAAhe,IACAA,EAAA49C,wBACAyf,EAAAr/C,EAAAhe,GA+bA,SAAAge,EAAAhe,GACAA,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBAGA+W,EAAAyV,kBAAA/nH,MAAA+R,KAAAuiF,EAAAyzB,mBACAzV,EAAA0V,aAAAhoH,MAAAs0F,EAAA0zB,aACA1V,EAAA2V,YAAAjoH,MAAAs0F,EAAA2zB,YAvcA+qC,CAAA1gD,EAAAhe,IACAA,EAAA2+D,sBACAtB,EAAAr/C,EAAAhe,GAwcA,SAAAge,EAAAhe,GACAA,EAAA0G,UACAsX,EAAAtX,QAAAh7F,MAAAs0F,EAAA0G,QACAsX,EAAArX,UAAAj7F,MAAAs0F,EAAA2G,UA5gkBA,IA6gkBA3G,EAAApyD,OAAAowE,EAAArX,UAAAj7F,QAAA,IAGAs0F,EAAA4G,YACAoX,EAAApX,UAAAl7F,MAAAs0F,EAAA4G,UACAoX,EAAAlX,YAAAp7F,MAAA+R,KAAAuiF,EAAA8G,aAlhkBA,IAmhkBA9G,EAAApyD,MAAAowE,EAAAlX,YAAAp7F,MAAAkrG,UAGA5W,EAAA+G,kBACAiX,EAAAjX,gBAAAr7F,MAAAs0F,EAAA+G,gBACAiX,EAAAhX,kBAAAt7F,MAAAs0F,EAAAgH,kBACAgX,EAAA/W,iBAAAv7F,MAAAs0F,EAAAiH,kBAvdA23D,CAAA5gD,EAAAhe,IACAA,EAAA6+D,qBAkKA,SAAA7gD,EAAAhe,GACAge,EAAA0R,QAAAhkH,MAAA+R,KAAAuiF,EAAAzzE,OACAyxF,EAAA11C,QAAA58D,MAAAs0F,EAAA13B,QAnKAw2F,CAAA9gD,EAAAhe,GAEAA,EAAA++D,sBAoKA,SAAA/gD,EAAAhe,GACAge,EAAA1V,SAAA58F,MAAAs0F,EAAAsI,SACA0V,EAAAoV,UAAA1nH,MAAAs0F,EAAAsI,SAAAtI,EAAAuI,QACAyV,EAAAr7E,MAAAj3B,MAAAs0F,EAAAr9D,MAtKAq8H,CAAAhhD,EAAAhe,IAEAA,EAAAi/D,iBAuKA,SAAAjhD,EAAAhe,EAAA69D,EAAA33H,GACA83E,EAAA0R,QAAAhkH,MAAA+R,KAAAuiF,EAAAzzE,OACAyxF,EAAA11C,QAAA58D,MAAAs0F,EAAA13B,QACA01C,EAAAhvD,KAAAtjD,MAAAs0F,EAAAhxC,KAAA6uG,EACA7/C,EAAAr7E,MAAAj3B,MAAA,GAAAw6B,EAEA85D,EAAAl0E,MACAkyF,EAAAlyF,IAAApgB,MAAAs0F,EAAAl0E,KAGAk0E,EAAAqG,WACA2X,EAAA3X,SAAA36F,MAAAs0F,EAAAqG,UAGArG,EAAA+E,UAAA,IACAiZ,EAAAjZ,UAAAr5F,MAAAs0F,EAAA+E,WAMA,IAAAu4D,EAEAt9D,EAAAl0E,IACAwxI,EAAAt9D,EAAAl0E,IACAk0E,EAAAqG,WACAi3D,EAAAt9D,EAAAqG,eAGArzD,IAAAsqH,KACA,IAAAA,EAAAr2E,kBACAq2E,EAAA//D,eAGAygB,EAAA2R,YAAAjkH,MAAA+R,KAAA6/I,EAAA/zH,SAxMA21H,CAAAlhD,EAAAhe,EAAA69D,EAAA33H,GACA85D,EAAAm/D,iBA2MA,SAAAnhD,EAAAhe,GACAge,EAAA0R,QAAAhkH,MAAA+R,KAAAuiF,EAAAzzE,OACAyxF,EAAA11C,QAAA58D,MAAAs0F,EAAA13B,QACA01C,EAAAlzE,SAAAp/B,MAAAs0F,EAAAl1D,SAEAk1D,EAAAl0E,MACAkyF,EAAAlyF,IAAApgB,MAAAs0F,EAAAl0E,KAGAk0E,EAAAqG,WACA2X,EAAA3X,SAAA36F,MAAAs0F,EAAAqG,UAGArG,EAAA+E,UAAA,IACAiZ,EAAAjZ,UAAAr5F,MAAAs0F,EAAA+E,WAMA,IAAAu4D,EAEAt9D,EAAAl0E,IACAwxI,EAAAt9D,EAAAl0E,IACAk0E,EAAAqG,WACAi3D,EAAAt9D,EAAAqG,eAGArzD,IAAAsqH,KACA,IAAAA,EAAAr2E,kBACAq2E,EAAA//D,eAGAygB,EAAA2R,YAAAjkH,MAAA+R,KAAA6/I,EAAA/zH,SA3OA61H,CAAAphD,EAAAhe,GACAA,EAAAq/D,kBACArhD,EAAAzxF,MAAA7gB,MAAA+R,KAAAuiF,EAAAzzE,OACAyxF,EAAA11C,QAAA58D,MAAAs0F,EAAA13B,SACA03B,EAAAmf,mBACAnf,EAAAif,oBAAA,KAwdA,SAAAqgD,GAAA5/D,EAAA,IACA,MAAAla,OAAAxyC,IAAA0sD,EAAA9Z,OAAA8Z,EAAA9Z,OAPA,WACA,MAAAA,EAAAn4D,SAAAwW,gBAAA,+BAAA,UAEA,OADA2hD,EAAArsD,MAAAiM,QAAA,QACAogD,EAIA25E,GACAC,OAAAxsH,IAAA0sD,EAAA7rD,QAAA6rD,EAAA7rD,QAAA,KACA4rH,OAAAzsH,IAAA0sD,EAAA98D,OAAA88D,EAAA98D,MACA88H,OAAA1sH,IAAA0sD,EAAAnoB,OAAAmoB,EAAAnoB,MACAooF,OAAA3sH,IAAA0sD,EAAAwiB,SAAAxiB,EAAAwiB,QACA09C,OAAA5sH,IAAA0sD,EAAA26D,WAAA36D,EAAA26D,UACAwF,OAAA7sH,IAAA0sD,EAAAkF,oBAAAlF,EAAAkF,mBACAk7D,OAAA9sH,IAAA0sD,EAAAqgE,uBAAArgE,EAAAqgE,sBACAC,OAAAhtH,IAAA0sD,EAAAugE,gBAAAvgE,EAAAugE,gBAAA,UACAC,OAAAltH,IAAA0sD,EAAAygE,8BAAAzgE,EAAAygE,6BAEA,IAAAC,EAAA,KACAC,EAAA,KAGA,MAAAC,EAAA,GACAC,EAAA,GAEA30J,KAAA40J,WAAAh7E,EAEA55E,KAAA+oI,MAAA,CAKAC,mBAAA,GAGAhpI,KAAAopH,WAAA,EACAppH,KAAAqpH,gBAAA,EACArpH,KAAAspH,gBAAA,EACAtpH,KAAAupH,kBAAA,EAEAvpH,KAAA60J,aAAA,EAEA70J,KAAAq4F,eAAA,GACAr4F,KAAAwwH,sBAAA,EAEAxwH,KAAAmmG,YAAA,EAEAnmG,KAAAu0H,eAAAtiD,EAEAjyE,KAAAgoI,yBAAA,EAEAhoI,KAAA2pH,YAjjkBA,EAkjkBA3pH,KAAA80J,oBAAA,EAEA,MAAAvtI,EAAAvnB,KAEA,IAAA+0J,GAAA,EAEAC,EAAA,EACAC,EAAA,EACAC,EAAA,KAEAC,GAAA,EAEAC,EAAA,KAEA,MAAAC,EAAA,IAAA14E,GAEA24E,EAAA,IAAA34E,GAEA,IAAA44E,EAAA,KAEAC,EAAA57E,EAAA72E,MACA0yJ,EAAA77E,EAAAt/C,OACAo7H,EAAA,EACAC,EAAA,KACAC,EAAA,KAEA,MAAArjB,EAAA,IAAA51D,GAAA,EAAA,EAAA64E,EAAAC,GAEAI,EAAA,IAAAl5E,GAAA,EAAA,EAAA64E,EAAAC,GAEA,IAAAK,GAAA,EAEA,MAAAC,EAAA,GAEA3jB,EAAA,IAAA76B,GAGA,IAAAy+C,GAAA,EACAC,GAAA,EAEAC,EAAA,KAEA,MAAAC,EAAA,IAAAxqE,GAEAyqE,EAAA,IAAAxzE,GAEAyzE,EAAA,CACA7zF,WAAA,KACAy0B,IAAA,KACAvD,YAAA,KACA4iE,iBAAA,KACA9iE,SAAA,GAGA,SAAA+iE,IACA,OAAA,OAAArB,EAAAQ,EAAA,EAIA,IA+DA5iD,EAAA0G,EAAApxC,EAAAylD,EACAvI,GAAAxpC,GAAAmsC,GAAAwiB,GAAA/1F,GAAAo+C,GAAAo1B,GACAsuC,GAAAzjE,GAAA0jE,GAAA5kB,GAAAh/B,GAAA45B,GACAjqE,GAAAk0F,GAAAC,GAAAC,GACAhkI,GAAAs3F,GAnEAk1B,GAAAwU,EAEA,SAAA35E,GAAA48E,EAAAC,GACA,IAAA,IAAAn2J,EAAA,EAAAA,EAAAk2J,EAAAx2J,OAAAM,IAAA,CACA,MAAAo2J,EAAAF,EAAAl2J,GAEAsnC,EAAA2xC,EAAAK,WAAA88E,EAAAD,GAEA,GAAA,OAAA7uH,EAAA,OAAAA,EAGA,OAAA,KAGA,IACA,MAAA6uH,EAAA,CACA9/H,MAAA68H,EACAloF,MAAAmoF,EACAx9C,QAAAy9C,EACAtF,UAAAuF,EACAh7D,mBAAAi7D,EACAE,sBAAAD,EACAG,gBAAAD,EACAG,6BAAAD,GAOA,GAJA16E,EAAAh2C,iBAAA,mBAAAozH,IAAA,GAEAp9E,EAAAh2C,iBAAA,uBAAAqzH,IAAA,GAEA,OAAA7X,GAAA,CACA,MAAAyX,EAAA,CAAA,SAAA,QAAA,sBAQA,IANA,IAAAtvI,EAAA2vI,kBACAL,EAAAj2I,QAGAw+H,GAAAnlE,GAAA48E,EAAAC,GAEA,OAAA1X,GACA,MAAAnlE,GAAA48E,GACA,IAAA/sG,MAAA,+DAEA,IAAAA,MAAA,sCAMA1iB,IAAAg4G,GAAA9wB,2BACA8wB,GAAA9wB,yBAAA,WACA,MAAA,CACA6oC,SAAA,EACAC,SAAA,EACA1+D,UAAA,KAIA,MAAA70F,GAEA,MADAoK,QAAApK,MAAA,wBAAAA,EAAAuK,SACAvK,EASA,SAAAwzJ,KACAvkD,EAAA,IAAA4lB,GAAA0mB,IACA5lC,EAAA,IAAA2U,GAAAixB,GAAAtsC,EAAAhf,GACAgf,EAAA51F,KAAAs8F,GACA5mF,GAAA,IAAA80H,GAAAtI,GAAAtsC,EAAA0G,GACApxC,EAAA,IAAAstE,GAAA0J,GAAAtsC,EAAA0G,GACAu8C,EAAA,GAAA3W,GAAA9B,KACAzvB,EAAA,IAAA2L,GAAA4lB,IACA95B,GAAA,IAAA0nB,GACAlxD,GAAA,IAAAqjE,GAAAC,GAAAtsC,EAAA1qC,EAAAk9C,GAAA9L,EAAA5mF,GAAAi7F,GACA5F,GAAA,IAAA8J,GAAAxqG,GACAkjH,GAAA,IAAAxS,GAAA1wG,GACAmtB,GAAA,IAAA4kE,GAAA8lC,GAAA5lC,GACA0Q,GAAA,IAAAN,GAAAw1B,GAAAtsC,EAAAp+D,GAAA8kE,GACA1mB,GAAA,IAAA8lC,GAAAwmB,GAAA1qG,GAAAm5E,EAAA3D,IACAhC,GAAA,IAAA+S,GAAAmkB,GAAAtsD,GAAAp+C,GAAAm5E,GACA6oC,GAAA,IAAAp8B,GAAA8kB,IACAvsC,GAAA,IAAAwd,GAAA/K,IACAkxC,GAAA,IAAAhsB,GAAAjjH,EAAA0gG,GAAAwiB,GAAA33B,EAAA0G,EAAA0Q,GAAArX,IACA9f,GAAA,IAAAy+D,GAAAlsC,IACAmxC,GAAA,IAAA1oB,GAAAzoB,IACAusB,GAAA,IAAAD,GAAA9+B,EAAA0G,GACAh3C,GAAA,IAAAwlD,GAAAzgG,EAAA0gG,GAAA7/C,EAAA8/C,GAAA+rC,GACAxnB,GAAA,IAAAwF,GAAA1qH,EAAA2gG,GAAA1O,GACAm9C,GAAA,IAAA/oC,GAAAwxB,GAAAtsC,EAAA+a,EAAArU,GACAo9C,GAAA,IAAAt9B,GAAA8lB,GAAAtsC,EAAA+a,EAAArU,GACAqU,EAAA+L,SAAA48B,GAAA58B,SACAryG,EAAAiyF,aAAAA,EACAjyF,EAAAurF,WAAAA,EACAvrF,EAAA+9F,WAAAA,GACA/9F,EAAAkvI,YAAAA,GACAlvI,EAAAklH,UAAAA,GACAllH,EAAA6gD,MAAAA,EACA7gD,EAAAsmG,KAAAA,EAGAwpC,KAEA,MAAA7hD,GAAA,IAAAk2C,GAAAnkI,EAAA63H,IAoLA,SAAA4X,GAAA31J,GACAA,EAAAk2C,iBACAtpC,QAAAtH,IAAA,sCACAouJ,GAAA,EAGA,SAAAkC,KACAhpJ,QAAAtH,IAAA,0CACAouJ,GAAA,EACA,MAAAuC,EAAAzpC,EAAAgM,UACAkO,EAAA0E,GAAAj3F,QACA+hH,EAAA9qB,GAAA8H,WACAijB,EAAA/qB,GAAAnwD,YACA4oD,EAAAuH,GAAA1sI,KACAs3J,KACAxpC,EAAAgM,UAAAy9B,EACA7qB,GAAAj3F,QAAAuyF,EACA0E,GAAA8H,WAAAgjB,EACA9qB,GAAAnwD,YAAAk7E,EACA/qB,GAAA1sI,KAAAmlI,EAGA,SAAAuyB,GAAAp2J,GACA,MAAA+yF,EAAA/yF,EAAA8N,OACAilF,EAAAvwD,oBAAA,UAAA4zH,IAKA,SAAArjE,IAKA,SAAAA,GACA,MAAAwlC,EAAAtU,GAAAznG,IAAAu2E,GAAAwlC,cAEAxyF,IAAAwyF,GACAA,EAAA5pH,SAAA,SAAA+6G,GACAyrC,GAAAzpB,eAAAhiB,OATA2sC,CAAAtjE,GACAkxB,GAAAnjH,OAAAiyF,GANAujE,CAAAvjE,GA5MAp0F,KAAAw1G,GAAAA,GAEAx1G,KAAAi6E,WAAA,WACA,OAAAmlE,IAGAp/I,KAAAquJ,qBAAA,WACA,OAAAjP,GAAAiP,wBAGAruJ,KAAA43J,iBAAA,WACA,MAAA5tC,EAAAlX,EAAAj1F,IAAA,sBACAmsG,GAAAA,EAAA6tC,eAGA73J,KAAA83J,oBAAA,WACA,MAAA9tC,EAAAlX,EAAAj1F,IAAA,sBACAmsG,GAAAA,EAAA+tC,kBAGA/3J,KAAAg4J,cAAA,WACA,OAAAtC,GAGA11J,KAAAi4J,cAAA,SAAAn4J,QACAsnC,IAAAtnC,IACA41J,EAAA51J,EACAE,KAAAk4J,QAAA1C,EAAAC,GAAA,KAGAz1J,KAAAunF,QAAA,SAAAp4E,GACA,OAAAA,EAAA8V,IAAAuwI,EAAAC,IAGAz1J,KAAAk4J,QAAA,SAAAn1J,EAAAu3B,EAAA69H,GACA3iD,GAAAy3C,aACAh/I,QAAAC,KAAA,0EAIAsnJ,EAAAzyJ,EACA0yJ,EAAAn7H,EACAs/C,EAAA72E,MAAAmD,KAAA4N,MAAA/Q,EAAA2yJ,GACA97E,EAAAt/C,OAAAp0B,KAAA4N,MAAAwmB,EAAAo7H,IAEA,IAAAyC,IACAv+E,EAAAjsD,MAAA5qB,MAAAA,EAAA,KACA62E,EAAAjsD,MAAA2M,OAAAA,EAAA,MAGAt6B,KAAAo4J,YAAA,EAAA,EAAAr1J,EAAAu3B,KAGAt6B,KAAAq4J,qBAAA,SAAAlpJ,GACA,OAAAA,EAAA8V,IAAAuwI,EAAAE,EAAAD,EAAAC,GAAA5hJ,SAGA9T,KAAAs4J,qBAAA,SAAAv1J,EAAAu3B,EAAA23H,GACAuD,EAAAzyJ,EACA0yJ,EAAAn7H,EACAo7H,EAAAzD,EACAr4E,EAAA72E,MAAAmD,KAAA4N,MAAA/Q,EAAAkvJ,GACAr4E,EAAAt/C,OAAAp0B,KAAA4N,MAAAwmB,EAAA23H,GACAjyJ,KAAAo4J,YAAA,EAAA,EAAAr1J,EAAAu3B,IAGAt6B,KAAAu4J,mBAAA,SAAAppJ,GACA,OAAAA,EAAA0C,KAAAwjJ,IAGAr1J,KAAAu1I,YAAA,SAAApmI,GACA,OAAAA,EAAA0C,KAAA0gI,IAGAvyI,KAAAo4J,YAAA,SAAA5wJ,EAAAlC,EAAAvC,EAAAu3B,GACA9yB,EAAAw2E,UACAu0D,EAAAttH,IAAAzd,EAAAA,EAAAA,EAAAlC,EAAAkC,EAAAy3B,EAAAz3B,EAAAyuE,GAEAs8D,EAAAttH,IAAAzd,EAAAlC,EAAAvC,EAAAu3B,GAGA8tC,EAAAgW,SAAAi3E,EAAAxjJ,KAAA0gI,GAAAn8D,eAAAs/E,GAAA5hJ,UAGA9T,KAAAw4J,WAAA,SAAArpJ,GACA,OAAAA,EAAA0C,KAAAgkJ,IAGA71J,KAAAy4J,WAAA,SAAAjxJ,EAAAlC,EAAAvC,EAAAu3B,GACA9yB,EAAAw2E,UACA63E,EAAA5wI,IAAAzd,EAAAA,EAAAA,EAAAlC,EAAAkC,EAAAy3B,EAAAz3B,EAAAyuE,GAEA4/E,EAAA5wI,IAAAzd,EAAAlC,EAAAvC,EAAAu3B,GAGA8tC,EAAA8V,QAAAo3E,EAAAzjJ,KAAAgkJ,GAAAz/E,eAAAs/E,GAAA5hJ,UAGA9T,KAAA04J,eAAA,WACA,OAAA5C,GAGA91J,KAAA+0I,eAAA,SAAA4jB,GACAvwF,EAAA2sE,eAAA+gB,EAAA6C,IAGA34J,KAAA44J,cAAA,SAAAp2G,GACAmzG,EAAAnzG,GAGAxiD,KAAA64J,mBAAA,SAAAr2G,GACAozG,EAAApzG,GAIAxiD,KAAA2oH,cAAA,SAAAx5G,GACA,OAAAA,EAAA0C,KAAA2wD,GAAAmmD,kBAGA3oH,KAAA4oH,cAAA,WACApmD,GAAAomD,cAAA5vG,MAAAwpD,GAAAh9C,YAGAxlB,KAAA6oH,cAAA,WACA,OAAArmD,GAAAqmD,iBAGA7oH,KAAA8oH,cAAA,WACAtmD,GAAAsmD,cAAA9vG,MAAAwpD,GAAAh9C,YAGAxlB,KAAA8rB,MAAA,SAAAnL,EAAAgrD,EAAA2qC,GACA,IAAAwiD,EAAA,QACA1xH,IAAAzmB,GAAAA,KAAAm4I,GAAA1Z,GAAAkI,wBACAlgH,IAAAukC,GAAAA,KAAAmtF,GAAA1Z,GAAAmI,wBACAngH,IAAAkvE,GAAAA,KAAAwiD,GAAA1Z,GAAAoI,oBAEApI,GAAAtzH,MAAAgtI,IAGA94J,KAAAmoH,WAAA,WACAnoH,KAAA8rB,OAAA,GAAA,GAAA,IAGA9rB,KAAAi3I,WAAA,WACAj3I,KAAA8rB,OAAA,GAAA,GAAA,IAGA9rB,KAAA+3I,aAAA,WACA/3I,KAAA8rB,OAAA,GAAA,GAAA,IAIA9rB,KAAAy+E,QAAA,WACA7E,EAAA/1C,oBAAA,mBAAAmzH,IAAA,GAEAp9E,EAAA/1C,oBAAA,uBAAAozH,IAAA,GAEAR,GAAAh4E,UACAozD,GAAApzD,UACA6mC,GAAA7mC,UACAwpC,GAAAxpC,UACAgsD,GAAAhsD,UACAypC,GAAAzpC,UACAyrC,GAAAzrC,UACA+2B,GAAA/2B,UACA+2B,GAAA3xE,oBAAA,eAAAk1H,IACAvjD,GAAA3xE,oBAAA,aAAAm1H,IAEA9C,IACAA,EAAAz3E,UAEAy3E,EAAA,MAGAplJ,GAAA8nD,QAuDA54D,KAAAi5J,sBAAA,SAAAhnG,EAAA84D,GACAb,GAAAc,iBACA,MAAAtR,EAAA4L,GAAAznG,IAAAo0C,GACAA,EAAAinG,eAAAx/C,EAAA1kG,WAAA0kG,EAAA1kG,SAAAoqI,GAAAllC,gBACAjoD,EAAAknG,aAAAz/C,EAAA90B,SAAA80B,EAAA90B,OAAAw6D,GAAAllC,gBACAjoD,EAAAmnG,SAAA1/C,EAAAt9B,KAAAs9B,EAAAt9B,GAAAgjE,GAAAllC,gBACAjoD,EAAAonG,YAAA3/C,EAAA/4F,QAAA+4F,EAAA/4F,MAAAy+H,GAAAllC,gBACA,MAAAwS,EAAA3B,EAAA4B,gBAEA16D,EAAAinG,eACA9Z,GAAAjlC,WAAAilC,GAAAnyB,aAAAvT,EAAA1kG,UAEAoqI,GAAAhlC,WAAAglC,GAAAnyB,aAAAh7D,EAAAqnG,cAAAla,GAAAma,cAEArvC,GAAAe,gBAAAyB,EAAA13G,SAAAwvB,UAEA46G,GAAA7zB,oBAAAmB,EAAA13G,SAAAwvB,SAAA,EAAA46G,GAAA/kC,OAAA,EAAA,EAAA,IAGApoD,EAAAknG,aACA/Z,GAAAjlC,WAAAilC,GAAAnyB,aAAAvT,EAAA90B,QAEAw6D,GAAAhlC,WAAAglC,GAAAnyB,aAAAh7D,EAAAunG,YAAApa,GAAAma,cAEArvC,GAAAe,gBAAAyB,EAAA9nC,OAAApgD,UAEA46G,GAAA7zB,oBAAAmB,EAAA9nC,OAAApgD,SAAA,EAAA46G,GAAA/kC,OAAA,EAAA,EAAA,IAGApoD,EAAAmnG,SACAha,GAAAjlC,WAAAilC,GAAAnyB,aAAAvT,EAAAt9B,IAEAgjE,GAAAhlC,WAAAglC,GAAAnyB,aAAAh7D,EAAAwnG,QAAAra,GAAAma,cAEArvC,GAAAe,gBAAAyB,EAAAtwC,GAAA53C,UAEA46G,GAAA7zB,oBAAAmB,EAAAtwC,GAAA53C,SAAA,EAAA46G,GAAA/kC,OAAA,EAAA,EAAA,IAGApoD,EAAAonG,YACAja,GAAAjlC,WAAAilC,GAAAnyB,aAAAvT,EAAA/4F,OAEAy+H,GAAAhlC,WAAAglC,GAAAnyB,aAAAh7D,EAAAynG,WAAAta,GAAAma,cAEArvC,GAAAe,gBAAAyB,EAAA/rG,MAAA6jB,UAEA46G,GAAA7zB,oBAAAmB,EAAA/rG,MAAA6jB,SAAA,EAAA46G,GAAA/kC,OAAA,EAAA,EAAA,IAGA6P,GAAAmB,0BAEA+zB,GAAApxB,WAAAoxB,GAAArlB,UAAA,EAAA9nE,EAAA4sB,OAEA5sB,EAAA4sB,MAAA,GAGA7+E,KAAAyzI,mBAAA,SAAA/vD,EAAA4xB,EAAArvB,EAAAmO,EAAAniC,EAAAq6C,GACA,OAAAgJ,IAAAA,EAAA+gD,GAEA,MAAA/X,EAAArsF,EAAA0hC,QAAA1hC,EAAA8xB,YAAA1lD,cAAA,EACA0sF,EAAA4uC,GAAAj2E,EAAA4xB,EAAAlhB,EAAAniC,GACAmW,EAAAi2E,YAAAjqD,EAAAkqD,GAEA,IAAAhmI,EAAA2tE,EAAA3tE,MACA,MAAAtD,EAAAixE,EAAAvxC,WAAA1/B,SAEA,GAAA,OAAAsD,GACA,QAAA8uB,IAAApyB,GAAA,IAAAA,EAAA6pE,MAAA,YACA,GAAA,IAAAvmE,EAAAumE,MACA,OAIA,IAYAjI,EAZAgjF,EAAA,GAEA,IAAAxlE,EAAAwI,YACAtkF,EAAAw6E,GAAAsmC,sBAAAnzC,GACA2zE,EAAA,QAGAxyH,IAAA6+C,EAAAikB,gBAAAl1F,eAAAoyB,IAAA6+C,EAAAikB,gBAAAtlB,QACA8xE,GAAAzzG,OAAAgP,EAAAg0B,EAAAmO,EAAA22B,GAGAb,GAAAyB,MAAA15D,EAAAmiC,EAAA22B,EAAA9kC,EAAA3tE,GAEA,IAAA8Y,EAAAulI,GAEA,OAAAr+I,IACAs+D,EAAAliC,GAAA72B,IAAAvF,GACA8Y,EAAAwlI,GACAxlI,EAAAg9E,SAAAx3B,IAIA,MAAAijF,EAAA,OAAAvhJ,EAAAA,EAAAumE,MAAA7pE,EAAA6pE,MACAi7E,EAAA7zE,EAAAqkB,UAAA7jG,MAAAmzJ,EACAG,EAAA9zE,EAAAqkB,UAAAzrB,MAAA+6E,EACAzoD,EAAA,OAAA7E,EAAAA,EAAA7lG,MAAAmzJ,EAAA,EACA3nD,EAAA,OAAA3F,EAAAA,EAAAztB,MAAA+6E,EAAAz0I,EAAAA,EACA60I,EAAA9zJ,KAAAiS,IAAA2hJ,EAAA3oD,GACA8oD,EAAA/zJ,KAAAC,IAAA0zJ,EAAAC,EAAAC,EAAA5oD,EAAAc,GAAA,EACAioD,EAAAh0J,KAAAiS,IAAA,EAAA8hJ,EAAAD,EAAA,GACA,GAAA,IAAAE,EAAA,CAEA,GAAAjoG,EAAA0hC,QACA,IAAAS,EAAAwI,WACAx0B,EAAAo2E,aAAApqD,EAAAyI,mBAAA05D,KACAnlI,EAAA28F,QAAAqxB,GAAAplB,QAEA5oG,EAAA28F,QAAAqxB,GAAArlB,gBAEA,GAAA9nE,EAAA2hC,OAAA,CACA,IAAA6qD,EAAArqD,EAAAqI,eACAr1D,IAAAq3G,IAAAA,EAAA,GAEAr2E,EAAAo2E,aAAAC,EAAA8X,KAEAtkG,EAAAkoG,eACA/oI,EAAA28F,QAAAqxB,GAAAplB,OACA/nE,EAAAmoG,WACAhpI,EAAA28F,QAAAqxB,GAAAllB,WAEA9oG,EAAA28F,QAAAqxB,GAAAnlB,iBAEAhoE,EAAA4hC,SACAziE,EAAA28F,QAAAqxB,GAAAjlB,QACAloE,EAAAooG,UACAjpI,EAAA28F,QAAAqxB,GAAArlB,WAGA,GAAA9nE,EAAAohC,gBACAjiE,EAAA68F,gBAAA+rC,EAAAE,EAAAjoG,EAAA4sB,YACA,GAAAoH,EAAAwmC,0BAAA,CACA,MAAAqN,EAAA5zH,KAAAC,IAAA8/E,EAAA6zC,cAAA7zC,EAAA+mC,mBACA57F,EAAA68F,gBAAA+rC,EAAAE,EAAApgC,QAEA1oG,EAAAxgB,OAAAopJ,EAAAE,KAKAl6J,KAAA+1H,QAAA,SAAAzgB,EAAA5xB,GACA+wE,EAAA5iB,GAAAh0H,IAAAy3F,GACAm/C,EAAAv3I,OACAy3I,EAAAn0J,KAAAi0J,GACAn/C,EAAA7iB,iBAAA,SAAAxgC,GACAA,EAAAkgC,SAAAlgC,EAAA89B,OAAA7uE,KAAAwiE,EAAAqM,UACA0kE,EAAAhjB,UAAAx/E,GAEAA,EAAAq/B,YACAmjE,EAAA/iB,WAAAz/E,OAIAwiG,EAAAljB,YAAAhqH,EAAAygH,yBACA1yB,EAAA9iB,UAAA,SAAAvgC,GACA,MAAAmiC,EAAAniC,EAAAmiC,SAEA,GAAAA,EACA,GAAAlnF,MAAAhM,QAAAkzF,GACA,IAAA,IAAAzzF,EAAA,EAAAA,EAAAyzF,EAAA/zF,OAAAM,IAAA,CAEA25J,GADAlmE,EAAAzzF,GACA20G,EAAArjD,QAGAqoG,GAAAlmE,EAAAkhB,EAAArjD,MAIA0iG,EAAA/4G,MACA64G,EAAA,MAIA,IAAA1D,GAAA,KAMA,SAAAgI,KACAjoJ,GAAA8nD,OAGA,SAAAogG,KACAloJ,GAAArK,QAGA,MAAAqK,GAAA,IAAAioG,GA+GA,SAAAwhD,GAAAtoG,EAAAyxB,EAAAwpD,EAAA2nB,GACA,IAAA,IAAA5iG,EAAAo/B,QAAA,OAGA,GAFAp/B,EAAA89B,OAAA7uE,KAAAwiE,EAAAqM,QAGA,GAAA99B,EAAAu3F,QACAtc,EAAAj7E,EAAAw/B,iBACA,GAAAx/B,EAAAuoG,OACA,IAAAvoG,EAAAsiF,YAAAtiF,EAAAhP,OAAAygC,QACA,GAAAzxB,EAAAkgC,QACAsiE,EAAAhjB,UAAAx/E,GAEAA,EAAAq/B,YACAmjE,EAAA/iB,WAAAz/E,QAEA,GAAAA,EAAAooG,UACA,IAAApoG,EAAAu/B,eAAA4gD,EAAAqoB,iBAAAxoG,GAAA,CACA4iG,GACAuB,EAAAnkE,sBAAAhgC,EAAA8xB,aAAAJ,aAAAwyE,GAGA,MAAAlwE,EAAAiiC,GAAAjlE,OAAAgP,GACAmiC,EAAAniC,EAAAmiC,SAEAA,EAAA/C,SACAmjE,EAAAh0J,KAAAyxD,EAAAg0B,EAAAmO,EAAA84C,EAAAkpB,EAAAn3H,EAAA,YAGA,GAAAgzB,EAAAyoG,wBACA7F,GACAuB,EAAAnkE,sBAAAhgC,EAAA8xB,aAAAJ,aAAAwyE,GAGA3B,EAAAh0J,KAAAyxD,EAAA,KAAAA,EAAAmiC,SAAA84C,EAAAkpB,EAAAn3H,EAAA,WACA,IAAAgzB,EAAA0hC,QAAA1hC,EAAA2hC,QAAA3hC,EAAA4hC,YACA5hC,EAAA+hC,eAEA/hC,EAAAkiC,SAAAl+E,QAAA43G,EAAAj9G,OAAAqF,QACAg8C,EAAAkiC,SAAAlxC,SACAgP,EAAAkiC,SAAAl+E,MAAA43G,EAAAj9G,OAAAqF,QAIAg8C,EAAAu/B,eAAA4gD,EAAAgC,iBAAAniF,IAAA,CACA4iG,GACAuB,EAAAnkE,sBAAAhgC,EAAA8xB,aAAAJ,aAAAwyE,GAGA,MAAAlwE,EAAAiiC,GAAAjlE,OAAAgP,GACAmiC,EAAAniC,EAAAmiC,SAEA,GAAAlnF,MAAAhM,QAAAkzF,GAAA,CACA,MAAAgW,EAAAnkB,EAAAmkB,OAEA,IAAA,IAAAzpG,EAAA,EAAA4P,EAAA65F,EAAA/pG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAuvG,EAAA9b,EAAAkY,EAAA/B,eAEA2F,GAAAA,EAAA7e,SACAmjE,EAAAh0J,KAAAyxD,EAAAg0B,EAAAiqB,EAAAg9B,EAAAkpB,EAAAn3H,EAAAqtE,SAGAlY,EAAA/C,SACAmjE,EAAAh0J,KAAAyxD,EAAAg0B,EAAAmO,EAAA84C,EAAAkpB,EAAAn3H,EAAA,MAMA,MAAAxU,EAAAwnC,EAAAxnC,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA45J,GAAA9vI,EAAA9pB,GAAA+iF,EAAAwpD,EAAA2nB,GAIA,SAAA8F,GAAAnG,EAAAl/C,EAAA5xB,EAAAtF,GACA,MAAAw8E,EAAApG,EAAAjnB,OACAstB,EAAArG,EAAAhnB,aACAstB,EAAAtG,EAAAj1I,YACAk1I,EAAAjjB,gBAAA9tD,GACAm3E,EAAAx6J,OAAA,GAOA,SAAAu6J,EAAAtlD,EAAA5xB,GACA,GAAA,OAAAwyE,EAAA,CACA,MAAA6E,GAAA,IAAA/G,IAAA,IAAAx6C,EAAAC,SAEAy8C,EAAA,IADA6E,EAAAh8E,GAAAd,IACA,KAAA,KAAA,CACA3C,iBAAA,EACAv7E,KAAA,OAAA6yB,GAAA0wH,QAAA7yE,GAAAA,EAAAJ,EACAyK,UAAA1K,EACAyK,UAAA9K,EACA4K,MAAA9K,EACA+K,MAAA/K,IAIA,MAAA4lC,EAAAluF,EAAAmuF,kBAEAnuF,EAAAouF,gBAAAugD,GAEA3uI,EAAAuE,QAIA,MAAAkvI,EAAAzzI,EAAAoiG,YACApiG,EAAAoiG,YA11lBA,EA21lBAsxC,GAAAL,EAAAtlD,EAAA5xB,GACAn8D,EAAAoiG,YAAAqxC,EACAl/E,GAAAurE,8BAAA6O,GACAp6E,GAAAsrE,yBAAA8O,GAEA3uI,EAAAouF,gBAAAF,GApCAylD,CAAAN,EAAAtlD,EAAA5xB,GACAtF,GAAAhW,EAAAgW,SAAAi3E,EAAAxjJ,KAAAusE,IACAw8E,EAAAv6J,OAAA,GAAA46J,GAAAL,EAAAtlD,EAAA5xB,GACAm3E,EAAAx6J,OAAA,GAAA46J,GAAAJ,EAAAvlD,EAAA5xB,GACAo3E,EAAAz6J,OAAA,GAAA46J,GAAAH,EAAAxlD,EAAA5xB,GAmCA,SAAAu3E,GAAAlyC,EAAAzT,EAAA5xB,GACA,MAAA4yE,GAAA,IAAAhhD,EAAA9hB,QAAA8hB,EAAAghD,iBAAA,KAEA,IAAA,IAAA31J,EAAA,EAAA4P,EAAAw4G,EAAA1oH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAgtI,EAAA5kB,EAAApoH,GACAsxD,EAAA07E,EAAA17E,OACAg0B,EAAA0nD,EAAA1nD,SACAmO,EAAA,OAAAkiE,EAAA3oB,EAAAv5C,SAAAkiE,EACAhqD,EAAAqhC,EAAArhC,MAEAr6C,EAAA89B,OAAA7uE,KAAAwiE,EAAAqM,SACAmkD,GAAAjiF,EAAAqjD,EAAA5xB,EAAAuC,EAAAmO,EAAAkY,IAKA,SAAA4nC,GAAAjiF,EAAAqjD,EAAA5xB,EAAAuC,EAAAmO,EAAAkY,GAKA,GAJAr6C,EAAAw3D,eAAAliG,EAAA+tF,EAAA5xB,EAAAuC,EAAAmO,EAAAkY,GACAr6C,EAAAg/B,gBAAAjZ,iBAAA0L,EAAAE,mBAAA3xB,EAAA8xB,aACA9xB,EAAAi/B,aAAAsZ,gBAAAv4C,EAAAg/B,iBAEAh/B,EAAAyoG,wBAAA,CACA,MAAA3vC,EAAA4uC,GAAAj2E,EAAA4xB,EAAAlhB,EAAAniC,GACAmW,EAAAi2E,YAAAjqD,GACA81B,GAAAuB,QAlcA,SAAAx5D,EAAA84D,GACA94D,EAAArhD,QAAA,SAAAqhD,GACA1qC,EAAA0xI,sBAAAhnG,EAAA84D,MAicAowC,CAAAlpG,EAAA84D,QAEA,IAAA32B,EAAA70E,aAl6lBA,IAk6lBA60E,EAAApyD,MACAoyD,EAAApyD,KAp6lBA,EAq6lBAoyD,EAAA9X,aAAA,EAEA/0D,EAAAksH,mBAAA/vD,EAAA4xB,EAAArvB,EAAAmO,EAAAniC,EAAAq6C,GAEAlY,EAAApyD,KA16lBA,EA26lBAoyD,EAAA9X,aAAA,EAEA/0D,EAAAksH,mBAAA/vD,EAAA4xB,EAAArvB,EAAAmO,EAAAniC,EAAAq6C,GAEAlY,EAAApyD,KA76lBA,GA+6lBAza,EAAAksH,mBAAA/vD,EAAA4xB,EAAArvB,EAAAmO,EAAAniC,EAAAq6C,GAIAr6C,EAAAmpG,cAAA7zI,EAAA+tF,EAAA5xB,EAAAuC,EAAAmO,EAAAkY,GAGA,SAAAguD,GAAAlmE,EAAAkhB,EAAArjD,IACA,IAAAqjD,EAAA9hB,UAAA8hB,EAAA+gD,GAEA,MAAA1kC,EAAArM,GAAAznG,IAAAu2E,GACAwe,EAAA6hD,EAAArsF,MAAAwqC,OACA0+B,EAAAmjB,EAAArsF,MAAAkpE,aACA+pB,EAAAzoD,EAAAxqC,MAAA5/D,QACAsrF,EAAA0iE,GAAA7qB,cAAAv3C,EAAAwe,EAAAxqC,MAAAkpE,EAAAh8B,EAAArjD,GACAqpG,EAAA9E,GAAA7pB,mBAAA74C,GACA,IAAA8lC,EAAAjI,EAAAiI,SAEAjI,EAAAj+B,YAAAU,EAAAy3C,uBAAAv2B,EAAA5hB,YAAA,KACAi+B,EAAA16B,IAAAqe,EAAAre,IACA06B,EAAA/1B,QAAAxH,EAAAy3C,uBAAApB,GAAAxiB,IAAApqG,IAAAu2E,EAAAwH,QAAA+1B,EAAAj+B,kBAEAtsD,IAAAwyF,IAEAxlC,EAAAxwD,iBAAA,UAAA6zH,IACA79B,EAAA,IAAAzyF,IACAwqF,EAAAiI,SAAAA,GAGA,IAAA7O,EAAA6O,EAAA/7G,IAAAy9I,GAEA,QAAAl0H,IAAA2jF,GAEA,GAAA4G,EAAAwmB,iBAAAptB,GAAA4G,EAAA0pC,qBAAAA,EAEA,OADAE,GAAAnnE,EAAAN,GACAi3B,OAGAj3B,EAAAse,SAAAokD,GAAAz7B,YAAA3mC,GACAA,EAAAonE,QAAA1nE,EAAAvsE,GACA6sE,EAAAgF,gBAAAtF,EAAAvsE,GACAwjG,EAAAyrC,GAAA5pB,eAAA94C,EAAAwnE,GACA1hC,EAAA30G,IAAAq2I,EAAAvwC,GACA4G,EAAAvf,SAAAte,EAAAse,SAGA,MAAAA,EAAAuf,EAAAvf,UAEAhe,EAAAmf,kBAAAnf,EAAAy+B,uBAAA,IAAAz+B,EAAAye,WACAT,EAAA/Z,eAAAwa,GAAA8d,SAGA4qC,GAAAnnE,EAAAN,GAEA69B,EAAA8pC,YAmPA,SAAArnE,GACA,OAAAA,EAAA+9D,uBAAA/9D,EAAAi+D,oBAAAj+D,EAAAm+D,qBAAAn+D,EAAAy3C,wBAAAz3C,EAAAq/D,kBAAAr/D,EAAAmf,mBAAA,IAAAnf,EAAAwe,OApPA8oD,CAAAtnE,GACAu9B,EAAA0pC,mBAAAA,EAEA1pC,EAAA8pC,cAEArpD,EAAA+S,kBAAArlH,MAAA8yG,EAAAxqC,MAAAinE,QACAj9B,EAAAgT,WAAAtlH,MAAA8yG,EAAAxqC,MAAAknE,MACAl9B,EAAAiT,kBAAAvlH,MAAA8yG,EAAAxqC,MAAAikE,YACAj6B,EAAAmT,wBAAAzlH,MAAA8yG,EAAAxqC,MAAAmnE,kBACAn9B,EAAA0T,WAAAhmH,MAAA8yG,EAAAxqC,MAAAkkE,KACAl6B,EAAA8T,iBAAApmH,MAAA8yG,EAAAxqC,MAAAonE,WACAp9B,EAAA0U,eAAAhnH,MAAA8yG,EAAAxqC,MAAAmkE,SACAn6B,EAAA2U,MAAAjnH,MAAA8yG,EAAAxqC,MAAAqnE,aACAr9B,EAAA4U,MAAAlnH,MAAA8yG,EAAAxqC,MAAAsnE,aACAt9B,EAAAiU,YAAAvmH,MAAA8yG,EAAAxqC,MAAAha,MACAgkD,EAAAkU,kBAAAxmH,MAAA8yG,EAAAxqC,MAAAunE,YACAv9B,EAAAuU,iBAAA7mH,MAAA8yG,EAAAxqC,MAAAokE,KACAp6B,EAAAwT,qBAAA9lH,MAAA8yG,EAAAxqC,MAAAw9C,qBACAxT,EAAAyT,wBAAA/lH,MAAA8yG,EAAAxqC,MAAAy9C,wBACAzT,EAAA+T,cAAArmH,MAAA8yG,EAAAxqC,MAAA+9C,cACA/T,EAAAgU,iBAAAtmH,MAAA8yG,EAAAxqC,MAAAg+C,iBACAhU,EAAAqU,eAAA3mH,MAAA8yG,EAAAxqC,MAAAq+C,eACArU,EAAAsU,kBAAA5mH,MAAA8yG,EAAAxqC,MAAAs+C,mBAGA,MAAAi1C,EAAA5wC,EAAAgQ,cACA6gC,EAAAj6B,GAAAW,aAAAq5B,EAAA36B,IAAA5uB,GAGA,OAFAuf,EAAAwmB,eAAAptB,EACA4G,EAAAiqC,aAAAA,EACA7wC,EAGA,SAAAwwC,GAAAnnE,EAAAN,GACA,MAAA69B,EAAArM,GAAAznG,IAAAu2E,GACAu9B,EAAA4C,eAAAzgC,EAAAygC,eACA5C,EAAAqV,WAAAlzC,EAAAkzC,WACArV,EAAAgW,SAAA7zC,EAAA6zC,SACAhW,EAAA/hB,aAAA9b,EAAA8b,aACA+hB,EAAAiJ,aAAA9mC,EAAA8mC,aACAjJ,EAAAsS,kBAAAnwC,EAAAmwC,kBACAtS,EAAAb,gBAAAh9B,EAAAowC,oBACAvS,EAAA6V,aAAA1zC,EAAA0zC,aACA7V,EAAA4V,eAAAzzC,EAAAyzC,eAGA,SAAAoyB,GAAAj2E,EAAA4xB,EAAAlhB,EAAAniC,IACA,IAAAqjD,EAAA9hB,UAAA8hB,EAAA+gD,GAEAv6E,GAAA+qE,oBACA,MAAA5vD,EAAAqe,EAAAre,IACAvD,EAAAU,EAAAy3C,uBAAAv2B,EAAA5hB,YAAA,KACA1Y,EAAA,OAAAk6E,EAAA3tI,EAAAgtG,eAAA2gC,EAAA72E,QAAArD,SACA4gB,GAAAxH,EAAAy3C,uBAAApB,GAAAxiB,IAAApqG,IAAAu2E,EAAAwH,QAAAlI,GACA8zC,GAAA,IAAApzC,EAAA+C,gBAAAllC,EAAAg0B,YAAAh0B,EAAAg0B,SAAAvxC,WAAA/zB,OAAA,IAAAsxC,EAAAg0B,SAAAvxC,WAAA/zB,MAAA4mF,SACAggC,IAAAt1E,EAAAg0B,YAAAh0B,EAAAg0B,SAAAvxC,WAAA+1D,QACAmF,IAAA39C,EAAAg0B,YAAAh0B,EAAAg0B,SAAAikB,gBAAAl1F,SACA4lH,IAAA3oE,EAAAg0B,YAAAh0B,EAAAg0B,SAAAikB,gBAAAtlB,OACA+sC,EAAArM,GAAAznG,IAAAu2E,GACAwe,EAAA6hD,EAAArsF,MAAAwqC,OAEA,IAAA,IAAAojD,KACA,IAAAC,GAAAvyE,IAAA0xE,GAAA,CACA,MAAA1jC,EAAAhuC,IAAA0xE,GAAAhhE,EAAApxF,KAAAmyJ,EAIAtiD,GAAA4e,SAAAr9B,EAAA1Q,EAAAguC,GAKA,IAAAmqC,GAAA,EAEAznE,EAAA5rF,UAAAmpH,EAAA8wB,UACA9wB,EAAA8pC,aAAA9pC,EAAA0pC,qBAAAzoD,EAAAxqC,MAAA5/D,SAEAmpH,EAAA4C,iBAAAv5C,GAEA/oB,EAAAohC,kBAAA,IAAAs+B,EAAAqV,WAHA60B,GAAA,EAKA5pG,EAAAohC,kBAAA,IAAAs+B,EAAAqV,WAEA/0E,EAAA+hC,gBAAA,IAAA29B,EAAAgW,SACAk0B,GAAA,EACA5pG,EAAA+hC,gBAAA,IAAA29B,EAAAgW,SAEAhW,EAAA/1B,SAAAA,GAEAxH,EAAA6C,KAAA06B,EAAA16B,MAAAA,EADA4kE,GAAA,OAGAz0H,IAAAuqF,EAAAsS,mBAAAtS,EAAAsS,oBAAApxB,GAAAge,WAAAc,EAAAb,kBAAAje,GAAAie,iBAEAa,EAAA6V,eAAAA,GAEA7V,EAAA4V,iBAAAA,GAEA5V,EAAA/hB,eAAAA,GAEA+hB,EAAAiJ,eAAAA,KALAihC,GAAA,GAFAA,GAAA,EANAA,GAAA,EAJAA,GAAA,GAqBAA,GAAA,EACAlqC,EAAA8wB,UAAAruD,EAAA5rF,SAIA,IAAAuiH,EAAA4G,EAAAwmB,gBAEA,IAAA0jB,IACA9wC,EAAAuvC,GAAAlmE,EAAAkhB,EAAArjD,IAGA,IAAA6pG,GAAA,EACAC,GAAA,EACAC,GAAA,EACA,MAAAC,EAAAlxC,EAAAgQ,cACAmhC,EAAAvqC,EAAAvf,SAaA,GAXAhqC,EAAAg2E,WAAArzB,EAAAA,WACA+wC,GAAA,EACAC,GAAA,EACAC,GAAA,GAGA5nE,EAAApxF,KAAAmyJ,IACAA,EAAA/gE,EAAApxF,GACA+4J,GAAA,GAGAD,GAAA1G,IAAA1xE,EAAA,CAmBA,GAlBAu4E,EAAAjhC,SAAAokB,GAAA,mBAAA17D,EAAAG,kBAEA21B,EAAAsV,wBACAmtC,EAAAjhC,SAAAokB,GAAA,gBAAA,GAAAl5I,KAAAS,IAAA+8E,EAAAuL,IAAA,GAAA/oF,KAAA2tE,MAGAuhF,IAAA1xE,IACA0xE,EAAA1xE,EAIAq4E,GAAA,EAEAC,GAAA,GAKA5nE,EAAAmf,kBAAAnf,EAAAm+D,qBAAAn+D,EAAAi+D,oBAAAj+D,EAAAy3C,wBAAAz3C,EAAAwH,OAAA,CACA,MAAAugE,EAAAF,EAAA/7I,IAAAk8I,oBAEAh1H,IAAA+0H,GACAA,EAAAnhC,SAAAokB,GAAAgX,EAAAnkE,sBAAAvO,EAAAK,eAIAqQ,EAAAm+D,qBAAAn+D,EAAAi+D,oBAAAj+D,EAAA+9D,uBAAA/9D,EAAA+S,qBAAA/S,EAAAy3C,wBAAAz3C,EAAAmf,mBACA0oD,EAAAjhC,SAAAokB,GAAA,kBAAA,IAAA17D,EAAAivC,uBAGAv+B,EAAAm+D,qBAAAn+D,EAAAi+D,oBAAAj+D,EAAA+9D,uBAAA/9D,EAAA+S,qBAAA/S,EAAAy3C,wBAAAz3C,EAAAmf,kBAAAnf,EAAAq/D,kBAAAxhG,EAAA+hC,gBACAioE,EAAAjhC,SAAAokB,GAAA,aAAA17D,EAAAE,oBAOA,GAAA3xB,EAAA+hC,cAAA,CACAioE,EAAA75B,YAAAgd,GAAAntF,EAAA,cACAgqG,EAAA75B,YAAAgd,GAAAntF,EAAA,qBACA,MAAAkiC,EAAAliC,EAAAkiC,SAEAA,IACAqlB,EAAA0W,qBACA,OAAA/7B,EAAAkoE,aAAAloE,EAAAmoE,qBACAL,EAAAjhC,SAAAokB,GAAA,cAAAjrD,EAAAkoE,YAAAvgF,IACAmgF,EAAAjhC,SAAAokB,GAAA,kBAAAjrD,EAAAooE,kBAEAN,EAAA75B,YAAAgd,GAAAjrD,EAAA,iBAkDA,IAAAie,EAAAtyG,EAJA,OAzCAi8J,GAAApqC,EAAApgC,gBAAAt/B,EAAAs/B,iBACAogC,EAAApgC,cAAAt/B,EAAAs/B,cACA0qE,EAAAjhC,SAAAokB,GAAA,gBAAAntF,EAAAs/B,gBAGAwqE,IACAE,EAAAjhC,SAAAokB,GAAA,sBAAA73H,EAAAutI,qBAEAnjC,EAAA8pC,cAqCA37J,EA7BAk8J,GA6BA5pD,EA7BA8pD,GA8BA/2C,kBAAA7oC,YAAAx8E,EACAsyG,EAAAgT,WAAA9oC,YAAAx8E,EACAsyG,EAAAiT,kBAAA/oC,YAAAx8E,EACAsyG,EAAAmT,wBAAAjpC,YAAAx8E,EACAsyG,EAAAiU,YAAA/pC,YAAAx8E,EACAsyG,EAAAkU,kBAAAhqC,YAAAx8E,EACAsyG,EAAA0T,WAAAxpC,YAAAx8E,EACAsyG,EAAA8T,iBAAA5pC,YAAAx8E,EACAsyG,EAAA0U,eAAAxqC,YAAAx8E,EACAsyG,EAAAuU,iBAAArqC,YAAAx8E,GAnCAm3F,GAAA7C,EAAA6C,KACAlE,GAAA8+D,mBAAAqK,EAAAjlE,GAGAlE,GAAAi/D,wBAAAkK,EAAA9nE,EAAAshE,EAAAD,EAAAS,GACAv0B,GAAAU,OAAA+c,GAAAztB,EAAAiqC,aAAAM,EAAApgF,KAGAsY,EAAAmf,mBAAA,IAAAnf,EAAAif,qBACAsuB,GAAAU,OAAA+c,GAAAztB,EAAAiqC,aAAAM,EAAApgF,IACAsY,EAAAif,oBAAA,GAGAjf,EAAAm/D,kBACA0I,EAAAjhC,SAAAokB,GAAA,SAAAntF,EAAAp4C,QAIAoiJ,EAAAjhC,SAAAokB,GAAA,kBAAAntF,EAAAg/B,iBACAgrE,EAAAjhC,SAAAokB,GAAA,eAAAntF,EAAAi/B,cACA+qE,EAAAjhC,SAAAokB,GAAA,cAAAntF,EAAA8xB,aACAgnC,EAtiBAj6G,GAAAsoG,kBAbA,SAAAryG,GACAgqJ,IAAAA,GAAAhqJ,MAaA,oBAAAzC,QAAAwM,GAAAuoG,WAAA/0G,QAEAtE,KAAAo5G,iBAAA,SAAA38F,GACAs0I,GAAAt0I,EACA+4F,GAAA4D,iBAAA38F,GACA,OAAAA,EAAA3L,GAAA8nD,OAAA9nD,GAAArK,SAGA+uG,GAAA5xE,iBAAA,eAAAm1H,IACAvjD,GAAA5xE,iBAAA,aAAAo1H,IAEAh5J,KAAA4Q,OAAA,SAAA0kG,EAAA5xB,GACA,QAAAt8C,IAAAs8C,IAAA,IAAAA,EAAAwO,SAEA,YADAjkF,QAAApK,MAAA,0EAIA,IAAA,IAAAkxJ,EAAA,QAEA,IAAAz/C,EAAAi/B,YAAAj/B,EAAA3iB,oBAEA,OAAAjP,EAAA3xE,QAAA2xE,EAAAiP,qBAEA,IAAA6iB,GAAAhgE,UAAA,IAAAggE,GAAAy3C,gBACA,IAAAz3C,GAAA83C,kBAAA93C,GAAAg6C,aAAA9rE,GACAA,EAAA8xB,GAAAk7C,cAIA,IAAAp7C,EAAA9hB,SAAA8hB,EAAAmU,eAAAliG,EAAA+tF,EAAA5xB,EAAAwxE,GACAT,EAAA5iB,GAAAh0H,IAAAy3F,EAAAq/C,EAAAt0J,QACAo0J,EAAAv3I,OACAy3I,EAAAn0J,KAAAi0J,GAEA0B,EAAAn+E,iBAAA0L,EAAAG,iBAAAH,EAAAE,oBAEAwuD,EAAAoqB,wBAAArG,GAEAF,EAAAj2J,KAAAwwH,qBACAwlC,EAAAnjD,GAAA31F,KAAAld,KAAAq4F,eAAA49D,EAAAvyE,GACA8wE,EAAAiC,GAAA54I,IAAAy3F,EAAAo/C,EAAAr0J,QACAm0J,EAAAt3I,OACAw3I,EAAAl0J,KAAAg0J,GACA+F,GAAAjlD,EAAA5xB,EAAA,EAAAn8D,EAAAstI,aACAL,EAAA5mB,UAEA,IAAArmH,EAAAstI,aACAL,EAAAnsJ,KAAAstJ,EAAAC,IAIA,IAAAI,GAAAnjD,GAAA0e,eACA,MAAA+f,EAAAmjB,EAAArsF,MAAAkpE,aAUA,GATA7E,GAAA77H,OAAA0gI,EAAAh8B,EAAA5xB,IACA,IAAAsyE,GAAAnjD,GAAA2e,cAEA,IAAAxxH,KAAA6tH,KAAAgM,WAAA75H,KAAA6tH,KAAApC,QAEAjpD,GAAA5xD,OAAA4jJ,EAAAl/C,GAEAm/C,EAAAljB,YAAAhqH,EAAAygH,yBAEAtkD,EAAA4lE,cAAA,CACA,MAAAD,EAAA3lE,EAAA2lE,QAEA,IAAA,IAAA1oJ,EAAA,EAAA4P,EAAA84I,EAAAhpJ,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA87J,EAAApT,EAAA1oJ,GACAg6J,GAAAnG,EAAAl/C,EAAAmnD,EAAAA,EAAAr+E,gBAGAu8E,GAAAnG,EAAAl/C,EAAA5xB,GAIA,OAAAwxE,IAEAp5E,GAAAurE,8BAAA6N,GAEAp5E,GAAAsrE,yBAAA8N,KAIA,IAAA5/C,EAAA9hB,SAAA8hB,EAAA8lD,cAAA7zI,EAAA+tF,EAAA5xB,GAEAtb,EAAAsxC,QAAA/tC,MAAAmpE,SAAA,GACA1sE,EAAAsxC,QAAA/tC,MAAAoqE,SAAA,GACA3tE,EAAAsxC,QAAA/4F,MAAAo1H,SAAA,GACA3tE,EAAAq1E,kBAAA,GAEAvzB,GAAAwB,oBACAypC,GAAA,EACAC,EAAA,KACAT,EAAA/4G,MAGA64G,EADAE,EAAAt0J,OAAA,EACAs0J,EAAAA,EAAAt0J,OAAA,GAEA,KAGAq0J,EAAA94G,MAGA44G,EADAE,EAAAr0J,OAAA,EACAq0J,EAAAA,EAAAr0J,OAAA,GAEA,MAidAL,KAAAy0I,kBAAA,WACA,OAAAugB,GAGAh1J,KAAA20I,qBAAA,WACA,OAAAsgB,GAGAj1J,KAAA01G,gBAAA,WACA,OAAAw/C,GAGAl1J,KAAA21G,gBAAA,SAAAb,EAAA0/B,EAAA,EAAAE,EAAA,GACAwgB,EAAApgD,EACAkgD,EAAAxgB,EACAygB,EAAAvgB,EAEA5/B,QAAA1tE,IAAAk+E,GAAAznG,IAAAi3F,GAAA+sC,oBACA/lE,GAAAgrE,kBAAAhyC,GAGA,IAAAkpC,EAAA,KACAsI,GAAA,EACAU,GAAA,EAEA,GAAAlyC,EAAA,CACA,MAAAz2B,EAAAy2B,EAAAz2B,SAEAA,EAAAs9C,iBAAAt9C,EAAAo9C,wBACAurB,GAAA,GAGA,MAAAnF,EAAAv8B,GAAAznG,IAAAi3F,GAAA+sC,mBAEA/sC,EAAAC,yBACAipC,EAAA6D,EAAArN,GACA8R,GAAA,GAEAtI,EADAlpC,EAAA71B,+BACAqmC,GAAAznG,IAAAi3F,GAAAktC,+BAEAH,EAGAwT,EAAAxjJ,KAAAijG,EAAA12B,UAEAk3E,EAAAzjJ,KAAAijG,EAAA52B,SAEAq3E,EAAAzgD,EAAA32B,iBAEAk3E,EAAAxjJ,KAAA0gI,GAAAn8D,eAAAs/E,GAAA5hJ,QAEAwhJ,EAAAzjJ,KAAAgkJ,GAAAz/E,eAAAs/E,GAAA5hJ,QAEAyhJ,EAAAO,EAKA,GAFA1tF,EAAA21E,gBAAAqB,GAAAlB,YAAAF,IAEAxkC,EAAAvG,YAAA,CACA,IAAA32B,GAAA,EAEA,GAAAw4B,EACA,GAAAA,EAAAh2B,6BAAA,CACA,MAAAhD,EAAAg5B,EAAAz2B,QAEA,GAAA03E,EAAA11J,SAAAy7E,EAAAz7E,QAAA01J,EAAA,KAAA3W,GAAA8H,kBAAA,CACA,IAAA,IAAAvmJ,EAAA,EAAAqzB,EAAA8nD,EAAAz7E,OAAAM,EAAAqzB,EAAArzB,IACAo1J,EAAAp1J,GAAAy+I,GAAA8H,kBAAAvmJ,EAGAo1J,EAAA11J,OAAAy7E,EAAAz7E,OACAi8E,GAAA,QAGA,IAAAy5E,EAAA11J,QAAA01J,EAAA,KAAA3W,GAAA8H,oBACA6O,EAAA,GAAA3W,GAAA8H,kBACA6O,EAAA11J,OAAA,EACAi8E,GAAA,QAIA,IAAAy5E,EAAA11J,QAAA01J,EAAA,KAAA3W,GAAA9B,OACAyY,EAAA,GAAA3W,GAAA9B,KACAyY,EAAA11J,OAAA,EACAi8E,GAAA,GAIAA,IACAk9B,EAAAC,SACA2lC,GAAAnsC,YAAA8iD,GAEAjjD,EAAAj1F,IAAA,sBAAA6+I,iBAAA3G,IASA,GAJA3tF,EAAAgW,SAAAi3E,GACAjtF,EAAA8V,QAAAo3E,GACAltF,EAAA2sE,eAAAwgB,GAEAjP,EAAA,CACA,MAAAlF,EAAA97B,GAAAznG,IAAAi3F,EAAAz2B,SAEA+gE,GAAAqG,qBAAArG,GAAAlB,YAAAkB,GAAA8H,kBAAA9H,GAAA3E,4BAAAjG,EAAA4M,EAAAG,eAAA7M,QACA,GAAAsS,EAAA,CACA,MAAA5F,EAAA97B,GAAAznG,IAAAi3F,EAAAz2B,SACAs+E,EAAAnoB,GAAA,EAEA4K,GAAAwd,wBAAAxd,GAAAlB,YAAAkB,GAAA8H,kBAAA9F,EAAAG,eAAA7M,GAAA,EAAAioB,GAGAxH,GAAA,GAGAn1J,KAAA68J,uBAAA,SAAA/nD,EAAAttG,EAAAlC,EAAAvC,EAAAu3B,EAAAovE,EAAAozD,GACA,IAAAhoD,IAAAA,EAAAn2B,oBAEA,YADA1wE,QAAApK,MAAA,4FAIA,IAAAm6I,EAAA14B,GAAAznG,IAAAi3F,GAAA+sC,mBAMA,GAJA/sC,EAAAC,8BAAA3tE,IAAA01H,IACA9e,EAAAA,EAAA8e,IAGA9e,EAAA,CACA51E,EAAA21E,gBAAAqB,GAAAlB,YAAAF,GAEA,IACA,MAAA3/D,EAAAy2B,EAAAz2B,QACA0+E,EAAA1+E,EAAArsD,OACAqyH,EAAAhmE,EAAAt+E,KAEA,GAAAg9J,IAAAnsF,GAAAh+C,GAAA0wH,QAAAyZ,KAAA3d,GAAAt1B,aAAAs1B,GAAA4d,kCAEA,YADA/uJ,QAAApK,MAAA,6GAIA,MAAAo5J,EAAA5Y,IAAA5zE,IAAAqiC,EAAAxrE,IAAA,gCAAAkyE,EAAAC,UAAA3G,EAAAxrE,IAAA,2BAEA,KAAA+8G,IAAAh0E,GAAAz9C,GAAA0wH,QAAAe,KAAAjF,GAAAt1B,aAAAs1B,GAAA8d,iCACA7Y,IAAA7zE,IAAAgpC,EAAAC,UAAA3G,EAAAxrE,IAAA,sBAAAwrE,EAAAxrE,IAAA,8BACA21H,GAEA,YADAhvJ,QAAApK,MAAA,uHAIAu7I,GAAA+d,uBAAA/d,GAAAlB,eAAAkB,GAAAge,qBAEA51J,GAAA,GAAAA,GAAAstG,EAAA/xG,MAAAA,GAAAuC,GAAA,GAAAA,GAAAwvG,EAAAx6E,OAAAA,GACA8kH,GAAAie,WAAA71J,EAAAlC,EAAAvC,EAAAu3B,EAAA1H,GAAA0wH,QAAAyZ,GAAAnqI,GAAA0wH,QAAAe,GAAA36C,GAGAz7F,QAAApK,MAAA,8GAEA,QAEA,MAAAm6I,EAAA,OAAAkX,EAAA5vC,GAAAznG,IAAAq3I,GAAArT,mBAAA,KACAz5E,EAAA21E,gBAAAqB,GAAAlB,YAAAF,MAKAh+I,KAAAs9J,yBAAA,SAAAtoJ,EAAAqpE,EAAAk/E,EAAA,GACA,MAAAC,EAAAt3J,KAAAD,IAAA,GAAAs3J,GACAx6J,EAAAmD,KAAA4N,MAAAuqE,EAAA1uB,MAAA5sD,MAAAy6J,GACAljI,EAAAp0B,KAAA4N,MAAAuqE,EAAA1uB,MAAAr1B,OAAAkjI,GACA,IAAAnd,EAAAztH,GAAA0wH,QAAAjlE,EAAArsD,QAEAwnF,EAAAC,WAGA4mC,IAAAjB,GAAAuB,MAAAN,EAAAjB,GAAA0B,MACAT,IAAAjB,GAAA/E,OAAAgG,EAAAjB,GAAA6B,QAGAnlE,GAAAwmE,aAAAjkE,EAAA,GAEA+gE,GAAAqe,eAAAre,GAAA7E,WAAAgjB,EAAAld,EAAArrI,EAAAxN,EAAAwN,EAAA1P,EAAAvC,EAAAu3B,EAAA,GAEA8tC,EAAA02E,iBAGA9+I,KAAA09J,qBAAA,SAAA1oJ,EAAA2oJ,EAAAC,EAAAL,EAAA,GACA,MAAAx6J,EAAA46J,EAAAhuG,MAAA5sD,MACAu3B,EAAAqjI,EAAAhuG,MAAAr1B,OACA+lH,EAAAztH,GAAA0wH,QAAAsa,EAAA5rI,QACAsuH,EAAA1tH,GAAA0wH,QAAAsa,EAAA79J,MACA+7E,GAAAwmE,aAAAsb,EAAA,GAGAxe,GAAAyD,YAAAzD,GAAA0D,oBAAA8a,EAAApiF,OAEA4jE,GAAAyD,YAAAzD,GAAA2D,+BAAA6a,EAAAriF,kBAEA6jE,GAAAyD,YAAAzD,GAAA4D,iBAAA4a,EAAAniF,iBAEAkiF,EAAAzhF,cACAkjE,GAAAye,cAAAze,GAAA7E,WAAAgjB,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAAvC,EAAAu3B,EAAA+lH,EAAAC,EAAAqd,EAAAhuG,MAAA3tD,MAEA27J,EAAAva,oBACAhE,GAAA0e,wBAAA1e,GAAA7E,WAAAgjB,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAAq4J,EAAAxiF,QAAA,GAAAp4E,MAAA46J,EAAAxiF,QAAA,GAAA7gD,OAAA+lH,EAAAsd,EAAAxiF,QAAA,GAAAn5E,MAEAo9I,GAAAye,cAAAze,GAAA7E,WAAAgjB,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAA+6I,EAAAC,EAAAqd,EAAAhuG,OAKA,IAAA4tG,GAAAK,EAAAtiF,iBAAA8jE,GAAAY,eAAAZ,GAAA7E,YACAnyE,EAAA02E,iBAGA9+I,KAAA+9J,uBAAA,SAAAC,EAAAhpJ,EAAA2oJ,EAAAC,EAAAL,EAAA,GACA,GAAAh2I,EAAA2vI,iBAEA,YADAjpJ,QAAAC,KAAA,6EAIA,MAAAnL,EAAAi7J,EAAA7lJ,IAAA3Q,EAAAw2J,EAAA73J,IAAAqB,EAAA,EACA8yB,EAAA0jI,EAAA7lJ,IAAA7S,EAAA04J,EAAA73J,IAAAb,EAAA,EACAqmE,EAAAqyF,EAAA7lJ,IAAA8mB,EAAA++H,EAAA73J,IAAA84B,EAAA,EACAohH,EAAAztH,GAAA0wH,QAAAsa,EAAA5rI,QACAsuH,EAAA1tH,GAAA0wH,QAAAsa,EAAA79J,MACA,IAAAk+J,EAEA,GAAAL,EAAAjiC,gBACA7/C,GAAAmjD,aAAA2+B,EAAA,GACAK,EAAA7e,GAAAoF,eACA,CAAA,IAAAoZ,EAAAniC,qBAKA,YADAxtH,QAAAC,KAAA,+GAHA4tE,GAAAujD,kBAAAu+B,EAAA,GACAK,EAAA7e,GAAAqF,iBAMArF,GAAAyD,YAAAzD,GAAA0D,oBAAA8a,EAAApiF,OAEA4jE,GAAAyD,YAAAzD,GAAA2D,+BAAA6a,EAAAriF,kBAEA6jE,GAAAyD,YAAAzD,GAAA4D,iBAAA4a,EAAAniF,iBAEA,MAAAyiF,EAAA9e,GAAAt1B,aAAAs1B,GAAA+e,mBAEAC,EAAAhf,GAAAt1B,aAAAs1B,GAAAif,qBAEAC,EAAAlf,GAAAt1B,aAAAs1B,GAAAmf,oBAEAC,EAAApf,GAAAt1B,aAAAs1B,GAAAqf,kBAEAC,EAAAtf,GAAAt1B,aAAAs1B,GAAAuf,oBAEAhvG,EAAAguG,EAAAva,oBAAAua,EAAAxiF,QAAA,GAAAwiF,EAAAhuG,MAEAyvF,GAAAyD,YAAAzD,GAAA+e,kBAAAxuG,EAAA5sD,OAEAq8I,GAAAyD,YAAAzD,GAAAif,oBAAA1uG,EAAAr1B,QAEA8kH,GAAAyD,YAAAzD,GAAAmf,mBAAAP,EAAA73J,IAAAqB,GAEA43I,GAAAyD,YAAAzD,GAAAqf,iBAAAT,EAAA73J,IAAAb,GAEA85I,GAAAyD,YAAAzD,GAAAuf,mBAAAX,EAAA73J,IAAA84B,GAEA0+H,EAAAzhF,eAAAyhF,EAAAhiC,gBACAyjB,GAAAwf,cAAAX,EAAAV,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAA0P,EAAAiqB,EAAAl8B,EAAAu3B,EAAAqxC,EAAA00E,EAAAC,EAAA3wF,EAAA3tD,MAEA27J,EAAAva,qBACAn1I,QAAAC,KAAA,2FAEAkxI,GAAAyf,wBAAAZ,EAAAV,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAA0P,EAAAiqB,EAAAl8B,EAAAu3B,EAAAqxC,EAAA00E,EAAA1wF,EAAA3tD,OAEAo9I,GAAAwf,cAAAX,EAAAV,EAAAvoJ,EAAAxN,EAAAwN,EAAA1P,EAAA0P,EAAAiqB,EAAAl8B,EAAAu3B,EAAAqxC,EAAA00E,EAAAC,EAAA3wF,GAIAyvF,GAAAyD,YAAAzD,GAAA+e,kBAAAD,GAEA9e,GAAAyD,YAAAzD,GAAAif,oBAAAD,GAEAhf,GAAAyD,YAAAzD,GAAAmf,mBAAAD,GAEAlf,GAAAyD,YAAAzD,GAAAqf,iBAAAD,GAEApf,GAAAyD,YAAAzD,GAAAuf,mBAAAD,GAGA,IAAAnB,GAAAK,EAAAtiF,iBAAA8jE,GAAAY,eAAAie,GACA71F,EAAA02E,iBAGA9+I,KAAA4iJ,YAAA,SAAAvkE,GACAvC,GAAAwmE,aAAAjkE,EAAA,GACAjW,EAAA02E,iBAGA9+I,KAAA8+J,WAAA,WACA9J,EAAA,EACAC,EAAA,EACAC,EAAA,KACA9sF,EAAAqjD,QACAvB,GAAAuB,SAGA,oBAAAszC,oBACAA,mBAAA7yH,cAAA,IAAAxG,YAAA,UAAA,CACAoG,OAAA9rC,QAMA,MAAAg/J,WAAAtL,IAEAsL,GAAAj2J,UAAAmuJ,kBAAA,EAEA,MAAA+H,GACApsF,YAAAlyD,EAAAoxI,EAAA,OACA/xJ,KAAAE,KAAA,GACAF,KAAA2gB,MAAA,IAAA+kF,GAAA/kF,GACA3gB,KAAA+xJ,QAAAA,EAGAl/E,QACA,OAAA,IAAAosF,GAAAj/J,KAAA2gB,MAAA3gB,KAAA+xJ,SAGAl/E,SACA,MAAA,CACA9yE,KAAA,UACA4gB,MAAA3gB,KAAA2gB,MAAA64E,SACAu4D,QAAA/xJ,KAAA+xJ,UAMAkN,GAAAl2J,UAAAqjI,WAAA,EAEA,MAAA8yB,GACArsF,YAAAlyD,EAAAquE,EAAA,EAAAC,EAAA,KACAjvF,KAAAE,KAAA,GACAF,KAAA2gB,MAAA,IAAA+kF,GAAA/kF,GACA3gB,KAAAgvF,KAAAA,EACAhvF,KAAAivF,IAAAA,EAGApc,QACA,OAAA,IAAAqsF,GAAAl/J,KAAA2gB,MAAA3gB,KAAAgvF,KAAAhvF,KAAAivF,KAGApc,SACA,MAAA,CACA9yE,KAAA,MACA4gB,MAAA3gB,KAAA2gB,MAAA64E,SACAxK,KAAAhvF,KAAAgvF,KACAC,IAAAjvF,KAAAivF,MAMAiwE,GAAAn2J,UAAA+oJ,OAAA,EAEA,MAAAqN,WAAAtuE,GACAhe,cACAoI,QACAj7E,KAAAD,KAAA,QACAC,KAAAwiE,WAAA,KACAxiE,KAAA0zF,YAAA,KACA1zF,KAAAi3F,IAAA,KACAj3F,KAAAs2J,iBAAA,KACAt2J,KAAAu0I,YAAA,EAEA,oBAAAwqB,oBACAA,mBAAA7yH,cAAA,IAAAxG,YAAA,UAAA,CACAoG,OAAA9rC,QAMA6yE,KAAAjxC,EAAA2yD,GAQA,OAPAtZ,MAAAppE,KAAA+vB,EAAA2yD,GACA,OAAA3yD,EAAA4gC,aAAAxiE,KAAAwiE,WAAA5gC,EAAA4gC,WAAAkc,SACA,OAAA98C,EAAA8xD,cAAA1zF,KAAA0zF,YAAA9xD,EAAA8xD,YAAAhV,SACA,OAAA98C,EAAAq1D,MAAAj3F,KAAAi3F,IAAAr1D,EAAAq1D,IAAAvY,SACA,OAAA98C,EAAA00H,mBAAAt2J,KAAAs2J,iBAAA10H,EAAA00H,iBAAA53E,SACA1+E,KAAAu0I,WAAA3yG,EAAA2yG,WACAv0I,KAAAq7E,iBAAAz5C,EAAAy5C,iBACAr7E,KAGA6yE,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GAEA,OADA,OAAA57E,KAAAi3F,MAAAj1F,EAAAiwD,OAAAglC,IAAAj3F,KAAAi3F,IAAA7D,UACApxF,GAKAm9J,GAAAp2J,UAAAyqF,SAAA,EAEA,MAAA4rE,GACAvsF,YAAA1O,EAAA0pC,GACA7tG,KAAAmkE,MAAAA,EACAnkE,KAAA6tG,OAAAA,EACA7tG,KAAA6+E,WAAAz3C,IAAA+8B,EAAAA,EAAA9jE,OAAAwtG,EAAA,EACA7tG,KAAAwnG,MAAA/0B,GACAzyE,KAAAynG,YAAA,CACAxwF,OAAA,EACA4nE,OAAA,GAEA7+E,KAAAwI,QAAA,EACAxI,KAAAk7E,KAAA9H,KAGAP,oBAEAyJ,gBAAAx8E,IACA,IAAAA,GAAAE,KAAAwI,UAGAqqE,SAAA/yE,GAEA,OADAE,KAAAwnG,MAAA1nG,EACAE,KAGA6yE,KAAAjxC,GAKA,OAJA5hC,KAAAmkE,MAAA,IAAAviC,EAAAuiC,MAAAl7D,YAAA24B,EAAAuiC,OACAnkE,KAAA6+E,MAAAj9C,EAAAi9C,MACA7+E,KAAA6tG,OAAAjsE,EAAAisE,OACA7tG,KAAAwnG,MAAA5lE,EAAA4lE,MACAxnG,KAGA6yE,OAAA60B,EAAA9wB,EAAA+wB,GACAD,GAAA1nG,KAAA6tG,OACAlG,GAAA/wB,EAAAi3B,OAEA,IAAA,IAAAltG,EAAA,EAAA4P,EAAAvQ,KAAA6tG,OAAAltG,EAAA4P,EAAA5P,IACAX,KAAAmkE,MAAAujC,EAAA/mG,GAAAi2E,EAAAzS,MAAAwjC,EAAAhnG,GAGA,OAAAX,KAGA6yE,IAAA/yE,EAAAmX,EAAA,GAEA,OADAjX,KAAAmkE,MAAAl/C,IAAAnlB,EAAAmX,GACAjX,KAGA6yE,MAAA7wE,QACAolC,IAAAplC,EAAAq9J,eACAr9J,EAAAq9J,aAAA,SAGAj4H,IAAApnC,KAAAmkE,MAAAulC,OAAA41D,QACAt/J,KAAAmkE,MAAAulC,OAAA41D,MAAAlsF,WAGAhsC,IAAAplC,EAAAq9J,aAAAr/J,KAAAmkE,MAAAulC,OAAA41D,SACAt9J,EAAAq9J,aAAAr/J,KAAAmkE,MAAAulC,OAAA41D,OAAAt/J,KAAAmkE,MAAAzzD,MAAA,GAAAg5F,QAGA,MAAAvlC,EAAA,IAAAnkE,KAAAmkE,MAAAl7D,YAAAjH,EAAAq9J,aAAAr/J,KAAAmkE,MAAAulC,OAAA41D,QACAC,EAAA,IAAAv/J,KAAAiJ,YAAAk7D,EAAAnkE,KAAA6tG,QAEA,OADA0xD,EAAAC,SAAAx/J,KAAAwnG,OACA+3D,EAGA1sF,SAAAp2D,GAEA,OADAzc,KAAAioG,iBAAAxrF,EACAzc,KAGA6yE,OAAA7wE,GAeA,YAdAolC,IAAAplC,EAAAq9J,eACAr9J,EAAAq9J,aAAA,SAIAj4H,IAAApnC,KAAAmkE,MAAAulC,OAAA41D,QACAt/J,KAAAmkE,MAAAulC,OAAA41D,MAAAlsF,WAGAhsC,IAAAplC,EAAAq9J,aAAAr/J,KAAAmkE,MAAAulC,OAAA41D,SACAt9J,EAAAq9J,aAAAr/J,KAAAmkE,MAAAulC,OAAA41D,OAAApyJ,MAAAnE,UAAA2H,MAAAwI,KAAA,IAAA8vF,YAAAhpG,KAAAmkE,MAAAulC,UAIA,CACAxuB,KAAAl7E,KAAAk7E,KACAwuB,OAAA1pG,KAAAmkE,MAAAulC,OAAA41D,MACAv/J,KAAAC,KAAAmkE,MAAAl7D,YAAA/I,KACA2tG,OAAA7tG,KAAA6tG,SAMAuxD,GAAAr2J,UAAA02J,qBAAA,EAEA,MAAAC,GAAA,IAAA98E,GAEA,MAAA+8E,GACA9sF,YAAA+sF,EAAAr4D,EAAAtwF,EAAA8vF,GAAA,GACA/mG,KAAAE,KAAA,GACAF,KAAAgC,KAAA49J,EACA5/J,KAAAunG,SAAAA,EACAvnG,KAAAiX,OAAAA,EACAjX,KAAA+mG,YAAA,IAAAA,EAGAloB,YACA,OAAA7+E,KAAAgC,KAAA68E,MAGA1a,YACA,OAAAnkE,KAAAgC,KAAAmiE,MAGAmY,gBAAAx8E,GACAE,KAAAgC,KAAAs6E,YAAAx8E,EAGA+yE,aAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAAgC,KAAA68E,MAAAl+E,EAAA4P,EAAA5P,IACA++J,GAAAl4J,EAAAxH,KAAA62E,KAAAl2E,GACA++J,GAAAp6J,EAAAtF,KAAA82E,KAAAn2E,GACA++J,GAAAzgI,EAAAj/B,KAAA89E,KAAAn9E,GAEA++J,GAAA/7E,aAAA72D,GAEA9sB,KAAA+nG,OAAApnG,EAAA++J,GAAAl4J,EAAAk4J,GAAAp6J,EAAAo6J,GAAAzgI,GAGA,OAAAj/B,KAGA6yE,kBAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACA++J,GAAAl4J,EAAAxH,KAAA62E,KAAAl2E,GACA++J,GAAAp6J,EAAAtF,KAAA82E,KAAAn2E,GACA++J,GAAAzgI,EAAAj/B,KAAA89E,KAAAn9E,GAEA++J,GAAA13D,kBAAAl7E,GAEA9sB,KAAA+nG,OAAApnG,EAAA++J,GAAAl4J,EAAAk4J,GAAAp6J,EAAAo6J,GAAAzgI,GAGA,OAAAj/B,KAGA6yE,mBAAA/lD,GACA,IAAA,IAAAnsB,EAAA,EAAA4P,EAAAvQ,KAAA6+E,MAAAl+E,EAAA4P,EAAA5P,IACA++J,GAAAl4J,EAAAxH,KAAA62E,KAAAl2E,GACA++J,GAAAp6J,EAAAtF,KAAA82E,KAAAn2E,GACA++J,GAAAzgI,EAAAj/B,KAAA89E,KAAAn9E,GAEA++J,GAAAh0E,mBAAA5+D,GAEA9sB,KAAA+nG,OAAApnG,EAAA++J,GAAAl4J,EAAAk4J,GAAAp6J,EAAAo6J,GAAAzgI,GAGA,OAAAj/B,KAGA6yE,KAAAv6D,EAAA9Q,GAEA,OADAxH,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,QAAAzP,EACAxH,KAGA6yE,KAAAv6D,EAAAhT,GAEA,OADAtF,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAAA3R,EACAtF,KAGA6yE,KAAAv6D,EAAA2mB,GAEA,OADAj/B,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAAAgoB,EACAj/B,KAGA6yE,KAAAv6D,EAAA29D,GAEA,OADAj2E,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAAAg/D,EACAj2E,KAGA6yE,KAAAv6D,GACA,OAAAtY,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,QAGA47D,KAAAv6D,GACA,OAAAtY,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAGA47D,KAAAv6D,GACA,OAAAtY,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAGA47D,KAAAv6D,GACA,OAAAtY,KAAAgC,KAAAmiE,MAAA7rD,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAAA,GAGA47D,MAAAv6D,EAAA9Q,EAAAlC,GAIA,OAHAgT,EAAAA,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OACAjX,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAGA6yE,OAAAv6D,EAAA9Q,EAAAlC,EAAA25B,GAKA,OAJA3mB,EAAAA,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OACAjX,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA2mB,EACAj/B,KAGA6yE,QAAAv6D,EAAA9Q,EAAAlC,EAAA25B,EAAAg3C,GAMA,OALA39D,EAAAA,EAAAtY,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OACAjX,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA9Q,EACAxH,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAAhT,EACAtF,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA2mB,EACAj/B,KAAAgC,KAAAmiE,MAAA7rD,EAAA,GAAA29D,EACAj2E,KAGA6yE,MAAA7wE,GACA,QAAAolC,IAAAplC,EAAA,CACAiM,QAAAtH,IAAA,mHACA,MAAAw9D,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAAA,EAAAX,KAAA6+E,MAAAl+E,IAAA,CACA,MAAA2X,EAAA3X,EAAAX,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAEA,IAAA,IAAAgD,EAAA,EAAAA,EAAAja,KAAAunG,SAAAttF,IACAkqD,EAAA3jE,KAAAR,KAAAgC,KAAAmiE,MAAA7rD,EAAA2B,IAIA,OAAA,IAAAqtF,GAAA,IAAAtnG,KAAAmkE,MAAAl7D,YAAAk7D,GAAAnkE,KAAAunG,SAAAvnG,KAAA+mG,YAUA,YARA3/D,IAAAplC,EAAA69J,qBACA79J,EAAA69J,mBAAA,SAGAz4H,IAAAplC,EAAA69J,mBAAA7/J,KAAAgC,KAAAk5E,QACAl5E,EAAA69J,mBAAA7/J,KAAAgC,KAAAk5E,MAAAl7E,KAAAgC,KAAA08E,MAAA18E,IAGA,IAAA29J,GAAA39J,EAAA69J,mBAAA7/J,KAAAgC,KAAAk5E,MAAAl7E,KAAAunG,SAAAvnG,KAAAiX,OAAAjX,KAAA+mG,YAIAl0B,OAAA7wE,GACA,QAAAolC,IAAAplC,EAAA,CACAiM,QAAAtH,IAAA,wHACA,MAAAw9D,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAAA,EAAAX,KAAA6+E,MAAAl+E,IAAA,CACA,MAAA2X,EAAA3X,EAAAX,KAAAgC,KAAA6rG,OAAA7tG,KAAAiX,OAEA,IAAA,IAAAgD,EAAA,EAAAA,EAAAja,KAAAunG,SAAAttF,IACAkqD,EAAA3jE,KAAAR,KAAAgC,KAAAmiE,MAAA7rD,EAAA2B,IAKA,MAAA,CACAstF,SAAAvnG,KAAAunG,SACAxnG,KAAAC,KAAAmkE,MAAAl7D,YAAA/I,KACAikE,MAAAA,EACA4iC,WAAA/mG,KAAA+mG,YAYA,YARA3/D,IAAAplC,EAAA69J,qBACA79J,EAAA69J,mBAAA,SAGAz4H,IAAAplC,EAAA69J,mBAAA7/J,KAAAgC,KAAAk5E,QACAl5E,EAAA69J,mBAAA7/J,KAAAgC,KAAAk5E,MAAAl7E,KAAAgC,KAAAoxF,OAAApxF,IAGA,CACA4rG,8BAAA,EACArG,SAAAvnG,KAAAunG,SACAvlG,KAAAhC,KAAAgC,KAAAk5E,KACAjkE,OAAAjX,KAAAiX,OACA8vF,WAAA/mG,KAAA+mG,aAOA44D,GAAA52J,UAAA6kG,8BAAA,EAYA,MAAA49B,WAAAx0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,iBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UACA1lG,KAAAkgB,IAAA,KACAlgB,KAAAy6F,SAAA,KACAz6F,KAAAk/B,SAAA,EACAl/B,KAAAw8F,iBAAA,EACAx8F,KAAAuf,aAAA,EACAvf,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAOA,OANAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAAk/B,SAAA0C,EAAA1C,SACAl/B,KAAAw8F,gBAAA56D,EAAA46D,gBACAx8F,MAOA,IAAA8/J,GAFAt0B,GAAAziI,UAAAwqJ,kBAAA,EAIA,MAAAwM,GAAA,IAAAn9E,GAEAo9E,GAAA,IAAAp9E,GAEAq9E,GAAA,IAAAr9E,GAEAs9E,GAAA,IAAAnqF,GAEAoqF,GAAA,IAAApqF,GAEAqqF,GAAA,IAAAz0E,GAEA00E,GAAA,IAAAz9E,GAEA09E,GAAA,IAAA19E,GAEA29E,GAAA,IAAA39E,GAEA49E,GAAA,IAAAzqF,GAEA0qF,GAAA,IAAA1qF,GAEA2qF,GAAA,IAAA3qF,GAEA,MAAA4qF,WAAA9vE,GACAhe,YAAAuhB,GAIA,GAHAnZ,QACAj7E,KAAAD,KAAA,cAEAqnC,IAAA04H,GAAA,CACAA,GAAA,IAAA71D,GACA,MAAA22D,EAAA,IAAAx3D,aAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,IACAw2D,EAAA,IAAAR,GAAAwB,EAAA,GAEAd,GAAA1xD,SAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAEA0xD,GAAAtvI,aAAA,WAAA,IAAAmvI,GAAAC,EAAA,EAAA,GAAA,IAEAE,GAAAtvI,aAAA,KAAA,IAAAmvI,GAAAC,EAAA,EAAA,GAAA,IAGA5/J,KAAAimF,SAAA65E,GACA9/J,KAAAo0F,cAAAhtD,IAAAgtD,EAAAA,EAAA,IAAAo3C,GACAxrI,KAAA6Z,OAAA,IAAAk8D,GAAA,GAAA,IAGAlD,QAAAg9B,EAAAC,GACA,OAAAD,EAAAnsB,QACAz1E,QAAApK,MAAA,yFAGAm8J,GAAAa,mBAAA7gK,KAAA+jF,aAEAq8E,GAAAvuJ,KAAAg+F,EAAAnsB,OAAAK,aAEA/jF,KAAAixF,gBAAAjZ,iBAAA63B,EAAAnsB,OAAAE,mBAAA5jF,KAAA+jF,aAEAk8E,GAAAhuE,sBAAAjyF,KAAAixF,iBAEA4e,EAAAnsB,OAAAkxB,sBAAA,IAAA50G,KAAAo0F,SAAAoI,iBACAwjE,GAAA5pF,gBAAA6pF,GAAAhhI,GAGA,MAAAC,EAAAl/B,KAAAo0F,SAAAl1D,SACA,IAAA7yB,EAAAF,EAEA,IAAA+yB,IACA/yB,EAAAjG,KAAAiG,IAAA+yB,GACA7yB,EAAAnG,KAAAmG,IAAA6yB,IAGA,MAAArlB,EAAA7Z,KAAA6Z,OACAinJ,GAAAT,GAAAp7I,KAAA,IAAA,GAAA,GAAAg7I,GAAApmJ,EAAAmmJ,GAAA3zJ,EAAAF,GACA20J,GAAAR,GAAAr7I,IAAA,IAAA,GAAA,GAAAg7I,GAAApmJ,EAAAmmJ,GAAA3zJ,EAAAF,GACA20J,GAAAP,GAAAt7I,IAAA,GAAA,GAAA,GAAAg7I,GAAApmJ,EAAAmmJ,GAAA3zJ,EAAAF,GAEAq0J,GAAAv7I,IAAA,EAAA,GAEAw7I,GAAAx7I,IAAA,EAAA,GAEAy7I,GAAAz7I,IAAA,EAAA,GAGA,IAAAyrF,EAAAb,EAAAtmB,IAAAonB,kBAAA0vD,GAAAC,GAAAC,IAAA,EAAAR,IAEA,GAAA,OAAArvD,IAEAowD,GAAAR,GAAAr7I,KAAA,GAAA,GAAA,GAAAg7I,GAAApmJ,EAAAmmJ,GAAA3zJ,EAAAF,GAEAs0J,GAAAx7I,IAAA,EAAA,GAEAyrF,EAAAb,EAAAtmB,IAAAonB,kBAAA0vD,GAAAE,GAAAD,IAAA,EAAAP,IAEA,OAAArvD,GACA,OAIA,MAAAr0F,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAAw3E,IACA1jJ,EAAAwzF,EAAA7gB,MAAA3yE,EAAAwzF,EAAA5gB,KACA6gB,EAAAtvG,KAAA,CACA6b,SAAAA,EACA+xC,MAAA2xG,GAAArhF,QACAtC,GAAA+Y,GAAAkB,MAAA0pE,GAAAM,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,IAAA3qF,IACAs6B,KAAA,KACAp+C,OAAAjyD,OAIA6yE,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,QACAwF,IAAAxF,EAAA/nB,QAAA7Z,KAAA6Z,OAAAhI,KAAA+vB,EAAA/nB,QACA7Z,KAAAo0F,SAAAxyD,EAAAwyD,SACAp0F,MAOA,SAAA8gK,GAAAC,EAAAC,EAAAnnJ,EAAAkd,EAAA1qB,EAAAF,GAEA+zJ,GAAA/pF,WAAA4qF,EAAAlnJ,GAAAksE,UAAA,IAAA+L,SAAA/6D,QAGAqQ,IAAA/6B,GACA8zJ,GAAA34J,EAAA2E,EAAA+zJ,GAAA14J,EAAA6E,EAAA6zJ,GAAA56J,EACA66J,GAAA76J,EAAA+G,EAAA6zJ,GAAA14J,EAAA2E,EAAA+zJ,GAAA56J,GAEA66J,GAAAtuJ,KAAAquJ,IAGAa,EAAAlvJ,KAAAmvJ,GACAD,EAAAv5J,GAAA24J,GAAA34J,EACAu5J,EAAAz7J,GAAA66J,GAAA76J,EAEAy7J,EAAAp9E,aAAAy8E,IAlBAO,GAAA53J,UAAAsxJ,UAAA,EAqBA,MAAA4G,GAAA,IAAAr+E,GAEAs+E,GAAA,IAAAt+E,GAEA,MAAAu+E,WAAAtwE,GACAhe,cACAoI,QACAj7E,KAAAohK,cAAA,EACAphK,KAAAD,KAAA,MACA2I,OAAAsoF,iBAAAhxF,KAAA,CACAqhK,OAAA,CACAp+H,YAAA,EACAnjC,MAAA,IAEA06J,MAAA,CACA16J,OAAA,KAGAE,KAAAu0I,YAAA,EAGA1hE,KAAAjxC,GACAq5C,MAAAppE,KAAA+vB,GAAA,GACA,MAAAy/H,EAAAz/H,EAAAy/H,OAEA,IAAA,IAAA1gK,EAAA,EAAA4P,EAAA8wJ,EAAAhhK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA48J,EAAA8D,EAAA1gK,GACAX,KAAAshK,SAAA/D,EAAAtrG,OAAAysB,QAAA6+E,EAAAlhJ,UAIA,OADArc,KAAAu0I,WAAA3yG,EAAA2yG,WACAv0I,KAGA6yE,SAAA5gB,EAAA51C,EAAA,GACAA,EAAAnW,KAAAiO,IAAAkI,GACA,MAAAglJ,EAAArhK,KAAAqhK,OACA,IAAA9wJ,EAEA,IAAAA,EAAA,EAAAA,EAAA8wJ,EAAAhhK,UACAgc,EAAAglJ,EAAA9wJ,GAAA8L,UADA9L,KAWA,OALA8wJ,EAAA7xJ,OAAAe,EAAA,EAAA,CACA8L,SAAAA,EACA41C,OAAAA,IAEAjyD,KAAAsd,IAAA20C,GACAjyD,KAGA6yE,kBACA,OAAA7yE,KAAAohK,cAGAvuF,qBAAAx2D,GACA,MAAAglJ,EAAArhK,KAAAqhK,OAEA,GAAAA,EAAAhhK,OAAA,EAAA,CACA,IAAAM,EAAA4P,EAEA,IAAA5P,EAAA,EAAA4P,EAAA8wJ,EAAAhhK,OAAAM,EAAA4P,KACA8L,EAAAglJ,EAAA1gK,GAAA0b,UADA1b,KAMA,OAAA0gK,EAAA1gK,EAAA,GAAAsxD,OAGA,OAAA,KAGA4gB,QAAAg9B,EAAAC,GAGA,GAFA9vG,KAAAqhK,OAEAhhK,OAAA,EAAA,CACA4gK,GAAAhvE,sBAAAjyF,KAAA+jF,aAEA,MAAA1nE,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAA04E,IACAjhK,KAAAuhK,qBAAAllJ,GAAAmlJ,QAAA3xD,EAAAC,IAIAj9B,OAAA6Q,GACA,MAAA29E,EAAArhK,KAAAqhK,OAEA,GAAAA,EAAAhhK,OAAA,EAAA,CACA4gK,GAAAhvE,sBAAAvO,EAAAK,aAEAm9E,GAAAjvE,sBAAAjyF,KAAA+jF,aAEA,MAAA1nE,EAAA4kJ,GAAA14E,WAAA24E,IAAAx9E,EAAA5kB,KAEA,IAAAn+D,EAAA4P,EAEA,IAHA8wJ,EAAA,GAAApvG,OAAAo/B,SAAA,EAGA1wF,EAAA,EAAA4P,EAAA8wJ,EAAAhhK,OAAAM,EAAA4P,GACA8L,GAAAglJ,EAAA1gK,GAAA0b,SADA1b,IAEA0gK,EAAA1gK,EAAA,GAAAsxD,OAAAo/B,SAAA,EACAgwE,EAAA1gK,GAAAsxD,OAAAo/B,SAAA,EAQA,IAFArxF,KAAAohK,cAAAzgK,EAAA,EAEAA,EAAA4P,EAAA5P,IACA0gK,EAAA1gK,GAAAsxD,OAAAo/B,SAAA,GAKAxe,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,IACA,IAAA57E,KAAAu0I,aAAAvyI,EAAAiwD,OAAAsiF,YAAA,GACAvyI,EAAAiwD,OAAAovG,OAAA,GACA,MAAAA,EAAArhK,KAAAqhK,OAEA,IAAA,IAAA1gK,EAAA,EAAA4P,EAAA8wJ,EAAAhhK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA48J,EAAA8D,EAAA1gK,GACAqB,EAAAiwD,OAAAovG,OAAA7gK,KAAA,CACAyxD,OAAAsrG,EAAAtrG,OAAAipB,KACA7+D,SAAAkhJ,EAAAlhJ,WAIA,OAAAra,GAKA,MAAAy/J,GAAA,IAAA7+E,GAEA8+E,GAAA,IAAA/kF,GAEAglF,GAAA,IAAAhlF,GAEAilF,GAAA,IAAAh/E,GAEAi/E,GAAA,IAAAl2E,GAEA,MAAAm2E,WAAAxyD,GACAz8B,YAAAoT,EAAAmO,GACAnZ,MAAAgL,EAAAmO,GACAp0F,KAAAD,KAAA,cACAC,KAAAi0F,SAAA,WACAj0F,KAAAk0F,WAAA,IAAAvI,GACA3rF,KAAA+hK,kBAAA,IAAAp2E,GAGA9Y,KAAAjxC,GAMA,OALAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAi0F,SAAAryD,EAAAqyD,SACAj0F,KAAAk0F,WAAAriF,KAAA+vB,EAAAsyD,YACAl0F,KAAA+hK,kBAAAlwJ,KAAA+vB,EAAAmgI,mBACA/hK,KAAAm0F,SAAAvyD,EAAAuyD,SACAn0F,KAGA6yE,KAAAshB,EAAAD,GACAl0F,KAAAm0F,SAAAA,OAEA/sD,IAAA8sD,IACAl0F,KAAA2yF,mBAAA,GACA3yF,KAAAm0F,SAAA6tE,oBACA9tE,EAAAl0F,KAAA+jF,aAGA/jF,KAAAk0F,WAAAriF,KAAAqiF,GACAl0F,KAAA+hK,kBAAAlwJ,KAAAqiF,GAAAj8B,SAGA4a,OACA7yE,KAAAm0F,SAAA03D,OAGAh5E,uBACA,MAAAiT,EAAA,IAAAnJ,GACAslF,EAAAjiK,KAAAimF,SAAAvxC,WAAAutH,WAEA,IAAA,IAAAthK,EAAA,EAAA4P,EAAA0xJ,EAAApjF,MAAAl+E,EAAA4P,EAAA5P,IAAA,CACAmlF,EAAAt+E,EAAAy6J,EAAAprF,KAAAl2E,GACAmlF,EAAAxgF,EAAA28J,EAAAnrF,KAAAn2E,GACAmlF,EAAA7mD,EAAAgjI,EAAAnkF,KAAAn9E,GACAmlF,EAAA7P,EAAAgsF,EAAAlkF,KAAAp9E,GACA,MAAAo2B,EAAA,EAAA+uD,EAAAo8E,kBAEAnrI,IAAA5R,EAAAA,EACA2gE,EAAA1P,eAAAr/C,GAEA+uD,EAAA7gE,IAAA,EAAA,EAAA,EAAA,GAGAg9I,EAAAE,QAAAxhK,EAAAmlF,EAAAt+E,EAAAs+E,EAAAxgF,EAAAwgF,EAAA7mD,EAAA6mD,EAAA7P,IAIApD,kBAAA7hE,GACAiqE,MAAA0X,kBAAA3hF,GAEA,aAAAhR,KAAAi0F,SACAj0F,KAAA+hK,kBAAAlwJ,KAAA7R,KAAA+jF,aAAA9rB,SACA,aAAAj4D,KAAAi0F,SACAj0F,KAAA+hK,kBAAAlwJ,KAAA7R,KAAAk0F,YAAAj8B,SAEAhqD,QAAAC,KAAA,6CAAAlO,KAAAi0F,UAIAphB,cAAAv6D,EAAAnJ,GACA,MAAAglF,EAAAn0F,KAAAm0F,SACAlO,EAAAjmF,KAAAimF,SAEAy7E,GAAA75D,oBAAA5hB,EAAAvxC,WAAA0tH,UAAA9pJ,GAEAqpJ,GAAA95D,oBAAA5hB,EAAAvxC,WAAAutH,WAAA3pJ,GAEAmpJ,GAAA55D,oBAAA5hB,EAAAvxC,WAAA1/B,SAAAsD,GAAAqrE,aAAA3jF,KAAAk0F,YAEA/kF,EAAA8V,IAAA,EAAA,EAAA,GAEA,IAAA,IAAAtkB,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,MAAA22H,EAAAqqC,GAAAU,aAAA1hK,GAEA,GAAA,IAAA22H,EAAA,CACA,MAAAgrC,EAAAZ,GAAAW,aAAA1hK,GAEAkhK,GAAA7pF,iBAAAmc,EAAA23C,MAAAw2B,GAAAv+E,YAAAoQ,EAAAouE,aAAAD,IAEAnzJ,EAAA6mF,gBAAA4rE,GAAA/vJ,KAAA4vJ,IAAA99E,aAAAk+E,IAAAvqC,IAIA,OAAAnoH,EAAAw0E,aAAA3jF,KAAA+hK,oBAKAD,GAAA/4J,UAAAirF,eAAA,EAEA,MAAAwuE,WAAA3xE,GACAhe,cACAoI,QACAj7E,KAAAD,KAAA,QAKAyiK,GAAAz5J,UAAA05J,QAAA,EAEA,MAAAC,WAAAnoF,GACA1H,YAAA7wE,EAAA,KAAAe,EAAA,EAAAu3B,EAAA,EAAAtI,EAAAjyB,EAAA06E,EAAAE,EAAAC,EAAAC,EAAA9K,KAAA+K,EAAA/K,KAAAgL,EAAAC,GACAC,MAAA,KAAAR,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,EAAAC,GACAh7E,KAAA2vD,MAAA,CACA3tD,KAAAA,EACAe,MAAAA,EACAu3B,OAAAA,GAEAt6B,KAAA66E,UAAAA,EACA76E,KAAA86E,UAAAA,EACA96E,KAAAs7E,iBAAA,EACAt7E,KAAAw7E,OAAA,EACAx7E,KAAAy7E,gBAAA,EACAz7E,KAAAs8E,aAAA,GAKAomF,GAAA35J,UAAAmzE,eAAA,EAEA,MAAAymF,GAAA,IAAAh3E,GAEAi3E,GAAA,IAAAj3E,GAEA,MAAAk3E,GACAhwF,YAAAi5D,EAAA,GAAAy2B,EAAA,IACAviK,KAAAk7E,KAAA9H,KACApzE,KAAA8rI,MAAAA,EAAAp7H,MAAA,GACA1Q,KAAAuiK,aAAAA,EACAviK,KAAA8iK,aAAA,KACA9iK,KAAAq8J,YAAA,KACAr8J,KAAAu8J,gBAAA,EACAv8J,KAAAiW,OAAA,EACAjW,KAAAkd,OAGA21D,OACA,MAAAi5D,EAAA9rI,KAAA8rI,MACAy2B,EAAAviK,KAAAuiK,aAGA,GAFAviK,KAAA8iK,aAAA,IAAA15D,aAAA,GAAA0iC,EAAAzrI,QAEA,IAAAkiK,EAAAliK,OACAL,KAAAgiK,yBAGA,GAAAl2B,EAAAzrI,SAAAkiK,EAAAliK,OAAA,CACA4N,QAAAC,KAAA,mFACAlO,KAAAuiK,aAAA,GAEA,IAAA,IAAA5hK,EAAA,EAAAqzB,EAAAh0B,KAAA8rI,MAAAzrI,OAAAM,EAAAqzB,EAAArzB,IACAX,KAAAuiK,aAAA/hK,KAAA,IAAAmrF,KAMA9Y,oBACA7yE,KAAAuiK,aAAAliK,OAAA,EAEA,IAAA,IAAAM,EAAA,EAAAqzB,EAAAh0B,KAAA8rI,MAAAzrI,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAikE,EAAA,IAAA+mB,GAEA3rF,KAAA8rI,MAAAnrI,IACAikE,EAAA/yD,KAAA7R,KAAA8rI,MAAAnrI,GAAAojF,aAAA9rB,SAGAj4D,KAAAuiK,aAAA/hK,KAAAokE,IAIAiO,OAEA,IAAA,IAAAlyE,EAAA,EAAAqzB,EAAAh0B,KAAA8rI,MAAAzrI,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAoiK,EAAA/iK,KAAA8rI,MAAAnrI,GAEAoiK,GACAA,EAAAh/E,YAAAlyE,KAAA7R,KAAAuiK,aAAA5hK,IAAAs3D,SAKA,IAAA,IAAAt3D,EAAA,EAAAqzB,EAAAh0B,KAAA8rI,MAAAzrI,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAoiK,EAAA/iK,KAAA8rI,MAAAnrI,GAEAoiK,IACAA,EAAAhxJ,QAAAgxJ,EAAAhxJ,OAAA0wJ,QACAM,EAAAplI,OAAA9rB,KAAAkxJ,EAAAhxJ,OAAAgyE,aAAA9rB,SACA8qG,EAAAplI,OAAAm0D,SAAAixE,EAAAh/E,cAEAg/E,EAAAplI,OAAA9rB,KAAAkxJ,EAAAh/E,aAGAg/E,EAAAplI,OAAAk0D,UAAAkxE,EAAA/tJ,SAAA+tJ,EAAApiF,WAAAoiF,EAAAhsI,SAKA87C,SACA,MAAAi5D,EAAA9rI,KAAA8rI,MACAy2B,EAAAviK,KAAAuiK,aACAO,EAAA9iK,KAAA8iK,aACAzG,EAAAr8J,KAAAq8J,YAEA,IAAA,IAAA17J,EAAA,EAAAqzB,EAAA83G,EAAAzrI,OAAAM,EAAAqzB,EAAArzB,IAAA,CAEA,MAAAg9B,EAAAmuG,EAAAnrI,GAAAmrI,EAAAnrI,GAAAojF,YAAA6+E,GAEAD,GAAA3qF,iBAAAr6C,EAAA4kI,EAAA5hK,IAEAgiK,GAAAjzJ,QAAAozJ,EAAA,GAAAniK,GAGA,OAAA07J,IACAA,EAAA//E,aAAA,GAIAzJ,QACA,OAAA,IAAAgwF,GAAA7iK,KAAA8rI,MAAA9rI,KAAAuiK,cAGA1vF,qBAOA,IAAAzvB,EAAAl9C,KAAA+F,KAAA,EAAAjM,KAAA8rI,MAAAzrI,QAEA+iD,EAAAwwB,GAAAxwB,GACAA,EAAAl9C,KAAAiS,IAAAirC,EAAA,GACA,MAAA0/G,EAAA,IAAA15D,aAAAhmD,EAAAA,EAAA,GAEA0/G,EAAA79I,IAAAjlB,KAAA8iK,cAEA,MAAAzG,EAAA,IAAAqG,GAAAI,EAAA1/G,EAAAA,EAAAwtB,EAAAJ,GAIA,OAHAxwE,KAAA8iK,aAAAA,EACA9iK,KAAAq8J,YAAAA,EACAr8J,KAAAu8J,gBAAAn5G,EACApjD,KAGA6yE,cAAA3yE,GACA,IAAA,IAAAS,EAAA,EAAAqzB,EAAAh0B,KAAA8rI,MAAAzrI,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAoiK,EAAA/iK,KAAA8rI,MAAAnrI,GAEA,GAAAoiK,EAAA7iK,OAAAA,EACA,OAAA6iK,GAOAlwF,UACA,OAAA7yE,KAAAq8J,cACAr8J,KAAAq8J,YAAA59E,UACAz+E,KAAAq8J,YAAA,MAIAxpF,SAAAmwF,EAAAl3B,GACA9rI,KAAAk7E,KAAA8nF,EAAA9nF,KAEA,IAAA,IAAAv6E,EAAA,EAAA4P,EAAAyyJ,EAAAl3B,MAAAzrI,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAu6E,EAAA8nF,EAAAl3B,MAAAnrI,GACA,IAAAoiK,EAAAj3B,EAAA5wD,QAEA9zC,IAAA27H,IACA90J,QAAAC,KAAA,2CAAAgtE,GACA6nF,EAAA,IAAAP,IAGAxiK,KAAA8rI,MAAAtrI,KAAAuiK,GACA/iK,KAAAuiK,aAAA/hK,MAAA,IAAAmrF,IAAAhS,UAAAqpF,EAAAT,aAAA5hK,KAIA,OADAX,KAAAkd,OACAld,KAGA6yE,SACA,MAAA7wE,EAAA,CACAg6E,SAAA,CACAxzE,QAAA,IACAzI,KAAA,WACAk8E,UAAA,mBAEA6vD,MAAA,GACAy2B,aAAA,IAEAvgK,EAAAk5E,KAAAl7E,KAAAk7E,KACA,MAAA4wD,EAAA9rI,KAAA8rI,MACAy2B,EAAAviK,KAAAuiK,aAEA,IAAA,IAAA5hK,EAAA,EAAA4P,EAAAu7H,EAAAzrI,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAoiK,EAAAj3B,EAAAnrI,GACAqB,EAAA8pI,MAAAtrI,KAAAuiK,EAAA7nF,MACA,MAAA+nF,EAAAV,EAAA5hK,GACAqB,EAAAugK,aAAA/hK,KAAAyiK,EAAAvzJ,WAGA,OAAA1N,GAKA,MAAAkhK,WAAA57D,GACAz0B,YAAA1O,EAAAojC,EAAAR,EAAAokB,EAAA,GACA,iBAAApkB,IACAokB,EAAApkB,EACAA,GAAA,EACA94F,QAAApK,MAAA,kGAGAo3E,MAAA9W,EAAAojC,EAAAR,GACA/mG,KAAAmrH,iBAAAA,EAGAt4C,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAmrH,iBAAAvpF,EAAAupF,iBACAnrH,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAGA,OAFApxF,EAAAmpH,iBAAAnrH,KAAAmrH,iBACAnpH,EAAAkrH,4BAAA,EACAlrH,GAKAkhK,GAAAn6J,UAAAmkH,4BAAA,EAEA,MAAAi2C,GAAA,IAAAx3E,GAEAy3E,GAAA,IAAAz3E,GAEA03E,GAAA,GAEAC,GAAA,IAAAh0D,GAEA,MAAAi0D,WAAAj0D,GACAz8B,YAAAoT,EAAAmO,EAAAvV,GACA5D,MAAAgL,EAAAmO,GACAp0F,KAAAszF,eAAA,IAAA4vE,GAAA,IAAA95D,aAAA,GAAAvqB,GAAA,IACA7+E,KAAAuzF,cAAA,KACAvzF,KAAA6+E,MAAAA,EACA7+E,KAAAwxF,eAAA,EAGA3e,KAAAjxC,GAKA,OAJAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAszF,eAAAzhF,KAAA+vB,EAAA0xD,gBACA,OAAA1xD,EAAA2xD,gBAAAvzF,KAAAuzF,cAAA3xD,EAAA2xD,cAAA7U,SACA1+E,KAAA6+E,MAAAj9C,EAAAi9C,MACA7+E,KAGA6yE,WAAAv6D,EAAAqI,GACAA,EAAAg5D,UAAA35E,KAAAuzF,cAAApvB,MAAA,EAAA7rD,GAGAu6D,YAAAv6D,EAAAqlB,GACAA,EAAAg8C,UAAA35E,KAAAszF,eAAAnvB,MAAA,GAAA7rD,GAGAu6D,QAAAg9B,EAAAC,GACA,MAAA/rB,EAAA/jF,KAAA+jF,YACAy/E,EAAAxjK,KAAA6+E,MAGA,GAFAykF,GAAAr9E,SAAAjmF,KAAAimF,SACAq9E,GAAAlvE,SAAAp0F,KAAAo0F,cACAhtD,IAAAk8H,GAAAlvE,SAEA,IAAA,IAAAqvE,EAAA,EAAAA,EAAAD,EAAAC,IAAA,CAEAzjK,KAAA0jK,YAAAD,EAAAN,IAEAC,GAAAprF,iBAAA+L,EAAAo/E,IAGAG,GAAAv/E,YAAAq/E,GAEAE,GAAA9B,QAAA3xD,EAAAwzD,IAGA,IAAA,IAAA1iK,EAAA,EAAA4P,EAAA8yJ,GAAAhjK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA+vG,EAAA2yD,GAAA1iK,GACA+vG,EAAA+yD,WAAAA,EACA/yD,EAAAz+C,OAAAjyD,KACA8vG,EAAAtvG,KAAAkwG,GAGA2yD,GAAAhjK,OAAA,GAIAwyE,WAAAv6D,EAAAqI,GACA,OAAA3gB,KAAAuzF,gBACAvzF,KAAAuzF,cAAA,IAAA2vE,GAAA,IAAA95D,aAAA,EAAAppG,KAAAszF,eAAAzU,OAAA,IAGAl+D,EAAAjR,QAAA1P,KAAAuzF,cAAApvB,MAAA,EAAA7rD,GAGAu6D,YAAAv6D,EAAAqlB,GACAA,EAAAjuB,QAAA1P,KAAAszF,eAAAnvB,MAAA,GAAA7rD,GAGAu6D,sBAEAA,UACA7yE,KAAAksC,cAAA,CACAnsC,KAAA,aAMAwjK,GAAAx6J,UAAAsqF,iBAAA,EAaA,MAAA+3C,WAAAp0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,oBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UACA1lG,KAAAy8F,UAAA,EACAz8F,KAAA2jK,QAAA,QACA3jK,KAAA4jK,SAAA,QACA5jK,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAMA,OALAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAy8F,UAAA76D,EAAA66D,UACAz8F,KAAA2jK,QAAA/hI,EAAA+hI,QACA3jK,KAAA4jK,SAAAhiI,EAAAgiI,SACA5jK,MAKAorI,GAAAriI,UAAAkqJ,qBAAA,EAEA,MAAA4Q,GAAA,IAAAjhF,GAEAkhF,GAAA,IAAAlhF,GAEAmhF,GAAA,IAAAp4E,GAEAq4E,GAAA,IAAA16E,GAEA26E,GAAA,IAAA77E,GAEA,MAAA87E,WAAArzE,GACAhe,YAAAoT,EAAA,IAAAgkB,GAAA7V,EAAA,IAAAg3C,IACAnwD,QACAj7E,KAAAD,KAAA,OACAC,KAAAimF,SAAAA,EACAjmF,KAAAo0F,SAAAA,EACAp0F,KAAAuvG,qBAGA18B,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAo0F,SAAAxyD,EAAAwyD,SACAp0F,KAAAimF,SAAArkD,EAAAqkD,SACAjmF,KAGA6yE,uBACA,MAAAoT,EAAAjmF,KAAAimF,SAEA,GAAAA,EAAAonB,iBAEA,GAAA,OAAApnB,EAAA3tE,MAAA,CACA,MAAAo0F,EAAAzmB,EAAAvxC,WAAA1/B,SACAmvJ,EAAA,CAAA,GAEA,IAAA,IAAAxjK,EAAA,EAAA4P,EAAAm8F,EAAA7tB,MAAAl+E,EAAA4P,EAAA5P,IACAkjK,GAAAh8D,oBAAA6E,EAAA/rG,EAAA,GAEAmjK,GAAAj8D,oBAAA6E,EAAA/rG,GAEAwjK,EAAAxjK,GAAAwjK,EAAAxjK,EAAA,GACAwjK,EAAAxjK,IAAAkjK,GAAAt7E,WAAAu7E,IAGA79E,EAAAz1D,aAAA,eAAA,IAAA24E,GAAAg7D,EAAA,SAEAl2J,QAAAC,KAAA,sGAEA+3E,EAAAqqB,YACAriG,QAAApK,MAAA,0GAGA,OAAA7D,KAGA6yE,QAAAg9B,EAAAC,GACA,MAAA7pB,EAAAjmF,KAAAimF,SACAlC,EAAA/jF,KAAA+jF,YACAxhE,EAAAstF,EAAAn4F,OAAAwsJ,KAAA3hJ,UACA+nF,EAAArkB,EAAAqkB,UASA,GAPA,OAAArkB,EAAAokB,gBAAApkB,EAAAykB,wBAEAu5D,GAAApyJ,KAAAo0E,EAAAokB,gBAEA45D,GAAAtgF,aAAAI,GAEAkgF,GAAAnpJ,QAAAyH,GACA,IAAAstF,EAAAtmB,IAAAd,iBAAAw7E,IAAA,OAEAF,GAAAlyJ,KAAAkyE,GAAA9rB,SAEA+rG,GAAAnyJ,KAAAg+F,EAAAtmB,KAAA5F,aAAAogF,IAEA,MAAAK,EAAA7hJ,IAAAviB,KAAA+2B,MAAAvvB,EAAAxH,KAAA+2B,MAAAzxB,EAAAtF,KAAA+2B,MAAAkI,GAAA,GACAolI,EAAAD,EAAAA,EACAE,EAAA,IAAA1hF,GACA2hF,EAAA,IAAA3hF,GACA4hF,EAAA,IAAA5hF,GACA6hF,EAAA,IAAA7hF,GACApB,EAAAxhF,KAAAm6J,eAAA,EAAA,EAEA,GAAAl0E,EAAAonB,iBAAA,CACA,MAAA/0F,EAAA2tE,EAAA3tE,MAEAo0F,EADAzmB,EAAAvxC,WACA1/B,SAEA,GAAA,OAAAsD,EAAA,CAIA,IAAA,IAAA3X,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGA8J,EAFArK,KAAAC,IAAAmS,EAAAumE,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEA,EAAAl+E,EAAA4P,EAAA5P,GAAA6gF,EAAA,CACA,MAAA15E,EAAAwQ,EAAAu+D,KAAAl2E,GACA2H,EAAAgQ,EAAAu+D,KAAAl2E,EAAA,GACA2jK,EAAAz8D,oBAAA6E,EAAA5kG,GACAy8J,EAAA18D,oBAAA6E,EAAApkG,GAIA,GAFA07J,GAAAU,oBAAAJ,EAAAC,EAAAE,EAAAD,GAEAH,EAAA,SACAI,EAAA9gF,aAAA3jF,KAAA+jF,aAEA,MAAA1nE,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAAk8E,GACApoJ,EAAAwzF,EAAA7gB,MAAA3yE,EAAAwzF,EAAA5gB,KACA6gB,EAAAtvG,KAAA,CACA6b,SAAAA,EAGA+xC,MAAAo2G,EAAA9lF,QAAAiF,aAAA3jF,KAAA+jF,aACAzrE,MAAA3X,EACA0vG,KAAA,KACAD,UAAA,KACAn+C,OAAAjyD,YAGA,CAIA,IAAA,IAAAW,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGA8J,EAFArK,KAAAC,IAAAumG,EAAA7tB,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEA,EAAAl+E,EAAA4P,EAAA5P,GAAA6gF,EAAA,CACA8iF,EAAAz8D,oBAAA6E,EAAA/rG,GACA4jK,EAAA18D,oBAAA6E,EAAA/rG,EAAA,GAIA,GAFAqjK,GAAAU,oBAAAJ,EAAAC,EAAAE,EAAAD,GAEAH,EAAA,SACAI,EAAA9gF,aAAA3jF,KAAA+jF,aAEA,MAAA1nE,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAAk8E,GACApoJ,EAAAwzF,EAAA7gB,MAAA3yE,EAAAwzF,EAAA5gB,KACA6gB,EAAAtvG,KAAA,CACA6b,SAAAA,EAGA+xC,MAAAo2G,EAAA9lF,QAAAiF,aAAA3jF,KAAA+jF,aACAzrE,MAAA3X,EACA0vG,KAAA,KACAD,UAAA,KACAn+C,OAAAjyD,cAIAimF,EAAAqqB,YACAriG,QAAApK,MAAA,6FAIAgvE,qBACA,MAAAoT,EAAAjmF,KAAAimF,SAEA,GAAAA,EAAAonB,iBAAA,CACA,MAAAnD,EAAAjkB,EAAAikB,gBACAxmE,EAAAh7B,OAAAg7B,KAAAwmE,GAEA,GAAAxmE,EAAArjC,OAAA,EAAA,CACA,MAAA+qG,EAAAlB,EAAAxmE,EAAA,IAEA,QAAA0D,IAAAgkE,EAAA,CACAprG,KAAAwvG,sBAAA,GACAxvG,KAAAyvG,sBAAA,GAEA,IAAA,IAAA3iF,EAAA,EAAA4iF,EAAAtE,EAAA/qG,OAAAysB,EAAA4iF,EAAA5iF,IAAA,CACA,MAAA5sB,EAAAkrG,EAAAt+E,GAAA5sB,MAAAyvG,OAAA7iF,GACA9sB,KAAAwvG,sBAAAhvG,KAAA,GACAR,KAAAyvG,sBAAAvvG,GAAA4sB,SAIA,CACA,MAAA8iF,EAAA3pB,EAAA2pB,kBAEAxoE,IAAAwoE,GAAAA,EAAAvvG,OAAA,GACA4N,QAAApK,MAAA,wGAOAqgK,GAAAn7J,UAAA6qF,QAAA,EAEA,MAAA5gF,GAAA,IAAA4vE,GAEA9vE,GAAA,IAAA8vE,GAEA,MAAA+hF,WAAAT,GACArxF,YAAAoT,EAAAmO,GACAnZ,MAAAgL,EAAAmO,GACAp0F,KAAAD,KAAA,eAGA8yE,uBACA,MAAAoT,EAAAjmF,KAAAimF,SAEA,GAAAA,EAAAonB,iBAEA,GAAA,OAAApnB,EAAA3tE,MAAA,CACA,MAAAo0F,EAAAzmB,EAAAvxC,WAAA1/B,SACAmvJ,EAAA,GAEA,IAAA,IAAAxjK,EAAA,EAAA4P,EAAAm8F,EAAA7tB,MAAAl+E,EAAA4P,EAAA5P,GAAA,EACAqS,GAAA60F,oBAAA6E,EAAA/rG,GAEAmS,GAAA+0F,oBAAA6E,EAAA/rG,EAAA,GAEAwjK,EAAAxjK,GAAA,IAAAA,EAAA,EAAAwjK,EAAAxjK,EAAA,GACAwjK,EAAAxjK,EAAA,GAAAwjK,EAAAxjK,GAAAqS,GAAAu1E,WAAAz1E,IAGAmzE,EAAAz1D,aAAA,eAAA,IAAA24E,GAAAg7D,EAAA,SAEAl2J,QAAAC,KAAA,8GAEA+3E,EAAAqqB,YACAriG,QAAApK,MAAA,kHAGA,OAAA7D,MAKA2kK,GAAA57J,UAAAoxJ,gBAAA,EAEA,MAAAyK,WAAAV,GACArxF,YAAAoT,EAAAmO,GACAnZ,MAAAgL,EAAAmO,GACAp0F,KAAAD,KAAA,YAKA6kK,GAAA77J,UAAAqxJ,YAAA,EAeA,MAAA9uB,WAAAt0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,iBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UACA1lG,KAAAkgB,IAAA,KACAlgB,KAAAy6F,SAAA,KACAz6F,KAAAojD,KAAA,EACApjD,KAAAw8F,iBAAA,EACAx8F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAOA,OANAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAAojD,KAAAxhB,EAAAwhB,KACApjD,KAAAw8F,gBAAA56D,EAAA46D,gBACAx8F,MAKAsrI,GAAAviI,UAAAsqJ,kBAAA,EAEA,MAAAwR,GAAA,IAAAl5E,GAEAm5E,GAAA,IAAAx7E,GAEAy7E,GAAA,IAAA38E,GAEA48E,GAAA,IAAApiF,GAEA,MAAAqiF,WAAAp0E,GACAhe,YAAAoT,EAAA,IAAAgkB,GAAA7V,EAAA,IAAAk3C,IACArwD,QACAj7E,KAAAD,KAAA,SACAC,KAAAimF,SAAAA,EACAjmF,KAAAo0F,SAAAA,EACAp0F,KAAAuvG,qBAGA18B,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAo0F,SAAAxyD,EAAAwyD,SACAp0F,KAAAimF,SAAArkD,EAAAqkD,SACAjmF,KAGA6yE,QAAAg9B,EAAAC,GACA,MAAA7pB,EAAAjmF,KAAAimF,SACAlC,EAAA/jF,KAAA+jF,YACAxhE,EAAAstF,EAAAn4F,OAAAutJ,OAAA1iJ,UACA+nF,EAAArkB,EAAAqkB,UASA,GAPA,OAAArkB,EAAAokB,gBAAApkB,EAAAykB,wBAEAq6D,GAAAlzJ,KAAAo0E,EAAAokB,gBAEA06D,GAAAphF,aAAAI,GAEAghF,GAAAjqJ,QAAAyH,GACA,IAAAstF,EAAAtmB,IAAAd,iBAAAs8E,IAAA,OAEAF,GAAAhzJ,KAAAkyE,GAAA9rB,SAEA6sG,GAAAjzJ,KAAAg+F,EAAAtmB,KAAA5F,aAAAkhF,IAEA,MAAAT,EAAA7hJ,IAAAviB,KAAA+2B,MAAAvvB,EAAAxH,KAAA+2B,MAAAzxB,EAAAtF,KAAA+2B,MAAAkI,GAAA,GACAolI,EAAAD,EAAAA,EAEA,GAAAn+E,EAAAonB,iBAAA,CACA,MAAA/0F,EAAA2tE,EAAA3tE,MAEAo0F,EADAzmB,EAAAvxC,WACA1/B,SAEA,GAAA,OAAAsD,EAAA,CAIA,IAAA,IAAA3X,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGAutB,EAFA9tB,KAAAC,IAAAmS,EAAAumE,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEAl+E,EAAAqzB,EAAArzB,IAAA,CACA,MAAAmH,EAAAwQ,EAAAu+D,KAAAl2E,GAEAqkK,GAAAn9D,oBAAA6E,EAAA5kG,GAEAo9J,GAAAF,GAAAl9J,EAAAu8J,EAAAtgF,EAAA8rB,EAAAC,EAAA9vG,WAEA,CAIA,IAAA,IAAAW,EAHAuF,KAAAiS,IAAA,EAAAmyF,EAAA7jG,OAGA8J,EAFArK,KAAAC,IAAAumG,EAAA7tB,MAAAyrB,EAAA7jG,MAAA6jG,EAAAzrB,OAEAl+E,EAAA4P,EAAA5P,IACAqkK,GAAAn9D,oBAAA6E,EAAA/rG,GAEAukK,GAAAF,GAAArkK,EAAA0jK,EAAAtgF,EAAA8rB,EAAAC,EAAA9vG,YAIAiO,QAAApK,MAAA,+FAIAgvE,qBACA,MAAAoT,EAAAjmF,KAAAimF,SAEA,GAAAA,EAAAonB,iBAAA,CACA,MAAAnD,EAAAjkB,EAAAikB,gBACAxmE,EAAAh7B,OAAAg7B,KAAAwmE,GAEA,GAAAxmE,EAAArjC,OAAA,EAAA,CACA,MAAA+qG,EAAAlB,EAAAxmE,EAAA,IAEA,QAAA0D,IAAAgkE,EAAA,CACAprG,KAAAwvG,sBAAA,GACAxvG,KAAAyvG,sBAAA,GAEA,IAAA,IAAA3iF,EAAA,EAAA4iF,EAAAtE,EAAA/qG,OAAAysB,EAAA4iF,EAAA5iF,IAAA,CACA,MAAA5sB,EAAAkrG,EAAAt+E,GAAA5sB,MAAAyvG,OAAA7iF,GACA9sB,KAAAwvG,sBAAAhvG,KAAA,GACAR,KAAAyvG,sBAAAvvG,GAAA4sB,SAIA,CACA,MAAA8iF,EAAA3pB,EAAA2pB,kBAEAxoE,IAAAwoE,GAAAA,EAAAvvG,OAAA,GACA4N,QAAApK,MAAA,0GASA,SAAAqhK,GAAA92G,EAAA91C,EAAA+rJ,EAAAtgF,EAAA8rB,EAAAC,EAAA79C,GACA,MAAAkzG,EAAAL,GAAAp7E,kBAAAt7B,GAEA,GAAA+2G,EAAAd,EAAA,CACA,MAAAe,EAAA,IAAAxiF,GAEAkiF,GAAAO,oBAAAj3G,EAAAg3G,GAEAA,EAAAzhF,aAAAI,GACA,MAAA1nE,EAAAwzF,EAAAtmB,IAAAttD,OAAAssD,WAAA68E,GACA,GAAA/oJ,EAAAwzF,EAAA7gB,MAAA3yE,EAAAwzF,EAAA5gB,IAAA,OACA6gB,EAAAtvG,KAAA,CACA6b,SAAAA,EACAipJ,cAAAp/J,KAAA+F,KAAAk5J,GACA/2G,MAAAg3G,EACA9sJ,MAAAA,EACA+3F,KAAA,KACAp+C,OAAAA,KAnBAgzG,GAAAl8J,UAAA8qF,UAAA,EAwBA,MAAA0xE,WAAAhrF,GACA1H,YAAA2yF,EAAA/qF,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,GACAE,MAAAuqF,EAAA/qF,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,GACA/6E,KAAAgyB,YAAAoV,IAAApV,EAAAA,EAAA2+C,EACA3wE,KAAA86E,eAAA1zC,IAAA0zC,EAAAA,EAAA5K,EACAlwE,KAAA66E,eAAAzzC,IAAAyzC,EAAAA,EAAA3K,EACAlwE,KAAAs7E,iBAAA,EACA,MAAAztE,EAAA7N,KAOA,8BAAAwlK,GACAA,EAAAC,2BANA,SAAAC,IACA73J,EAAAyuE,aAAA,EACAkpF,EAAAC,0BAAAC,MAQA7yF,QACA,OAAA,IAAA7yE,KAAAiJ,YAAAjJ,KAAA2vD,OAAA99C,KAAA7R,MAGA6yE,SACA,MAAA2yF,EAAAxlK,KAAA2vD,OAGA,IAFA,8BAAA61G,GAEAA,EAAAG,YAAAH,EAAAI,oBACA5lK,KAAAs8E,aAAA,IAMAipF,GAAAx8J,UAAA04I,gBAAA,EAEA,MAAAokB,WAAAtrF,GACA1H,YAAAsI,EAAAp4E,EAAAu3B,EAAAtI,EAAAjyB,EAAA06E,EAAAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACAC,MAAA,KAAAR,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,EAAAC,GACAh7E,KAAA2vD,MAAA,CACA5sD,MAAAA,EACAu3B,OAAAA,GAEAt6B,KAAAm7E,QAAAA,EAGAn7E,KAAAw7E,OAAA,EAGAx7E,KAAAs7E,iBAAA,GAKAuqF,GAAA98J,UAAAq6I,qBAAA,EAEA,MAAA0iB,WAAAvrF,GACA1H,YAAAmH,EAAAS,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,GACAE,MAAAjB,EAAAS,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,GACA/6E,KAAAs8E,aAAA,GAKAwpF,GAAA/8J,UAAAg9J,iBAAA,EAEA,MAAAC,WAAAzrF,GACA1H,YAAA9vE,EAAAu3B,EAAAv6B,EAAA06E,EAAAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAA/oD,GAGA,IAFAA,OAAAoV,IAAApV,EAAAA,EAAA6+C,KAEAA,GAAA7+C,IAAA8+C,EACA,MAAA,IAAAhnB,MAAA,yFAGA1iB,IAAArnC,GAAAiyB,IAAA6+C,IAAA9wE,EAAAuwE,QACAlpC,IAAArnC,GAAAiyB,IAAA8+C,IAAA/wE,EAAA2wE,GACAuK,MAAA,KAAAR,EAAAE,EAAAC,EAAAC,EAAAC,EAAA9oD,EAAAjyB,EAAAg7E,GACA/6E,KAAA2vD,MAAA,CACA5sD,MAAAA,EACAu3B,OAAAA,GAEAt6B,KAAA66E,eAAAzzC,IAAAyzC,EAAAA,EAAA9K,EACA/vE,KAAA86E,eAAA1zC,IAAA0zC,EAAAA,EAAA/K,EACA/vE,KAAAw7E,OAAA,EACAx7E,KAAAs7E,iBAAA,GAKA0qF,GAAAj9J,UAAAg8I,gBAAA,EAEA,MAAAkhB,WAAAh8D,GACAp3B,YAAA/3D,EAAA,EAAAorJ,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAlgK,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,iBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAorJ,SAAAA,EACAC,WAAAA,EACAC,YAAAA,GAEAF,EAAAhgK,KAAAiS,IAAA,EAAA+tJ,GAEA,MAAA56D,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA66D,EAAA,IAAAzjF,GACAxG,EAAA,IAAArG,GAEAk7B,EAAAzwG,KAAA,EAAA,EAAA,GACA+qG,EAAA/qG,KAAA,EAAA,EAAA,GACAgrG,EAAAhrG,KAAA,GAAA,IAEA,IAAA,IAAAkb,EAAA,EAAA/a,EAAA,EAAA+a,GAAAwqJ,EAAAxqJ,IAAA/a,GAAA,EAAA,CACA,MAAA2lK,EAAAH,EAAAzqJ,EAAAwqJ,EAAAE,EAEAC,EAAA7+J,EAAAsT,EAAA5U,KAAAiG,IAAAm6J,GACAD,EAAA/gK,EAAAwV,EAAA5U,KAAAmG,IAAAi6J,GACAr1D,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEAssE,EAAA/qG,KAAA,EAAA,EAAA,GAEA47E,EAAA50E,GAAAypG,EAAAtwG,GAAAma,EAAA,GAAA,EACAshE,EAAA92E,GAAA2rG,EAAAtwG,EAAA,GAAAma,EAAA,GAAA,EACA0wF,EAAAhrG,KAAA47E,EAAA50E,EAAA40E,EAAA92E,GAIA,IAAA,IAAA3E,EAAA,EAAAA,GAAAulK,EAAAvlK,IACA2qG,EAAA9qG,KAAAG,EAAAA,EAAA,EAAA,GAIAX,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAGA34B,gBAAA7wE,GACA,OAAA,IAAAikK,GAAAjkK,EAAA8Y,OAAA9Y,EAAAkkK,SAAAlkK,EAAAmkK,WAAAnkK,EAAAokK,cAKA,MAAAG,WAAAt8D,GACAp3B,YAAA2zF,EAAA,EAAAC,EAAA,EAAAnsI,EAAA,EAAAosI,EAAA,EAAA31D,EAAA,EAAA41D,GAAA,EAAAR,EAAA,EAAAC,EAAA,EAAAlgK,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,mBACAC,KAAA8zF,WAAA,CACA0yE,UAAAA,EACAC,aAAAA,EACAnsI,OAAAA,EACAosI,eAAAA,EACA31D,eAAAA,EACA41D,UAAAA,EACAR,WAAAA,EACAC,YAAAA,GAEA,MAAAv4J,EAAA7N,KACA0mK,EAAAxgK,KAAA4N,MAAA4yJ,GACA31D,EAAA7qG,KAAA4N,MAAAi9F,GAEA,MAAAzF,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAAlzF,EAAA,EACA,MAAAsuJ,EAAA,GACAv4B,EAAA/zG,EAAA,EACA,IAAA62E,EAAA,EAyEA,SAAA01D,EAAAhqI,GAEA,MAAAiqI,EAAAxuJ,EACA8jE,EAAA,IAAArG,GACAswF,EAAA,IAAAzjF,GACA,IAAAqvB,EAAA,EACA,MAAAn3F,GAAA,IAAA+hB,EAAA2pI,EAAAC,EACApuG,GAAA,IAAAx7B,EAAA,GAAA,EAIA,IAAA,IAAAr1B,EAAA,EAAAA,GAAAk/J,EAAAl/J,IAEAypG,EAAAzwG,KAAA,EAAA6tI,EAAAh2E,EAAA,GAEAkzC,EAAA/qG,KAAA,EAAA63D,EAAA,GAEAmzC,EAAAhrG,KAAA,GAAA,IAEA8X,IAIA,MAAAyuJ,EAAAzuJ,EAEA,IAAA,IAAA9Q,EAAA,EAAAA,GAAAk/J,EAAAl/J,IAAA,CACA,MACAkyE,EADAlyE,EAAAk/J,EACAN,EAAAD,EACAa,EAAA9gK,KAAAiG,IAAAutE,GACAutF,EAAA/gK,KAAAmG,IAAAqtE,GAEA2sF,EAAA7+J,EAAAsT,EAAAmsJ,EACAZ,EAAA/gK,EAAA+oI,EAAAh2E,EACAguG,EAAApnI,EAAAnkB,EAAAksJ,EACA/1D,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEAssE,EAAA/qG,KAAA,EAAA63D,EAAA,GAEA+jB,EAAA50E,EAAA,GAAAw/J,EAAA,GACA5qF,EAAA92E,EAAA,GAAA2hK,EAAA5uG,EAAA,GACAmzC,EAAAhrG,KAAA47E,EAAA50E,EAAA40E,EAAA92E,GAEAgT,IAIA,IAAA,IAAA9Q,EAAA,EAAAA,EAAAk/J,EAAAl/J,IAAA,CACA,MAAAL,EAAA2/J,EAAAt/J,EACA7G,EAAAomK,EAAAv/J,GAEA,IAAAq1B,EAEAyuE,EAAA9qG,KAAAG,EAAAA,EAAA,EAAAwG,GAGAmkG,EAAA9qG,KAAAG,EAAA,EAAAA,EAAAwG,GAGA8qG,GAAA,EAIApkG,EAAAogG,SAAAkD,EAAAc,GAAA,IAAAp1E,EAAA,EAAA,GAEAs0E,GAAAc,GA1HA,WACA,MAAArtB,EAAA,IAAAhC,GACAyjF,EAAA,IAAAzjF,GACA,IAAAqvB,EAAA,EAEA,MAAAi1D,GAAAT,EAAAD,GAAAlsI,EAEA,IAAA,IAAAh1B,EAAA,EAAAA,GAAAyrG,EAAAzrG,IAAA,CACA,MAAA6hK,EAAA,GACA9kK,EAAAiD,EAAAyrG,EAEAj2F,EAAAzY,GAAAokK,EAAAD,GAAAA,EAEA,IAAA,IAAAh/J,EAAA,EAAAA,GAAAk/J,EAAAl/J,IAAA,CACA,MAAAgT,EAAAhT,EAAAk/J,EACAhtF,EAAAl/D,EAAA4rJ,EAAAD,EACAc,EAAA/gK,KAAAmG,IAAAqtE,GACAstF,EAAA9gK,KAAAiG,IAAAutE,GAEA2sF,EAAA7+J,EAAAsT,EAAAmsJ,EACAZ,EAAA/gK,GAAAjD,EAAAi4B,EAAA+zG,EACAg4B,EAAApnI,EAAAnkB,EAAAksJ,EACA/1D,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEA2lD,EAAA3/D,IAAAgiJ,EAAAC,EAAAF,GAAA/zI,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAusE,EAAAhrG,KAAAga,EAAA,EAAAnY,GAEA8kK,EAAA3mK,KAAA8X,KAIAsuJ,EAAApmK,KAAA2mK,GAIA,IAAA,IAAA3/J,EAAA,EAAAA,EAAAk/J,EAAAl/J,IACA,IAAA,IAAAlC,EAAA,EAAAA,EAAAyrG,EAAAzrG,IAAA,CAEA,MAAAwC,EAAA8+J,EAAAthK,GAAAkC,GACAc,EAAAs+J,EAAAthK,EAAA,GAAAkC,GACAL,EAAAy/J,EAAAthK,EAAA,GAAAkC,EAAA,GACAhI,EAAAonK,EAAAthK,GAAAkC,EAAA,GAEA8jG,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAEAyyG,GAAA,EAKApkG,EAAAogG,SAAAkD,EAAAc,EAAA,GAEAd,GAAAc,EApEAm1D,IAEA,IAAAT,IACAH,EAAA,GAAAK,GAAA,GACAJ,EAAA,GAAAI,GAAA,IAIA7mK,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAgIA34B,gBAAA7wE,GACA,OAAA,IAAAukK,GAAAvkK,EAAAwkK,UAAAxkK,EAAAykK,aAAAzkK,EAAAs4B,OAAAt4B,EAAA0kK,eAAA1kK,EAAA+uG,eAAA/uG,EAAA2kK,UAAA3kK,EAAAmkK,WAAAnkK,EAAAokK,cAKA,MAAAiB,WAAAd,GACA1zF,YAAA/3D,EAAA,EAAAwf,EAAA,EAAAosI,EAAA,EAAA31D,EAAA,EAAA41D,GAAA,EAAAR,EAAA,EAAAC,EAAA,EAAAlgK,KAAA2F,IACAovE,MAAA,EAAAngE,EAAAwf,EAAAosI,EAAA31D,EAAA41D,EAAAR,EAAAC,GACApmK,KAAAD,KAAA,eACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAwf,OAAAA,EACAosI,eAAAA,EACA31D,eAAAA,EACA41D,UAAAA,EACAR,WAAAA,EACAC,YAAAA,GAIAvzF,gBAAA7wE,GACA,OAAA,IAAAqlK,GAAArlK,EAAA8Y,OAAA9Y,EAAAs4B,OAAAt4B,EAAA0kK,eAAA1kK,EAAA+uG,eAAA/uG,EAAA2kK,UAAA3kK,EAAAmkK,WAAAnkK,EAAAokK,cAKA,MAAAkB,WAAAr9D,GACAp3B,YAAAo+B,EAAA3F,EAAAxwF,EAAA,EAAAgxB,EAAA,GACAmvC,QACAj7E,KAAAD,KAAA,qBACAC,KAAA8zF,WAAA,CACAmd,SAAAA,EACA3F,QAAAA,EACAxwF,OAAAA,EACAgxB,OAAAA,GAGA,MAAAy7H,EAAA,GACAC,EAAA,GAkCA,SAAAC,EAAA3/J,EAAAQ,EAAAnB,EAAA2kC,GACA,MAAA47H,EAAA57H,EAAA,EAEAzpC,EAAA,GAEA,IAAA,IAAA1B,EAAA,EAAAA,GAAA+mK,EAAA/mK,IAAA,CACA0B,EAAA1B,GAAA,GACA,MAAAgnK,EAAA7/J,EAAA42E,QAAAhL,KAAAvsE,EAAAxG,EAAA+mK,GACAE,EAAAt/J,EAAAo2E,QAAAhL,KAAAvsE,EAAAxG,EAAA+mK,GACAG,EAAAH,EAAA/mK,EAEA,IAAA,IAAAsZ,EAAA,EAAAA,GAAA4tJ,EAAA5tJ,IAEA5X,EAAA1B,GAAAsZ,GADA,IAAAA,GAAAtZ,IAAA+mK,EACAC,EAEAA,EAAAjpF,QAAAhL,KAAAk0F,EAAA3tJ,EAAA4tJ,GAMA,IAAA,IAAAlnK,EAAA,EAAAA,EAAA+mK,EAAA/mK,IACA,IAAA,IAAAsZ,EAAA,EAAAA,EAAA,GAAAytJ,EAAA/mK,GAAA,EAAAsZ,IAAA,CACA,MAAA6wB,EAAA5kC,KAAA4N,MAAAmG,EAAA,GAEAA,EAAA,GAAA,GACA6tJ,EAAAzlK,EAAA1B,GAAAmqC,EAAA,IACAg9H,EAAAzlK,EAAA1B,EAAA,GAAAmqC,IACAg9H,EAAAzlK,EAAA1B,GAAAmqC,MAEAg9H,EAAAzlK,EAAA1B,GAAAmqC,EAAA,IACAg9H,EAAAzlK,EAAA1B,EAAA,GAAAmqC,EAAA,IACAg9H,EAAAzlK,EAAA1B,EAAA,GAAAmqC,MAsDA,SAAAg9H,EAAAzB,GACAkB,EAAA/mK,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAGA,SAAA8oI,EAAAzvJ,EAAA+tJ,GACA,MAAAx4D,EAAA,EAAAv1F,EACA+tJ,EAAA7+J,EAAAypG,EAAApD,EAAA,GACAw4D,EAAA/gK,EAAA2rG,EAAApD,EAAA,GACAw4D,EAAApnI,EAAAgyE,EAAApD,EAAA,GA2BA,SAAAm6D,EAAA5rF,EAAAyxB,EAAA/nB,EAAAmiF,GACAA,EAAA,GAAA,IAAA7rF,EAAA50E,IACAggK,EAAA35D,GAAAzxB,EAAA50E,EAAA,GAGA,IAAAs+E,EAAAt+E,GAAA,IAAAs+E,EAAA7mD,IACAuoI,EAAA35D,GAAAo6D,EAAA,EAAA/hK,KAAA2F,GAAA,IAKA,SAAAo8J,EAAAniF,GACA,OAAA5/E,KAAAuwB,MAAAqvD,EAAA7mD,GAAA6mD,EAAAt+E,IApJA,SAAAskC,GACA,MAAAhkC,EAAA,IAAA86E,GACAt6E,EAAA,IAAAs6E,GACAz7E,EAAA,IAAAy7E,GAEA,IAAA,IAAAjiF,EAAA,EAAAA,EAAA2qG,EAAAjrG,OAAAM,GAAA,EAEAonK,EAAAz8D,EAAA3qG,EAAA,GAAAmH,GACAigK,EAAAz8D,EAAA3qG,EAAA,GAAA2H,GACAy/J,EAAAz8D,EAAA3qG,EAAA,GAAAwG,GAEAsgK,EAAA3/J,EAAAQ,EAAAnB,EAAA2kC,GA5BAo8H,CAAAp8H,GAsEA,SAAAhxB,GACA,MAAAurJ,EAAA,IAAAzjF,GAEA,IAAA,IAAAjiF,EAAA,EAAAA,EAAA4mK,EAAAlnK,OAAAM,GAAA,EACA0lK,EAAA7+J,EAAA+/J,EAAA5mK,EAAA,GACA0lK,EAAA/gK,EAAAiiK,EAAA5mK,EAAA,GACA0lK,EAAApnI,EAAAsoI,EAAA5mK,EAAA,GACA0lK,EAAApzI,YAAAmjD,eAAAt7D,GACAysJ,EAAA5mK,EAAA,GAAA0lK,EAAA7+J,EACA+/J,EAAA5mK,EAAA,GAAA0lK,EAAA/gK,EACAiiK,EAAA5mK,EAAA,GAAA0lK,EAAApnI,EA9EAkpI,CAAArtJ,GAkFA,WACA,MAAAurJ,EAAA,IAAAzjF,GAEA,IAAA,IAAAjiF,EAAA,EAAAA,EAAA4mK,EAAAlnK,OAAAM,GAAA,EAAA,CACA0lK,EAAA7+J,EAAA+/J,EAAA5mK,EAAA,GACA0lK,EAAA/gK,EAAAiiK,EAAA5mK,EAAA,GACA0lK,EAAApnI,EAAAsoI,EAAA5mK,EAAA,GACA,MAAA6Z,EAAAytJ,EAAA5B,GAAA,EAAAngK,KAAA2F,GAAA,GACAxJ,GA6EAyjF,EA7EAugF,EA8EAngK,KAAAuwB,OAAAqvD,EAAAxgF,EAAAY,KAAA+F,KAAA65E,EAAAt+E,EAAAs+E,EAAAt+E,EAAAs+E,EAAA7mD,EAAA6mD,EAAA7mD,IA9EA/4B,KAAA2F,GAAA,IACA27J,EAAAhnK,KAAAga,EAAA,EAAAnY,GA4EA,IAAAyjF,GAxCA,WACA,MAAAh+E,EAAA,IAAA86E,GACAt6E,EAAA,IAAAs6E,GACAz7E,EAAA,IAAAy7E,GACAwlF,EAAA,IAAAxlF,GACAopB,EAAA,IAAAj2B,GACAk2B,EAAA,IAAAl2B,GACAm2B,EAAA,IAAAn2B,GAEA,IAAA,IAAAp1E,EAAA,EAAAsZ,EAAA,EAAAtZ,EAAA4mK,EAAAlnK,OAAAM,GAAA,EAAAsZ,GAAA,EAAA,CACAnS,EAAAmd,IAAAsiJ,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,IACA2H,EAAA2c,IAAAsiJ,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,IACAwG,EAAA8d,IAAAsiJ,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,GAAA4mK,EAAA5mK,EAAA,IACAqrG,EAAA/mF,IAAAuiJ,EAAAvtJ,EAAA,GAAAutJ,EAAAvtJ,EAAA,IACAgyF,EAAAhnF,IAAAuiJ,EAAAvtJ,EAAA,GAAAutJ,EAAAvtJ,EAAA,IACAiyF,EAAAjnF,IAAAuiJ,EAAAvtJ,EAAA,GAAAutJ,EAAAvtJ,EAAA,IACAmuJ,EAAAv2J,KAAA/J,GAAAwV,IAAAhV,GAAAgV,IAAAnW,GAAAqvE,aAAA,GACA,MAAA6xF,EAAAJ,EAAAG,GACAJ,EAAAh8D,EAAA/xF,EAAA,EAAAnS,EAAAugK,GACAL,EAAA/7D,EAAAhyF,EAAA,EAAA3R,EAAA+/J,GACAL,EAAA97D,EAAAjyF,EAAA,EAAA9S,EAAAkhK,KArDAC,GAIA,WAEA,IAAA,IAAA3nK,EAAA,EAAAA,EAAA6mK,EAAAnnK,OAAAM,GAAA,EAAA,CAEA,MAAAs/E,EAAAunF,EAAA7mK,EAAA,GACA89D,EAAA+oG,EAAA7mK,EAAA,GACAg+D,EAAA6oG,EAAA7mK,EAAA,GACAwX,EAAAjS,KAAAiS,IAAA8nE,EAAAxhB,EAAAE,GACAx4D,EAAAD,KAAAC,IAAA85E,EAAAxhB,EAAAE,GAEAxmD,EAAA,IAAAhS,EAAA,KACA85E,EAAA,KAAAunF,EAAA7mK,EAAA,IAAA,GACA89D,EAAA,KAAA+oG,EAAA7mK,EAAA,IAAA,GACAg+D,EAAA,KAAA6oG,EAAA7mK,EAAA,IAAA,KAhBA4nK,GA7FAC,GAEAxoK,KAAAwwB,aAAA,WAAA,IAAA24E,GAAAo+D,EAAA,IACAvnK,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAo+D,EAAA72J,QAAA,IACA1Q,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAq+D,EAAA,IAEA,IAAA17H,EACA9rC,KAAAyoK,uBAEAzoK,KAAAotG,mBAiKAv6B,gBAAA7wE,GACA,OAAA,IAAAslK,GAAAtlK,EAAAivG,SAAAjvG,EAAAspG,QAAAtpG,EAAA8Y,OAAA9Y,EAAA0mK,UAKA,MAAAC,WAAArB,GACAz0F,YAAA/3D,EAAA,EAAAgxB,EAAA,GACA,MAAA7kC,GAAA,EAAAf,KAAA+F,KAAA,IAAA,EACA1F,EAAA,EAAAU,EAOAg0E,MANA,EACA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EACA,GAAA10E,GAAAU,EAAA,GAAAV,EAAAU,EAAA,EAAAV,GAAAU,EAAA,EAAAV,EAAAU,GACAV,GAAAU,EAAA,GAAAV,EAAAU,EAAA,EAAAV,GAAAU,EAAA,EAAAV,EAAAU,EAAA,GACAA,EAAA,GAAAV,EAAAU,EAAA,GAAAV,GAAAU,EAAA,EAAAV,EAAAU,EAAA,EAAAV,GACA,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GACAuU,EAAAgxB,GACA9rC,KAAAD,KAAA,uBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAgxB,OAAAA,GAIA+mC,gBAAA7wE,GACA,OAAA,IAAA2mK,GAAA3mK,EAAA8Y,OAAA9Y,EAAA8pC,SAKA,MAAA88H,GAAA,IAAAhmF,GAEAimF,GAAA,IAAAjmF,GAEAkmF,GAAA,IAAAlmF,GAEAmmF,GAAA,IAAA5zE,GAEA,MAAA6zE,WAAA/+D,GACAp3B,YAAAoT,EAAAgjF,GAQA,GAPAhuF,QACAj7E,KAAAD,KAAA,gBACAC,KAAA8zF,WAAA,CACAm1E,eAAAA,GAEAA,OAAA7hI,IAAA6hI,EAAAA,EAAA,GAEA,IAAAhjF,EAAAqqB,WAEA,YADAriG,QAAApK,MAAA,4FAIA,MACA60F,EAAAxyF,KAAAD,IAAA,GADA,GAEAijK,EAAAhjK,KAAAiG,IAAA+mE,GAAA+1F,GACAE,EAAAljF,EAAAmjF,WACAC,EAAApjF,EAAAr2E,aAAA,YACA05J,EAAAH,EAAAA,EAAAtqF,MAAAwqF,EAAAxqF,MACA0qF,EAAA,CAAA,EAAA,EAAA,GACAC,EAAA,CAAA,IAAA,IAAA,KACAC,EAAA,IAAAv8J,MAAA,GACAw8J,EAAA,GACAz4D,EAAA,GAEA,IAAA,IAAAtwG,EAAA,EAAAA,EAAA2oK,EAAA3oK,GAAA,EAAA,CACAwoK,GACAI,EAAA,GAAAJ,EAAAtyF,KAAAl2E,GACA4oK,EAAA,GAAAJ,EAAAtyF,KAAAl2E,EAAA,GACA4oK,EAAA,GAAAJ,EAAAtyF,KAAAl2E,EAAA,KAEA4oK,EAAA,GAAA5oK,EACA4oK,EAAA,GAAA5oK,EAAA,EACA4oK,EAAA,GAAA5oK,EAAA,GAGA,MAAAmH,EACAA,EAAAQ,EACAA,EAAAnB,EACAA,GACA4hK,GAYA,GAXAjhK,EAAA+/F,oBAAAwhE,EAAAE,EAAA,IACAjhK,EAAAu/F,oBAAAwhE,EAAAE,EAAA,IACApiK,EAAA0gG,oBAAAwhE,EAAAE,EAAA,IAEAR,GAAA5yE,UAAA2yE,IAGAW,EAAA,GAAA,GAAAvjK,KAAAgK,MAAApI,EAAAN,EAAAkxF,MAAAxyF,KAAAgK,MAAApI,EAAAxC,EAAAozF,MAAAxyF,KAAAgK,MAAApI,EAAAm3B,EAAAy5D,KACA+wE,EAAA,GAAA,GAAAvjK,KAAAgK,MAAA5H,EAAAd,EAAAkxF,MAAAxyF,KAAAgK,MAAA5H,EAAAhD,EAAAozF,MAAAxyF,KAAAgK,MAAA5H,EAAA22B,EAAAy5D,KACA+wE,EAAA,GAAA,GAAAvjK,KAAAgK,MAAA/I,EAAAK,EAAAkxF,MAAAxyF,KAAAgK,MAAA/I,EAAA7B,EAAAozF,MAAAxyF,KAAAgK,MAAA/I,EAAA83B,EAAAy5D,KAEA+wE,EAAA,KAAAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,GAKA,IAAA,IAAAxvJ,EAAA,EAAAA,EAAA,EAAAA,IAAA,CAEA,MAAA0vJ,GAAA1vJ,EAAA,GAAA,EACA2vJ,EAAAH,EAAAxvJ,GACA4vJ,EAAAJ,EAAAE,GACA9hF,EAAAkhF,GAAAS,EAAAvvJ,IACAy8D,EAAAqyF,GAAAS,EAAAG,IACAllI,EAAA,GAAAmlI,KAAAC,IACAC,EAAA,GAAAD,KAAAD,IAEAE,KAAAJ,GAAAA,EAAAI,IAGAhB,GAAAvnF,IAAAmoF,EAAAI,GAAAllF,SAAAskF,IACAj4D,EAAAzwG,KAAAqnF,EAAArgF,EAAAqgF,EAAAviF,EAAAuiF,EAAA5oD,GACAgyE,EAAAzwG,KAAAk2E,EAAAlvE,EAAAkvE,EAAApxE,EAAAoxE,EAAAz3C,IAGAyqI,EAAAI,GAAA,MACArlI,KAAAilI,IAEAA,EAAAjlI,GAAA,CACAslI,OAAAR,EAAAtvJ,GACAytF,OAAA6hE,EAAAI,GACA/kF,OAAAkkF,GAAApqF,WAOA,IAAA,MAAA37D,KAAA2mJ,EACA,GAAAA,EAAA3mJ,GAAA,CACA,MAAAgnJ,OACAA,EAAAriE,OACAA,GACAgiE,EAAA3mJ,GAEA6lJ,GAAA/gE,oBAAAwhE,EAAAU,GAEAlB,GAAAhhE,oBAAAwhE,EAAA3hE,GAEAuJ,EAAAzwG,KAAAooK,GAAAphK,EAAAohK,GAAAtjK,EAAAsjK,GAAA3pI,GACAgyE,EAAAzwG,KAAAqoK,GAAArhK,EAAAqhK,GAAAvjK,EAAAujK,GAAA5pI,GAIAj/B,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,KAmCA,MAAA+4D,GACAn3F,cACA7yE,KAAAD,KAAA,QACAC,KAAAiqK,mBAAA,IAKAp3F,WAEA,OADA5kE,QAAAC,KAAA,6CACA,KAKA2kE,WAAAr4D,EAAA0vJ,GACA,MAAAjjK,EAAAjH,KAAAmqK,eAAA3vJ,GACA,OAAAxa,KAAAoqK,SAAAnjK,EAAAijK,GAIAr3F,UAAAw3F,EAAA,GACA,MAAA9iK,EAAA,GAEA,IAAA,IAAA/H,EAAA,EAAAA,GAAA6qK,EAAA7qK,IACA+H,EAAA/G,KAAAR,KAAAoqK,SAAA5qK,EAAA6qK,IAGA,OAAA9iK,EAIAsrE,gBAAAw3F,EAAA,GACA,MAAA9iK,EAAA,GAEA,IAAA,IAAA/H,EAAA,EAAAA,GAAA6qK,EAAA7qK,IACA+H,EAAA/G,KAAAR,KAAAsqK,WAAA9qK,EAAA6qK,IAGA,OAAA9iK,EAIAsrE,YACA,MAAA03F,EAAAvqK,KAAAwqK,aACA,OAAAD,EAAAA,EAAAlqK,OAAA,GAIAwyE,WAAAw3F,EAAArqK,KAAAiqK,oBACA,GAAAjqK,KAAAyqK,iBAAAzqK,KAAAyqK,gBAAApqK,SAAAgqK,EAAA,IAAArqK,KAAAs8E,YACA,OAAAt8E,KAAAyqK,gBAGAzqK,KAAAs8E,aAAA,EACA,MAAAh5E,EAAA,GACA,IAAA8vB,EACAnC,EAAAjxB,KAAAoqK,SAAA,GACA/yC,EAAA,EACA/zH,EAAA9C,KAAA,GAEA,IAAA,IAAA4B,EAAA,EAAAA,GAAAioK,EAAAjoK,IACAgxB,EAAApzB,KAAAoqK,SAAAhoK,EAAAioK,GACAhzC,GAAAjkG,EAAAm1D,WAAAt3D,GACA3tB,EAAA9C,KAAA62H,GACApmG,EAAAmC,EAIA,OADApzB,KAAAyqK,gBAAAnnK,EACAA,EAGAuvE,mBACA7yE,KAAAs8E,aAAA,EACAt8E,KAAAwqK,aAIA33F,eAAAr4D,EAAA6B,GACA,MAAAquJ,EAAA1qK,KAAAwqK,aACA,IAAA7pK,EAAA,EACA,MAAAqzB,EAAA02I,EAAArqK,OACA,IAAAsqK,EAGAA,EADAtuJ,GAGA7B,EAAAkwJ,EAAA12I,EAAA,GAIA,IAEA42I,EAFAh2F,EAAA,EACAC,EAAA7gD,EAAA,EAGA,KAAA4gD,GAAAC,GAKA,GAJAl0E,EAAAuF,KAAA4N,MAAA8gE,GAAAC,EAAAD,GAAA,GAEAg2F,EAAAF,EAAA/pK,GAAAgqK,EAEAC,EAAA,EACAh2F,EAAAj0E,EAAA,MACA,CAAA,KAAAiqK,EAAA,GAEA,CACA/1F,EAAAl0E,EACA,MAHAk0E,EAAAl0E,EAAA,EASA,GAFAA,EAAAk0E,EAEA61F,EAAA/pK,KAAAgqK,EACA,OAAAhqK,GAAAqzB,EAAA,GAIA,MAAA62I,EAAAH,EAAA/pK,GAOA,OADAA,GAFAgqK,EAAAE,IAHAH,EAAA/pK,EAAA,GACAkqK,KAIA72I,EAAA,GAQA6+C,WAAA5rE,EAAAijK,GACA,MAAApyG,EAAA,KACA,IAAAn4B,EAAA14B,EAAA6wD,EACAl4B,EAAA34B,EAAA6wD,EAEAn4B,EAAA,IAAAA,EAAA,GACAC,EAAA,IAAAA,EAAA,GACA,MAAAkrI,EAAA9qK,KAAAoqK,SAAAzqI,GACA5O,EAAA/wB,KAAAoqK,SAAAxqI,GACA6qE,EAAAy/D,IAAAY,EAAA/zF,UAAA,IAAAhB,GAAA,IAAA6M,IAEA,OADA6nB,EAAA54F,KAAAkf,GAAA4zD,IAAAmmF,GAAA73I,YACAw3E,EAGA53B,aAAAr4D,EAAA0vJ,GACA,MAAAjjK,EAAAjH,KAAAmqK,eAAA3vJ,GACA,OAAAxa,KAAA+qK,WAAA9jK,EAAAijK,GAGAr3F,oBAAAqzF,EAAA8E,GAEA,MAAApmF,EAAA,IAAAhC,GACA8oB,EAAA,GACAH,EAAA,GACA0/D,EAAA,GACAC,EAAA,IAAAtoF,GACAuoF,EAAA,IAAAx/E,GAEA,IAAA,IAAAhrF,EAAA,EAAAA,GAAAulK,EAAAvlK,IAAA,CACA,MAAA6Z,EAAA7Z,EAAAulK,EACAx6D,EAAA/qG,GAAAX,KAAAorK,aAAA5wJ,EAAA,IAAAooE,IACA8oB,EAAA/qG,GAAAsyB,YAKAs4E,EAAA,GAAA,IAAA3oB,GACAqoF,EAAA,GAAA,IAAAroF,GACA,IAAAz8E,EAAAga,OAAAkrJ,UACA,MAAAvsI,EAAA54B,KAAAiO,IAAAu3F,EAAA,GAAAlkG,GACAu3B,EAAA74B,KAAAiO,IAAAu3F,EAAA,GAAApmG,GACA8kE,EAAAlkE,KAAAiO,IAAAu3F,EAAA,GAAAzsE,GAEAH,GAAA34B,IACAA,EAAA24B,EACA8lD,EAAA3/D,IAAA,EAAA,EAAA,IAGA8Z,GAAA54B,IACAA,EAAA44B,EACA6lD,EAAA3/D,IAAA,EAAA,EAAA,IAGAmlD,GAAAjkE,GACAy+E,EAAA3/D,IAAA,EAAA,EAAA,GAGAimJ,EAAAlnF,aAAA0nB,EAAA,GAAA9mB,GAAA3xD,YACAs4E,EAAA,GAAAvnB,aAAA0nB,EAAA,GAAAw/D,GACAD,EAAA,GAAAjnF,aAAA0nB,EAAA,GAAAH,EAAA,IAEA,IAAA,IAAA5qG,EAAA,EAAAA,GAAAulK,EAAAvlK,IAAA,CAKA,GAJA4qG,EAAA5qG,GAAA4qG,EAAA5qG,EAAA,GAAA+9E,QACAusF,EAAAtqK,GAAAsqK,EAAAtqK,EAAA,GAAA+9E,QACAwsF,EAAAlnF,aAAA0nB,EAAA/qG,EAAA,GAAA+qG,EAAA/qG,IAEAuqK,EAAA7qK,SAAA8f,OAAAqgE,QAAA,CACA0qF,EAAAj4I,YACA,MAAAymD,EAAAxzE,KAAA02E,KAAA30E,GAAAyjG,EAAA/qG,EAAA,GAAA4gF,IAAAmqB,EAAA/qG,KAAA,EAAA,IAEA4qG,EAAA5qG,GAAAgjF,aAAAwnF,EAAAG,iBAAAJ,EAAAxxF,IAGAuxF,EAAAtqK,GAAAqjF,aAAA0nB,EAAA/qG,GAAA4qG,EAAA5qG,IAIA,IAAA,IAAAqqK,EAAA,CACA,IAAAtxF,EAAAxzE,KAAA02E,KAAA30E,GAAAsjG,EAAA,GAAAhqB,IAAAgqB,EAAA26D,KAAA,EAAA,IACAxsF,GAAAwsF,EAEAx6D,EAAA,GAAAnqB,IAAA2pF,EAAAlnF,aAAAunB,EAAA,GAAAA,EAAA26D,KAAA,IACAxsF,GAAAA,GAGA,IAAA,IAAA/4E,EAAA,EAAAA,GAAAulK,EAAAvlK,IAEA4qG,EAAA5qG,GAAAgjF,aAAAwnF,EAAAG,iBAAA5/D,EAAA/qG,GAAA+4E,EAAA/4E,IACAsqK,EAAAtqK,GAAAqjF,aAAA0nB,EAAA/qG,GAAA4qG,EAAA5qG,IAIA,MAAA,CACA+qG,SAAAA,EACAH,QAAAA,EACA0/D,UAAAA,GAIAp4F,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjxC,GAEA,OADA5hC,KAAAiqK,mBAAAroI,EAAAqoI,mBACAjqK,KAGA6yE,SACA,MAAA7wE,EAAA,CACAg6E,SAAA,CACAxzE,QAAA,IACAzI,KAAA,QACAk8E,UAAA,iBAKA,OAFAj6E,EAAAioK,mBAAAjqK,KAAAiqK,mBACAjoK,EAAAjC,KAAAC,KAAAD,KACAiC,EAGA6wE,SAAAmwF,GAEA,OADAhjK,KAAAiqK,mBAAAjH,EAAAiH,mBACAjqK,MAKA,MAAAurK,WAAAvB,GACAn3F,YAAA24F,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAA3lK,KAAA2F,GAAAigK,GAAA,EAAAC,EAAA,GACA9wF,QACAj7E,KAAAD,KAAA,eACAC,KAAAwrK,GAAAA,EACAxrK,KAAAyrK,GAAAA,EACAzrK,KAAA0rK,QAAAA,EACA1rK,KAAA2rK,QAAAA,EACA3rK,KAAA4rK,YAAAA,EACA5rK,KAAA6rK,UAAAA,EACA7rK,KAAA8rK,WAAAA,EACA9rK,KAAA+rK,UAAAA,EAGAl5F,SAAA5rE,EAAAijK,GACA,MAAA97G,EAAA87G,GAAA,IAAAn0F,GACAi2F,EAAA,EAAA9lK,KAAA2F,GACA,IAAAogK,EAAAjsK,KAAA6rK,UAAA7rK,KAAA4rK,YACA,MAAAM,EAAAhmK,KAAAiO,IAAA83J,GAAA9rJ,OAAAqgE,QAEA,KAAAyrF,EAAA,GAAAA,GAAAD,EAEA,KAAAC,EAAAD,GAAAC,GAAAD,EAEAC,EAAA9rJ,OAAAqgE,UAEAyrF,EADAC,EACA,EAEAF,IAIA,IAAAhsK,KAAA8rK,YAAAI,IACAD,IAAAD,EACAC,GAAAD,EAEAC,GAAAD,GAIA,MAAAxsI,EAAAx/B,KAAA4rK,YAAA3kK,EAAAglK,EACA,IAAAzkK,EAAAxH,KAAAwrK,GAAAxrK,KAAA0rK,QAAAxlK,KAAAiG,IAAAqzB,GACAl6B,EAAAtF,KAAAyrK,GAAAzrK,KAAA2rK,QAAAzlK,KAAAmG,IAAAmzB,GAEA,GAAA,IAAAx/B,KAAA+rK,UAAA,CACA,MAAA5/J,EAAAjG,KAAAiG,IAAAnM,KAAA+rK,WACA1/J,EAAAnG,KAAAmG,IAAArM,KAAA+rK,WACAjtI,EAAAt3B,EAAAxH,KAAAwrK,GACAzsI,EAAAz5B,EAAAtF,KAAAyrK,GAEAjkK,EAAAs3B,EAAA3yB,EAAA4yB,EAAA1yB,EAAArM,KAAAwrK,GACAlmK,EAAAw5B,EAAAzyB,EAAA0yB,EAAA5yB,EAAAnM,KAAAyrK,GAGA,OAAAr9G,EAAAnpC,IAAAzd,EAAAlC,GAGAutE,KAAAjxC,GAUA,OATAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAwrK,GAAA5pI,EAAA4pI,GACAxrK,KAAAyrK,GAAA7pI,EAAA6pI,GACAzrK,KAAA0rK,QAAA9pI,EAAA8pI,QACA1rK,KAAA2rK,QAAA/pI,EAAA+pI,QACA3rK,KAAA4rK,YAAAhqI,EAAAgqI,YACA5rK,KAAA6rK,UAAAjqI,EAAAiqI,UACA7rK,KAAA8rK,WAAAlqI,EAAAkqI,WACA9rK,KAAA+rK,UAAAnqI,EAAAmqI,UACA/rK,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SASA,OARApxF,EAAAwpK,GAAAxrK,KAAAwrK,GACAxpK,EAAAypK,GAAAzrK,KAAAyrK,GACAzpK,EAAA0pK,QAAA1rK,KAAA0rK,QACA1pK,EAAA2pK,QAAA3rK,KAAA2rK,QACA3pK,EAAA4pK,YAAA5rK,KAAA4rK,YACA5pK,EAAA6pK,UAAA7rK,KAAA6rK,UACA7pK,EAAA8pK,WAAA9rK,KAAA8rK,WACA9pK,EAAA+pK,UAAA/rK,KAAA+rK,UACA/pK,EAGA6wE,SAAAmwF,GAUA,OATA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAwrK,GAAAxI,EAAAwI,GACAxrK,KAAAyrK,GAAAzI,EAAAyI,GACAzrK,KAAA0rK,QAAA1I,EAAA0I,QACA1rK,KAAA2rK,QAAA3I,EAAA2I,QACA3rK,KAAA4rK,YAAA5I,EAAA4I,YACA5rK,KAAA6rK,UAAA7I,EAAA6I,UACA7rK,KAAA8rK,WAAA9I,EAAA8I,WACA9rK,KAAA+rK,UAAA/I,EAAA+I,UACA/rK,MAKAurK,GAAAxiK,UAAAqjK,gBAAA,EAEA,MAAAC,WAAAd,GACA14F,YAAA24F,EAAAC,EAAAa,EAAAV,EAAAC,EAAAC,GACA7wF,MAAAuwF,EAAAC,EAAAa,EAAAA,EAAAV,EAAAC,EAAAC,GACA9rK,KAAAD,KAAA,YA0BA,SAAAwsK,KACA,IAAAC,EAAA,EACAzrF,EAAA,EACAxL,EAAA,EACAyL,EAAA,EAUA,SAAA9jE,EAAA+iE,EAAAxhB,EAAA8rB,EAAA5qD,GACA6sI,EAAAvsF,EACAc,EAAAwJ,EACAhV,GAAA,EAAA0K,EAAA,EAAAxhB,EAAA,EAAA8rB,EAAA5qD,EACAqhD,EAAA,EAAAf,EAAA,EAAAxhB,EAAA8rB,EAAA5qD,EAGA,MAAA,CACA8sI,eAAA,SAAAxsF,EAAAxhB,EAAAE,EAAA+tG,EAAAC,GACAzvJ,EAAAuhD,EAAAE,EAAAguG,GAAAhuG,EAAAshB,GAAA0sF,GAAAD,EAAAjuG,KAEAmuG,yBAAA,SAAA3sF,EAAAxhB,EAAAE,EAAA+tG,EAAAG,EAAAC,EAAAC,GAEA,IAAAptI,GAAA8+B,EAAAwhB,GAAA4sF,GAAAluG,EAAAshB,IAAA4sF,EAAAC,IAAAnuG,EAAAF,GAAAquG,EACAltI,GAAA++B,EAAAF,GAAAquG,GAAAJ,EAAAjuG,IAAAquG,EAAAC,IAAAL,EAAA/tG,GAAAouG,EAEAptI,GAAAmtI,EACAltI,GAAAktI,EACA5vJ,EAAAuhD,EAAAE,EAAAh/B,EAAAC,IAEAotI,KAAA,SAAA/lK,GACA,MAAA24B,EAAA34B,EAAAA,EAEA,OAAAulK,EAAAzrF,EAAA95E,EAAAsuE,EAAA31C,EAAAohD,GADAphD,EAAA34B,KAzDAolK,GAAAtjK,UAAAkkK,YAAA,EAgEA,MAAA/zF,GAAA,IAAA0J,GACAxnD,GAAA,IAAAmxI,GACAW,GAAA,IAAAX,GACAY,GAAA,IAAAZ,GAEA,MAAAa,WAAApD,GACAn3F,YAAAtrE,EAAA,GAAAyjK,GAAA,EAAAqC,EAAA,cAAAV,EAAA,IACA1xF,QACAj7E,KAAAD,KAAA,mBACAC,KAAAuH,OAAAA,EACAvH,KAAAgrK,OAAAA,EACAhrK,KAAAqtK,UAAAA,EACArtK,KAAA2sK,QAAAA,EAGA95F,SAAA5rE,EAAAijK,EAAA,IAAAtnF,IACA,MAAAx0B,EAAA87G,EACA3iK,EAAAvH,KAAAuH,OACAgJ,EAAAhJ,EAAAlH,OACA+B,GAAAmO,GAAAvQ,KAAAgrK,OAAA,EAAA,IAAA/jK,EACA,IAUA8gF,EAAA1hF,EAVAinK,EAAApnK,KAAA4N,MAAA1R,GACAk1H,EAAAl1H,EAAAkrK,EAEAttK,KAAAgrK,OACAsC,GAAAA,EAAA,EAAA,GAAApnK,KAAA4N,MAAA5N,KAAAiO,IAAAm5J,GAAA/8J,GAAA,GAAAA,EACA,IAAA+mH,GAAAg2C,IAAA/8J,EAAA,IACA+8J,EAAA/8J,EAAA,EACA+mH,EAAA,GAKAt3H,KAAAgrK,QAAAsC,EAAA,EACAvlF,EAAAxgF,GAAA+lK,EAAA,GAAA/8J,IAGA2oE,GAAA/C,WAAA5uE,EAAA,GAAAA,EAAA,IAAA+V,IAAA/V,EAAA,IACAwgF,EAAA7O,IAGA,MAAA9yE,EAAAmB,EAAA+lK,EAAA/8J,GACA3J,EAAAW,GAAA+lK,EAAA,GAAA/8J,GAUA,GARAvQ,KAAAgrK,QAAAsC,EAAA,EAAA/8J,EACAlK,EAAAkB,GAAA+lK,EAAA,GAAA/8J,IAGA2oE,GAAA/C,WAAA5uE,EAAAgJ,EAAA,GAAAhJ,EAAAgJ,EAAA,IAAA+M,IAAA/V,EAAAgJ,EAAA,IACAlK,EAAA6yE,IAGA,gBAAAl5E,KAAAqtK,WAAA,YAAArtK,KAAAqtK,UAAA,CAEA,MAAApnK,EAAA,YAAAjG,KAAAqtK,UAAA,GAAA,IACA,IAAAR,EAAA3mK,KAAAD,IAAA8hF,EAAAtR,kBAAArwE,GAAAH,GACA6mK,EAAA5mK,KAAAD,IAAAG,EAAAqwE,kBAAA7vE,GAAAX,GACA8mK,EAAA7mK,KAAAD,IAAAW,EAAA6vE,kBAAApwE,GAAAJ,GAEA6mK,EAAA,OAAAA,EAAA,GACAD,EAAA,OAAAA,EAAAC,GACAC,EAAA,OAAAA,EAAAD,GACA1xI,GAAAwxI,yBAAA7kF,EAAAvgF,EAAApB,EAAAoB,EAAAZ,EAAAY,EAAAnB,EAAAmB,EAAAqlK,EAAAC,EAAAC,GACAG,GAAAN,yBAAA7kF,EAAAziF,EAAAc,EAAAd,EAAAsB,EAAAtB,EAAAe,EAAAf,EAAAunK,EAAAC,EAAAC,GACAI,GAAAP,yBAAA7kF,EAAA9oD,EAAA74B,EAAA64B,EAAAr4B,EAAAq4B,EAAA54B,EAAA44B,EAAA4tI,EAAAC,EAAAC,OACA,eAAA/sK,KAAAqtK,YACAjyI,GAAAqxI,eAAA1kF,EAAAvgF,EAAApB,EAAAoB,EAAAZ,EAAAY,EAAAnB,EAAAmB,EAAAxH,KAAA2sK,SACAO,GAAAT,eAAA1kF,EAAAziF,EAAAc,EAAAd,EAAAsB,EAAAtB,EAAAe,EAAAf,EAAAtF,KAAA2sK,SACAQ,GAAAV,eAAA1kF,EAAA9oD,EAAA74B,EAAA64B,EAAAr4B,EAAAq4B,EAAA54B,EAAA44B,EAAAj/B,KAAA2sK,UAIA,OADAv+G,EAAAnpC,IAAAmW,GAAA4xI,KAAA11C,GAAA41C,GAAAF,KAAA11C,GAAA61C,GAAAH,KAAA11C,IACAlpE,EAGAykB,KAAAjxC,GACAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAuH,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAqxB,EAAAr6B,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAAxsB,EAAAr6B,OAAA5G,GACAX,KAAAuH,OAAA/G,KAAA4tD,EAAAswB,SAMA,OAHA1+E,KAAAgrK,OAAAppI,EAAAopI,OACAhrK,KAAAqtK,UAAAzrI,EAAAyrI,UACArtK,KAAA2sK,QAAA/qI,EAAA+qI,QACA3sK,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SACApxF,EAAAuF,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAvQ,KAAAuH,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAApuD,KAAAuH,OAAA5G,GACAqB,EAAAuF,OAAA/G,KAAA4tD,EAAA1+C,WAMA,OAHA1N,EAAAgpK,OAAAhrK,KAAAgrK,OACAhpK,EAAAqrK,UAAArtK,KAAAqtK,UACArrK,EAAA2qK,QAAA3sK,KAAA2sK,QACA3qK,EAGA6wE,SAAAmwF,GACA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAuH,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAyyJ,EAAAz7J,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAA40G,EAAAz7J,OAAA5G,GACAX,KAAAuH,OAAA/G,MAAA,IAAAoiF,IAAAjJ,UAAAvrB,IAMA,OAHApuD,KAAAgrK,OAAAhI,EAAAgI,OACAhrK,KAAAqtK,UAAArK,EAAAqK,UACArtK,KAAA2sK,QAAA3J,EAAA2J,QACA3sK,MAWA,SAAAutK,GAAAtmK,EAAA8gF,EAAA3hF,EAAAQ,EAAAP,GACA,MAAAwhF,EAAA,IAAAjhF,EAAAmhF,GACArR,EAAA,IAAArwE,EAAAD,GACAw5B,EAAA34B,EAAAA,EAEA,OAAA,EAAAb,EAAA,EAAAQ,EAAAihF,EAAAnR,IADAzvE,EAAA24B,KACA,EAAAx5B,EAAA,EAAAQ,EAAA,EAAAihF,EAAAnR,GAAA92C,EAAAioD,EAAA5gF,EAAAb,EAiBA,SAAAonK,GAAAvmK,EAAA8gF,EAAA3hF,EAAAQ,GACA,OAdA,SAAAK,EAAA7E,GACA,MAAA0oC,EAAA,EAAA7jC,EACA,OAAA6jC,EAAAA,EAAA1oC,EAYAqrK,CAAAxmK,EAAA8gF,GATA,SAAA9gF,EAAA7E,GACA,OAAA,GAAA,EAAA6E,GAAAA,EAAA7E,EAQAsrK,CAAAzmK,EAAAb,GALA,SAAAa,EAAA7E,GACA,OAAA6E,EAAAA,EAAA7E,EAIAurK,CAAA1mK,EAAAL,GAsBA,SAAAgnK,GAAA3mK,EAAA8gF,EAAA3hF,EAAAQ,EAAAP,GACA,OAnBA,SAAAY,EAAA7E,GACA,MAAA0oC,EAAA,EAAA7jC,EACA,OAAA6jC,EAAAA,EAAAA,EAAA1oC,EAiBAyrK,CAAA5mK,EAAA8gF,GAdA,SAAA9gF,EAAA7E,GACA,MAAA0oC,EAAA,EAAA7jC,EACA,OAAA,EAAA6jC,EAAAA,EAAA7jC,EAAA7E,EAYA0rK,CAAA7mK,EAAAb,GATA,SAAAa,EAAA7E,GACA,OAAA,GAAA,EAAA6E,GAAAA,EAAAA,EAAA7E,EAQA2rK,CAAA9mK,EAAAL,GALA,SAAAK,EAAA7E,GACA,OAAA6E,EAAAA,EAAAA,EAAA7E,EAIA4rK,CAAA/mK,EAAAZ,GApDA+mK,GAAArkK,UAAAklK,oBAAA,EAuDA,MAAAC,WAAAlE,GACAn3F,YAAAgV,EAAA,IAAA9R,GAAAW,EAAA,IAAAX,GAAAY,EAAA,IAAAZ,GAAAo4F,EAAA,IAAAp4F,IACAkF,QACAj7E,KAAAD,KAAA,mBACAC,KAAA6nF,GAAAA,EACA7nF,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EACA32E,KAAAmuK,GAAAA,EAGAt7F,SAAA5rE,EAAAijK,EAAA,IAAAn0F,IACA,MAAA3nB,EAAA87G,EACAriF,EAAA7nF,KAAA6nF,GACAnR,EAAA12E,KAAA02E,GACAC,EAAA32E,KAAA22E,GACAw3F,EAAAnuK,KAAAmuK,GAEA,OADA//G,EAAAnpC,IAAA2oJ,GAAA3mK,EAAA4gF,EAAArgF,EAAAkvE,EAAAlvE,EAAAmvE,EAAAnvE,EAAA2mK,EAAA3mK,GAAAomK,GAAA3mK,EAAA4gF,EAAAviF,EAAAoxE,EAAApxE,EAAAqxE,EAAArxE,EAAA6oK,EAAA7oK,IACA8oD,EAGAykB,KAAAjxC,GAMA,OALAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA6nF,GAAAh2E,KAAA+vB,EAAAimD,IACA7nF,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAAAmuK,GAAAt8J,KAAA+vB,EAAAusI,IACAnuK,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAKA,OAJApxF,EAAA6lF,GAAA7nF,KAAA6nF,GAAAn4E,UACA1N,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAAAmsK,GAAAnuK,KAAAmuK,GAAAz+J,UACA1N,EAGA6wE,SAAAmwF,GAMA,OALA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA6nF,GAAAlO,UAAAqpF,EAAAn7E,IACA7nF,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,KAAAmuK,GAAAx0F,UAAAqpF,EAAAmL,IACAnuK,MAKAkuK,GAAAnlK,UAAAqlK,oBAAA,EAEA,MAAAC,WAAArE,GACAn3F,YAAAgV,EAAA,IAAAjF,GAAAlM,EAAA,IAAAkM,GAAAjM,EAAA,IAAAiM,GAAAurF,EAAA,IAAAvrF,IACA3H,QACAj7E,KAAAD,KAAA,oBACAC,KAAA6nF,GAAAA,EACA7nF,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EACA32E,KAAAmuK,GAAAA,EAGAt7F,SAAA5rE,EAAAijK,EAAA,IAAAtnF,IACA,MAAAx0B,EAAA87G,EACAriF,EAAA7nF,KAAA6nF,GACAnR,EAAA12E,KAAA02E,GACAC,EAAA32E,KAAA22E,GACAw3F,EAAAnuK,KAAAmuK,GAEA,OADA//G,EAAAnpC,IAAA2oJ,GAAA3mK,EAAA4gF,EAAArgF,EAAAkvE,EAAAlvE,EAAAmvE,EAAAnvE,EAAA2mK,EAAA3mK,GAAAomK,GAAA3mK,EAAA4gF,EAAAviF,EAAAoxE,EAAApxE,EAAAqxE,EAAArxE,EAAA6oK,EAAA7oK,GAAAsoK,GAAA3mK,EAAA4gF,EAAA5oD,EAAAy3C,EAAAz3C,EAAA03C,EAAA13C,EAAAkvI,EAAAlvI,IACAmvB,EAGAykB,KAAAjxC,GAMA,OALAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA6nF,GAAAh2E,KAAA+vB,EAAAimD,IACA7nF,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAAAmuK,GAAAt8J,KAAA+vB,EAAAusI,IACAnuK,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAKA,OAJApxF,EAAA6lF,GAAA7nF,KAAA6nF,GAAAn4E,UACA1N,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAAAmsK,GAAAnuK,KAAAmuK,GAAAz+J,UACA1N,EAGA6wE,SAAAmwF,GAMA,OALA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA6nF,GAAAlO,UAAAqpF,EAAAn7E,IACA7nF,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,KAAAmuK,GAAAx0F,UAAAqpF,EAAAmL,IACAnuK,MAKAquK,GAAAtlK,UAAAulK,qBAAA,EAEA,MAAAC,WAAAvE,GACAn3F,YAAA6D,EAAA,IAAAX,GAAAY,EAAA,IAAAZ,IACAkF,QACAj7E,KAAAD,KAAA,YACAC,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EAGA9D,SAAA5rE,EAAAijK,EAAA,IAAAn0F,IACA,MAAA3nB,EAAA87G,EASA,OAPA,IAAAjjK,EACAmnD,EAAAv8C,KAAA7R,KAAA22E,KAEAvoB,EAAAv8C,KAAA7R,KAAA22E,IAAAgO,IAAA3kF,KAAA02E,IACAtoB,EAAAgoB,eAAAnvE,GAAAqW,IAAAtd,KAAA02E,KAGAtoB,EAIAykB,WAAAr4D,EAAA0vJ,GACA,OAAAlqK,KAAAoqK,SAAA5vJ,EAAA0vJ,GAGAr3F,WAAA5rE,EAAAijK,GACA,MAAAz/D,EAAAy/D,GAAA,IAAAn0F,GAEA,OADA00B,EAAA54F,KAAA7R,KAAA22E,IAAAgO,IAAA3kF,KAAA02E,IAAAzjD,YACAw3E,EAGA53B,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAGA,OAFApxF,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAGA6wE,SAAAmwF,GAIA,OAHA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,MAKAuuK,GAAAxlK,UAAAylK,aAAA,EAEA,MAAAC,WAAAzE,GACAn3F,YAAA6D,EAAA,IAAAkM,GAAAjM,EAAA,IAAAiM,IACA3H,QACAj7E,KAAAD,KAAA,aACAC,KAAA0uK,cAAA,EACA1uK,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EAGA9D,SAAA5rE,EAAAijK,EAAA,IAAAtnF,IACA,MAAAx0B,EAAA87G,EASA,OAPA,IAAAjjK,EACAmnD,EAAAv8C,KAAA7R,KAAA22E,KAEAvoB,EAAAv8C,KAAA7R,KAAA22E,IAAAgO,IAAA3kF,KAAA02E,IACAtoB,EAAAgoB,eAAAnvE,GAAAqW,IAAAtd,KAAA02E,KAGAtoB,EAIAykB,WAAAr4D,EAAA0vJ,GACA,OAAAlqK,KAAAoqK,SAAA5vJ,EAAA0vJ,GAGAr3F,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAGA,OAFApxF,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAGA6wE,SAAAmwF,GAIA,OAHA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,MAKA,MAAA2uK,WAAA3E,GACAn3F,YAAAgV,EAAA,IAAA9R,GAAAW,EAAA,IAAAX,GAAAY,EAAA,IAAAZ,IACAkF,QACAj7E,KAAAD,KAAA,uBACAC,KAAA6nF,GAAAA,EACA7nF,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EAGA9D,SAAA5rE,EAAAijK,EAAA,IAAAn0F,IACA,MAAA3nB,EAAA87G,EACAriF,EAAA7nF,KAAA6nF,GACAnR,EAAA12E,KAAA02E,GACAC,EAAA32E,KAAA22E,GAEA,OADAvoB,EAAAnpC,IAAAuoJ,GAAAvmK,EAAA4gF,EAAArgF,EAAAkvE,EAAAlvE,EAAAmvE,EAAAnvE,GAAAgmK,GAAAvmK,EAAA4gF,EAAAviF,EAAAoxE,EAAApxE,EAAAqxE,EAAArxE,IACA8oD,EAGAykB,KAAAjxC,GAKA,OAJAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA6nF,GAAAh2E,KAAA+vB,EAAAimD,IACA7nF,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAIA,OAHApxF,EAAA6lF,GAAA7nF,KAAA6nF,GAAAn4E,UACA1N,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAGA6wE,SAAAmwF,GAKA,OAJA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA6nF,GAAAlO,UAAAqpF,EAAAn7E,IACA7nF,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,MAKA2uK,GAAA5lK,UAAA6lK,wBAAA,EAEA,MAAAC,WAAA7E,GACAn3F,YAAAgV,EAAA,IAAAjF,GAAAlM,EAAA,IAAAkM,GAAAjM,EAAA,IAAAiM,IACA3H,QACAj7E,KAAAD,KAAA,wBACAC,KAAA6nF,GAAAA,EACA7nF,KAAA02E,GAAAA,EACA12E,KAAA22E,GAAAA,EAGA9D,SAAA5rE,EAAAijK,EAAA,IAAAtnF,IACA,MAAAx0B,EAAA87G,EACAriF,EAAA7nF,KAAA6nF,GACAnR,EAAA12E,KAAA02E,GACAC,EAAA32E,KAAA22E,GAEA,OADAvoB,EAAAnpC,IAAAuoJ,GAAAvmK,EAAA4gF,EAAArgF,EAAAkvE,EAAAlvE,EAAAmvE,EAAAnvE,GAAAgmK,GAAAvmK,EAAA4gF,EAAAviF,EAAAoxE,EAAApxE,EAAAqxE,EAAArxE,GAAAkoK,GAAAvmK,EAAA4gF,EAAA5oD,EAAAy3C,EAAAz3C,EAAA03C,EAAA13C,IACAmvB,EAGAykB,KAAAjxC,GAKA,OAJAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA6nF,GAAAh2E,KAAA+vB,EAAAimD,IACA7nF,KAAA02E,GAAA7kE,KAAA+vB,EAAA80C,IACA12E,KAAA22E,GAAA9kE,KAAA+vB,EAAA+0C,IACA32E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAIA,OAHApxF,EAAA6lF,GAAA7nF,KAAA6nF,GAAAn4E,UACA1N,EAAA00E,GAAA12E,KAAA02E,GAAAhnE,UACA1N,EAAA20E,GAAA32E,KAAA22E,GAAAjnE,UACA1N,EAGA6wE,SAAAmwF,GAKA,OAJA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAA6nF,GAAAlO,UAAAqpF,EAAAn7E,IACA7nF,KAAA02E,GAAAiD,UAAAqpF,EAAAtsF,IACA12E,KAAA22E,GAAAgD,UAAAqpF,EAAArsF,IACA32E,MAKA6uK,GAAA9lK,UAAA+lK,yBAAA,EAEA,MAAAC,WAAA/E,GACAn3F,YAAAtrE,EAAA,IACA0zE,QACAj7E,KAAAD,KAAA,cACAC,KAAAuH,OAAAA,EAGAsrE,SAAA5rE,EAAAijK,EAAA,IAAAn0F,IACA,MAAA3nB,EAAA87G,EACA3iK,EAAAvH,KAAAuH,OACAnF,GAAAmF,EAAAlH,OAAA,GAAA4G,EACAqmK,EAAApnK,KAAA4N,MAAA1R,GACAk1H,EAAAl1H,EAAAkrK,EACAvlF,EAAAxgF,EAAA,IAAA+lK,EAAAA,EAAAA,EAAA,GACAlnK,EAAAmB,EAAA+lK,GACA1mK,EAAAW,EAAA+lK,EAAA/lK,EAAAlH,OAAA,EAAAkH,EAAAlH,OAAA,EAAAitK,EAAA,GACAjnK,EAAAkB,EAAA+lK,EAAA/lK,EAAAlH,OAAA,EAAAkH,EAAAlH,OAAA,EAAAitK,EAAA,GAEA,OADAl/G,EAAAnpC,IAAAsoJ,GAAAj2C,EAAAvvC,EAAAvgF,EAAApB,EAAAoB,EAAAZ,EAAAY,EAAAnB,EAAAmB,GAAA+lK,GAAAj2C,EAAAvvC,EAAAziF,EAAAc,EAAAd,EAAAsB,EAAAtB,EAAAe,EAAAf,IACA8oD,EAGAykB,KAAAjxC,GACAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAuH,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAqxB,EAAAr6B,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAAxsB,EAAAr6B,OAAA5G,GACAX,KAAAuH,OAAA/G,KAAA4tD,EAAAswB,SAGA,OAAA1+E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SACApxF,EAAAuF,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAvQ,KAAAuH,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAApuD,KAAAuH,OAAA5G,GACAqB,EAAAuF,OAAA/G,KAAA4tD,EAAA1+C,WAGA,OAAA1N,EAGA6wE,SAAAmwF,GACA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAuH,OAAA,GAEA,IAAA,IAAA5G,EAAA,EAAA4P,EAAAyyJ,EAAAz7J,OAAAlH,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAytD,EAAA40G,EAAAz7J,OAAA5G,GACAX,KAAAuH,OAAA/G,MAAA,IAAAu1E,IAAA4D,UAAAvrB,IAGA,OAAApuD,MAKA+uK,GAAAhmK,UAAAimK,eAAA,EAEA,IAAAC,GAAAvmK,OAAAsrE,OAAA,CACA9qE,UAAA,KACAmjK,SAAAA,GACAe,iBAAAA,GACAc,iBAAAA,GACAG,kBAAAA,GACA9C,aAAAA,GACAgD,UAAAA,GACAE,WAAAA,GACAE,qBAAAA,GACAE,sBAAAA,GACAE,YAAAA,KAMA,MAAAG,GACA,SAAAltK,EAAAmtK,EAAAC,EAAA,GACA,MAAAC,EAAAF,GAAAA,EAAA9uK,OACAivK,EAAAD,EAAAF,EAAA,GAAAC,EAAAptK,EAAA3B,OACA,IAAAkvK,EAAAC,GAAAxtK,EAAA,EAAAstK,EAAAF,GAAA,GACA,MAAA11C,EAAA,GACA,IAAA61C,GAAAA,EAAAvoK,OAAAuoK,EAAAroK,KAAA,OAAAwyH,EACA,IAAA15D,EAAAE,EAAAD,EAAAE,EAAA34D,EAAAlC,EAAAmqK,EAGA,GAFAJ,IAAAE,EA0NA,SAAAvtK,EAAAmtK,EAAAI,EAAAH,GACA,MAAAM,EAAA,GACA,IAAA/uK,EAAAmvC,EAAArpC,EAAAC,EAAAvG,EAEA,IAAAQ,EAAA,EAAAmvC,EAAAq/H,EAAA9uK,OAAAM,EAAAmvC,EAAAnvC,IACA8F,EAAA0oK,EAAAxuK,GAAAyuK,EACA1oK,EAAA/F,EAAAmvC,EAAA,EAAAq/H,EAAAxuK,EAAA,GAAAyuK,EAAAptK,EAAA3B,OACAF,EAAAqvK,GAAAxtK,EAAAyE,EAAAC,EAAA0oK,GAAA,GACAjvK,IAAAA,EAAA6G,OAAA7G,EAAAwvK,SAAA,GACAD,EAAAlvK,KAAAovK,GAAAzvK,IAKA,IAFAuvK,EAAArnK,KAAAwnK,IAEAlvK,EAAA,EAAAA,EAAA+uK,EAAArvK,OAAAM,IACAmvK,GAAAJ,EAAA/uK,GAAA4uK,GACAA,EAAAQ,GAAAR,EAAAA,EAAAvoK,MAGA,OAAAuoK,EA7OAS,CAAAhuK,EAAAmtK,EAAAI,EAAAH,IAEAptK,EAAA3B,OAAA,GAAA+uK,EAAA,CACApvG,EAAAC,EAAAj+D,EAAA,GACAk+D,EAAAC,EAAAn+D,EAAA,GAEA,IAAA,IAAArB,EAAAyuK,EAAAzuK,EAAA2uK,EAAA3uK,GAAAyuK,EACA5nK,EAAAxF,EAAArB,GACA2E,EAAAtD,EAAArB,EAAA,GACA6G,EAAAw4D,IAAAA,EAAAx4D,GACAlC,EAAA46D,IAAAA,EAAA56D,GACAkC,EAAAy4D,IAAAA,EAAAz4D,GACAlC,EAAA66D,IAAAA,EAAA76D,GAIAmqK,EAAAvpK,KAAAiS,IAAA8nD,EAAAD,EAAAG,EAAAD,GACAuvG,EAAA,IAAAA,EAAA,EAAAA,EAAA,EAIA,OADAQ,GAAAV,EAAA71C,EAAA01C,EAAApvG,EAAAE,EAAAuvG,GACA/1C,GAIA,SAAA81C,GAAAxtK,EAAAyE,EAAAC,EAAA0oK,EAAAc,GACA,IAAAvvK,EAAAswB,EAEA,GAAAi/I,IAshBA,SAAAluK,EAAAyE,EAAAC,EAAA0oK,GACA,IAAA/3C,EAAA,EAEA,IAAA,IAAA12H,EAAA8F,EAAAwT,EAAAvT,EAAA0oK,EAAAzuK,EAAA+F,EAAA/F,GAAAyuK,EACA/3C,IAAAr1H,EAAAiY,GAAAjY,EAAArB,KAAAqB,EAAArB,EAAA,GAAAqB,EAAAiY,EAAA,IACAA,EAAAtZ,EAGA,OAAA02H,EA9hBA84C,CAAAnuK,EAAAyE,EAAAC,EAAA0oK,GAAA,EACA,IAAAzuK,EAAA8F,EAAA9F,EAAA+F,EAAA/F,GAAAyuK,EAAAn+I,EAAAm/I,GAAAzvK,EAAAqB,EAAArB,GAAAqB,EAAArB,EAAA,GAAAswB,QAEA,IAAAtwB,EAAA+F,EAAA0oK,EAAAzuK,GAAA8F,EAAA9F,GAAAyuK,EAAAn+I,EAAAm/I,GAAAzvK,EAAAqB,EAAArB,GAAAqB,EAAArB,EAAA,GAAAswB,GAQA,OALAA,GAAAy2D,GAAAz2D,EAAAA,EAAAjqB,QACAqpK,GAAAp/I,GACAA,EAAAA,EAAAjqB,MAGAiqB,EAIA,SAAA8+I,GAAAtpK,EAAAC,GACA,IAAAD,EAAA,OAAAA,EACAC,IAAAA,EAAAD,GACA,IACA6pK,EADAluK,EAAAqE,EAGA,GAGA,GAFA6pK,GAAA,EAEAluK,EAAAutK,UAAAjoF,GAAAtlF,EAAAA,EAAA4E,OAAA,IAAAupK,GAAAnuK,EAAA8E,KAAA9E,EAAAA,EAAA4E,MAMA5E,EAAAA,EAAA4E,SANA,CAGA,GAFAqpK,GAAAjuK,GACAA,EAAAsE,EAAAtE,EAAA8E,KACA9E,IAAAA,EAAA4E,KAAA,MACAspK,GAAA,SAIAA,GAAAluK,IAAAsE,GAEA,OAAAA,EAIA,SAAAupK,GAAAO,EAAA92C,EAAA01C,EAAApvG,EAAAE,EAAAuvG,EAAAgB,GACA,IAAAD,EAAA,QAEAC,GAAAhB,GA0PA,SAAAhpK,EAAAu5D,EAAAE,EAAAuvG,GACA,IAAArtK,EAAAqE,EAEA,GACA,OAAArE,EAAA68B,IAAA78B,EAAA68B,EAAAyxI,GAAAtuK,EAAAoF,EAAApF,EAAAkD,EAAA06D,EAAAE,EAAAuvG,IACArtK,EAAAuuK,MAAAvuK,EAAA8E,KACA9E,EAAAwuK,MAAAxuK,EAAA4E,KACA5E,EAAAA,EAAA4E,WACA5E,IAAAqE,GAEArE,EAAAuuK,MAAAC,MAAA,KACAxuK,EAAAuuK,MAAA,KAMA,SAAAxwK,GACA,IAAAQ,EACAyB,EACAkzE,EACAzoD,EACAgkJ,EACAC,EACAC,EACAC,EACAC,EAAA,EAEA,EAAA,CAMA,IALA7uK,EAAAjC,EACAA,EAAA,KACA0wK,EAAA,KACAC,EAAA,EAEA1uK,GAAA,CAKA,IAJA0uK,IACAx7F,EAAAlzE,EACA2uK,EAAA,EAEApwK,EAAA,EAAAA,EAAAswK,IACAF,IACAz7F,EAAAA,EAAAs7F,MACAt7F,GAHA30E,KAQA,IAFAqwK,EAAAC,EAEAF,EAAA,GAAAC,EAAA,GAAA17F,GACA,IAAAy7F,IAAA,IAAAC,IAAA17F,GAAAlzE,EAAA68B,GAAAq2C,EAAAr2C,IACApS,EAAAzqB,EACAA,EAAAA,EAAAwuK,MACAG,MAEAlkJ,EAAAyoD,EACAA,EAAAA,EAAAs7F,MACAI,KAGAH,EAAAA,EAAAD,MAAA/jJ,EAAA1sB,EAAA0sB,EACAA,EAAA8jJ,MAAAE,EACAA,EAAAhkJ,EAGAzqB,EAAAkzE,EAGAu7F,EAAAD,MAAA,KACAK,GAAA,QACAH,EAAA,GAxDAI,CAAA9uK,GAtQA+uK,CAAAX,EAAAxwG,EAAAE,EAAAuvG,GACA,IACAvoK,EACAF,EAFA4xD,EAAA43G,EAIA,KAAAA,EAAAtpK,OAAAspK,EAAAxpK,MAIA,GAHAE,EAAAspK,EAAAtpK,KACAF,EAAAwpK,EAAAxpK,KAEAyoK,EAAA2B,GAAAZ,EAAAxwG,EAAAE,EAAAuvG,GAAA4B,GAAAb,GAEA92C,EAAAl5H,KAAA0G,EAAAvG,EAAAyuK,GACA11C,EAAAl5H,KAAAgwK,EAAA7vK,EAAAyuK,GACA11C,EAAAl5H,KAAAwG,EAAArG,EAAAyuK,GACAiB,GAAAG,GAEAA,EAAAxpK,EAAAA,KACA4xD,EAAA5xD,EAAAA,UAMA,IAFAwpK,EAAAxpK,KAEA4xD,EAAA,CAEA63G,EAEA,IAAAA,EAEAR,GADAO,EAAAc,GAAAvB,GAAAS,GAAA92C,EAAA01C,GACA11C,EAAA01C,EAAApvG,EAAAE,EAAAuvG,EAAA,GACA,IAAAgB,GACAc,GAAAf,EAAA92C,EAAA01C,EAAApvG,EAAAE,EAAAuvG,GALAQ,GAAAF,GAAAS,GAAA92C,EAAA01C,EAAApvG,EAAAE,EAAAuvG,EAAA,GAQA,OAMA,SAAA4B,GAAAb,GACA,MAAA1oK,EAAA0oK,EAAAtpK,KACAoB,EAAAkoK,EACArpK,EAAAqpK,EAAAxpK,KACA,GAAAupK,GAAAzoK,EAAAQ,EAAAnB,IAAA,EAAA,OAAA,EAGA,IAAA/E,EAAAouK,EAAAxpK,KAAAA,KAEA,KAAA5E,IAAAouK,EAAAtpK,MAAA,CACA,GAAAsqK,GAAA1pK,EAAAN,EAAAM,EAAAxC,EAAAgD,EAAAd,EAAAc,EAAAhD,EAAA6B,EAAAK,EAAAL,EAAA7B,EAAAlD,EAAAoF,EAAApF,EAAAkD,IAAAirK,GAAAnuK,EAAA8E,KAAA9E,EAAAA,EAAA4E,OAAA,EAAA,OAAA,EACA5E,EAAAA,EAAA4E,KAGA,OAAA,EAGA,SAAAoqK,GAAAZ,EAAAxwG,EAAAE,EAAAuvG,GACA,MAAA3nK,EAAA0oK,EAAAtpK,KACAoB,EAAAkoK,EACArpK,EAAAqpK,EAAAxpK,KACA,GAAAupK,GAAAzoK,EAAAQ,EAAAnB,IAAA,EAAA,OAAA,EAGA,MAAAsqK,EAAA3pK,EAAAN,EAAAc,EAAAd,EAAAM,EAAAN,EAAAL,EAAAK,EAAAM,EAAAN,EAAAL,EAAAK,EAAAc,EAAAd,EAAAL,EAAAK,EAAAc,EAAAd,EAAAL,EAAAK,EACAkqK,EAAA5pK,EAAAxC,EAAAgD,EAAAhD,EAAAwC,EAAAxC,EAAA6B,EAAA7B,EAAAwC,EAAAxC,EAAA6B,EAAA7B,EAAAgD,EAAAhD,EAAA6B,EAAA7B,EAAAgD,EAAAhD,EAAA6B,EAAA7B,EACAqsK,EAAA7pK,EAAAN,EAAAc,EAAAd,EAAAM,EAAAN,EAAAL,EAAAK,EAAAM,EAAAN,EAAAL,EAAAK,EAAAc,EAAAd,EAAAL,EAAAK,EAAAc,EAAAd,EAAAL,EAAAK,EACAoqK,EAAA9pK,EAAAxC,EAAAgD,EAAAhD,EAAAwC,EAAAxC,EAAA6B,EAAA7B,EAAAwC,EAAAxC,EAAA6B,EAAA7B,EAAAgD,EAAAhD,EAAA6B,EAAA7B,EAAAgD,EAAAhD,EAAA6B,EAAA7B,EAEAggF,EAAAorF,GAAAe,EAAAC,EAAA1xG,EAAAE,EAAAuvG,GACAlqF,EAAAmrF,GAAAiB,EAAAC,EAAA5xG,EAAAE,EAAAuvG,GACA,IAAArtK,EAAAouK,EAAAG,MACA9lK,EAAA2lK,EAAAI,MAEA,KAAAxuK,GAAAA,EAAA68B,GAAAqmD,GAAAz6E,GAAAA,EAAAo0B,GAAAsmD,GAAA,CACA,GAAAnjF,IAAAouK,EAAAtpK,MAAA9E,IAAAouK,EAAAxpK,MAAAwqK,GAAA1pK,EAAAN,EAAAM,EAAAxC,EAAAgD,EAAAd,EAAAc,EAAAhD,EAAA6B,EAAAK,EAAAL,EAAA7B,EAAAlD,EAAAoF,EAAApF,EAAAkD,IAAAirK,GAAAnuK,EAAA8E,KAAA9E,EAAAA,EAAA4E,OAAA,EAAA,OAAA,EAEA,GADA5E,EAAAA,EAAAuuK,MACA9lK,IAAA2lK,EAAAtpK,MAAA2D,IAAA2lK,EAAAxpK,MAAAwqK,GAAA1pK,EAAAN,EAAAM,EAAAxC,EAAAgD,EAAAd,EAAAc,EAAAhD,EAAA6B,EAAAK,EAAAL,EAAA7B,EAAAuF,EAAArD,EAAAqD,EAAAvF,IAAAirK,GAAA1lK,EAAA3D,KAAA2D,EAAAA,EAAA7D,OAAA,EAAA,OAAA,EACA6D,EAAAA,EAAA+lK,MAIA,KAAAxuK,GAAAA,EAAA68B,GAAAqmD,GAAA,CACA,GAAAljF,IAAAouK,EAAAtpK,MAAA9E,IAAAouK,EAAAxpK,MAAAwqK,GAAA1pK,EAAAN,EAAAM,EAAAxC,EAAAgD,EAAAd,EAAAc,EAAAhD,EAAA6B,EAAAK,EAAAL,EAAA7B,EAAAlD,EAAAoF,EAAApF,EAAAkD,IAAAirK,GAAAnuK,EAAA8E,KAAA9E,EAAAA,EAAA4E,OAAA,EAAA,OAAA,EACA5E,EAAAA,EAAAuuK,MAIA,KAAA9lK,GAAAA,EAAAo0B,GAAAsmD,GAAA,CACA,GAAA16E,IAAA2lK,EAAAtpK,MAAA2D,IAAA2lK,EAAAxpK,MAAAwqK,GAAA1pK,EAAAN,EAAAM,EAAAxC,EAAAgD,EAAAd,EAAAc,EAAAhD,EAAA6B,EAAAK,EAAAL,EAAA7B,EAAAuF,EAAArD,EAAAqD,EAAAvF,IAAAirK,GAAA1lK,EAAA3D,KAAA2D,EAAAA,EAAA7D,OAAA,EAAA,OAAA,EACA6D,EAAAA,EAAA+lK,MAGA,OAAA,EAIA,SAAAU,GAAA7qK,EAAAizH,EAAA01C,GACA,IAAAhtK,EAAAqE,EAEA,EAAA,CACA,MAAAqB,EAAA1F,EAAA8E,KACAoB,EAAAlG,EAAA4E,KAAAA,MAEA0gF,GAAA5/E,EAAAQ,IAAAwnG,GAAAhoG,EAAA1F,EAAAA,EAAA4E,KAAAsB,IAAAupK,GAAA/pK,EAAAQ,IAAAupK,GAAAvpK,EAAAR,KACA4xH,EAAAl5H,KAAAsH,EAAAnH,EAAAyuK,GACA11C,EAAAl5H,KAAA4B,EAAAzB,EAAAyuK,GACA11C,EAAAl5H,KAAA8H,EAAA3H,EAAAyuK,GAEAiB,GAAAjuK,GACAiuK,GAAAjuK,EAAA4E,MACA5E,EAAAqE,EAAA6B,GAGAlG,EAAAA,EAAA4E,WACA5E,IAAAqE,GAEA,OAAAspK,GAAA3tK,GAIA,SAAAmvK,GAAA9qK,EAAAizH,EAAA01C,EAAApvG,EAAAE,EAAAuvG,GAEA,IAAA3nK,EAAArB,EAEA,EAAA,CACA,IAAA6B,EAAAR,EAAAd,KAAAA,KAEA,KAAAsB,IAAAR,EAAAZ,MAAA,CACA,GAAAY,EAAAnH,IAAA2H,EAAA3H,GAAAmxK,GAAAhqK,EAAAQ,GAAA,CAEA,IAAAnB,EAAA4qK,GAAAjqK,EAAAQ,GAOA,OALAR,EAAAioK,GAAAjoK,EAAAA,EAAAd,MACAG,EAAA4oK,GAAA5oK,EAAAA,EAAAH,MAEAipK,GAAAnoK,EAAA4xH,EAAA01C,EAAApvG,EAAAE,EAAAuvG,QACAQ,GAAA9oK,EAAAuyH,EAAA01C,EAAApvG,EAAAE,EAAAuvG,GAIAnnK,EAAAA,EAAAtB,KAGAc,EAAAA,EAAAd,WACAc,IAAArB,GA0BA,SAAAopK,GAAA/nK,EAAAQ,GACA,OAAAR,EAAAN,EAAAc,EAAAd,EAIA,SAAAsoK,GAAAkC,EAAAzC,GAGA,GAFAA,EAWA,SAAAyC,EAAAzC,GACA,IAAAntK,EAAAmtK,EACA,MAAA0C,EAAAD,EAAAxqK,EACA0qK,EAAAF,EAAA1sK,EACA,IACAwnB,EADAo2D,GAAA/9D,EAAAA,EAIA,EAAA,CACA,GAAA+sJ,GAAA9vK,EAAAkD,GAAA4sK,GAAA9vK,EAAA4E,KAAA1B,GAAAlD,EAAA4E,KAAA1B,IAAAlD,EAAAkD,EAAA,CACA,MAAAkC,EAAApF,EAAAoF,GAAA0qK,EAAA9vK,EAAAkD,IAAAlD,EAAA4E,KAAAQ,EAAApF,EAAAoF,IAAApF,EAAA4E,KAAA1B,EAAAlD,EAAAkD,GAEA,GAAAkC,GAAAyqK,GAAAzqK,EAAA07E,EAAA,CAGA,GAFAA,EAAA17E,EAEAA,IAAAyqK,EAAA,CACA,GAAAC,IAAA9vK,EAAAkD,EAAA,OAAAlD,EACA,GAAA8vK,IAAA9vK,EAAA4E,KAAA1B,EAAA,OAAAlD,EAAA4E,KAGA8lB,EAAA1qB,EAAAoF,EAAApF,EAAA4E,KAAAQ,EAAApF,EAAAA,EAAA4E,MAIA5E,EAAAA,EAAA4E,WACA5E,IAAAmtK,GAEA,IAAAziJ,EAAA,OAAA,KACA,GAAAmlJ,IAAA/uF,EAAA,OAAAp2D,EAKA,MAAA8rC,EAAA9rC,EACAqlJ,EAAArlJ,EAAAtlB,EACA4qK,EAAAtlJ,EAAAxnB,EACA,IACAg8B,EADA+wI,EAAAltJ,EAAAA,EAEA/iB,EAAA0qB,EAEA,GACAmlJ,GAAA7vK,EAAAoF,GAAApF,EAAAoF,GAAA2qK,GAAAF,IAAA7vK,EAAAoF,GAAAgqK,GAAAU,EAAAE,EAAAH,EAAA/uF,EAAAgvF,EAAAC,EAAAC,EAAAF,EAAAE,EAAAlvF,EAAA+uF,EAAAC,EAAA9vK,EAAAoF,EAAApF,EAAAkD,KACAg8B,EAAAp7B,KAAAiO,IAAA+9J,EAAA9vK,EAAAkD,IAAA2sK,EAAA7vK,EAAAoF,GAEAqqK,GAAAzvK,EAAA4vK,KAAA1wI,EAAA+wI,GAAA/wI,IAAA+wI,IAAAjwK,EAAAoF,EAAAslB,EAAAtlB,GAAApF,EAAAoF,IAAAslB,EAAAtlB,GAAA8qK,GAAAxlJ,EAAA1qB,OACA0qB,EAAA1qB,EACAiwK,EAAA/wI,IAIAl/B,EAAAA,EAAA4E,WACA5E,IAAAw2D,GAEA,OAAA9rC,EAhEAylJ,CAAAP,EAAAzC,GAEA,CACA,MAAAjnK,EAAAypK,GAAAxC,EAAAyC,GAEAjC,GAAAR,EAAAA,EAAAvoK,MACA+oK,GAAAznK,EAAAA,EAAAtB,OA8DA,SAAAsrK,GAAAxlJ,EAAA1qB,GACA,OAAAmuK,GAAAzjJ,EAAA5lB,KAAA4lB,EAAA1qB,EAAA8E,MAAA,GAAAqpK,GAAAnuK,EAAA4E,KAAA8lB,EAAAA,EAAA9lB,MAAA,EA8EA,SAAA0pK,GAAAlpK,EAAAlC,EAAA06D,EAAAE,EAAAuvG,GAYA,OALAjoK,EAAA,aADAA,EAAA,YADAA,EAAA,YADAA,EAAA,WAFAA,EAAA,OAAAA,EAAAw4D,GAAAyvG,GAEAjoK,GAAA,IACAA,GAAA,IACAA,GAAA,IACAA,GAAA,KAIAlC,EAAA,aADAA,EAAA,YADAA,EAAA,YADAA,EAAA,WALAA,EAAA,OAAAA,EAAA46D,GAAAuvG,GAKAnqK,GAAA,IACAA,GAAA,IACAA,GAAA,IACAA,GAAA,KACA,EAIA,SAAAsqK,GAAAnpK,GACA,IAAArE,EAAAqE,EACA+rK,EAAA/rK,EAEA,IACArE,EAAAoF,EAAAgrK,EAAAhrK,GAAApF,EAAAoF,IAAAgrK,EAAAhrK,GAAApF,EAAAkD,EAAAktK,EAAAltK,KAAAktK,EAAApwK,GACAA,EAAAA,EAAA4E,WACA5E,IAAAqE,GAEA,OAAA+rK,EAIA,SAAAhB,GAAAvtF,EAAAC,EAAAE,EAAAzf,EAAA6U,EAAAC,EAAAr+C,EAAA8xI,GACA,OAAA1zF,EAAAp+C,IAAA8oD,EAAAgpF,IAAAjpF,EAAA7oD,IAAAq+C,EAAAyzF,IAAA,IAAAjpF,EAAA7oD,IAAAupC,EAAAuoG,IAAA9oF,EAAAhpD,IAAA8oD,EAAAgpF,IAAA,IAAA9oF,EAAAhpD,IAAAq+C,EAAAyzF,IAAA1zF,EAAAp+C,IAAAupC,EAAAuoG,IAAA,EAIA,SAAA4E,GAAAhqK,EAAAQ,GACA,OAAAR,EAAAd,KAAArG,IAAA2H,EAAA3H,GAAAmH,EAAAZ,KAAAvG,IAAA2H,EAAA3H,IA2CA,SAAAmH,EAAAQ,GACA,IAAAlG,EAAA0F,EAEA,EAAA,CACA,GAAA1F,EAAAzB,IAAAmH,EAAAnH,GAAAyB,EAAA4E,KAAArG,IAAAmH,EAAAnH,GAAAyB,EAAAzB,IAAA2H,EAAA3H,GAAAyB,EAAA4E,KAAArG,IAAA2H,EAAA3H,GAAAmvG,GAAA1tG,EAAAA,EAAA4E,KAAAc,EAAAQ,GAAA,OAAA,EACAlG,EAAAA,EAAA4E,WACA5E,IAAA0F,GAEA,OAAA,EAnDA2qK,CAAA3qK,EAAAQ,KAAAupK,GAAA/pK,EAAAQ,IAAAupK,GAAAvpK,EAAAR,IA4DA,SAAAA,EAAAQ,GACA,IAAAlG,EAAA0F,EACA4qK,GAAA,EACA,MAAAt3I,GAAAtzB,EAAAN,EAAAc,EAAAd,GAAA,EACA0lK,GAAAplK,EAAAxC,EAAAgD,EAAAhD,GAAA,EAEA,GACAlD,EAAAkD,EAAA4nK,GAAA9qK,EAAA4E,KAAA1B,EAAA4nK,GAAA9qK,EAAA4E,KAAA1B,IAAAlD,EAAAkD,GAAA81B,GAAAh5B,EAAA4E,KAAAQ,EAAApF,EAAAoF,IAAA0lK,EAAA9qK,EAAAkD,IAAAlD,EAAA4E,KAAA1B,EAAAlD,EAAAkD,GAAAlD,EAAAoF,IAAAkrK,GAAAA,GACAtwK,EAAAA,EAAA4E,WACA5E,IAAA0F,GAEA,OAAA4qK,EAvEAC,CAAA7qK,EAAAQ,KAAAioK,GAAAzoK,EAAAZ,KAAAY,EAAAQ,EAAApB,OAAAqpK,GAAAzoK,EAAAQ,EAAApB,KAAAoB,KACAo/E,GAAA5/E,EAAAQ,IAAAioK,GAAAzoK,EAAAZ,KAAAY,EAAAA,EAAAd,MAAA,GAAAupK,GAAAjoK,EAAApB,KAAAoB,EAAAA,EAAAtB,MAAA,GAIA,SAAAupK,GAAAnuK,EAAAkzE,EAAA/uE,GACA,OAAA+uE,EAAAhwE,EAAAlD,EAAAkD,IAAAiB,EAAAiB,EAAA8tE,EAAA9tE,IAAA8tE,EAAA9tE,EAAApF,EAAAoF,IAAAjB,EAAAjB,EAAAgwE,EAAAhwE,GAIA,SAAAoiF,GAAAthF,EAAAQ,GACA,OAAAR,EAAAoB,IAAAZ,EAAAY,GAAApB,EAAAd,IAAAsB,EAAAtB,EAIA,SAAAwqG,GAAA1pG,EAAAwsK,EAAAhsK,EAAAisK,GACA,MAAAC,EAAAz6G,GAAAk4G,GAAAnqK,EAAAwsK,EAAAhsK,IACAmsK,EAAA16G,GAAAk4G,GAAAnqK,EAAAwsK,EAAAC,IACAG,EAAA36G,GAAAk4G,GAAA3pK,EAAAisK,EAAAzsK,IACA6sK,EAAA56G,GAAAk4G,GAAA3pK,EAAAisK,EAAAD,IACA,OAAAE,IAAAC,GAAAC,IAAAC,MAEA,IAAAH,IAAAI,GAAA9sK,EAAAQ,EAAAgsK,QAEA,IAAAG,IAAAG,GAAA9sK,EAAAysK,EAAAD,QAEA,IAAAI,IAAAE,GAAAtsK,EAAAR,EAAAysK,OAEA,IAAAI,IAAAC,GAAAtsK,EAAAgsK,EAAAC,OAMA,SAAAK,GAAA9wK,EAAAkzE,EAAA/uE,GACA,OAAA+uE,EAAA9tE,GAAAtB,KAAAiS,IAAA/V,EAAAoF,EAAAjB,EAAAiB,IAAA8tE,EAAA9tE,GAAAtB,KAAAC,IAAA/D,EAAAoF,EAAAjB,EAAAiB,IAAA8tE,EAAAhwE,GAAAY,KAAAiS,IAAA/V,EAAAkD,EAAAiB,EAAAjB,IAAAgwE,EAAAhwE,GAAAY,KAAAC,IAAA/D,EAAAkD,EAAAiB,EAAAjB,GAGA,SAAA+yD,GAAA86G,GACA,OAAAA,EAAA,EAAA,EAAAA,EAAA,GAAA,EAAA,EAgBA,SAAAtB,GAAA/pK,EAAAQ,GACA,OAAAioK,GAAAzoK,EAAAZ,KAAAY,EAAAA,EAAAd,MAAA,EAAAupK,GAAAzoK,EAAAQ,EAAAR,EAAAd,OAAA,GAAAupK,GAAAzoK,EAAAA,EAAAZ,KAAAoB,IAAA,EAAAioK,GAAAzoK,EAAAQ,EAAAR,EAAAZ,MAAA,GAAAqpK,GAAAzoK,EAAAA,EAAAd,KAAAsB,GAAA,EAoBA,SAAAypK,GAAAjqK,EAAAQ,GACA,MAAA2nB,EAAA,IAAAmjJ,GAAAtrK,EAAAnH,EAAAmH,EAAAN,EAAAM,EAAAxC,GACA6uE,EAAA,IAAAi/F,GAAA9qK,EAAA3H,EAAA2H,EAAAd,EAAAc,EAAAhD,GACA+tK,EAAAvrK,EAAAd,KACAssK,EAAAhrK,EAAApB,KASA,OARAY,EAAAd,KAAAsB,EACAA,EAAApB,KAAAY,EACAmoB,EAAAjpB,KAAAqsK,EACAA,EAAAnsK,KAAA+oB,EACAkkD,EAAAntE,KAAAipB,EACAA,EAAA/oB,KAAAitE,EACAm/F,EAAAtsK,KAAAmtE,EACAA,EAAAjtE,KAAAosK,EACAn/F,EAIA,SAAAi8F,GAAAzvK,EAAA6G,EAAAlC,EAAA2rB,GACA,MAAA7uB,EAAA,IAAAgxK,GAAAzyK,EAAA6G,EAAAlC,GAYA,OAVA2rB,GAIA7uB,EAAA4E,KAAAiqB,EAAAjqB,KACA5E,EAAA8E,KAAA+pB,EACAA,EAAAjqB,KAAAE,KAAA9E,EACA6uB,EAAAjqB,KAAA5E,IANAA,EAAA8E,KAAA9E,EACAA,EAAA4E,KAAA5E,GAQAA,EAGA,SAAAiuK,GAAAjuK,GACAA,EAAA4E,KAAAE,KAAA9E,EAAA8E,KACA9E,EAAA8E,KAAAF,KAAA5E,EAAA4E,KACA5E,EAAAuuK,QAAAvuK,EAAAuuK,MAAAC,MAAAxuK,EAAAwuK,OACAxuK,EAAAwuK,QAAAxuK,EAAAwuK,MAAAD,MAAAvuK,EAAAuuK,OAGA,SAAAyC,GAAAzyK,EAAA6G,EAAAlC,GAEAtF,KAAAW,EAAAA,EAEAX,KAAAwH,EAAAA,EACAxH,KAAAsF,EAAAA,EAEAtF,KAAAkH,KAAA,KACAlH,KAAAgH,KAAA,KAEAhH,KAAAi/B,EAAA,KAEAj/B,KAAA2wK,MAAA,KACA3wK,KAAA4wK,MAAA,KAEA5wK,KAAA2vK,SAAA,EAcA,MAAA4D,GAEA1gG,YAAA2gG,GACA,MAAA3oK,EAAA2oK,EAAAnzK,OACA,IAAAyH,EAAA,EAEA,IAAA,IAAA1F,EAAAyI,EAAA,EAAAyqE,EAAA,EAAAA,EAAAzqE,EAAAzI,EAAAkzE,IACAxtE,GAAA0rK,EAAApxK,GAAAoF,EAAAgsK,EAAAl+F,GAAAhwE,EAAAkuK,EAAAl+F,GAAA9tE,EAAAgsK,EAAApxK,GAAAkD,EAGA,MAAA,GAAAwC,EAGA+qE,mBAAA4gG,GACA,OAAAF,GAAAhD,KAAAkD,GAAA,EAGA5gG,wBAAA2gG,EAAAE,GACA,MAAAziE,EAAA,GAEAk+D,EAAA,GAEAwE,EAAA,GAEAC,GAAAJ,GACAK,GAAA5iE,EAAAuiE,GAEA,IAAAM,EAAAN,EAAAnzK,OACAqzK,EAAA1jK,QAAA4jK,IAEA,IAAA,IAAAjzK,EAAA,EAAAA,EAAA+yK,EAAArzK,OAAAM,IACAwuK,EAAA3uK,KAAAszK,GACAA,GAAAJ,EAAA/yK,GAAAN,OACAwzK,GAAA5iE,EAAAyiE,EAAA/yK,IAIA,MAAA+4H,EAAAw1C,GAAAj+D,EAAAk+D,GAEA,IAAA,IAAAxuK,EAAA,EAAAA,EAAA+4H,EAAAr5H,OAAAM,GAAA,EACAgzK,EAAAnzK,KAAAk5H,EAAAhpH,MAAA/P,EAAAA,EAAA,IAGA,OAAAgzK,GAKA,SAAAC,GAAArsK,GACA,MAAAgJ,EAAAhJ,EAAAlH,OAEAkQ,EAAA,GAAAhJ,EAAAgJ,EAAA,GAAAm3E,OAAAngF,EAAA,KACAA,EAAAq0C,MAIA,SAAAi4H,GAAA5iE,EAAAuiE,GACA,IAAA,IAAA7yK,EAAA,EAAAA,EAAA6yK,EAAAnzK,OAAAM,IACAswG,EAAAzwG,KAAAgzK,EAAA7yK,GAAA6G,GACAypG,EAAAzwG,KAAAgzK,EAAA7yK,GAAA2E,GA0BA,MAAAyuK,WAAA9pE,GACAp3B,YAAAmgB,EAAA3+C,GACA4mC,QACAj7E,KAAAD,KAAA,kBACAC,KAAA8zF,WAAA,CACAd,OAAAA,EACA3+C,QAAAA,GAEA2+C,EAAA9lF,MAAAhM,QAAA8xF,GAAAA,EAAA,CAAAA,GACA,MAAAnlF,EAAA7N,KACAg0K,EAAA,GACAva,EAAA,GAEA,IAAA,IAAA94J,EAAA,EAAA4P,EAAAyiF,EAAA3yF,OAAAM,EAAA4P,EAAA5P,IAAA,CAEAszK,EADAjhF,EAAAryF,IASA,SAAAszK,EAAAlgF,GACA,MAAAmgF,EAAA,GAEAC,OAAA/sI,IAAAiN,EAAA8/H,cAAA9/H,EAAA8/H,cAAA,GACApvJ,OAAAqiB,IAAAiN,EAAAtvB,MAAAsvB,EAAAtvB,MAAA,EACA,IAAA4mD,OAAAvkC,IAAAiN,EAAAs3B,MAAAt3B,EAAAs3B,MAAA,IACAyoG,OAAAhtI,IAAAiN,EAAA+/H,cAAA//H,EAAA+/H,aACAC,OAAAjtI,IAAAiN,EAAAggI,eAAAhgI,EAAAggI,eAAA,EACAC,OAAAltI,IAAAiN,EAAAigI,UAAAjgI,EAAAigI,UAAAD,EAAA,EACAE,OAAAntI,IAAAiN,EAAAkgI,YAAAlgI,EAAAkgI,YAAA,EACAC,OAAAptI,IAAAiN,EAAAmgI,cAAAngI,EAAAmgI,cAAA,EACA,MAAAC,EAAApgI,EAAAogI,YACAC,OAAAttI,IAAAiN,EAAAsgI,YAAAtgI,EAAAsgI,YAAAC,QAEAxtI,IAAAiN,EAAA95B,SACAtM,QAAAC,KAAA,kEACAy9D,EAAAt3B,EAAA95B,QAIA,IAAAs6J,EAEAC,EAAAC,EAAAnwF,EAAAowF,EADAC,GAAA,EAGAR,IACAI,EAAAJ,EAAAS,gBAAAnwJ,GACAkwJ,GAAA,EACAb,GAAA,EAIAU,EAAAL,EAAAU,oBAAApwJ,GAAA,GAEAgwJ,EAAA,IAAAnyF,GACAgC,EAAA,IAAAhC,GACAoyF,EAAA,IAAApyF,IAIAwxF,IACAI,EAAA,EACAH,EAAA,EACAC,EAAA,EACAC,EAAA,GAIA,MAAAa,EAAArhF,EAAAshF,cAAAlB,GACA,IAAAljE,EAAAmkE,EAAArhF,MACA,MAAA2/E,EAAA0B,EAAA1B,MAGA,IAFAH,GAAA+B,YAAArkE,GAEA,CACAA,EAAAA,EAAA1qF,UAEA,IAAA,IAAA9G,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GAEA8zJ,GAAA+B,YAAAE,KACA9B,EAAAj0J,GAAA+1J,EAAAjvJ,YAKA,MAAAotJ,EAAAJ,GAAAkC,iBAAAxkE,EAAAyiE,GAGAF,EAAAviE,EAEA,IAAA,IAAAxxF,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GACAwxF,EAAAA,EAAArpE,OAAA4tI,GAGA,SAAAE,EAAAhpJ,EAAAw+I,EAAA9nH,GAEA,OADA8nH,GAAAj9J,QAAApK,MAAA,6CACAqnK,EAAAxsF,QAAAtI,eAAAhzB,GAAA9lC,IAAAoP,GAGA,MAAAipJ,EAAA1kE,EAAA5wG,OACAu1K,EAAAjC,EAAAtzK,OAEA,SAAAw1K,EAAAC,EAAAC,EAAAC,GAOA,IAAAC,EAAAC,EAAAC,EAIA,MAAAC,EAAAN,EAAAtuK,EAAAuuK,EAAAvuK,EACA6uK,EAAAP,EAAAxwK,EAAAywK,EAAAzwK,EACAgxK,EAAAN,EAAAxuK,EAAAsuK,EAAAtuK,EACA+uK,EAAAP,EAAA1wK,EAAAwwK,EAAAxwK,EACAkxK,EAAAJ,EAAAA,EAAAC,EAAAA,EAEAI,EAAAL,EAAAG,EAAAF,EAAAC,EAEA,GAAApwK,KAAAiO,IAAAsiK,GAAAt2J,OAAAqgE,QAAA,CAGA,MAAAk2F,EAAAxwK,KAAA+F,KAAAuqK,GACAG,EAAAzwK,KAAA+F,KAAAqqK,EAAAA,EAAAC,EAAAA,GAEAK,EAAAb,EAAAvuK,EAAA6uK,EAAAK,EACAG,EAAAd,EAAAzwK,EAAA8wK,EAAAM,EAIAI,IAHAd,EAAAxuK,EAAA+uK,EAAAI,EAGAC,GAAAL,GAFAP,EAAA1wK,EAAAgxK,EAAAK,EAEAE,GAAAP,IAAAF,EAAAG,EAAAF,EAAAC,GAEAL,EAAAW,EAAAR,EAAAU,EAAAhB,EAAAtuK,EACA0uK,EAAAW,EAAAR,EAAAS,EAAAhB,EAAAxwK,EAGA,MAAAyxK,EAAAd,EAAAA,EAAAC,EAAAA,EAEA,GAAAa,GAAA,EACA,OAAA,IAAAhhG,GAAAkgG,EAAAC,GAEAC,EAAAjwK,KAAA+F,KAAA8qK,EAAA,OAEA,CAEA,IAAAC,GAAA,EAEAZ,EAAAj2J,OAAAqgE,QACA81F,EAAAn2J,OAAAqgE,UACAw2F,GAAA,GAGAZ,GAAAj2J,OAAAqgE,QACA81F,GAAAn2J,OAAAqgE,UACAw2F,GAAA,GAGA9wK,KAAAmyD,KAAAg+G,KAAAnwK,KAAAmyD,KAAAk+G,KACAS,GAAA,GAKAA,GAEAf,GAAAI,EACAH,EAAAE,EACAD,EAAAjwK,KAAA+F,KAAAuqK,KAGAP,EAAAG,EACAF,EAAAG,EACAF,EAAAjwK,KAAA+F,KAAAuqK,EAAA,IAIA,OAAA,IAAAzgG,GAAAkgG,EAAAE,EAAAD,EAAAC,GAGA,MAAAc,EAAA,GAEA,IAAA,IAAAt2K,EAAA,EAAAqzB,EAAAw/I,EAAAnzK,OAAA4Z,EAAA+Z,EAAA,EAAA8W,EAAAnqC,EAAA,EAAAA,EAAAqzB,EAAArzB,IAAAsZ,IAAA6wB,IACA7wB,IAAA+Z,IAAA/Z,EAAA,GACA6wB,IAAA9W,IAAA8W,EAAA,GAGAmsI,EAAAt2K,GAAAk1K,EAAArC,EAAA7yK,GAAA6yK,EAAAv5J,GAAAu5J,EAAA1oI,IAGA,MAAAosI,EAAA,GACA,IAAAC,EACAC,EAAAH,EAAArvI,SAEA,IAAA,IAAAnoB,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GACA03J,EAAA,GAEA,IAAA,IAAAx2K,EAAA,EAAAqzB,EAAAwhJ,EAAAn1K,OAAA4Z,EAAA+Z,EAAA,EAAA8W,EAAAnqC,EAAA,EAAAA,EAAAqzB,EAAArzB,IAAAsZ,IAAA6wB,IACA7wB,IAAA+Z,IAAA/Z,EAAA,GACA6wB,IAAA9W,IAAA8W,EAAA,GAEAqsI,EAAAx2K,GAAAk1K,EAAAL,EAAA70K,GAAA60K,EAAAv7J,GAAAu7J,EAAA1qI,IAGAosI,EAAA12K,KAAA22K,GACAC,EAAAA,EAAAxvI,OAAAuvI,GAIA,IAAA,IAAA7uK,EAAA,EAAAA,EAAAksK,EAAAlsK,IAAA,CAEA,MAAArB,EAAAqB,EAAAksK,EACAv1I,EAAAo1I,EAAAnuK,KAAAiG,IAAAlF,EAAAf,KAAA2F,GAAA,GACAwrK,EAAA/C,EAAApuK,KAAAmG,IAAApF,EAAAf,KAAA2F,GAAA,GAAA0oK,EAEA,IAAA,IAAA5zK,EAAA,EAAAqzB,EAAAw/I,EAAAnzK,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA22K,EAAA5B,EAAAlC,EAAA7yK,GAAAs2K,EAAAt2K,GAAA02K,GACAh1K,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,GAAA25B,GAIA,IAAA,IAAAxf,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GACA03J,EAAAD,EAAAz3J,GAEA,IAAA,IAAA9e,EAAA,EAAAqzB,EAAAwhJ,EAAAn1K,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA22K,EAAA5B,EAAAF,EAAA70K,GAAAw2K,EAAAx2K,GAAA02K,GACAh1K,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,GAAA25B,KAKA,MAAAo4I,EAAA/C,EAAAC,EAEA,IAAA,IAAA5zK,EAAA,EAAAA,EAAAg1K,EAAAh1K,IAAA,CACA,MAAA22K,EAAAlD,EAAAsB,EAAAzkE,EAAAtwG,GAAAy2K,EAAAz2K,GAAA02K,GAAApmE,EAAAtwG,GAEAs0K,GAIArwF,EAAA/yE,KAAAijK,EAAAvpE,QAAA,IAAAn1B,eAAAkhG,EAAA9vK,GACAutK,EAAAljK,KAAAijK,EAAA7J,UAAA,IAAA70F,eAAAkhG,EAAAhyK,GACA0vK,EAAAnjK,KAAAgjK,EAAA,IAAAv3J,IAAAsnE,GAAAtnE,IAAAy3J,GACA1yK,EAAA2yK,EAAAxtK,EAAAwtK,EAAA1vK,EAAA0vK,EAAA/1I,IANA58B,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,EAAA,GAYA,IAAA,IAAAoW,EAAA,EAAAA,GAAAqJ,EAAArJ,IACA,IAAA,IAAA/a,EAAA,EAAAA,EAAAg1K,EAAAh1K,IAAA,CACA,MAAA22K,EAAAlD,EAAAsB,EAAAzkE,EAAAtwG,GAAAy2K,EAAAz2K,GAAA02K,GAAApmE,EAAAtwG,GAEAs0K,GAIArwF,EAAA/yE,KAAAijK,EAAAvpE,QAAA7vF,IAAA06D,eAAAkhG,EAAA9vK,GACAutK,EAAAljK,KAAAijK,EAAA7J,UAAAvvJ,IAAA06D,eAAAkhG,EAAAhyK,GACA0vK,EAAAnjK,KAAAgjK,EAAAn5J,IAAA4B,IAAAsnE,GAAAtnE,IAAAy3J,GACA1yK,EAAA2yK,EAAAxtK,EAAAwtK,EAAA1vK,EAAA0vK,EAAA/1I,IANA58B,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,EAAAqmE,EAAA5mD,EAAArJ,GAaA,IAAA,IAAApT,EAAAksK,EAAA,EAAAlsK,GAAA,EAAAA,IAAA,CACA,MAAArB,EAAAqB,EAAAksK,EACAv1I,EAAAo1I,EAAAnuK,KAAAiG,IAAAlF,EAAAf,KAAA2F,GAAA,GACAwrK,EAAA/C,EAAApuK,KAAAmG,IAAApF,EAAAf,KAAA2F,GAAA,GAAA0oK,EAEA,IAAA,IAAA5zK,EAAA,EAAAqzB,EAAAw/I,EAAAnzK,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA22K,EAAA5B,EAAAlC,EAAA7yK,GAAAs2K,EAAAt2K,GAAA02K,GACAh1K,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,EAAAqmE,EAAA1sC,GAIA,IAAA,IAAAxf,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GACA03J,EAAAD,EAAAz3J,GAEA,IAAA,IAAA9e,EAAA,EAAAqzB,EAAAwhJ,EAAAn1K,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA22K,EAAA5B,EAAAF,EAAA70K,GAAAw2K,EAAAx2K,GAAA02K,GAEApC,EAGA5yK,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,EAAAuvK,EAAA9vJ,EAAA,GAAAzf,EAAAuvK,EAAA9vJ,EAAA,GAAAvd,EAAAy3B,GAFA58B,EAAAi1K,EAAA9vK,EAAA8vK,EAAAhyK,EAAAqmE,EAAA1sC,KAqEA,SAAAs4I,EAAA/D,EAAAgE,GACA,IAAA72K,EAAA6yK,EAAAnzK,OAEA,OAAAM,GAAA,GAAA,CACA,MAAAsZ,EAAAtZ,EACA,IAAAmqC,EAAAnqC,EAAA,EACAmqC,EAAA,IAAAA,EAAA0oI,EAAAnzK,OAAA,GAEA,IAAA,IAAAqb,EAAA,EAAA+7J,EAAA1yJ,EAAA,EAAAyvJ,EAAA94J,EAAA+7J,EAAA/7J,IAAA,CACA,MAAAg8J,EAAA/B,EAAAj6J,EACAi8J,EAAAhC,GAAAj6J,EAAA,GAKAk8J,EAJAJ,EAAAv9J,EAAAy9J,EACAF,EAAA1sI,EAAA4sI,EACAF,EAAA1sI,EAAA6sI,EACAH,EAAAv9J,EAAA09J,KAMA,SAAAt1K,EAAAmF,EAAAlC,EAAA25B,GACAi1I,EAAA1zK,KAAAgH,GACA0sK,EAAA1zK,KAAA8E,GACA4uK,EAAA1zK,KAAAy+B,GAGA,SAAA44I,EAAA/vK,EAAAQ,EAAAnB,GACA2wK,EAAAhwK,GACAgwK,EAAAxvK,GACAwvK,EAAA3wK,GACA,MAAA0oC,EAAAmkI,EAAA3zK,OAAA,EACAmrG,EAAAkpE,EAAAqD,cAAAlqK,EAAAmmK,EAAAnkI,EAAA,EAAAA,EAAA,EAAAA,EAAA,GACAmoI,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IAGA,SAAAosE,EAAA9vK,EAAAQ,EAAAnB,EAAA3H,GACAs4K,EAAAhwK,GACAgwK,EAAAxvK,GACAwvK,EAAAt4K,GACAs4K,EAAAxvK,GACAwvK,EAAA3wK,GACA2wK,EAAAt4K,GACA,MAAAqwC,EAAAmkI,EAAA3zK,OAAA,EACAmrG,EAAAkpE,EAAAuD,mBAAApqK,EAAAmmK,EAAAnkI,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,GACAmoI,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IACAwsE,EAAAxsE,EAAA,IAGA,SAAAssE,EAAAx/J,GACA07J,EAAAxzK,KAAA0zK,EAAA,EAAA57J,EAAA,IACA07J,EAAAxzK,KAAA0zK,EAAA,EAAA57J,EAAA,IACA07J,EAAAxzK,KAAA0zK,EAAA,EAAA57J,EAAA,IAGA,SAAA0/J,EAAAE,GACAze,EAAAj5J,KAAA03K,EAAA1wK,GACAiyJ,EAAAj5J,KAAA03K,EAAA5yK,IApHA,WACA,MAAAmB,EAAAutK,EAAA3zK,OAAA,EAEA,GAAA+zK,EAAA,CACA,IAAAzX,EAAA,EAEA1lJ,EAAA0+J,EAAAhZ,EAEA,IAAA,IAAAh8J,EAAA,EAAAA,EAAAi1K,EAAAj1K,IAAA,CACA,MAAA0vG,EAAAsjE,EAAAhzK,GACAk3K,EAAAxnE,EAAA,GAAAp5F,EAAAo5F,EAAA,GAAAp5F,EAAAo5F,EAAA,GAAAp5F,GAGA0lJ,EAAA53I,EAAA,EAAAyvJ,EACAv9J,EAAA0+J,EAAAhZ,EAEA,IAAA,IAAAh8J,EAAA,EAAAA,EAAAi1K,EAAAj1K,IAAA,CACA,MAAA0vG,EAAAsjE,EAAAhzK,GACAk3K,EAAAxnE,EAAA,GAAAp5F,EAAAo5F,EAAA,GAAAp5F,EAAAo5F,EAAA,GAAAp5F,QAEA,CAEA,IAAA,IAAAtW,EAAA,EAAAA,EAAAi1K,EAAAj1K,IAAA,CACA,MAAA0vG,EAAAsjE,EAAAhzK,GACAk3K,EAAAxnE,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAIA,IAAA,IAAA1vG,EAAA,EAAAA,EAAAi1K,EAAAj1K,IAAA,CACA,MAAA0vG,EAAAsjE,EAAAhzK,GACAk3K,EAAAxnE,EAAA,GAAAslE,EAAA5wJ,EAAAsrF,EAAA,GAAAslE,EAAA5wJ,EAAAsrF,EAAA,GAAAslE,EAAA5wJ,IAIAlX,EAAAogG,SAAAxnG,EAAAutK,EAAA3zK,OAAA,EAAAoG,EAAA,GAtCA0xK,GA0CA,WACA,MAAA1xK,EAAAutK,EAAA3zK,OAAA,EACA,IAAAm3K,EAAA,EACAD,EAAA/D,EAAAgE,GACAA,GAAAhE,EAAAnzK,OAEA,IAAA,IAAAof,EAAA,EAAA81J,EAAA7B,EAAArzK,OAAAof,EAAA81J,EAAA91J,IAAA,CACA,MAAA+1J,EAAA9B,EAAAj0J,GACA83J,EAAA/B,EAAAgC,GAEAA,GAAAhC,EAAAn1K,OAGAwN,EAAAogG,SAAAxnG,EAAAutK,EAAA3zK,OAAA,EAAAoG,EAAA,GArDA2xK,GA9RAp4K,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA6qE,EAAA,IACAh0K,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAswD,EAAA,IACAz5J,KAAAyoK,uBAuZA51F,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAGA,OAsDA,SAAAJ,EAAA3+C,EAAAryC,GAGA,GAFAA,EAAAgxF,OAAA,GAEA9lF,MAAAhM,QAAA8xF,GACA,IAAA,IAAAryF,EAAA,EAAA4P,EAAAyiF,EAAA3yF,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAozF,EAAAf,EAAAryF,GACAqB,EAAAgxF,OAAAxyF,KAAAuzF,EAAA7Y,WAGAl5E,EAAAgxF,OAAAxyF,KAAAwyF,EAAA9X,WAGA9zC,IAAAiN,EAAAogI,cAAAzyK,EAAAqyC,QAAAogI,YAAApgI,EAAAogI,YAAArhF,UACA,OAAApxF,EAnEAq2K,CAFAr4K,KAAA8zF,WAAAd,OACAhzF,KAAA8zF,WAAAz/C,QACAryC,GAGA6wE,gBAAA7wE,EAAAgxF,GACA,MAAAslF,EAAA,GAEA,IAAA,IAAAr+J,EAAA,EAAAoxF,EAAArpG,EAAAgxF,OAAA3yF,OAAA4Z,EAAAoxF,EAAApxF,IAAA,CACA,MAAA85E,EAAAf,EAAAhxF,EAAAgxF,OAAA/4E,IACAq+J,EAAA93K,KAAAuzF,GAGA,MAAA0gF,EAAAzyK,EAAAqyC,QAAAogI,YAMA,YAJArtI,IAAAqtI,IACAzyK,EAAAqyC,QAAAogI,aAAA,IAAAxF,GAAAwF,EAAA10K,OAAAosK,SAAAsI,IAGA,IAAAV,GAAAuE,EAAAt2K,EAAAqyC,UAKA,MAAAugI,GAAA,CACAmD,cAAA,SAAA9xF,EAAAgrB,EAAAsnE,EAAAC,EAAAC,GACA,MAAAC,EAAAznE,EAAA,EAAAsnE,GACAI,EAAA1nE,EAAA,EAAAsnE,EAAA,GACAK,EAAA3nE,EAAA,EAAAunE,GACAK,EAAA5nE,EAAA,EAAAunE,EAAA,GACAM,EAAA7nE,EAAA,EAAAwnE,GACAM,EAAA9nE,EAAA,EAAAwnE,EAAA,GACA,MAAA,CAAA,IAAA1iG,GAAA2iG,EAAAC,GAAA,IAAA5iG,GAAA6iG,EAAAC,GAAA,IAAA9iG,GAAA+iG,EAAAC,KAEAd,mBAAA,SAAAhyF,EAAAgrB,EAAAsnE,EAAAC,EAAAC,EAAAO,GACA,MAAAN,EAAAznE,EAAA,EAAAsnE,GACAI,EAAA1nE,EAAA,EAAAsnE,EAAA,GACAU,EAAAhoE,EAAA,EAAAsnE,EAAA,GACAK,EAAA3nE,EAAA,EAAAunE,GACAK,EAAA5nE,EAAA,EAAAunE,EAAA,GACAU,EAAAjoE,EAAA,EAAAunE,EAAA,GACAM,EAAA7nE,EAAA,EAAAwnE,GACAM,EAAA9nE,EAAA,EAAAwnE,EAAA,GACAU,EAAAloE,EAAA,EAAAwnE,EAAA,GACAW,EAAAnoE,EAAA,EAAA+nE,GACAK,EAAApoE,EAAA,EAAA+nE,EAAA,GACAM,EAAAroE,EAAA,EAAA+nE,EAAA,GAEA,OAAA9yK,KAAAiO,IAAAwkK,EAAAE,GAAA3yK,KAAAiO,IAAAukK,EAAAE,GACA,CAAA,IAAA7iG,GAAA2iG,EAAA,EAAAO,GAAA,IAAAljG,GAAA6iG,EAAA,EAAAM,GAAA,IAAAnjG,GAAA+iG,EAAA,EAAAK,GAAA,IAAApjG,GAAAqjG,EAAA,EAAAE,IAEA,CAAA,IAAAvjG,GAAA4iG,EAAA,EAAAM,GAAA,IAAAljG,GAAA8iG,EAAA,EAAAK,GAAA,IAAAnjG,GAAAgjG,EAAA,EAAAI,GAAA,IAAApjG,GAAAsjG,EAAA,EAAAC,MAqBA,MAAAC,WAAAjS,GACAz0F,YAAA/3D,EAAA,EAAAgxB,EAAA,GACA,MAAA7kC,GAAA,EAAAf,KAAA+F,KAAA,IAAA,EAGAgvE,MAFA,EAAA,EAAAh0E,EAAA,EAAA,EAAAA,EAAA,GAAA,GAAAA,EAAA,EAAA,GAAAA,EAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,EAAAA,EAAA,GAAA,GAAAA,EAAA,EAAA,GAAAA,EAAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,GAAAA,EAAA,GAAA,GAAAA,EAAA,EAAA,GACA,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA6T,EAAAgxB,GACA9rC,KAAAD,KAAA,sBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAgxB,OAAAA,GAIA+mC,gBAAA7wE,GACA,OAAA,IAAAu3K,GAAAv3K,EAAA8Y,OAAA9Y,EAAA8pC,SAKA,MAAA0tI,WAAAvvE,GACAp3B,YAAAtrE,EAAA2+J,EAAA,GAAAuT,EAAA,EAAAC,EAAA,EAAAxzK,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,gBACAC,KAAA8zF,WAAA,CACAvsF,OAAAA,EACA2+J,SAAAA,EACAuT,SAAAA,EACAC,UAAAA,GAEAxT,EAAAhgK,KAAA4N,MAAAoyJ,GAEAwT,EAAAzxK,GAAAyxK,EAAA,EAAA,EAAAxzK,KAAA2F,IAEA,MAAAy/F,EAAA,GACA2F,EAAA,GACAzF,EAAA,GAEAmuE,EAAA,EAAAzT,EACAG,EAAA,IAAAzjF,GACAxG,EAAA,IAAArG,GAEA,IAAA,IAAAp1E,EAAA,EAAAA,GAAAulK,EAAAvlK,IAAA,CACA,MAAAokF,EAAA00F,EAAA94K,EAAAg5K,EAAAD,EACArtK,EAAAnG,KAAAmG,IAAA04E,GACA54E,EAAAjG,KAAAiG,IAAA44E,GAEA,IAAA,IAAA9qE,EAAA,EAAAA,GAAA1S,EAAAlH,OAAA,EAAA4Z,IAEAosJ,EAAA7+J,EAAAD,EAAA0S,GAAAzS,EAAA6E,EACAg6J,EAAA/gK,EAAAiC,EAAA0S,GAAA3U,EACA+gK,EAAApnI,EAAA13B,EAAA0S,GAAAzS,EAAA2E,EACA8kG,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEAm9C,EAAA50E,EAAA7G,EAAAulK,EACA9pF,EAAA92E,EAAA2U,GAAA1S,EAAAlH,OAAA,GACAmrG,EAAAhrG,KAAA47E,EAAA50E,EAAA40E,EAAA92E,GAKA,IAAA,IAAA3E,EAAA,EAAAA,EAAAulK,EAAAvlK,IACA,IAAA,IAAAsZ,EAAA,EAAAA,EAAA1S,EAAAlH,OAAA,EAAA4Z,IAAA,CACA,MAAAzI,EAAAyI,EAAAtZ,EAAA4G,EAAAlH,OACAyH,EAAA0J,EACAlJ,EAAAkJ,EAAAjK,EAAAlH,OACA8G,EAAAqK,EAAAjK,EAAAlH,OAAA,EACAb,EAAAgS,EAAA,EAEA85F,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAYA,GAPAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAEAxrG,KAAAyoK,uBAGAiR,IAAA,EAAAxzK,KAAA2F,GAAA,CACA,MAAA0/F,EAAAvrG,KAAA00C,WAAAkwC,OAAAzgB,MACAr5D,EAAA,IAAA83E,GACA4pB,EAAA,IAAA5pB,GACA/3E,EAAA,IAAA+3E,GAEApxE,EAAA00J,EAAA3+J,EAAAlH,OAAA,EAEA,IAAA,IAAAM,EAAA,EAAAsZ,EAAA,EAAAtZ,EAAA4G,EAAAlH,OAAAM,IAAAsZ,GAAA,EAEAnP,EAAAtD,EAAA+jG,EAAAtxF,EAAA,GACAnP,EAAAxF,EAAAimG,EAAAtxF,EAAA,GACAnP,EAAAm0B,EAAAssE,EAAAtxF,EAAA,GAEAuyF,EAAAhlG,EAAA+jG,EAAA/5F,EAAAyI,EAAA,GACAuyF,EAAAlnG,EAAAimG,EAAA/5F,EAAAyI,EAAA,GACAuyF,EAAAvtE,EAAAssE,EAAA/5F,EAAAyI,EAAA,GAEApP,EAAAqrE,WAAAprE,EAAA0hG,GAAAv5E,YAEAs4E,EAAAtxF,EAAA,GAAAsxF,EAAA/5F,EAAAyI,EAAA,GAAApP,EAAArD,EACA+jG,EAAAtxF,EAAA,GAAAsxF,EAAA/5F,EAAAyI,EAAA,GAAApP,EAAAvF,EACAimG,EAAAtxF,EAAA,GAAAsxF,EAAA/5F,EAAAyI,EAAA,GAAApP,EAAAo0B,GAKA4zC,gBAAA7wE,GACA,OAAA,IAAAw3K,GAAAx3K,EAAAuF,OAAAvF,EAAAkkK,SAAAlkK,EAAAy3K,SAAAz3K,EAAA03K,YAKA,MAAAE,WAAAtS,GACAz0F,YAAA/3D,EAAA,EAAAgxB,EAAA,GAGAmvC,MAFA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAngE,EAAAgxB,GACA9rC,KAAAD,KAAA,qBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAgxB,OAAAA,GAIA+mC,gBAAA7wE,GACA,OAAA,IAAA43K,GAAA53K,EAAA8Y,OAAA9Y,EAAA8pC,SAUA,MAAA+tI,WAAA5vE,GACAp3B,YAAA/wE,EAAAg4K,EAAAC,GACA9+F,QACAj7E,KAAAD,KAAA,qBACAC,KAAA8zF,WAAA,CACAhyF,KAAAA,EACAg4K,OAAAA,EACAC,OAAAA,GAGA,MAAAzuE,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GACAwuE,EAAA,KACAp1F,EAAA,IAAAhC,GACAmF,EAAA,IAAAnF,GACAx8E,EAAA,IAAAw8E,GACAq3F,EAAA,IAAAr3F,GACAs3F,EAAA,IAAAt3F,GAEA9gF,EAAAzB,OAAA,GACA4N,QAAApK,MAAA,oFAIA,MAAAs2K,EAAAL,EAAA,EAEA,IAAA,IAAAn5K,EAAA,EAAAA,GAAAo5K,EAAAp5K,IAAA,CACA,MAAA0B,EAAA1B,EAAAo5K,EAEA,IAAA,IAAA9/J,EAAA,EAAAA,GAAA6/J,EAAA7/J,IAAA,CACA,MAAAO,EAAAP,EAAA6/J,EAEAh4K,EAAA0Y,EAAAnY,EAAA0lF,GACAkpB,EAAAzwG,KAAAunF,EAAAvgF,EAAAugF,EAAAziF,EAAAyiF,EAAA9oD,GAGAzkB,EAAAw/J,GAAA,GACAl4K,EAAA0Y,EAAAw/J,EAAA33K,EAAA+D,GACA6zK,EAAA9jG,WAAA4R,EAAA3hF,KAEAtE,EAAA0Y,EAAAw/J,EAAA33K,EAAA+D,GACA6zK,EAAA9jG,WAAA/vE,EAAA2hF,IAGA1lF,EAAA23K,GAAA,GACAl4K,EAAA0Y,EAAAnY,EAAA23K,EAAA5zK,GACA8zK,EAAA/jG,WAAA4R,EAAA3hF,KAEAtE,EAAA0Y,EAAAnY,EAAA23K,EAAA5zK,GACA8zK,EAAA/jG,WAAA/vE,EAAA2hF,IAIAnD,EAAAZ,aAAAi2F,EAAAC,GAAAjnJ,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAusE,EAAAhrG,KAAAga,EAAAnY,IAKA,IAAA,IAAA1B,EAAA,EAAAA,EAAAo5K,EAAAp5K,IACA,IAAA,IAAAsZ,EAAA,EAAAA,EAAA6/J,EAAA7/J,IAAA,CACA,MAAAnS,EAAAnH,EAAAw5K,EAAAlgK,EACA3R,EAAA3H,EAAAw5K,EAAAlgK,EAAA,EACA9S,GAAAxG,EAAA,GAAAw5K,EAAAlgK,EAAA,EACAza,GAAAmB,EAAA,GAAAw5K,EAAAlgK,EAEAqxF,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAKAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,KAKA,MAAA4uE,WAAAnwE,GACAp3B,YAAAwnG,EAAA,GAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAArU,EAAA,EAAAC,EAAA,EAAAlgK,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,eACAC,KAAA8zF,WAAA,CACAumF,YAAAA,EACAC,YAAAA,EACAC,cAAAA,EACAC,YAAAA,EACArU,WAAAA,EACAC,YAAAA,GAEAmU,EAAAr0K,KAAAiS,IAAA,EAAAoiK,GAGA,MAAAjvE,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAA1wF,EAAAu/J,EACA,MAAAI,GAAAH,EAAAD,IARAG,EAAAt0K,KAAAiS,IAAA,EAAAqiK,IASAnU,EAAA,IAAAzjF,GACAxG,EAAA,IAAArG,GAEA,IAAA,IAAA97D,EAAA,EAAAA,GAAAugK,EAAAvgK,IAAA,CACA,IAAA,IAAAtZ,EAAA,EAAAA,GAAA45K,EAAA55K,IAAA,CAEA,MAAA2lK,EAAAH,EAAAxlK,EAAA45K,EAAAnU,EAEAC,EAAA7+J,EAAAsT,EAAA5U,KAAAiG,IAAAm6J,GACAD,EAAA/gK,EAAAwV,EAAA5U,KAAAmG,IAAAi6J,GACAr1D,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEAssE,EAAA/qG,KAAA,EAAA,EAAA,GAEA47E,EAAA50E,GAAA6+J,EAAA7+J,EAAA8yK,EAAA,GAAA,EACAl+F,EAAA92E,GAAA+gK,EAAA/gK,EAAAg1K,EAAA,GAAA,EACA9uE,EAAAhrG,KAAA47E,EAAA50E,EAAA40E,EAAA92E,GAIAwV,GAAA2/J,EAIA,IAAA,IAAAxgK,EAAA,EAAAA,EAAAugK,EAAAvgK,IAAA,CACA,MAAAygK,EAAAzgK,GAAAsgK,EAAA,GAEA,IAAA,IAAA55K,EAAA,EAAAA,EAAA45K,EAAA55K,IAAA,CACA,MAAA2lK,EAAA3lK,EAAA+5K,EACA5yK,EAAAw+J,EACAh+J,EAAAg+J,EAAAiU,EAAA,EACApzK,EAAAm/J,EAAAiU,EAAA,EACA/6K,EAAA8mK,EAAA,EAEAh7D,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,IAKAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAGA34B,gBAAA7wE,GACA,OAAA,IAAAo4K,GAAAp4K,EAAAq4K,YAAAr4K,EAAAs4K,YAAAt4K,EAAAu4K,cAAAv4K,EAAAw4K,YAAAx4K,EAAAmkK,WAAAnkK,EAAAokK,cAKA,MAAAuU,WAAA1wE,GACAp3B,YAAAmgB,EAAAmhF,EAAA,IACAl5F,QACAj7E,KAAAD,KAAA,gBACAC,KAAA8zF,WAAA,CACAd,OAAAA,EACAmhF,cAAAA,GAGA,MAAA7oE,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAA2F,EAAA,EACAc,EAAA,EAEA,IAAA,IAAA/kG,MAAAhM,QAAA8xF,GACAihF,EAAAjhF,QAEA,IAAA,IAAAryF,EAAA,EAAAA,EAAAqyF,EAAA3yF,OAAAM,IACAszK,EAAAjhF,EAAAryF,IACAX,KAAAiuG,SAAAkD,EAAAc,EAAAtxG,GAEAwwG,GAAAc,EACAA,EAAA,EAUA,SAAAgiE,EAAAlgF,GACA,MAAA6mF,EAAA3pE,EAAA5wG,OAAA,EACAkH,EAAAwsF,EAAAshF,cAAAlB,GACA,IAAA0G,EAAAtzK,EAAAwsF,MACA,MAAA+mF,EAAAvzK,EAAAmsK,OAEA,IAAAH,GAAA+B,YAAAuF,KACAA,EAAAA,EAAAt0J,WAGA,IAAA,IAAA5lB,EAAA,EAAA4P,EAAAuqK,EAAAz6K,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAo6K,EAAAD,EAAAn6K,IAEA,IAAA4yK,GAAA+B,YAAAyF,KACAD,EAAAn6K,GAAAo6K,EAAAx0J,WAIA,MAAAotJ,EAAAJ,GAAAkC,iBAAAoF,EAAAC,GAEA,IAAA,IAAAn6K,EAAA,EAAA4P,EAAAuqK,EAAAz6K,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAo6K,EAAAD,EAAAn6K,GACAk6K,EAAAA,EAAAjzI,OAAAmzI,GAIA,IAAA,IAAAp6K,EAAA,EAAA4P,EAAAsqK,EAAAx6K,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA0lK,EAAAwU,EAAAl6K,GACAswG,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA,GACAimG,EAAA/qG,KAAA,EAAA,EAAA,GACAgrG,EAAAhrG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,GAIA,IAAA,IAAA3E,EAAA,EAAA4P,EAAAojK,EAAAtzK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA0vG,EAAAsjE,EAAAhzK,GACAmH,EAAAuoG,EAAA,GAAAuqE,EACAtyK,EAAA+nG,EAAA,GAAAuqE,EACAzzK,EAAAkpG,EAAA,GAAAuqE,EACAtvE,EAAA9qG,KAAAsH,EAAAQ,EAAAnB,GACA8qG,GAAA,GA7CAjyG,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IA+CA34B,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAEA,OAgBA,SAAAJ,EAAAhxF,GAGA,GAFAA,EAAAgxF,OAAA,GAEA9lF,MAAAhM,QAAA8xF,GACA,IAAA,IAAAryF,EAAA,EAAA4P,EAAAyiF,EAAA3yF,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAozF,EAAAf,EAAAryF,GACAqB,EAAAgxF,OAAAxyF,KAAAuzF,EAAA7Y,WAGAl5E,EAAAgxF,OAAAxyF,KAAAwyF,EAAA9X,MAGA,OAAAl5E,EA5BAoxF,CADApzF,KAAA8zF,WAAAd,OACAhxF,GAGA6wE,gBAAA7wE,EAAAgxF,GACA,MAAAslF,EAAA,GAEA,IAAA,IAAAr+J,EAAA,EAAAoxF,EAAArpG,EAAAgxF,OAAA3yF,OAAA4Z,EAAAoxF,EAAApxF,IAAA,CACA,MAAA85E,EAAAf,EAAAhxF,EAAAgxF,OAAA/4E,IACAq+J,EAAA93K,KAAAuzF,GAGA,OAAA,IAAA4mF,GAAArC,EAAAt2K,EAAAmyK,gBAoBA,MAAA6G,WAAA/wE,GACAp3B,YAAA/3D,EAAA,EAAAg2F,EAAA,GAAAC,EAAA,GAAA0oE,EAAA,EAAAC,EAAA,EAAAxzK,KAAA2F,GAAAs6J,EAAA,EAAAC,EAAAlgK,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,iBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAg2F,cAAAA,EACAC,eAAAA,EACA0oE,SAAAA,EACAC,UAAAA,EACAvT,WAAAA,EACAC,YAAAA,GAEAt1D,EAAA5qG,KAAAiS,IAAA,EAAAjS,KAAA4N,MAAAg9F,IACAC,EAAA7qG,KAAAiS,IAAA,EAAAjS,KAAA4N,MAAAi9F,IACA,MAAAkqE,EAAA/0K,KAAAC,IAAAggK,EAAAC,EAAAlgK,KAAA2F,IACA,IAAAyM,EAAA,EACA,MAAA8B,EAAA,GACAisJ,EAAA,IAAAzjF,GACAgC,EAAA,IAAAhC,GAEA0oB,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA,IAAA,IAAAjoB,EAAA,EAAAA,GAAAwtB,EAAAxtB,IAAA,CACA,MAAA23F,EAAA,GACA74K,EAAAkhF,EAAAwtB,EAEA,IAAAoqE,EAAA,EAEA,GAAA53F,GAAA,GAAA4iF,EACAgV,EAAA,GAAArqE,EACAvtB,GAAAwtB,GAAAkqE,GAAA/0K,KAAA2F,KACAsvK,GAAA,GAAArqE,GAGA,IAAA,IAAAxtB,EAAA,EAAAA,GAAAwtB,EAAAxtB,IAAA,CACA,MAAA9oE,EAAA8oE,EAAAwtB,EAEAu1D,EAAA7+J,GAAAsT,EAAA5U,KAAAiG,IAAAstK,EAAAj/J,EAAAk/J,GAAAxzK,KAAAmG,IAAA85J,EAAA9jK,EAAA+jK,GACAC,EAAA/gK,EAAAwV,EAAA5U,KAAAiG,IAAAg6J,EAAA9jK,EAAA+jK,GACAC,EAAApnI,EAAAnkB,EAAA5U,KAAAmG,IAAAotK,EAAAj/J,EAAAk/J,GAAAxzK,KAAAmG,IAAA85J,EAAA9jK,EAAA+jK,GACAn1D,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEA2lD,EAAA/yE,KAAAw0J,GAAApzI,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAusE,EAAAhrG,KAAAga,EAAA2gK,EAAA,EAAA94K,GACA64K,EAAA16K,KAAA8X,KAGA8B,EAAA5Z,KAAA06K,GAIA,IAAA,IAAA33F,EAAA,EAAAA,EAAAwtB,EAAAxtB,IACA,IAAA,IAAAD,EAAA,EAAAA,EAAAwtB,EAAAxtB,IAAA,CACA,MAAAx7E,EAAAsS,EAAAmpE,GAAAD,EAAA,GACAh7E,EAAA8R,EAAAmpE,GAAAD,GACAn8E,EAAAiT,EAAAmpE,EAAA,GAAAD,GACA9jF,EAAA4a,EAAAmpE,EAAA,GAAAD,EAAA,IACA,IAAAC,GAAA4iF,EAAA,IAAA76D,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,IACA+jF,IAAAwtB,EAAA,GAAAkqE,EAAA/0K,KAAA2F,KAAAy/F,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAKAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAGA34B,gBAAA7wE,GACA,OAAA,IAAAg5K,GAAAh5K,EAAA8Y,OAAA9Y,EAAA8uG,cAAA9uG,EAAA+uG,eAAA/uG,EAAAy3K,SAAAz3K,EAAA03K,UAAA13K,EAAAmkK,WAAAnkK,EAAAokK,cAKA,MAAAgV,WAAA9T,GACAz0F,YAAA/3D,EAAA,EAAAgxB,EAAA,GAGAmvC,MAFA,CAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GACA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACAngE,EAAAgxB,GACA9rC,KAAAD,KAAA,sBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACAgxB,OAAAA,GAIA+mC,gBAAA7wE,GACA,OAAA,IAAAo5K,GAAAp5K,EAAA8Y,OAAA9Y,EAAA8pC,SAsBA,MAAAuvI,WAAAtH,GACAlhG,YAAApwE,EAAAqxF,EAAA,IACA,MAAAwnF,EAAAxnF,EAAAwnF,KAEA,IAAAA,IAAAA,EAAAC,OAEA,OADAttK,QAAApK,MAAA,wEACA,IAAAomG,GAGA,MAAAjX,EAAAsoF,EAAAE,eAAA/4K,EAAAqxF,EAAA1wC,MAEA0wC,EAAAnoB,WAAAvkC,IAAA0sD,EAAAx5D,OAAAw5D,EAAAx5D,OAAA,QAEA8M,IAAA0sD,EAAAugF,iBAAAvgF,EAAAugF,eAAA,SACAjtI,IAAA0sD,EAAAwgF,YAAAxgF,EAAAwgF,UAAA,QACAltI,IAAA0sD,EAAAsgF,eAAAtgF,EAAAsgF,cAAA,GACAn5F,MAAA+X,EAAAc,GACA9zF,KAAAD,KAAA,gBAKA,MAAA07K,WAAAxxE,GACAp3B,YAAA/3D,EAAA,EAAA4gK,EAAA,GAAAhV,EAAA,EAAAiV,EAAA,EAAAC,EAAA,EAAA11K,KAAA2F,IACAovE,QACAj7E,KAAAD,KAAA,gBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACA4gK,KAAAA,EACAhV,eAAAA,EACAiV,gBAAAA,EACAC,IAAAA,GAEAlV,EAAAxgK,KAAA4N,MAAA4yJ,GACAiV,EAAAz1K,KAAA4N,MAAA6nK,GAEA,MAAArwE,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA3xF,EAAA,IAAA+oE,GACAyjF,EAAA,IAAAzjF,GACAgC,EAAA,IAAAhC,GAEA,IAAA,IAAA3oE,EAAA,EAAAA,GAAAysJ,EAAAzsJ,IACA,IAAA,IAAAtZ,EAAA,EAAAA,GAAAg7K,EAAAh7K,IAAA,CACA,MAAA6Z,EAAA7Z,EAAAg7K,EAAAC,EACAv5K,EAAA4X,EAAAysJ,EAAAxgK,KAAA2F,GAAA,EAEAw6J,EAAA7+J,GAAAsT,EAAA4gK,EAAAx1K,KAAAiG,IAAA9J,IAAA6D,KAAAiG,IAAAqO,GACA6rJ,EAAA/gK,GAAAwV,EAAA4gK,EAAAx1K,KAAAiG,IAAA9J,IAAA6D,KAAAmG,IAAAmO,GACA6rJ,EAAApnI,EAAAy8I,EAAAx1K,KAAAmG,IAAAhK,GACA4uG,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEAplB,EAAArS,EAAAsT,EAAA5U,KAAAiG,IAAAqO,GACAX,EAAAvU,EAAAwV,EAAA5U,KAAAmG,IAAAmO,GACAoqE,EAAAzO,WAAAkwF,EAAAxsJ,GAAAoZ,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAusE,EAAAhrG,KAAAG,EAAAg7K,GACAnwE,EAAAhrG,KAAAyZ,EAAAysJ,GAKA,IAAA,IAAAzsJ,EAAA,EAAAA,GAAAysJ,EAAAzsJ,IACA,IAAA,IAAAtZ,EAAA,EAAAA,GAAAg7K,EAAAh7K,IAAA,CAEA,MAAAmH,GAAA6zK,EAAA,GAAA1hK,EAAAtZ,EAAA,EACA2H,GAAAqzK,EAAA,IAAA1hK,EAAA,GAAAtZ,EAAA,EACAwG,GAAAw0K,EAAA,IAAA1hK,EAAA,GAAAtZ,EACAnB,GAAAm8K,EAAA,GAAA1hK,EAAAtZ,EAEA2qG,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAKAQ,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAGA34B,gBAAA7wE,GACA,OAAA,IAAAy5K,GAAAz5K,EAAA8Y,OAAA9Y,EAAA05K,KAAA15K,EAAA0kK,eAAA1kK,EAAA25K,gBAAA35K,EAAA45K,MAKA,MAAAC,WAAA5xE,GACAp3B,YAAA/3D,EAAA,EAAA4gK,EAAA,GAAAC,EAAA,GAAAjV,EAAA,EAAAtkK,EAAA,EAAAkzE,EAAA,GACA2F,QACAj7E,KAAAD,KAAA,oBACAC,KAAA8zF,WAAA,CACAh5E,OAAAA,EACA4gK,KAAAA,EACAC,gBAAAA,EACAjV,eAAAA,EACAtkK,EAAAA,EACAkzE,EAAAA,GAEAqmG,EAAAz1K,KAAA4N,MAAA6nK,GACAjV,EAAAxgK,KAAA4N,MAAA4yJ,GAEA,MAAAp7D,EAAA,GACA2F,EAAA,GACA1F,EAAA,GACAC,EAAA,GAEA66D,EAAA,IAAAzjF,GACAgC,EAAA,IAAAhC,GACAk5F,EAAA,IAAAl5F,GACAm5F,EAAA,IAAAn5F,GACAo5F,EAAA,IAAAp5F,GACAq5F,EAAA,IAAAr5F,GACAs5F,EAAA,IAAAt5F,GAEA,IAAA,IAAAjiF,EAAA,EAAAA,GAAAg7K,IAAAh7K,EAAA,CAEA,MAAA6Z,EAAA7Z,EAAAg7K,EAAAv5K,EAAA8D,KAAA2F,GAAA,EAGAswK,EAAA3hK,EAAApY,EAAAkzE,EAAAx6D,EAAAghK,GACAK,EAAA3hK,EAAA,IAAApY,EAAAkzE,EAAAx6D,EAAAihK,GAEAE,EAAA9lG,WAAA4lG,EAAAD,GACAI,EAAAhmG,WAAA6lG,EAAAD,GACAE,EAAAh4F,aAAAi4F,EAAAC,GACAA,EAAAl4F,aAAAg4F,EAAAC,GAEAD,EAAA/oJ,YACAipJ,EAAAjpJ,YAEA,IAAA,IAAAhZ,EAAA,EAAAA,GAAAysJ,IAAAzsJ,EAAA,CAGA,MAAA5X,EAAA4X,EAAAysJ,EAAAxgK,KAAA2F,GAAA,EACA2tE,GAAAkiG,EAAAx1K,KAAAiG,IAAA9J,GACAo3E,EAAAiiG,EAAAx1K,KAAAmG,IAAAhK,GAGAgkK,EAAA7+J,EAAAs0K,EAAAt0K,GAAAgyE,EAAA0iG,EAAA10K,EAAAiyE,EAAAuiG,EAAAx0K,GACA6+J,EAAA/gK,EAAAw2K,EAAAx2K,GAAAk0E,EAAA0iG,EAAA52K,EAAAm0E,EAAAuiG,EAAA12K,GACA+gK,EAAApnI,EAAA68I,EAAA78I,GAAAu6C,EAAA0iG,EAAAj9I,EAAAw6C,EAAAuiG,EAAA/8I,GACAgyE,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,GAEA2lD,EAAAzO,WAAAkwF,EAAAyV,GAAA7oJ,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAusE,EAAAhrG,KAAAG,EAAAg7K,GACAnwE,EAAAhrG,KAAAyZ,EAAAysJ,IAKA,IAAA,IAAAzsJ,EAAA,EAAAA,GAAA0hK,EAAA1hK,IACA,IAAA,IAAAtZ,EAAA,EAAAA,GAAA+lK,EAAA/lK,IAAA,CAEA,MAAAmH,GAAA4+J,EAAA,IAAAzsJ,EAAA,IAAAtZ,EAAA,GACA2H,GAAAo+J,EAAA,GAAAzsJ,GAAAtZ,EAAA,GACAwG,GAAAu/J,EAAA,GAAAzsJ,EAAAtZ,EACAnB,GAAAknK,EAAA,IAAAzsJ,EAAA,GAAAtZ,EAEA2qG,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,GAUA,SAAA28K,EAAA3hK,EAAApY,EAAAkzE,EAAAx6D,EAAA9F,GACA,MAAAonK,EAAAl2K,KAAAiG,IAAAqO,GACA6hK,EAAAn2K,KAAAmG,IAAAmO,GACA8hK,EAAAhnG,EAAAlzE,EAAAoY,EACAge,EAAAtyB,KAAAiG,IAAAmwK,GACAtnK,EAAAxN,EAAAsT,GAAA,EAAA0d,GAAA,GAAA4jJ,EACApnK,EAAA1P,EAAAwV,GAAA,EAAA0d,GAAA6jJ,EAAA,GACArnK,EAAAiqB,EAAAnkB,EAAA5U,KAAAmG,IAAAiwK,GAAA,GAZAt8K,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAaA34B,gBAAA7wE,GACA,OAAA,IAAA65K,GAAA75K,EAAA8Y,OAAA9Y,EAAA05K,KAAA15K,EAAA25K,gBAAA35K,EAAA0kK,eAAA1kK,EAAAI,EAAAJ,EAAAszE,IAKA,MAAAinG,WAAAtyE,GACAp3B,YAAAv8B,EAAAqlI,EAAA,GAAA7gK,EAAA,EAAA4rJ,EAAA,EAAAsE,GAAA,GACA/vF,QACAj7E,KAAAD,KAAA,eACAC,KAAA8zF,WAAA,CACAx9C,KAAAA,EACAqlI,gBAAAA,EACA7gK,OAAAA,EACA4rJ,eAAAA,EACAsE,OAAAA,GAEA,MAAAwR,EAAAlmI,EAAA6+H,oBAAAwG,EAAA3Q,GAEAhrK,KAAA0rG,SAAA8wE,EAAA9wE,SACA1rG,KAAAurG,QAAAixE,EAAAjxE,QACAvrG,KAAAirK,UAAAuR,EAAAvR,UAEA,MAAA5E,EAAA,IAAAzjF,GACAgC,EAAA,IAAAhC,GACAxG,EAAA,IAAArG,GACA,IAAA0mG,EAAA,IAAA75F,GAEA,MAAAquB,EAAA,GACA1F,EAAA,GACAC,EAAA,GACAF,EAAA,GA0BA,SAAAoxE,EAAA/7K,GAEA87K,EAAAnmI,EAAAg0H,WAAA3pK,EAAAg7K,EAAAc,GAEA,MAAAP,EAAAM,EAAAjxE,QAAA5qG,GACAq7K,EAAAQ,EAAAvR,UAAAtqK,GAEA,IAAA,IAAAsZ,EAAA,EAAAA,GAAAysJ,EAAAzsJ,IAAA,CACA,MAAA5X,EAAA4X,EAAAysJ,EAAAxgK,KAAA2F,GAAA,EACAQ,EAAAnG,KAAAmG,IAAAhK,GACA8J,GAAAjG,KAAAiG,IAAA9J,GAEAuiF,EAAAp9E,EAAA2E,EAAA+vK,EAAA10K,EAAA6E,EAAA2vK,EAAAx0K,EACAo9E,EAAAt/E,EAAA6G,EAAA+vK,EAAA52K,EAAA+G,EAAA2vK,EAAA12K,EACAs/E,EAAA3lD,EAAA9yB,EAAA+vK,EAAAj9I,EAAA5yB,EAAA2vK,EAAA/8I,EACA2lD,EAAA3xD,YACAs4E,EAAA/qG,KAAAokF,EAAAp9E,EAAAo9E,EAAAt/E,EAAAs/E,EAAA3lD,GAEAonI,EAAA7+J,EAAAi1K,EAAAj1K,EAAAsT,EAAA8pE,EAAAp9E,EACA6+J,EAAA/gK,EAAAm3K,EAAAn3K,EAAAwV,EAAA8pE,EAAAt/E,EACA+gK,EAAApnI,EAAAw9I,EAAAx9I,EAAAnkB,EAAA8pE,EAAA3lD,EACAgyE,EAAAzwG,KAAA6lK,EAAA7+J,EAAA6+J,EAAA/gK,EAAA+gK,EAAApnI,KAtCA,WACA,IAAA,IAAAt+B,EAAA,EAAAA,EAAAg7K,EAAAh7K,IACA+7K,EAAA/7K,GAOA+7K,GAAA,IAAA1R,EAAA2Q,EAAA,GA+CA,WACA,IAAA,IAAAh7K,EAAA,EAAAA,GAAAg7K,EAAAh7K,IACA,IAAA,IAAAsZ,EAAA,EAAAA,GAAAysJ,EAAAzsJ,IACAmiE,EAAA50E,EAAA7G,EAAAg7K,EACAv/F,EAAA92E,EAAA2U,EAAAysJ,EACAl7D,EAAAhrG,KAAA47E,EAAA50E,EAAA40E,EAAA92E,GAjDAkjK,GA8BA,WACA,IAAA,IAAAvuJ,EAAA,EAAAA,GAAA0hK,EAAA1hK,IACA,IAAA,IAAAtZ,EAAA,EAAAA,GAAA+lK,EAAA/lK,IAAA,CACA,MAAAmH,GAAA4+J,EAAA,IAAAzsJ,EAAA,IAAAtZ,EAAA,GACA2H,GAAAo+J,EAAA,GAAAzsJ,GAAAtZ,EAAA,GACAwG,GAAAu/J,EAAA,GAAAzsJ,EAAAtZ,EACAnB,GAAAknK,EAAA,IAAAzsJ,EAAA,GAAAtZ,EAEA2qG,EAAA9qG,KAAAsH,EAAAQ,EAAA9I,GACA8rG,EAAA9qG,KAAA8H,EAAAnB,EAAA3H,IArCAm9K,GArBAC,GAEA58K,KAAAouG,SAAA9C,GACAtrG,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAjxG,KAAAwwB,aAAA,SAAA,IAAA24E,GAAAoC,EAAA,IACAvrG,KAAAwwB,aAAA,KAAA,IAAA24E,GAAAqC,EAAA,IAqEA34B,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAEA,OADApxF,EAAAs0C,KAAAt2C,KAAA8zF,WAAAx9C,KAAA88C,SACApxF,EAGA6wE,gBAAA7wE,GAGA,OAAA,IAAAu6K,IAAA,IAAAtN,GAAAjtK,EAAAs0C,KAAAv2C,OAAAosK,SAAAnqK,EAAAs0C,MAAAt0C,EAAA25K,gBAAA35K,EAAA8Y,OAAA9Y,EAAA0kK,eAAA1kK,EAAAgpK,SAKA,MAAA6R,WAAA5yE,GACAp3B,YAAAoT,GAIA,GAHAhL,QACAj7E,KAAAD,KAAA,qBAEA,IAAAkmF,EAAAqqB,WAEA,YADAriG,QAAApK,MAAA,gGAKA,MAAAotG,EAAA,GACAn3F,EAAA,IAAAgjK,IAEAr2K,EAAA,IAAAm8E,GACAl8E,EAAA,IAAAk8E,GAEA,GAAA,OAAAqD,EAAA3tE,MAAA,CAEA,MAAAtD,EAAAixE,EAAAvxC,WAAA1/B,SACAs2F,EAAArlB,EAAA3tE,MACA,IAAA8xF,EAAAnkB,EAAAmkB,OAEA,IAAAA,EAAA/pG,SACA+pG,EAAA,CAAA,CACA3jG,MAAA,EACAo4E,MAAAysB,EAAAzsB,MACA0rB,cAAA,KAKA,IAAA,IAAAtkE,EAAA,EAAA82I,EAAA3yE,EAAA/pG,OAAA4lC,EAAA82I,IAAA92I,EAAA,CACA,MAAAqmE,EAAAlC,EAAAnkE,GACAkrE,EAAA7E,EAAA7lG,MAGA,IAAA,IAAA9F,EAAAwwG,EAAA5gG,EAAA4gG,EAFA7E,EAAAztB,MAEAl+E,EAAA4P,EAAA5P,GAAA,EACA,IAAA,IAAAsZ,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,MAAAytF,EAAA4D,EAAAz0B,KAAAl2E,EAAAsZ,GACA0tF,EAAA2D,EAAAz0B,KAAAl2E,GAAAsZ,EAAA,GAAA,GACAxT,EAAAohG,oBAAA7yF,EAAA0yF,GACAhhG,EAAAmhG,oBAAA7yF,EAAA2yF,IAEA,IAAAq1E,GAAAv2K,EAAAC,EAAAoT,KACAm3F,EAAAzwG,KAAAiG,EAAAe,EAAAf,EAAAnB,EAAAmB,EAAAw4B,GACAgyE,EAAAzwG,KAAAkG,EAAAc,EAAAd,EAAApB,EAAAoB,EAAAu4B,UAKA,CAEA,MAAAjqB,EAAAixE,EAAAvxC,WAAA1/B,SAEA,IAAA,IAAArU,EAAA,EAAA4P,EAAAyE,EAAA6pE,MAAA,EAAAl+E,EAAA4P,EAAA5P,IACA,IAAA,IAAAsZ,EAAA,EAAAA,EAAA,EAAAA,IAAA,CAGA,MAAAytF,EAAA,EAAA/mG,EAAAsZ,EACA0tF,EAAA,EAAAhnG,GAAAsZ,EAAA,GAAA,EACAxT,EAAAohG,oBAAA7yF,EAAA0yF,GACAhhG,EAAAmhG,oBAAA7yF,EAAA2yF,IAEA,IAAAq1E,GAAAv2K,EAAAC,EAAAoT,KACAm3F,EAAAzwG,KAAAiG,EAAAe,EAAAf,EAAAnB,EAAAmB,EAAAw4B,GACAgyE,EAAAzwG,KAAAkG,EAAAc,EAAAd,EAAApB,EAAAoB,EAAAu4B,KAOAj/B,KAAAwwB,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,KAKA,SAAA+rE,GAAAv2K,EAAAC,EAAAoT,GACA,MAAAmjK,EAAA,GAAAx2K,EAAAe,KAAAf,EAAAnB,KAAAmB,EAAAw4B,KAAAv4B,EAAAc,KAAAd,EAAApB,KAAAoB,EAAAu4B,IACAi+I,EAAA,GAAAx2K,EAAAc,KAAAd,EAAApB,KAAAoB,EAAAu4B,KAAAx4B,EAAAe,KAAAf,EAAAnB,KAAAmB,EAAAw4B,IAEA,OAAA,IAAAnlB,EAAAwtB,IAAA21I,KAAA,IAAAnjK,EAAAwtB,IAAA41I,KAGApjK,EAAAwD,IAAA2/J,EAAAC,IACA,GAIA,IAAAC,GAAAz0K,OAAAsrE,OAAA,CACA9qE,UAAA,KACA2nG,YAAAA,GACAusE,kBAAAvsE,GACAo1D,eAAAA,GACAoX,qBAAApX,GACAoB,aAAAA,GACAiW,mBAAAjW,GACAd,iBAAAA,GACAgX,uBAAAhX,GACAoC,qBAAAA,GACA6U,2BAAA7U,GACAK,cAAAA,GACA+K,gBAAAA,GACA0J,sBAAA1J,GACAwF,oBAAAA,GACAmE,0BAAAnE,GACAC,cAAAA,GACAmE,oBAAAnE,GACAI,mBAAAA,GACAgE,yBAAAhE,GACAC,mBAAAA,GACAgE,yBAAAhE,GACA5+D,cAAAA,GACA6iE,oBAAA7iE,GACAqsD,mBAAAA,GACAyW,yBAAAzW,GACA8S,aAAAA,GACA4D,mBAAA5D,GACAO,cAAAA,GACAsD,oBAAAtD,GACAK,eAAAA,GACAkD,qBAAAlD,GACAI,oBAAAA,GACA+C,0BAAA/C,GACAC,aAAAA,GACA+C,mBAAA/C,GACAI,cAAAA,GACA4C,oBAAA5C,GACAI,kBAAAA,GACAyC,wBAAAzC,GACAU,aAAAA,GACAgC,mBAAAhC,GACAM,kBAAAA,KASA,MAAAtxC,WAAAv0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,iBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,GACA1lG,KAAAuf,aAAA,EACAvf,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,MAKAurI,GAAAxiI,UAAA0qJ,kBAAA,EAkDA,MAAAxoB,WAAAj0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAyyG,QAAA,CACA+rE,SAAA,IAEAx+K,KAAAD,KAAA,uBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UAEA1lG,KAAAy5F,UAAA,EACAz5F,KAAA05F,UAAA,EACA15F,KAAAkgB,IAAA,KACAlgB,KAAA06F,SAAA,KACA16F,KAAA26F,kBAAA,EACA36F,KAAA46F,MAAA,KACA56F,KAAA66F,eAAA,EACA76F,KAAA45F,SAAA,IAAA8L,GAAA,GACA1lG,KAAA65F,kBAAA,EACA75F,KAAAw7F,YAAA,KACAx7F,KAAA86F,QAAA,KACA96F,KAAA+6F,UAAA,EACA/6F,KAAAg7F,UAAA,KACAh7F,KAAAi7F,cAnwxBA,EAowxBAj7F,KAAAk7F,YAAA,IAAAnlB,GAAA,EAAA,GACA/1E,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAAs7F,aAAA,KACAt7F,KAAAu7F,aAAA,KACAv7F,KAAAy6F,SAAA,KACAz6F,KAAA47F,OAAA,KACA57F,KAAA87F,gBAAA,EACA97F,KAAAg8F,gBAAA,IACAh8F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAA88F,iBAAA,QACA98F,KAAA+8F,kBAAA,QACA/8F,KAAAs5F,aAAA,EACAt5F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAmCA,OAlCAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAyyG,QAAA,CACA+rE,SAAA,IAEAx+K,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAy5F,UAAA73D,EAAA63D,UACAz5F,KAAA05F,UAAA93D,EAAA83D,UACA15F,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAA06F,SAAA94D,EAAA84D,SACA16F,KAAA26F,kBAAA/4D,EAAA+4D,kBACA36F,KAAA46F,MAAAh5D,EAAAg5D,MACA56F,KAAA66F,eAAAj5D,EAAAi5D,eACA76F,KAAA45F,SAAA/nF,KAAA+vB,EAAAg4D,UACA55F,KAAAw7F,YAAA55D,EAAA45D,YACAx7F,KAAA65F,kBAAAj4D,EAAAi4D,kBACA75F,KAAA86F,QAAAl5D,EAAAk5D,QACA96F,KAAA+6F,UAAAn5D,EAAAm5D,UACA/6F,KAAAg7F,UAAAp5D,EAAAo5D,UACAh7F,KAAAi7F,cAAAr5D,EAAAq5D,cACAj7F,KAAAk7F,YAAArpF,KAAA+vB,EAAAs5D,aACAl7F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAAs7F,aAAA15D,EAAA05D,aACAt7F,KAAAu7F,aAAA35D,EAAA25D,aACAv7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAA47F,OAAAh6D,EAAAg6D,OACA57F,KAAA87F,gBAAAl6D,EAAAk6D,gBACA97F,KAAAg8F,gBAAAp6D,EAAAo6D,gBACAh8F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA88F,iBAAAl7D,EAAAk7D,iBACA98F,KAAA+8F,kBAAAn7D,EAAAm7D,kBACA/8F,KAAAs5F,YAAA13D,EAAA03D,YACAt5F,MAKAirI,GAAAliI,UAAA8iI,wBAAA,EA+BA,MAAAX,WAAAD,GACAp4D,YAAAihB,GACA7Y,QACAj7E,KAAAyyG,QAAA,CACA+rE,SAAA,GACAC,SAAA,IAEAz+K,KAAAD,KAAA,uBACAC,KAAAo6F,aAAA,KACAp6F,KAAAm6F,mBAAA,EACAn6F,KAAAq6F,sBAAA,KACAr6F,KAAAu6F,qBAAA,IAAAxkB,GAAA,EAAA,GACA/1E,KAAAs6F,mBAAA,KACAt6F,KAAAokH,IAAA,IACA17G,OAAAC,eAAA3I,KAAA,eAAA,CACA6d,IAAA,WACA,OAAA5V,GAAA,KAAAjI,KAAAokH,IAAA,IAAApkH,KAAAokH,IAAA,GAAA,EAAA,IAEAn/F,IAAA,SAAA82E,GACA/7F,KAAAokH,KAAA,EAAA,GAAAroB,IAAA,EAAA,GAAAA,MAGA/7F,KAAA25F,UAAA,IAAA+L,GAAA,GACA1lG,KAAAk8F,aAAA,EACAl8F,KAAAm8F,gBAAA,KACAn8F,KAAAo8F,UAAA,IACAp8F,KAAAq8F,aAAA,KACAr8F,KAAAs8F,oBAAA,EACAt8F,KAAAu8F,gBAAA,IAAAmJ,GAAA,EAAA,EAAA,GACA1lG,KAAA+5F,kBAAA,EACA/5F,KAAA07F,qBAAA,KACA17F,KAAAg6F,aAAA,IAAA0L,GAAA,EAAA,EAAA,GACA1lG,KAAA27F,gBAAA,KACA37F,KAAA0+K,WAAA,EACA1+K,KAAA2+K,cAAA,EACA3+K,KAAAknG,UAAApT,GAGAoG,gBACA,OAAAl6F,KAAA0+K,WAGAxkF,cAAAp6F,GACAE,KAAA0+K,WAAA,GAAA5+K,EAAA,GACAE,KAAAwI,UAGAxI,KAAA0+K,WAAA5+K,EAGAo8F,mBACA,OAAAl8F,KAAA2+K,cAGAziF,iBAAAp8F,GACAE,KAAA2+K,cAAA,GAAA7+K,EAAA,GACAE,KAAAwI,UAGAxI,KAAA2+K,cAAA7+K,EAGA+yE,KAAAjxC,GAwBA,OAvBAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAyyG,QAAA,CACA+rE,SAAA,GACAC,SAAA,IAEAz+K,KAAAk6F,UAAAt4D,EAAAs4D,UACAl6F,KAAAo6F,aAAAx4D,EAAAw4D,aACAp6F,KAAAm6F,mBAAAv4D,EAAAu4D,mBACAn6F,KAAAq6F,sBAAAz4D,EAAAy4D,sBACAr6F,KAAAs6F,mBAAA14D,EAAA04D,mBACAt6F,KAAAu6F,qBAAA1oF,KAAA+vB,EAAA24D,sBACAv6F,KAAAokH,IAAAxiF,EAAAwiF,IACApkH,KAAA25F,UAAA9nF,KAAA+vB,EAAA+3D,WACA35F,KAAAk8F,aAAAt6D,EAAAs6D,aACAl8F,KAAAm8F,gBAAAv6D,EAAAu6D,gBACAn8F,KAAAo8F,UAAAx6D,EAAAw6D,UACAp8F,KAAAq8F,aAAAz6D,EAAAy6D,aACAr8F,KAAAs8F,oBAAA16D,EAAA06D,oBACAt8F,KAAAu8F,gBAAA1qF,KAAA+vB,EAAA26D,iBACAv8F,KAAA+5F,kBAAAn4D,EAAAm4D,kBACA/5F,KAAA07F,qBAAA95D,EAAA85D,qBACA17F,KAAAg6F,aAAAnoF,KAAA+vB,EAAAo4D,cACAh6F,KAAA27F,gBAAA/5D,EAAA+5D,gBACA37F,MAKAkrI,GAAAniI,UAAA0pJ,wBAAA,EAgDA,MAAA1nB,WAAA/zC,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,oBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UAEA1lG,KAAA85F,SAAA,IAAA4L,GAAA,SACA1lG,KAAAi6F,UAAA,GACAj6F,KAAAkgB,IAAA,KACAlgB,KAAA06F,SAAA,KACA16F,KAAA26F,kBAAA,EACA36F,KAAA46F,MAAA,KACA56F,KAAA66F,eAAA,EACA76F,KAAA45F,SAAA,IAAA8L,GAAA,GACA1lG,KAAA65F,kBAAA,EACA75F,KAAAw7F,YAAA,KACAx7F,KAAA86F,QAAA,KACA96F,KAAA+6F,UAAA,EACA/6F,KAAAg7F,UAAA,KACAh7F,KAAAi7F,cA3/xBA,EA4/xBAj7F,KAAAk7F,YAAA,IAAAnlB,GAAA,EAAA,GACA/1E,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAAy7F,YAAA,KACAz7F,KAAAy6F,SAAA,KACAz6F,KAAA47F,OAAA,KACA57F,KAAA67F,QA1nyBA,EA2nyBA77F,KAAA+7F,aAAA,EACA/7F,KAAAg8F,gBAAA,IACAh8F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAA88F,iBAAA,QACA98F,KAAA+8F,kBAAA,QACA/8F,KAAAs5F,aAAA,EACAt5F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAgCA,OA/BAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAA85F,SAAAjoF,KAAA+vB,EAAAk4D,UACA95F,KAAAi6F,UAAAr4D,EAAAq4D,UACAj6F,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAA06F,SAAA94D,EAAA84D,SACA16F,KAAA26F,kBAAA/4D,EAAA+4D,kBACA36F,KAAA46F,MAAAh5D,EAAAg5D,MACA56F,KAAA66F,eAAAj5D,EAAAi5D,eACA76F,KAAA45F,SAAA/nF,KAAA+vB,EAAAg4D,UACA55F,KAAAw7F,YAAA55D,EAAA45D,YACAx7F,KAAA65F,kBAAAj4D,EAAAi4D,kBACA75F,KAAA86F,QAAAl5D,EAAAk5D,QACA96F,KAAA+6F,UAAAn5D,EAAAm5D,UACA/6F,KAAAg7F,UAAAp5D,EAAAo5D,UACAh7F,KAAAi7F,cAAAr5D,EAAAq5D,cACAj7F,KAAAk7F,YAAArpF,KAAA+vB,EAAAs5D,aACAl7F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAAy7F,YAAA75D,EAAA65D,YACAz7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAA47F,OAAAh6D,EAAAg6D,OACA57F,KAAA67F,QAAAj6D,EAAAi6D,QACA77F,KAAA+7F,aAAAn6D,EAAAm6D,aACA/7F,KAAAg8F,gBAAAp6D,EAAAo6D,gBACAh8F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA88F,iBAAAl7D,EAAAk7D,iBACA98F,KAAA+8F,kBAAAn7D,EAAAm7D,kBACA/8F,KAAAs5F,YAAA13D,EAAA03D,YACAt5F,MAKA+qI,GAAAhiI,UAAAwpJ,qBAAA,EAsCA,MAAAvnB,WAAAh0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAyyG,QAAA,CACAmsE,KAAA,IAEA5+K,KAAAD,KAAA,mBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UACA1lG,KAAAkgB,IAAA,KACAlgB,KAAAi8F,YAAA,KACAj8F,KAAA06F,SAAA,KACA16F,KAAA26F,kBAAA,EACA36F,KAAA46F,MAAA,KACA56F,KAAA66F,eAAA,EACA76F,KAAA45F,SAAA,IAAA8L,GAAA,GACA1lG,KAAA65F,kBAAA,EACA75F,KAAAw7F,YAAA,KACAx7F,KAAA86F,QAAA,KACA96F,KAAA+6F,UAAA,EACA/6F,KAAAg7F,UAAA,KACAh7F,KAAAi7F,cA7myBA,EA8myBAj7F,KAAAk7F,YAAA,IAAAnlB,GAAA,EAAA,GACA/1E,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAAy6F,SAAA,KACAz6F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAA88F,iBAAA,QACA98F,KAAA+8F,kBAAA,QACA/8F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAyBA,OAxBAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAAi8F,YAAAr6D,EAAAq6D,YACAj8F,KAAA06F,SAAA94D,EAAA84D,SACA16F,KAAA26F,kBAAA/4D,EAAA+4D,kBACA36F,KAAA46F,MAAAh5D,EAAAg5D,MACA56F,KAAA66F,eAAAj5D,EAAAi5D,eACA76F,KAAA45F,SAAA/nF,KAAA+vB,EAAAg4D,UACA55F,KAAAw7F,YAAA55D,EAAA45D,YACAx7F,KAAA65F,kBAAAj4D,EAAAi4D,kBACA75F,KAAA86F,QAAAl5D,EAAAk5D,QACA96F,KAAA+6F,UAAAn5D,EAAAm5D,UACA/6F,KAAAg7F,UAAAp5D,EAAAo5D,UACAh7F,KAAAi7F,cAAAr5D,EAAAq5D,cACAj7F,KAAAk7F,YAAArpF,KAAA+vB,EAAAs5D,aACAl7F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA88F,iBAAAl7D,EAAAk7D,iBACA98F,KAAA+8F,kBAAAn7D,EAAAm7D,kBACA/8F,MAKAgrI,GAAAjiI,UAAAspJ,oBAAA,EAwBA,MAAAxnB,WAAA7zC,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,qBACAC,KAAA86F,QAAA,KACA96F,KAAA+6F,UAAA,EACA/6F,KAAAg7F,UAAA,KACAh7F,KAAAi7F,cAvryBA,EAwryBAj7F,KAAAk7F,YAAA,IAAAnlB,GAAA,EAAA,GACA/1E,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAAi3F,KAAA,EACAj3F,KAAAs5F,aAAA,EACAt5F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAaA,OAZAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA86F,QAAAl5D,EAAAk5D,QACA96F,KAAA+6F,UAAAn5D,EAAAm5D,UACA/6F,KAAAg7F,UAAAp5D,EAAAo5D,UACAh7F,KAAAi7F,cAAAr5D,EAAAq5D,cACAj7F,KAAAk7F,YAAArpF,KAAA+vB,EAAAs5D,aACAl7F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAAs5F,YAAA13D,EAAA03D,YACAt5F,MAKA6qI,GAAA9hI,UAAAgqJ,sBAAA,EAkCA,MAAAjoB,WAAA9zC,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,sBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UAEA1lG,KAAAkgB,IAAA,KACAlgB,KAAA06F,SAAA,KACA16F,KAAA26F,kBAAA,EACA36F,KAAA46F,MAAA,KACA56F,KAAA66F,eAAA,EACA76F,KAAA45F,SAAA,IAAA8L,GAAA,GACA1lG,KAAA65F,kBAAA,EACA75F,KAAAw7F,YAAA,KACAx7F,KAAAy7F,YAAA,KACAz7F,KAAAy6F,SAAA,KACAz6F,KAAA47F,OAAA,KACA57F,KAAA67F,QA/3yBA,EAg4yBA77F,KAAA+7F,aAAA,EACA/7F,KAAAg8F,gBAAA,IACAh8F,KAAA48F,WAAA,EACA58F,KAAA68F,mBAAA,EACA78F,KAAA88F,iBAAA,QACA98F,KAAA+8F,kBAAA,QACA/8F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAqBA,OApBAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAA06F,SAAA94D,EAAA84D,SACA16F,KAAA26F,kBAAA/4D,EAAA+4D,kBACA36F,KAAA46F,MAAAh5D,EAAAg5D,MACA56F,KAAA66F,eAAAj5D,EAAAi5D,eACA76F,KAAA45F,SAAA/nF,KAAA+vB,EAAAg4D,UACA55F,KAAAw7F,YAAA55D,EAAA45D,YACAx7F,KAAA65F,kBAAAj4D,EAAAi4D,kBACA75F,KAAAy7F,YAAA75D,EAAA65D,YACAz7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAA47F,OAAAh6D,EAAAg6D,OACA57F,KAAA67F,QAAAj6D,EAAAi6D,QACA77F,KAAA+7F,aAAAn6D,EAAAm6D,aACA/7F,KAAAg8F,gBAAAp6D,EAAAo6D,gBACAh8F,KAAA48F,UAAAh7D,EAAAg7D,UACA58F,KAAA68F,mBAAAj7D,EAAAi7D,mBACA78F,KAAA88F,iBAAAl7D,EAAAk7D,iBACA98F,KAAA+8F,kBAAAn7D,EAAAm7D,kBACA/8F,MAKA8qI,GAAA/hI,UAAAopJ,uBAAA,EA4BA,MAAAhnB,WAAAn0C,GACAnkB,YAAAihB,GACA7Y,QACAj7E,KAAAyyG,QAAA,CACAosE,OAAA,IAEA7+K,KAAAD,KAAA,qBACAC,KAAA2gB,MAAA,IAAA+kF,GAAA,UAEA1lG,KAAAw6F,OAAA,KACAx6F,KAAAkgB,IAAA,KACAlgB,KAAA86F,QAAA,KACA96F,KAAA+6F,UAAA,EACA/6F,KAAAg7F,UAAA,KACAh7F,KAAAi7F,cAt1yBA,EAu1yBAj7F,KAAAk7F,YAAA,IAAAnlB,GAAA,EAAA,GACA/1E,KAAAm7F,gBAAA,KACAn7F,KAAAo7F,kBAAA,EACAp7F,KAAAq7F,iBAAA,EACAr7F,KAAAy6F,SAAA,KACAz6F,KAAAs5F,aAAA,EACAt5F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAkBA,OAjBAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAyyG,QAAA,CACAosE,OAAA,IAEA7+K,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAAw6F,OAAA54D,EAAA44D,OACAx6F,KAAAkgB,IAAA0hB,EAAA1hB,IACAlgB,KAAA86F,QAAAl5D,EAAAk5D,QACA96F,KAAA+6F,UAAAn5D,EAAAm5D,UACA/6F,KAAAg7F,UAAAp5D,EAAAo5D,UACAh7F,KAAAi7F,cAAAr5D,EAAAq5D,cACAj7F,KAAAk7F,YAAArpF,KAAA+vB,EAAAs5D,aACAl7F,KAAAm7F,gBAAAv5D,EAAAu5D,gBACAn7F,KAAAo7F,kBAAAx5D,EAAAw5D,kBACAp7F,KAAAq7F,iBAAAz5D,EAAAy5D,iBACAr7F,KAAAy6F,SAAA74D,EAAA64D,SACAz6F,KAAAs5F,YAAA13D,EAAA03D,YACAt5F,MAKAmrI,GAAApiI,UAAA4pJ,sBAAA,EAeA,MAAAtnB,WAAAD,GACAv4D,YAAAihB,GACA7Y,QACAj7E,KAAAD,KAAA,qBACAC,KAAA+2B,MAAA,EACA/2B,KAAA08F,SAAA,EACA18F,KAAA28F,QAAA,EACA38F,KAAAknG,UAAApT,GAGAjhB,KAAAjxC,GAKA,OAJAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA+2B,MAAA6K,EAAA7K,MACA/2B,KAAA08F,SAAA96D,EAAA86D,SACA18F,KAAA28F,QAAA/6D,EAAA+6D,QACA38F,MAKAqrI,GAAAtiI,UAAAoqJ,sBAAA,EAEA,IAAA2rB,GAAAp2K,OAAAsrE,OAAA,CACA9qE,UAAA,KACAqiI,eAAAA,GACAC,eAAAA,GACA5Y,kBAAAA,GACApgB,eAAAA,GACA84B,eAAAA,GACAJ,qBAAAA,GACAD,qBAAAA,GACAF,kBAAAA,GACAC,iBAAAA,GACAH,mBAAAA,GACAC,oBAAAA,GACAH,kBAAAA,GACAC,qBAAAA,GACA3jC,kBAAAA,GACAkkC,mBAAAA,GACAE,mBAAAA,GACAD,kBAAAA,GACAp0C,SAAAA,KAGA,MAAA+nF,GAAA,CAEAC,WAAA,SAAA76G,EAAA5qD,EAAAmO,GACA,OAAAq3J,GAAAE,aAAA96G,GAGA,IAAAA,EAAAl7D,YAAAk7D,EAAA42C,SAAAxhG,OAAA6tB,IAAA1f,EAAAA,EAAAy8C,EAAA9jE,SAGA8jE,EAAAzzD,MAAA6I,EAAAmO,IAGAw3J,aAAA,SAAA/6G,EAAApkE,EAAAo/K,GACA,OAAAh7G,IACAg7G,GAAAh7G,EAAAl7D,cAAAlJ,EAAAokE,EAEA,iBAAApkE,EAAA86G,kBACA,IAAA96G,EAAAokE,GAGAj3D,MAAAnE,UAAA2H,MAAAwI,KAAAirD,IAEA86G,aAAA,SAAAhtH,GACA,OAAAllD,YAAAC,OAAAilD,MAAAA,aAAAmtH,WAGAC,iBAAA,SAAAC,GAKA,MAAAz0K,EAAAy0K,EAAAj/K,OACAogB,EAAA,IAAAvT,MAAArC,GAEA,IAAA,IAAAlK,EAAA,EAAAA,IAAAkK,IAAAlK,EAAA8f,EAAA9f,GAAAA,EAGA,OADA8f,EAAApY,MATA,SAAA1H,EAAAsZ,GACA,OAAAqlK,EAAA3+K,GAAA2+K,EAAArlK,MASAwG,GAGA8+J,YAAA,SAAAh/K,EAAAstG,EAAA3nD,GACA,MAAAs5H,EAAAj/K,EAAAF,OACAogB,EAAA,IAAAlgB,EAAA0I,YAAAu2K,GAEA,IAAA,IAAA7+K,EAAA,EAAAi/E,EAAA,EAAAA,IAAA4/F,IAAA7+K,EAAA,CACA,MAAA8+K,EAAAv5H,EAAAvlD,GAAAktG,EAEA,IAAA,IAAA5zF,EAAA,EAAAA,IAAA4zF,IAAA5zF,EACAwG,EAAAm/D,KAAAr/E,EAAAk/K,EAAAxlK,GAIA,OAAAwG,GAGAi/J,YAAA,SAAAC,EAAAL,EAAA/+K,EAAAq/K,GACA,IAAAj/K,EAAA,EACAoiB,EAAA48J,EAAA,GAEA,UAAAv4I,IAAArkB,QAAAqkB,IAAArkB,EAAA68J,IACA78J,EAAA48J,EAAAh/K,KAGA,QAAAymC,IAAArkB,EAAA,OAEA,IAAAjjB,EAAAijB,EAAA68J,GACA,QAAAx4I,IAAAtnC,EAEA,GAAAoN,MAAAhM,QAAApB,GACA,GACAA,EAAAijB,EAAA68J,QAEAx4I,IAAAtnC,IACAw/K,EAAA9+K,KAAAuiB,EAAAhc,MACAxG,EAAAC,KAAAwY,MAAAzY,EAAAT,IAGAijB,EAAA48J,EAAAh/K,gBACAymC,IAAArkB,QACA,QAAAqkB,IAAAtnC,EAAA4P,QAEA,GACA5P,EAAAijB,EAAA68J,QAEAx4I,IAAAtnC,IACAw/K,EAAA9+K,KAAAuiB,EAAAhc,MACAjH,EAAA4P,QAAAnP,EAAAA,EAAAF,SAGA0iB,EAAA48J,EAAAh/K,gBACAymC,IAAArkB,QAGA,GACAjjB,EAAAijB,EAAA68J,QAEAx4I,IAAAtnC,IACAw/K,EAAA9+K,KAAAuiB,EAAAhc,MACAxG,EAAAC,KAAAV,IAGAijB,EAAA48J,EAAAh/K,gBACAymC,IAAArkB,IAGA88J,QAAA,SAAAC,EAAA5/K,EAAA6/K,EAAAC,EAAAr+J,EAAA,IACA,MAAAs+J,EAAAH,EAAAphG,QACAuhG,EAAA//K,KAAAA,EACA,MAAAggL,EAAA,GAEA,IAAA,IAAAv/K,EAAA,EAAAA,EAAAs/K,EAAAC,OAAA7/K,SAAAM,EAAA,CACA,MAAAw/K,EAAAF,EAAAC,OAAAv/K,GACAy/K,EAAAD,EAAAE,eACAf,EAAA,GACA/+K,EAAA,GAEA,IAAA,IAAA0Z,EAAA,EAAAA,EAAAkmK,EAAAb,MAAAj/K,SAAA4Z,EAAA,CACA,MAAAhE,EAAAkqK,EAAAb,MAAArlK,GAAA0H,EACA,KAAA1L,EAAA8pK,GAAA9pK,GAAA+pK,GAAA,CACAV,EAAA9+K,KAAA2/K,EAAAb,MAAArlK,IAEA,IAAA,IAAA6wB,EAAA,EAAAA,EAAAs1I,IAAAt1I,EACAvqC,EAAAC,KAAA2/K,EAAA5/K,OAAA0Z,EAAAmmK,EAAAt1I,KAIA,IAAAw0I,EAAAj/K,SACA8/K,EAAAb,MAAAP,GAAAG,aAAAI,EAAAa,EAAAb,MAAAr2K,aACAk3K,EAAA5/K,OAAAw+K,GAAAG,aAAA3+K,EAAA4/K,EAAA5/K,OAAA0I,aACAi3K,EAAA1/K,KAAA2/K,IAGAF,EAAAC,OAAAA,EAEA,IAAAI,EAAAn7J,EAAAA,EAEA,IAAA,IAAAxkB,EAAA,EAAAA,EAAAs/K,EAAAC,OAAA7/K,SAAAM,EACA2/K,EAAAL,EAAAC,OAAAv/K,GAAA2+K,MAAA,KACAgB,EAAAL,EAAAC,OAAAv/K,GAAA2+K,MAAA,IAKA,IAAA,IAAA3+K,EAAA,EAAAA,EAAAs/K,EAAAC,OAAA7/K,SAAAM,EACAs/K,EAAAC,OAAAv/K,GAAAigB,OAAA,EAAA0/J,GAIA,OADAL,EAAAM,gBACAN,GAEAO,iBAAA,SAAAC,EAAAC,EAAA,EAAAC,EAAAF,EAAA9+J,EAAA,IACAA,GAAA,IAAAA,EAAA,IACA,MAAAi/J,EAAAD,EAAAT,OAAA7/K,OACAwgL,EAAAH,EAAA/+J,EAEA,IAAA,IAAAhhB,EAAA,EAAAA,EAAAigL,IAAAjgL,EAAA,CACA,MAAAmgL,EAAAH,EAAAT,OAAAv/K,GACAogL,EAAAD,EAAAE,cAEA,GAAA,SAAAD,GAAA,WAAAA,EAAA,SAEA,MAAAE,EAAAR,EAAAP,OAAAtgL,MAAA,SAAAugL,GACA,OAAAA,EAAAjgL,OAAA4gL,EAAA5gL,MAAAigL,EAAAa,gBAAAD,KAEA,QAAA35I,IAAA65I,EAAA,SACA,IAAAC,EAAA,EACA,MAAAC,EAAAL,EAAAT,eAEAS,EAAAM,kBAAAC,4CACAH,EAAAC,EAAA,GAGA,IAAAG,EAAA,EACA,MAAAC,EAAAN,EAAAZ,eAEAY,EAAAG,kBAAAC,4CACAC,EAAAC,EAAA,GAGA,MAAAtgK,EAAA6/J,EAAAxB,MAAAj/K,OAAA,EACA,IAAAmhL,EAEA,GAAAX,GAAAC,EAAAxB,MAAA,GAAA,CAEA,MAAAmC,EAAAP,EACAQ,EAAAP,EAAAD,EACAM,EAAAzC,GAAAC,WAAA8B,EAAAvgL,OAAAkhL,EAAAC,QACA,GAAAb,GAAAC,EAAAxB,MAAAr+J,GAAA,CAEA,MAAAwgK,EAAAxgK,EAAAkgK,EAAAD,EACAQ,EAAAD,EAAAN,EAAAD,EACAM,EAAAzC,GAAAC,WAAA8B,EAAAvgL,OAAAkhL,EAAAC,OACA,CAEA,MAAAC,EAAAb,EAAAM,oBACAK,EAAAP,EACAQ,EAAAP,EAAAD,EACAS,EAAAC,SAAAf,GACAW,EAAAzC,GAAAC,WAAA2C,EAAAE,aAAAJ,EAAAC,GAIA,GAAA,eAAAX,EAAA,EACA,IAAA7hG,IAAAvF,UAAA6nG,GAAAvuJ,YAAA0uD,YACAjyE,QAAA8xK,GAIA,MAAAM,EAAAb,EAAA3B,MAAAj/K,OAEA,IAAA,IAAA4Z,EAAA,EAAAA,EAAA6nK,IAAA7nK,EAAA,CACA,MAAA8nK,EAAA9nK,EAAAsnK,EAAAD,EAEA,GAAA,eAAAP,EAEA7hG,GAAA8iG,wBAAAf,EAAA1gL,OAAAwhL,EAAAP,EAAA,EAAAP,EAAA1gL,OAAAwhL,OACA,CACA,MAAAE,EAAAV,EAAA,EAAAD,EAEA,IAAA,IAAAx2I,EAAA,EAAAA,EAAAm3I,IAAAn3I,EACAm2I,EAAA1gL,OAAAwhL,EAAAj3I,IAAA02I,EAAA12I,KAOA,OADA21I,EAAAyB,UAAAlwG,EACAyuG,IAwBA,MAAA0B,GACAtvG,YAAAuvG,EAAAC,EAAAC,EAAAT,GACA7hL,KAAAoiL,mBAAAA,EACApiL,KAAAuiL,aAAA,EACAviL,KAAA6hL,kBAAAz6I,IAAAy6I,EAAAA,EAAA,IAAAQ,EAAAp5K,YAAAq5K,GACAtiL,KAAAqiL,aAAAA,EACAriL,KAAAogL,UAAAkC,EACAtiL,KAAAwiL,SAAA,KACAxiL,KAAAyiL,iBAAA,GAGA5vG,SAAA5rE,GACA,MAAAy7K,EAAA1iL,KAAAoiL,mBACA,IAAAp+G,EAAAhkE,KAAAuiL,aACA5iJ,EAAA+iJ,EAAA1+G,GACAumB,EAAAm4F,EAAA1+G,EAAA,GAEA2+G,EAAA,CACAz8J,EAAA,CACA,IAAA6W,EAEA6lJ,EAAA,CAKAC,EAAA,KAAA57K,EAAA04B,GAAA,CACA,IAAA,IAAAmjJ,EAAA9+G,EAAA,IAAA,CACA,QAAA58B,IAAAzH,EAAA,CACA,GAAA14B,EAAAsjF,EAAA,MAAAs4F,EAIA,OAFA7+G,EAAA0+G,EAAAriL,OACAL,KAAAuiL,aAAAv+G,EACAhkE,KAAA+iL,UAAA/+G,EAAA,EAAA/8D,EAAAsjF,GAGA,GAAAvmB,IAAA8+G,EAAA,MAKA,GAHAv4F,EAAA5qD,EACAA,EAAA+iJ,IAAA1+G,GAEA/8D,EAAA04B,EAEA,MAAAzZ,EAKA6W,EAAA2lJ,EAAAriL,OACA,MAAAuiL,EAKA,GAAA37K,GAAAsjF,EAoCA,MAAAo4F,EApCA,CAEA,MAAAK,EAAAN,EAAA,GAEAz7K,EAAA+7K,IACAh/G,EAAA,EAEAumB,EAAAy4F,GAIA,IAAA,IAAAF,EAAA9+G,EAAA,IAAA,CACA,QAAA58B,IAAAmjD,EAGA,OADAvqF,KAAAuiL,aAAA,EACAviL,KAAAijL,aAAA,EAAAh8K,EAAA04B,GAGA,GAAAqkC,IAAA8+G,EAAA,MAKA,GAHAnjJ,EAAA4qD,EACAA,EAAAm4F,IAAA1+G,EAAA,GAEA/8D,GAAAsjF,EAEA,MAAArkE,EAKA6W,EAAAinC,EACAA,EAAA,GAUA,KAAAA,EAAAjnC,GAAA,CACA,MAAAmmJ,EAAAl/G,EAAAjnC,IAAA,EAEA91B,EAAAy7K,EAAAQ,GACAnmJ,EAAAmmJ,EAEAl/G,EAAAk/G,EAAA,EAOA,GAHAvjJ,EAAA+iJ,EAAA1+G,GACAumB,EAAAm4F,EAAA1+G,EAAA,QAEA58B,IAAAmjD,EAEA,OADAvqF,KAAAuiL,aAAA,EACAviL,KAAAijL,aAAA,EAAAh8K,EAAA04B,GAGA,QAAAyH,IAAAzH,EAGA,OAFAqkC,EAAA0+G,EAAAriL,OACAL,KAAAuiL,aAAAv+G,EACAhkE,KAAA+iL,UAAA/+G,EAAA,EAAAumB,EAAAtjF,GAKAjH,KAAAuiL,aAAAv+G,EACAhkE,KAAAmjL,iBAAAn/G,EAAAumB,EAAA5qD,GAIA,OAAA3/B,KAAAojL,aAAAp/G,EAAAumB,EAAAtjF,EAAA04B,GAGAkzC,eACA,OAAA7yE,KAAAwiL,UAAAxiL,KAAAyiL,iBAGA5vG,iBAAAv6D,GAEA,MAAAmI,EAAAzgB,KAAA6hL,aACAthL,EAAAP,KAAAqiL,aACAx0E,EAAA7tG,KAAAogL,UACAnpK,EAAAqB,EAAAu1F,EAEA,IAAA,IAAAltG,EAAA,EAAAA,IAAAktG,IAAAltG,EACA8f,EAAA9f,GAAAJ,EAAA0W,EAAAtW,GAGA,OAAA8f,EAIAoyD,eACA,MAAA,IAAA/oB,MAAA,2BAGA+oB,qBAMAsvG,GAAAp5K,UAAAk6K,aAAAd,GAAAp5K,UAAAs6K,iBACAlB,GAAAp5K,UAAAg6K,UAAAZ,GAAAp5K,UAAAs6K,iBAUA,MAAAC,WAAAnB,GACAtvG,YAAAuvG,EAAAC,EAAAC,EAAAT,GACA5mG,MAAAmnG,EAAAC,EAAAC,EAAAT,GACA7hL,KAAAujL,aAAA,EACAvjL,KAAAwjL,aAAA,EACAxjL,KAAAyjL,aAAA,EACAzjL,KAAA0jL,aAAA,EACA1jL,KAAAyiL,iBAAA,CACAkB,YAAA/xG,EACAgyG,UAAAhyG,GAIAiB,iBAAA7O,EAAAumB,EAAA5qD,GACA,MAAA+iJ,EAAA1iL,KAAAoiL,mBACA,IAAAyB,EAAA7/G,EAAA,EACA8/G,EAAA9/G,EAAA,EACA+/G,EAAArB,EAAAmB,GACAG,EAAAtB,EAAAoB,GAEA,QAAA18I,IAAA28I,EACA,OAAA/jL,KAAAikL,eAAAN,aACA,KAAA9xG,EAEAgyG,EAAA7/G,EACA+/G,EAAA,EAAAx5F,EAAA5qD,EACA,MAEA,KAAAmyC,EAEA+xG,EAAAnB,EAAAriL,OAAA,EACA0jL,EAAAx5F,EAAAm4F,EAAAmB,GAAAnB,EAAAmB,EAAA,GACA,MAEA,QAGAA,EAAA7/G,EACA+/G,EAAApkJ,EAIA,QAAAyH,IAAA48I,EACA,OAAAhkL,KAAAikL,eAAAL,WACA,KAAA/xG,EAEAiyG,EAAA9/G,EACAggH,EAAA,EAAArkJ,EAAA4qD,EACA,MAEA,KAAAzY,EAEAgyG,EAAA,EACAE,EAAArkJ,EAAA+iJ,EAAA,GAAAA,EAAA,GACA,MAEA,QAGAoB,EAAA9/G,EAAA,EACAggH,EAAAz5F,EAIA,MAAA25F,EAAA,IAAAvkJ,EAAA4qD,GACAsjB,EAAA7tG,KAAAogL,UACApgL,KAAAujL,YAAAW,GAAA35F,EAAAw5F,GACA/jL,KAAAyjL,YAAAS,GAAAF,EAAArkJ,GACA3/B,KAAAwjL,YAAAK,EAAAh2E,EACA7tG,KAAA0jL,YAAAI,EAAAj2E,EAGAh7B,aAAA7O,EAAAumB,EAAAtjF,EAAA04B,GACA,MAAAlf,EAAAzgB,KAAA6hL,aACAthL,EAAAP,KAAAqiL,aACAx0E,EAAA7tG,KAAAogL,UACAtN,EAAA9uG,EAAA6pC,EACAs2E,EAAArR,EAAAjlE,EACAu2E,EAAApkL,KAAAwjL,YACAa,EAAArkL,KAAA0jL,YACAY,EAAAtkL,KAAAujL,YACAgB,EAAAvkL,KAAAyjL,YACArhL,GAAA6E,EAAAsjF,IAAA5qD,EAAA4qD,GACAm4F,EAAAtgL,EAAAA,EACAoiL,EAAA9B,EAAAtgL,EAEAqiL,GAAAH,EAAAE,EAAA,EAAAF,EAAA5B,EAAA4B,EAAAliL,EACA4nF,GAAA,EAAAs6F,GAAAE,IAAA,IAAA,EAAAF,GAAA5B,IAAA,GAAA4B,GAAAliL,EAAA,EACA6+E,IAAA,EAAAsjG,GAAAC,GAAA,IAAAD,GAAA7B,EAAA,GAAAtgL,EACAsiL,EAAAH,EAAAC,EAAAD,EAAA7B,EAEA,IAAA,IAAA/hL,EAAA,EAAAA,IAAAktG,IAAAltG,EACA8f,EAAA9f,GAAA8jL,EAAAlkL,EAAA6jL,EAAAzjL,GAAAqpF,EAAAzpF,EAAA4jL,EAAAxjL,GAAAsgF,EAAA1gF,EAAAuyK,EAAAnyK,GAAA+jL,EAAAnkL,EAAA8jL,EAAA1jL,GAGA,OAAA8f,GAKA,MAAAkkK,WAAAxC,GACAtvG,YAAAuvG,EAAAC,EAAAC,EAAAT,GACA5mG,MAAAmnG,EAAAC,EAAAC,EAAAT,GAGAhvG,aAAA7O,EAAAumB,EAAAtjF,EAAA04B,GACA,MAAAlf,EAAAzgB,KAAA6hL,aACAthL,EAAAP,KAAAqiL,aACAx0E,EAAA7tG,KAAAogL,UACAwE,EAAA5gH,EAAA6pC,EACAg3E,EAAAD,EAAA/2E,EACAi3E,GAAA79K,EAAAsjF,IAAA5qD,EAAA4qD,GACAw6F,EAAA,EAAAD,EAEA,IAAA,IAAAnkL,EAAA,EAAAA,IAAAktG,IAAAltG,EACA8f,EAAA9f,GAAAJ,EAAAskL,EAAAlkL,GAAAokL,EAAAxkL,EAAAqkL,EAAAjkL,GAAAmkL,EAGA,OAAArkK,GAWA,MAAAukK,WAAA7C,GACAtvG,YAAAuvG,EAAAC,EAAAC,EAAAT,GACA5mG,MAAAmnG,EAAAC,EAAAC,EAAAT,GAGAhvG,aAAA7O,GAGA,OAAAhkE,KAAAqjL,iBAAAr/G,EAAA,IAKA,MAAAihH,GACApyG,YAAA3yE,EAAAo/K,EAAA/+K,EAAA2kL,GACA,QAAA99I,IAAAlnC,EAAA,MAAA,IAAA4pD,MAAA,gDACA,QAAA1iB,IAAAk4I,GAAA,IAAAA,EAAAj/K,OAAA,MAAA,IAAAypD,MAAA,oDAAA5pD,GACAF,KAAAE,KAAAA,EACAF,KAAAs/K,MAAAP,GAAAG,aAAAI,EAAAt/K,KAAAmlL,gBACAnlL,KAAAO,OAAAw+K,GAAAG,aAAA3+K,EAAAP,KAAAolL,iBACAplL,KAAAqlL,iBAAAH,GAAAllL,KAAAslL,sBAKAzyG,cAAAstG,GACA,MAAAoF,EAAApF,EAAAl3K,YACA,IAAA+5J,EAEA,GAAAuiB,EAAAnyF,SAAApzF,KAAAozF,OACA4vE,EAAAuiB,EAAAnyF,OAAA+sF,OACA,CAEAnd,EAAA,CACA9iK,KAAAigL,EAAAjgL,KACAo/K,MAAAP,GAAAG,aAAAiB,EAAAb,MAAApyK,OACA3M,OAAAw+K,GAAAG,aAAAiB,EAAA5/K,OAAA2M,QAEA,MAAAg4K,EAAA/E,EAAAqF,mBAEAN,IAAA/E,EAAAmF,uBACAtiB,EAAAkiB,cAAAA,GAMA,OAFAliB,EAAAjjK,KAAAogL,EAAAa,cAEAhe,EAGAnwF,iCAAApyD,GACA,OAAA,IAAAukK,GAAAhlL,KAAAs/K,MAAAt/K,KAAAO,OAAAP,KAAAqgL,eAAA5/J,GAGAoyD,+BAAApyD,GACA,OAAA,IAAAkkK,GAAA3kL,KAAAs/K,MAAAt/K,KAAAO,OAAAP,KAAAqgL,eAAA5/J,GAGAoyD,+BAAApyD,GACA,OAAA,IAAA6iK,GAAAtjL,KAAAs/K,MAAAt/K,KAAAO,OAAAP,KAAAqgL,eAAA5/J,GAGAoyD,iBAAAqyG,GACA,IAAAO,EAEA,OAAAP,GACA,KAAAzzG,EACAg0G,EAAAzlL,KAAA0lL,iCACA,MAEA,KAAAh0G,EACA+zG,EAAAzlL,KAAA2lL,+BACA,MAEA,KAAAh0G,EACA8zG,EAAAzlL,KAAA4lL,+BAIA,QAAAx+I,IAAAq+I,EAAA,CACA,MAAAr3K,EAAA,iCAAApO,KAAAghL,cAAA,yBAAAhhL,KAAAE,KAEA,QAAAknC,IAAApnC,KAAAohL,kBAAA,CAEA,GAAA8D,IAAAllL,KAAAslL,qBAGA,MAAA,IAAAx7H,MAAA17C,GAFApO,KAAAqlL,iBAAArlL,KAAAslL,sBAOA,OADAr3K,QAAAC,KAAA,uBAAAE,GACApO,KAIA,OADAA,KAAAohL,kBAAAqE,EACAzlL,KAGA6yE,mBACA,OAAA7yE,KAAAohL,mBACA,KAAAphL,KAAA0lL,iCACA,OAAAj0G,EAEA,KAAAzxE,KAAA2lL,+BACA,OAAAj0G,EAEA,KAAA1xE,KAAA4lL,+BACA,OAAAj0G,GAIAkB,eACA,OAAA7yE,KAAAO,OAAAF,OAAAL,KAAAs/K,MAAAj/K,OAIAwyE,MAAAgzG,GACA,GAAA,IAAAA,EAAA,CACA,MAAAvG,EAAAt/K,KAAAs/K,MAEA,IAAA,IAAA3+K,EAAA,EAAAkK,EAAAy0K,EAAAj/K,OAAAM,IAAAkK,IAAAlK,EACA2+K,EAAA3+K,IAAAklL,EAIA,OAAA7lL,KAIA6yE,MAAAz9D,GACA,GAAA,IAAAA,EAAA,CACA,MAAAkqK,EAAAt/K,KAAAs/K,MAEA,IAAA,IAAA3+K,EAAA,EAAAkK,EAAAy0K,EAAAj/K,OAAAM,IAAAkK,IAAAlK,EACA2+K,EAAA3+K,IAAAyU,EAIA,OAAApV,KAKA6yE,KAAAttD,EAAAxO,GACA,MAAAuoK,EAAAt/K,KAAAs/K,MACAwG,EAAAxG,EAAAj/K,OACA,IAAAkZ,EAAA,EACAmO,EAAAo+J,EAAA,EAEA,KAAAvsK,IAAAusK,GAAAxG,EAAA/lK,GAAAgM,KACAhM,EAGA,MAAA,IAAAmO,GAAA43J,EAAA53J,GAAA3Q,KACA2Q,EAKA,KAFAA,EAEA,IAAAnO,GAAAmO,IAAAo+J,EAAA,CAEAvsK,GAAAmO,IACAA,EAAAxhB,KAAAiS,IAAAuP,EAAA,GACAnO,EAAAmO,EAAA,GAGA,MAAAmmF,EAAA7tG,KAAAqgL,eACArgL,KAAAs/K,MAAAP,GAAAC,WAAAM,EAAA/lK,EAAAmO,GACA1nB,KAAAO,OAAAw+K,GAAAC,WAAAh/K,KAAAO,OAAAgZ,EAAAs0F,EAAAnmF,EAAAmmF,GAGA,OAAA7tG,KAIA6yE,WACA,IAAAkzG,GAAA,EACA,MAAA3F,EAAApgL,KAAAqgL,eAEAD,EAAAl6K,KAAA4N,MAAAssK,IAAA,IACAnyK,QAAApK,MAAA,oDAAA7D,MACA+lL,GAAA,GAGA,MAAAzG,EAAAt/K,KAAAs/K,MACA/+K,EAAAP,KAAAO,OACAulL,EAAAxG,EAAAj/K,OAEA,IAAAylL,IACA73K,QAAApK,MAAA,uCAAA7D,MACA+lL,GAAA,GAGA,IAAAp9J,EAAA,KAEA,IAAA,IAAAhoB,EAAA,EAAAA,IAAAmlL,EAAAnlL,IAAA,CACA,MAAAqlL,EAAA1G,EAAA3+K,GAEA,GAAA,iBAAAqlL,GAAA3uK,MAAA2uK,GAAA,CACA/3K,QAAApK,MAAA,mDAAA7D,KAAAW,EAAAqlL,GACAD,GAAA,EACA,MAGA,GAAA,OAAAp9J,GAAAA,EAAAq9J,EAAA,CACA/3K,QAAApK,MAAA,0CAAA7D,KAAAW,EAAAqlL,EAAAr9J,GACAo9J,GAAA,EACA,MAGAp9J,EAAAq9J,EAGA,QAAA5+I,IAAA7mC,GACAw+K,GAAAE,aAAA1+K,GACA,IAAA,IAAAI,EAAA,EAAAkK,EAAAtK,EAAAF,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAb,EAAAS,EAAAI,GAEA,GAAA0W,MAAAvX,GAAA,CACAmO,QAAApK,MAAA,oDAAA7D,KAAAW,EAAAb,GACAimL,GAAA,EACA,OAMA,OAAAA,EAKAlzG,WAEA,MAAAysG,EAAAP,GAAAC,WAAAh/K,KAAAs/K,OACA/+K,EAAAw+K,GAAAC,WAAAh/K,KAAAO,QACAstG,EAAA7tG,KAAAqgL,eACA4F,EAAAjmL,KAAAwlL,qBAAA7zG,EACA1wD,EAAAq+J,EAAAj/K,OAAA,EACA,IAAA6lL,EAAA,EAEA,IAAA,IAAAvlL,EAAA,EAAAA,EAAAsgB,IAAAtgB,EAAA,CACA,IAAAwlL,GAAA,EACA,MAAAp/K,EAAAu4K,EAAA3+K,GAGA,GAAAoG,IAFAu4K,EAAA3+K,EAAA,KAEA,IAAAA,GAAAoG,IAAAu4K,EAAA,IACA,GAAA2G,EAeAE,GAAA,MAfA,CAEA,MAAAlvK,EAAAtW,EAAAktG,EACAu4E,EAAAnvK,EAAA42F,EACAw4E,EAAApvK,EAAA42F,EAEA,IAAA,IAAA5zF,EAAA,EAAAA,IAAA4zF,IAAA5zF,EAAA,CACA,MAAAna,EAAAS,EAAA0W,EAAAgD,GAEA,GAAAna,IAAAS,EAAA6lL,EAAAnsK,IAAAna,IAAAS,EAAA8lL,EAAApsK,GAAA,CACAksK,GAAA,EACA,QASA,GAAAA,EAAA,CACA,GAAAxlL,IAAAulL,EAAA,CACA5G,EAAA4G,GAAA5G,EAAA3+K,GACA,MAAA2lL,EAAA3lL,EAAAktG,EACA04E,EAAAL,EAAAr4E,EAEA,IAAA,IAAA5zF,EAAA,EAAAA,IAAA4zF,IAAA5zF,EACA1Z,EAAAgmL,EAAAtsK,GAAA1Z,EAAA+lL,EAAArsK,KAIAisK,GAKA,GAAAjlK,EAAA,EAAA,CACAq+J,EAAA4G,GAAA5G,EAAAr+J,GAEA,IAAA,IAAAqlK,EAAArlK,EAAA4sF,EAAA04E,EAAAL,EAAAr4E,EAAA5zF,EAAA,EAAAA,IAAA4zF,IAAA5zF,EACA1Z,EAAAgmL,EAAAtsK,GAAA1Z,EAAA+lL,EAAArsK,KAGAisK,EAWA,OARAA,IAAA5G,EAAAj/K,QACAL,KAAAs/K,MAAAP,GAAAC,WAAAM,EAAA,EAAA4G,GACAlmL,KAAAO,OAAAw+K,GAAAC,WAAAz+K,EAAA,EAAA2lL,EAAAr4E,KAEA7tG,KAAAs/K,MAAAA,EACAt/K,KAAAO,OAAAA,GAGAP,KAGA6yE,QACA,MAAAysG,EAAAP,GAAAC,WAAAh/K,KAAAs/K,MAAA,GACA/+K,EAAAw+K,GAAAC,WAAAh/K,KAAAO,OAAA,GAEA4/K,EAAA,IAAAqG,EADAxmL,KAAAiJ,aACAjJ,KAAAE,KAAAo/K,EAAA/+K,GAGA,OADA4/K,EAAAiB,kBAAAphL,KAAAohL,kBACAjB,GAKA8E,GAAAl8K,UAAAo8K,eAAA/7E,aACA67E,GAAAl8K,UAAAq8K,gBAAAh8E,aACA67E,GAAAl8K,UAAAu8K,qBAAA5zG,EAMA,MAAA+0G,WAAAxB,IAEAwB,GAAA19K,UAAAi4K,cAAA,OACAyF,GAAA19K,UAAAq8K,gBAAAl4K,MACAu5K,GAAA19K,UAAAu8K,qBAAA7zG,EACAg1G,GAAA19K,UAAA48K,oCAAAv+I,EACAq/I,GAAA19K,UAAA68K,oCAAAx+I,EAMA,MAAAs/I,WAAAzB,IAEAyB,GAAA39K,UAAAi4K,cAAA,QAMA,MAAA2F,WAAA1B,IAEA0B,GAAA59K,UAAAi4K,cAAA,SAMA,MAAA4F,WAAAzE,GACAtvG,YAAAuvG,EAAAC,EAAAC,EAAAT,GACA5mG,MAAAmnG,EAAAC,EAAAC,EAAAT,GAGAhvG,aAAA7O,EAAAumB,EAAAtjF,EAAA04B,GACA,MAAAlf,EAAAzgB,KAAA6hL,aACAthL,EAAAP,KAAAqiL,aACAx0E,EAAA7tG,KAAAogL,UACAppJ,GAAA/vB,EAAAsjF,IAAA5qD,EAAA4qD,GACA,IAAAtzE,EAAA+sD,EAAA6pC,EAEA,IAAA,IAAAnnG,EAAAuQ,EAAA42F,EAAA52F,IAAAvQ,EAAAuQ,GAAA,EACAioE,GAAA2nG,UAAApmK,EAAA,EAAAlgB,EAAA0W,EAAA42F,EAAAttG,EAAA0W,EAAA+f,GAGA,OAAAvW,GASA,MAAAqmK,WAAA7B,GACApyG,+BAAApyD,GACA,OAAA,IAAAmmK,GAAA5mL,KAAAs/K,MAAAt/K,KAAAO,OAAAP,KAAAqgL,eAAA5/J,IAKAqmK,GAAA/9K,UAAAi4K,cAAA,aAEA8F,GAAA/9K,UAAAu8K,qBAAA5zG,EACAo1G,GAAA/9K,UAAA68K,oCAAAx+I,EAMA,MAAA2/I,WAAA9B,IAEA8B,GAAAh+K,UAAAi4K,cAAA,SACA+F,GAAAh+K,UAAAq8K,gBAAAl4K,MACA65K,GAAAh+K,UAAAu8K,qBAAA7zG,EACAs1G,GAAAh+K,UAAA48K,oCAAAv+I,EACA2/I,GAAAh+K,UAAA68K,oCAAAx+I,EAMA,MAAA4/I,WAAA/B,IAEA+B,GAAAj+K,UAAAi4K,cAAA,SAEA,MAAAiG,GACAp0G,YAAA3yE,EAAAqL,GAAA,EAAA20K,EAAAgC,EAAAnwG,MACA/xE,KAAAE,KAAAA,EACAF,KAAAkgL,OAAAA,EACAlgL,KAAAuL,SAAAA,EACAvL,KAAAkiL,UAAAA,EACAliL,KAAAk7E,KAAA9H,KAEApzE,KAAAuL,SAAA,GACAvL,KAAAugL,gBAIA1tG,aAAAmwF,GACA,MAAAkd,EAAA,GACAgH,EAAAlkB,EAAAkd,OACAiH,EAAA,GAAAnkB,EAAArhJ,KAAA,GAEA,IAAA,IAAAhhB,EAAA,EAAAkK,EAAAq8K,EAAA7mL,OAAAM,IAAAkK,IAAAlK,EACAu/K,EAAA1/K,KAAA4mL,GAAAF,EAAAvmL,IAAAo2B,MAAAowJ,IAGA,MAAAlH,EAAA,IAAAjgL,KAAAgjK,EAAA9iK,KAAA8iK,EAAAz3J,SAAA20K,EAAAld,EAAAkf,WAEA,OADAjC,EAAA/kG,KAAA8nF,EAAA9nF,KACA+kG,EAGAptG,cAAAotG,GACA,MAAAC,EAAA,GACAmH,EAAApH,EAAAC,OACAld,EAAA,CACA9iK,KAAA+/K,EAAA//K,KACAqL,SAAA00K,EAAA10K,SACA20K,OAAAA,EACAhlG,KAAA+kG,EAAA/kG,KACAgnG,UAAAjC,EAAAiC,WAGA,IAAA,IAAAvhL,EAAA,EAAAkK,EAAAw8K,EAAAhnL,OAAAM,IAAAkK,IAAAlK,EACAu/K,EAAA1/K,KAAAykL,GAAA7xF,OAAAi0F,EAAA1mL,KAGA,OAAAqiK,EAGAnwF,qCAAA3yE,EAAAonL,EAAA3lK,EAAA4lK,GACA,MAAAC,EAAAF,EAAAjnL,OACA6/K,EAAA,GAEA,IAAA,IAAAv/K,EAAA,EAAAA,EAAA6mL,EAAA7mL,IAAA,CACA,IAAA2+K,EAAA,GACA/+K,EAAA,GACA++K,EAAA9+K,MAAAG,EAAA6mL,EAAA,GAAAA,EAAA7mL,GAAAA,EAAA,GAAA6mL,GACAjnL,EAAAC,KAAA,EAAA,EAAA,GACA,MAAA0lD,EAAA64H,GAAAM,iBAAAC,GACAA,EAAAP,GAAAQ,YAAAD,EAAA,EAAAp5H,GACA3lD,EAAAw+K,GAAAQ,YAAAh/K,EAAA,EAAA2lD,GAGAqhI,GAAA,IAAAjI,EAAA,KACAA,EAAA9+K,KAAAgnL,GACAjnL,EAAAC,KAAAD,EAAA,KAGA2/K,EAAA1/K,KAAA,IAAAmmL,GAAA,0BAAAW,EAAA3mL,GAAAT,KAAA,IAAAo/K,EAAA/+K,GAAAw2B,MAAA,EAAApV,IAGA,OAAA,IAAA3hB,KAAAE,GAAA,EAAAggL,GAGArtG,kBAAA40G,EAAAvnL,GACA,IAAAwnL,EAAAD,EAEA,IAAAv6K,MAAAhM,QAAAumL,GAAA,CACA,MAAAxhJ,EAAAwhJ,EACAC,EAAAzhJ,EAAAggD,UAAAhgD,EAAAggD,SAAAl8D,YAAAkc,EAAAlc,WAGA,IAAA,IAAAppB,EAAA,EAAAA,EAAA+mL,EAAArnL,OAAAM,IACA,GAAA+mL,EAAA/mL,GAAAT,OAAAA,EACA,OAAAwnL,EAAA/mL,GAIA,OAAA,KAGAkyE,2CAAA+8B,EAAAjuF,EAAA4lK,GACA,MAAAI,EAAA,GAGAC,EAAA,qBAGA,IAAA,IAAAjnL,EAAA,EAAAqzB,EAAA47E,EAAAvvG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAknL,EAAAj4E,EAAAjvG,GACAmnL,EAAAD,EAAA3nL,KAAAiR,MAAAy2K,GAEA,GAAAE,GAAAA,EAAAznL,OAAA,EAAA,CACA,MAAAH,EAAA4nL,EAAA,GACA,IAAAC,EAAAJ,EAAAznL,GAEA6nL,IACAJ,EAAAznL,GAAA6nL,EAAA,IAGAA,EAAAvnL,KAAAqnL,IAIA,MAAAG,EAAA,GAEA,IAAA,MAAA9nL,KAAAynL,EACAK,EAAAxnL,KAAAR,KAAAioL,8BAAA/nL,EAAAynL,EAAAznL,GAAAyhB,EAAA4lK,IAGA,OAAAS,EAIAn1G,sBAAA/hE,EAAAg7H,GACA,IAAAh7H,EAEA,OADA7C,QAAApK,MAAA,yDACA,KAGA,MAAAqkL,EAAA,SAAA3C,EAAA4C,EAAAC,EAAAC,EAAAC,GAEA,GAAA,IAAAF,EAAA/nL,OAAA,CACA,MAAAi/K,EAAA,GACA/+K,EAAA,GACAw+K,GAAAW,YAAA0I,EAAA9I,EAAA/+K,EAAA8nL,GAEA,IAAA/I,EAAAj/K,QACAioL,EAAA9nL,KAAA,IAAA+kL,EAAA4C,EAAA7I,EAAA/+K,MAKA2/K,EAAA,GACAqI,EAAAz3K,EAAA5Q,MAAA,UACAyhB,EAAA7Q,EAAA6Q,KAAA,GACAugK,EAAApxK,EAAAoxK,UAEA,IAAA32K,EAAAuF,EAAAzQ,SAAA,EACA,MAAAmoL,EAAA13K,EAAA23K,WAAA,GAEA,IAAA,IAAAhpK,EAAA,EAAAA,EAAA+oK,EAAAnoL,OAAAof,IAAA,CACA,MAAA2oK,EAAAI,EAAA/oK,GAAAikB,KAEA,GAAA0kJ,GAAA,IAAAA,EAAA/nL,OAEA,GAAA+nL,EAAA,GAAAx4E,aAAA,CAEA,MAAA84E,EAAA,GACA,IAAA59I,EAEA,IAAAA,EAAA,EAAAA,EAAAs9I,EAAA/nL,OAAAyqC,IACA,GAAAs9I,EAAAt9I,GAAA8kE,aACA,IAAA,IAAA9iF,EAAA,EAAAA,EAAAs7J,EAAAt9I,GAAA8kE,aAAAvvG,OAAAysB,IACA47J,EAAAN,EAAAt9I,GAAA8kE,aAAA9iF,KAAA,EAQA,IAAA,MAAA67J,KAAAD,EAAA,CACA,MAAApJ,EAAA,GACA/+K,EAAA,GAEA,IAAA,IAAAusB,EAAA,EAAAA,IAAAs7J,EAAAt9I,GAAA8kE,aAAAvvG,SAAAysB,EAAA,CACA,MAAA87J,EAAAR,EAAAt9I,GACAw0I,EAAA9+K,KAAAooL,EAAA7hL,MACAxG,EAAAC,KAAAooL,EAAAf,cAAAc,EAAA,EAAA,GAGAzI,EAAA1/K,KAAA,IAAAmmL,GAAA,yBAAAgC,EAAA,IAAArJ,EAAA/+K,IAGAgL,EAAAm9K,EAAAroL,QAAAshB,GAAA,OACA,CAEA,MAAAknK,EAAA,UAAA/8C,EAAArsH,GAAAvf,KAAA,IACAgoL,EAAAlB,GAAA6B,EAAA,YAAAT,EAAA,MAAAlI,GACAgI,EAAApB,GAAA+B,EAAA,cAAAT,EAAA,MAAAlI,GACAgI,EAAAlB,GAAA6B,EAAA,SAAAT,EAAA,MAAAlI,IAIA,GAAA,IAAAA,EAAA7/K,OACA,OAAA,KAIA,OADA,IAAAL,KAAAuoL,EAAAh9K,EAAA20K,EAAAgC,GAIArvG,gBAEA,IAAAtnE,EAAA,EAEA,IAAA,IAAA5K,EAAA,EAAAkK,EAHA7K,KAAAkgL,OAGA7/K,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAw/K,EAAAngL,KAAAkgL,OAAAv/K,GACA4K,EAAArF,KAAAiS,IAAA5M,EAAA40K,EAAAb,MAAAa,EAAAb,MAAAj/K,OAAA,IAIA,OADAL,KAAAuL,SAAAA,EACAvL,KAGA6yE,OACA,IAAA,IAAAlyE,EAAA,EAAAA,EAAAX,KAAAkgL,OAAA7/K,OAAAM,IACAX,KAAAkgL,OAAAv/K,GAAAE,KAAA,EAAAb,KAAAuL,UAGA,OAAAvL,KAGA6yE,WACA,IAAAkzG,GAAA,EAEA,IAAA,IAAAplL,EAAA,EAAAA,EAAAX,KAAAkgL,OAAA7/K,OAAAM,IACAolL,EAAAA,GAAA/lL,KAAAkgL,OAAAv/K,GAAAmoL,WAGA,OAAA/C,EAGAlzG,WACA,IAAA,IAAAlyE,EAAA,EAAAA,EAAAX,KAAAkgL,OAAA7/K,OAAAM,IACAX,KAAAkgL,OAAAv/K,GAAAooL,WAGA,OAAA/oL,KAGA6yE,QACA,MAAAqtG,EAAA,GAEA,IAAA,IAAAv/K,EAAA,EAAAA,EAAAX,KAAAkgL,OAAA7/K,OAAAM,IACAu/K,EAAA1/K,KAAAR,KAAAkgL,OAAAv/K,GAAA+9E,SAGA,OAAA,IAAA1+E,KAAAiJ,YAAAjJ,KAAAE,KAAAF,KAAAuL,SAAA20K,EAAAlgL,KAAAkiL,WAGArvG,SACA,OAAA7yE,KAAAiJ,YAAAmqF,OAAApzF,OAqCA,SAAAonL,GAAApkB,GACA,QAAA57H,IAAA47H,EAAAjjK,KACA,MAAA,IAAA+pD,MAAA,4DAGA,MAAAy7H,EArCA,SAAAyD,GACA,OAAAA,EAAA7kK,eACA,IAAA,SACA,IAAA,SACA,IAAA,QACA,IAAA,SACA,IAAA,UACA,OAAAwiK,GAEA,IAAA,SACA,IAAA,UACA,IAAA,UACA,IAAA,UACA,OAAAK,GAEA,IAAA,QACA,OAAAN,GAEA,IAAA,aACA,OAAAI,GAEA,IAAA,OACA,IAAA,UACA,OAAAL,GAEA,IAAA,SACA,OAAAM,GAGA,MAAA,IAAAj9H,MAAA,8CAAAk/H,GAQAC,CAAAjmB,EAAAjjK,MAEA,QAAAqnC,IAAA47H,EAAAsc,MAAA,CACA,MAAAA,EAAA,GACA/+K,EAAA,GACAw+K,GAAAW,YAAA1c,EAAAt/H,KAAA47I,EAAA/+K,EAAA,SACAyiK,EAAAsc,MAAAA,EACAtc,EAAAziK,OAAAA,EAIA,YAAA6mC,IAAAm+I,EAAA/wF,MACA+wF,EAAA/wF,MAAAwuE,GAGA,IAAAuiB,EAAAviB,EAAA9iK,KAAA8iK,EAAAsc,MAAAtc,EAAAziK,OAAAyiK,EAAAkiB,eAIA,MAAAgE,GAAA,CACA1zI,SAAA,EACA50C,MAAA,GACA0c,IAAA,SAAAyF,EAAAomK,IACA,IAAAnpL,KAAAw1C,UAEAx1C,KAAAY,MAAAmiB,GAAAomK,IAEAtrK,IAAA,SAAAkF,GACA,IAAA,IAAA/iB,KAAAw1C,QAEA,OAAAx1C,KAAAY,MAAAmiB,IAEA5gB,OAAA,SAAA4gB,UACA/iB,KAAAY,MAAAmiB,IAEA+I,MAAA,WACA9rB,KAAAY,MAAA,KAIA,MAAAwoL,GACAv2G,YAAAw2G,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACA,IAGAwpL,EAHAC,GAAA,EACAC,EAAA,EACAC,EAAA,EAEA,MAAAn+I,EAAA,GAGAxrC,KAAAkrB,aAAAkc,EACApnC,KAAAqpL,OAAAA,EACArpL,KAAAspL,WAAAA,EACAtpL,KAAAupL,QAAAA,EAEAvpL,KAAA4pL,UAAA,SAAAvmL,GACAsmL,KAEA,IAAAF,QACAriJ,IAAAv5B,EAAAqd,SACArd,EAAAqd,QAAA7nB,EAAAqmL,EAAAC,GAIAF,GAAA,GAGAzpL,KAAA6pL,QAAA,SAAAxmL,GACAqmL,SAEAtiJ,IAAAv5B,EAAAy7K,YACAz7K,EAAAy7K,WAAAjmL,EAAAqmL,EAAAC,GAGAD,IAAAC,IACAF,GAAA,OAEAriJ,IAAAv5B,EAAAw7K,QACAx7K,EAAAw7K,WAKArpL,KAAA8pL,UAAA,SAAAzmL,QACA+jC,IAAAv5B,EAAA07K,SACA17K,EAAA07K,QAAAlmL,IAIArD,KAAA+pL,WAAA,SAAA1mL,GACA,OAAAmmL,EACAA,EAAAnmL,GAGAA,GAGArD,KAAAgqL,eAAA,SAAApsJ,GAEA,OADA4rJ,EAAA5rJ,EACA59B,MAGAA,KAAAiqL,WAAA,SAAAC,EAAAC,GAEA,OADA3+I,EAAAhrC,KAAA0pL,EAAAC,GACAnqL,MAGAA,KAAAoqL,cAAA,SAAAF,GACA,MAAA5xK,EAAAkzB,EAAA3mC,QAAAqlL,GAMA,OAJA,IAAA5xK,GACAkzB,EAAAh8B,OAAA8I,EAAA,GAGAtY,MAGAA,KAAAqqL,WAAA,SAAAlB,GACA,IAAA,IAAAxoL,EAAA,EAAA4P,EAAAi7B,EAAAnrC,OAAAM,EAAA4P,EAAA5P,GAAA,EAAA,CACA,MAAAupL,EAAA1+I,EAAA7qC,GACAwpL,EAAA3+I,EAAA7qC,EAAA,GAGA,GAFAupL,EAAAnmL,SAAAmmL,EAAAjpK,UAAA,GAEAipK,EAAAhpK,KAAAioK,GACA,OAAAgB,EAIA,OAAA,OAMA,MAAAG,GAAA,IAAAlB,GAEA,MAAAmB,GACA13G,YAAA23G,GACAxqL,KAAAwqL,aAAApjJ,IAAAojJ,EAAAA,EAAAF,GACAtqL,KAAAyqL,YAAA,YACAzqL,KAAA0qL,iBAAA,EACA1qL,KAAAs2C,KAAA,GACAt2C,KAAA2qL,aAAA,GACA3qL,KAAA4qL,cAAA,GAGA/3G,QAEAA,UAAAxvE,EAAAimL,GACA,MAAAz7K,EAAA7N,KACA,OAAA,IAAAinB,SAAA,SAAAC,EAAA2jK,GACAh9K,EAAA0lD,KAAAlwD,EAAA6jB,EAAAoiK,EAAAuB,MAIAh4G,SAEAA,eAAA43G,GAEA,OADAzqL,KAAAyqL,YAAAA,EACAzqL,KAGA6yE,mBAAA/yE,GAEA,OADAE,KAAA0qL,gBAAA5qL,EACAE,KAGA6yE,QAAAv8B,GAEA,OADAt2C,KAAAs2C,KAAAA,EACAt2C,KAGA6yE,gBAAA83G,GAEA,OADA3qL,KAAA2qL,aAAAA,EACA3qL,KAGA6yE,iBAAA+3G,GAEA,OADA5qL,KAAA4qL,cAAAA,EACA5qL,MAKA,MAAA8qL,GAAA,GAEA,MAAAC,WAAAR,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,QACAniJ,IAAA/jC,IAAAA,EAAA,SACA+jC,IAAApnC,KAAAs2C,OAAAjzC,EAAArD,KAAAs2C,KAAAjzC,GACAA,EAAArD,KAAAwqL,QAAAT,WAAA1mL,GACA,MAAAwK,EAAA7N,KACA+5G,EAAAmvE,GAAArrK,IAAAxa,GAEA,QAAA+jC,IAAA2yE,EAMA,OALAlsG,EAAA28K,QAAAZ,UAAAvmL,GACA8e,YAAA,WACAknK,GAAAA,EAAAtvE,GACAlsG,EAAA28K,QAAAX,QAAAxmL,KACA,GACA02G,EAIA,QAAA3yE,IAAA0jJ,GAAAznL,GAMA,YALAynL,GAAAznL,GAAA7C,KAAA,CACA6oL,OAAAA,EACAC,WAAAA,EACAC,QAAAA,IAMA,MACAyB,EAAA3nL,EAAA8N,MADA,+BAEA,IAAA85K,EAEA,GAAAD,EAAA,CACA,MAAAE,EAAAF,EAAA,GACAG,IAAAH,EAAA,GACA,IAAAhpL,EAAAgpL,EAAA,GACAhpL,EAAAopL,mBAAAppL,GACAmpL,IAAAnpL,EAAAqpL,KAAArpL,IAEA,IACA,IAAAspL,EACA,MAAAC,GAAAvrL,KAAAurL,cAAA,IAAApnK,cAEA,OAAAonK,GACA,IAAA,cACA,IAAA,OACA,MAAA13E,EAAA,IAAAvL,WAAAtmG,EAAA3B,QAEA,IAAA,IAAAM,EAAA,EAAAA,EAAAqB,EAAA3B,OAAAM,IACAkzG,EAAAlzG,GAAAqB,EAAAwpL,WAAA7qL,GAIA2qL,EADA,SAAAC,EACA,IAAAE,KAAA,CAAA53E,EAAAnK,QAAA,CACA3pG,KAAAmrL,IAGAr3E,EAAAnK,OAGA,MAEA,IAAA,WACA,MAAAgiF,EAAA,IAAAC,UACAL,EAAAI,EAAAE,gBAAA5pL,EAAAkpL,GACA,MAEA,IAAA,OACAI,EAAA9nL,KAAAgxF,MAAAxyF,GACA,MAEA,QAEAspL,EAAAtpL,EAKAmgB,YAAA,WACAknK,GAAAA,EAAAiC,GACAz9K,EAAA28K,QAAAX,QAAAxmL,KACA,GACA,MAAAQ,GAEAse,YAAA,WACAonK,GAAAA,EAAA1lL,GACAgK,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,KACA,QAEA,CAEAynL,GAAAznL,GAAA,GACAynL,GAAAznL,GAAA7C,KAAA,CACA6oL,OAAAA,EACAC,WAAAA,EACAC,QAAAA,IAEA0B,EAAA,IAAAY,eACAZ,EAAAxnK,KAAA,MAAApgB,GAAA,GACA4nL,EAAArnJ,iBAAA,QAAA,SAAAviC,GACA,MAAAiqL,EAAAtrL,KAAAsrL,SACAQ,EAAAhB,GAAAznL,GAGA,UAFAynL,GAAAznL,GAEA,MAAArD,KAAA0iI,QAAA,IAAA1iI,KAAA0iI,OAAA,CAGA,IAAA1iI,KAAA0iI,QAAAz0H,QAAAC,KAAA,6CAGAg7K,GAAA5rK,IAAAja,EAAAioL,GAEA,IAAA,IAAA3qL,EAAA,EAAAqzB,EAAA83J,EAAAzrL,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA8b,EAAAqvK,EAAAnrL,GACA8b,EAAA4sK,QAAA5sK,EAAA4sK,OAAAiC,GAGAz9K,EAAA28K,QAAAX,QAAAxmL,OACA,CACA,IAAA,IAAA1C,EAAA,EAAAqzB,EAAA83J,EAAAzrL,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA8b,EAAAqvK,EAAAnrL,GACA8b,EAAA8sK,SAAA9sK,EAAA8sK,QAAAloL,GAGAwM,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,OAEA,GACA4nL,EAAArnJ,iBAAA,YAAA,SAAAviC,GACA,MAAAyqL,EAAAhB,GAAAznL,GAEA,IAAA,IAAA1C,EAAA,EAAAqzB,EAAA83J,EAAAzrL,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA8b,EAAAqvK,EAAAnrL,GACA8b,EAAA6sK,YAAA7sK,EAAA6sK,WAAAjoL,OAEA,GACA4pL,EAAArnJ,iBAAA,SAAA,SAAAviC,GACA,MAAAyqL,EAAAhB,GAAAznL,UACAynL,GAAAznL,GAEA,IAAA,IAAA1C,EAAA,EAAAqzB,EAAA83J,EAAAzrL,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA8b,EAAAqvK,EAAAnrL,GACA8b,EAAA8sK,SAAA9sK,EAAA8sK,QAAAloL,GAGAwM,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,MACA,GACA4nL,EAAArnJ,iBAAA,SAAA,SAAAviC,GACA,MAAAyqL,EAAAhB,GAAAznL,UACAynL,GAAAznL,GAEA,IAAA,IAAA1C,EAAA,EAAAqzB,EAAA83J,EAAAzrL,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAA8b,EAAAqvK,EAAAnrL,GACA8b,EAAA8sK,SAAA9sK,EAAA8sK,QAAAloL,GAGAwM,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,MACA,QACA+jC,IAAApnC,KAAAurL,eAAAN,EAAAM,aAAAvrL,KAAAurL,mBACAnkJ,IAAApnC,KAAA0qL,kBAAAO,EAAAP,gBAAA1qL,KAAA0qL,iBACAO,EAAAc,kBAAAd,EAAAc,sBAAA3kJ,IAAApnC,KAAAkrL,SAAAlrL,KAAAkrL,SAAA,cAEA,IAAA,MAAAc,KAAAhsL,KAAA4qL,cACAK,EAAAgB,iBAAAD,EAAAhsL,KAAA4qL,cAAAoB,IAGAf,EAAAiB,KAAA,MAIA,OADAr+K,EAAA28K,QAAAZ,UAAAvmL,GACA4nL,EAGAp4G,gBAAA/yE,GAEA,OADAE,KAAAurL,aAAAzrL,EACAE,KAGA6yE,YAAA/yE,GAEA,OADAE,KAAAkrL,SAAAprL,EACAE,MAsIA,MAAAmsL,WAAA5B,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,QACAniJ,IAAApnC,KAAAs2C,OAAAjzC,EAAArD,KAAAs2C,KAAAjzC,GACAA,EAAArD,KAAAwqL,QAAAT,WAAA1mL,GACA,MAAAwK,EAAA7N,KACA+5G,EAAAmvE,GAAArrK,IAAAxa,GAEA,QAAA+jC,IAAA2yE,EAMA,OALAlsG,EAAA28K,QAAAZ,UAAAvmL,GACA8e,YAAA,WACAknK,GAAAA,EAAAtvE,GACAlsG,EAAA28K,QAAAX,QAAAxmL,KACA,GACA02G,EAGA,MAAApqD,EAAA9tC,SAAAwW,gBAAA,+BAAA,OAEA,SAAA+zJ,IACAz8H,EAAA9rB,oBAAA,OAAAuoJ,GAAA,GACAz8H,EAAA9rB,oBAAA,QAAAwoJ,GAAA,GACAnD,GAAA5rK,IAAAja,EAAArD,MACAqpL,GAAAA,EAAArpL,MACA6N,EAAA28K,QAAAX,QAAAxmL,GAGA,SAAAgpL,EAAAhrL,GACAsuD,EAAA9rB,oBAAA,OAAAuoJ,GAAA,GACAz8H,EAAA9rB,oBAAA,QAAAwoJ,GAAA,GACA9C,GAAAA,EAAAloL,GACAwM,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,GAYA,OATAssD,EAAA/rB,iBAAA,OAAAwoJ,GAAA,GACAz8H,EAAA/rB,iBAAA,QAAAyoJ,GAAA,GAEA,UAAAhpL,EAAAkU,OAAA,EAAA,SACA6vB,IAAApnC,KAAAyqL,cAAA96H,EAAA86H,YAAAzqL,KAAAyqL,aAGA58K,EAAA28K,QAAAZ,UAAAvmL,GACAssD,EAAAlsB,IAAApgC,EACAssD,GAKA,MAAA28H,WAAA/B,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAA05G,EAAAlD,EAAAC,EAAAC,GACA,MAAAlrG,EAAA,IAAAu3B,GACAu0E,EAAA,IAAAgC,GAAAnsL,KAAAwqL,SACAL,EAAAqC,eAAAxsL,KAAAyqL,aACAN,EAAAsC,QAAAzsL,KAAAs2C,MACA,IAAAo2I,EAAA,EAEA,SAAAC,EAAAhsL,GACAwpL,EAAA52H,KAAAg5H,EAAA5rL,IAAA,SAAAgvD,GACA0uB,EAAAhvB,OAAA1uD,GAAAgvD,EACA+8H,IAEA,IAAAA,IACAruG,EAAA/B,aAAA,EACA+sG,GAAAA,EAAAhrG,WAEAj3C,EAAAmiJ,GAGA,IAAA,IAAA5oL,EAAA,EAAAA,EAAA4rL,EAAAlsL,SAAAM,EACAgsL,EAAAhsL,GAGA,OAAA09E,GAWA,MAAAuuG,WAAArC,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAq+E,EAAA,IAAAqkF,GACAynB,EAAA,IAAAY,GAAA/qL,KAAAwqL,SAuDA,OAtDAL,EAAA0C,gBAAA,eACA1C,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA2C,mBAAAj/K,EAAA68K,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAqmG,GACA,MAAAqjF,EAAAl/K,EAAA2mF,MAAAkV,GACAqjF,SAEA3lJ,IAAA2lJ,EAAAp9H,MACA0uB,EAAA1uB,MAAAo9H,EAAAp9H,WACAvoB,IAAA2lJ,EAAA/qL,OACAq8E,EAAA1uB,MAAA5sD,MAAAgqL,EAAAhqL,MACAs7E,EAAA1uB,MAAAr1B,OAAAyyJ,EAAAzyJ,OACA+jD,EAAA1uB,MAAA3tD,KAAA+qL,EAAA/qL,MAGAq8E,EAAA1D,WAAAvzC,IAAA2lJ,EAAApyG,MAAAoyG,EAAApyG,MAAA9K,EACAwO,EAAAzD,WAAAxzC,IAAA2lJ,EAAAnyG,MAAAmyG,EAAAnyG,MAAA/K,EACAwO,EAAAxD,eAAAzzC,IAAA2lJ,EAAAlyG,UAAAkyG,EAAAlyG,UAAA3K,EACAmO,EAAAvD,eAAA1zC,IAAA2lJ,EAAAjyG,UAAAiyG,EAAAjyG,UAAA5K,EACAmO,EAAAtD,gBAAA3zC,IAAA2lJ,EAAAhyG,WAAAgyG,EAAAhyG,WAAA,OAEA3zC,IAAA2lJ,EAAA/xG,WACAqD,EAAArD,SAAA+xG,EAAA/xG,eAGA5zC,IAAA2lJ,EAAAvxG,QACA6C,EAAA7C,MAAAuxG,EAAAvxG,YAGAp0C,IAAA2lJ,EAAA/6J,SACAqsD,EAAArsD,OAAA+6J,EAAA/6J,aAGAoV,IAAA2lJ,EAAAhtL,OACAs+E,EAAAt+E,KAAAgtL,EAAAhtL,WAGAqnC,IAAA2lJ,EAAA5xG,UACAkD,EAAAlD,QAAA4xG,EAAA5xG,QACAkD,EAAAvD,UAAA1K,GAGA,IAAA28G,EAAAC,cACA3uG,EAAAvD,UAAA5K,QAGA9oC,IAAA2lJ,EAAAzxG,kBACA+C,EAAA/C,gBAAAyxG,EAAAzxG,iBAGA+C,EAAA/B,aAAA,EACA+sG,GAAAA,EAAAhrG,EAAA0uG,MACAzD,EAAAC,GACAlrG,GAKA,MAAA4uG,WAAA1C,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAAlrG,EAAA,IAAA9D,GACA4vG,EAAA,IAAAgC,GAAAnsL,KAAAwqL,SAcA,OAbAL,EAAAqC,eAAAxsL,KAAAyqL,aACAN,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA52H,KAAAlwD,GAAA,SAAAssD,GACA0uB,EAAA1uB,MAAAA,EAEA,MAAAu9H,EAAA7pL,EAAA0hC,OAAA,kBAAA,GAAA,IAAA1hC,EAAA0hC,OAAA,sBACAs5C,EAAArsD,OAAAk7J,EAAAv8G,EAAAC,EACAyN,EAAA/B,aAAA,OAEAl1C,IAAAiiJ,GACAA,EAAAhrG,KAEAirG,EAAAC,GACAlrG,GAUA,MAAA8uG,WAAAnjB,GACAn3F,cACAoI,QACAj7E,KAAAD,KAAA,YACAC,KAAAotL,OAAA,GACAptL,KAAAqtL,WAAA,EAGAx6G,IAAAy6G,GACAttL,KAAAotL,OAAA5sL,KAAA8sL,GAGAz6G,YAEA,MAAA06G,EAAAvtL,KAAAotL,OAAA,GAAAhjB,SAAA,GACAojB,EAAAxtL,KAAAotL,OAAAptL,KAAAotL,OAAA/sL,OAAA,GAAA+pK,SAAA,GAEAmjB,EAAA7lG,OAAA8lG,IACAxtL,KAAAotL,OAAA5sL,KAAA,IAAA+tK,GAAAif,EAAAD,IAWA16G,SAAA5rE,GACA,MAAAzH,EAAAyH,EAAAjH,KAAAytL,YACAC,EAAA1tL,KAAA2tL,kBACA,IAAAhtL,EAAA,EAEA,KAAAA,EAAA+sL,EAAArtL,QAAA,CACA,GAAAqtL,EAAA/sL,IAAAnB,EAAA,CACA,MAAAw6C,EAAA0zI,EAAA/sL,GAAAnB,EACA8tL,EAAAttL,KAAAotL,OAAAzsL,GACAitL,EAAAN,EAAAG,YACAjzK,EAAA,IAAAozK,EAAA,EAAA,EAAA5zI,EAAA4zI,EACA,OAAAN,EAAAhjB,WAAA9vJ,GAGA7Z,IAGA,OAAA,KAMAkyE,YACA,MAAAg7G,EAAA7tL,KAAA2tL,kBACA,OAAAE,EAAAA,EAAAxtL,OAAA,GAIAwyE,mBACA7yE,KAAAs8E,aAAA,EACAt8E,KAAA8tL,aAAA,KACA9tL,KAAA2tL,kBAKA96G,kBAEA,GAAA7yE,KAAA8tL,cAAA9tL,KAAA8tL,aAAAztL,SAAAL,KAAAotL,OAAA/sL,OACA,OAAAL,KAAA8tL,aAKA,MAAAvjB,EAAA,GACA,IAAAwjB,EAAA,EAEA,IAAA,IAAAptL,EAAA,EAAA4P,EAAAvQ,KAAAotL,OAAA/sL,OAAAM,EAAA4P,EAAA5P,IACAotL,GAAA/tL,KAAAotL,OAAAzsL,GAAA8sL,YACAljB,EAAA/pK,KAAAutL,GAIA,OADA/tL,KAAA8tL,aAAAvjB,EACAA,EAGA13F,gBAAAw3F,EAAA,IACA,MAAA9iK,EAAA,GAEA,IAAA,IAAA5G,EAAA,EAAAA,GAAA0pK,EAAA1pK,IACA4G,EAAA/G,KAAAR,KAAAoqK,SAAAzpK,EAAA0pK,IAOA,OAJArqK,KAAAqtL,WACA9lL,EAAA/G,KAAA+G,EAAA,IAGAA,EAGAsrE,UAAAw3F,EAAA,IACA,MAAA9iK,EAAA,GACA,IAAA0pB,EAEA,IAAA,IAAAtwB,EAAA,EAAAysL,EAAAptL,KAAAotL,OAAAzsL,EAAAysL,EAAA/sL,OAAAM,IAAA,CACA,MAAA2sL,EAAAF,EAAAzsL,GACAsyI,EAAAq6C,GAAAA,EAAAlhB,eAAA,EAAA/B,EAAAijB,IAAAA,EAAA9e,aAAA8e,EAAA5e,cAAA,EAAA4e,GAAAA,EAAAte,cAAA3E,EAAAijB,EAAA/lL,OAAAlH,OAAAgqK,EACAoJ,EAAA6Z,EAAAU,UAAA/6C,GAEA,IAAA,IAAAh5H,EAAA,EAAAA,EAAAw5J,EAAApzK,OAAA4Z,IAAA,CACA,MAAAm0C,EAAAqlH,EAAAx5J,GACAgX,GAAAA,EAAAy2D,OAAAt5B,KAEA7mD,EAAA/G,KAAA4tD,GACAn9B,EAAAm9B,IAQA,OAJApuD,KAAAqtL,WAAA9lL,EAAAlH,OAAA,IAAAkH,EAAAA,EAAAlH,OAAA,GAAAqnF,OAAAngF,EAAA,KACAA,EAAA/G,KAAA+G,EAAA,IAGAA,EAGAsrE,KAAAjxC,GACAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAotL,OAAA,GAEA,IAAA,IAAAzsL,EAAA,EAAA4P,EAAAqxB,EAAAwrJ,OAAA/sL,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2sL,EAAA1rJ,EAAAwrJ,OAAAzsL,GACAX,KAAAotL,OAAA5sL,KAAA8sL,EAAA5uG,SAIA,OADA1+E,KAAAqtL,UAAAzrJ,EAAAyrJ,UACArtL,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SACApxF,EAAAqrL,UAAArtL,KAAAqtL,UACArrL,EAAAorL,OAAA,GAEA,IAAA,IAAAzsL,EAAA,EAAA4P,EAAAvQ,KAAAotL,OAAA/sL,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2sL,EAAAttL,KAAAotL,OAAAzsL,GACAqB,EAAAorL,OAAA5sL,KAAA8sL,EAAAl6F,UAGA,OAAApxF,EAGA6wE,SAAAmwF,GACA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAqtL,UAAArqB,EAAAqqB,UACArtL,KAAAotL,OAAA,GAEA,IAAA,IAAAzsL,EAAA,EAAA4P,EAAAyyJ,EAAAoqB,OAAA/sL,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAA2sL,EAAAtqB,EAAAoqB,OAAAzsL,GACAX,KAAAotL,OAAA5sL,MAAA,IAAAyuK,GAAAqe,EAAAvtL,OAAAosK,SAAAmhB,IAGA,OAAAttL,MAKA,MAAAiuL,WAAAd,GACAt6G,YAAAtrE,GACA0zE,QACAj7E,KAAAD,KAAA,OACAC,KAAAkuL,aAAA,IAAAn4G,GAEAxuE,GACAvH,KAAAynF,cAAAlgF,GAIAsrE,cAAAtrE,GACAvH,KAAAmuL,OAAA5mL,EAAA,GAAAC,EAAAD,EAAA,GAAAjC,GAEA,IAAA,IAAA3E,EAAA,EAAA4P,EAAAhJ,EAAAlH,OAAAM,EAAA4P,EAAA5P,IACAX,KAAAouL,OAAA7mL,EAAA5G,GAAA6G,EAAAD,EAAA5G,GAAA2E,GAGA,OAAAtF,KAGA6yE,OAAArrE,EAAAlC,GAGA,OAFAtF,KAAAkuL,aAAAjpK,IAAAzd,EAAAlC,GAEAtF,KAGA6yE,OAAArrE,EAAAlC,GACA,MAAAgoL,EAAA,IAAA/e,GAAAvuK,KAAAkuL,aAAAxvG,QAAA,IAAA3I,GAAAvuE,EAAAlC,IAGA,OAFAtF,KAAAotL,OAAA5sL,KAAA8sL,GACAttL,KAAAkuL,aAAAjpK,IAAAzd,EAAAlC,GACAtF,KAGA6yE,iBAAAw7G,EAAAC,EAAA9iB,EAAAC,GACA,MAAA6hB,EAAA,IAAA3e,GAAA3uK,KAAAkuL,aAAAxvG,QAAA,IAAA3I,GAAAs4G,EAAAC,GAAA,IAAAv4G,GAAAy1F,EAAAC,IAGA,OAFAzrK,KAAAotL,OAAA5sL,KAAA8sL,GACAttL,KAAAkuL,aAAAjpK,IAAAumJ,EAAAC,GACAzrK,KAGA6yE,cAAA07G,EAAAC,EAAAC,EAAAC,EAAAljB,EAAAC,GACA,MAAA6hB,EAAA,IAAApf,GAAAluK,KAAAkuL,aAAAxvG,QAAA,IAAA3I,GAAAw4G,EAAAC,GAAA,IAAAz4G,GAAA04G,EAAAC,GAAA,IAAA34G,GAAAy1F,EAAAC,IAGA,OAFAzrK,KAAAotL,OAAA5sL,KAAA8sL,GACAttL,KAAAkuL,aAAAjpK,IAAAumJ,EAAAC,GACAzrK,KAGA6yE,WAAA4gG,GAGA,MAAAkb,EAAA,CAAA3uL,KAAAkuL,aAAAxvG,SAAA92C,OAAA6rI,GACA6Z,EAAA,IAAAve,GAAA4f,GAGA,OAFA3uL,KAAAotL,OAAA5sL,KAAA8sL,GACAttL,KAAAkuL,aAAAr8K,KAAA4hK,EAAAA,EAAApzK,OAAA,IACAL,KAGA6yE,IAAA24F,EAAAC,EAAAa,EAAAV,EAAAC,EAAAC,GACA,MAAA7rF,EAAAjgF,KAAAkuL,aAAA1mL,EACA04E,EAAAlgF,KAAAkuL,aAAA5oL,EAEA,OADAtF,KAAA4uL,OAAApjB,EAAAvrF,EAAAwrF,EAAAvrF,EAAAosF,EAAAV,EAAAC,EAAAC,GACA9rK,KAGA6yE,OAAA24F,EAAAC,EAAAa,EAAAV,EAAAC,EAAAC,GAEA,OADA9rK,KAAA6uL,WAAArjB,EAAAC,EAAAa,EAAAA,EAAAV,EAAAC,EAAAC,GACA9rK,KAGA6yE,QAAA24F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,MAAA9rF,EAAAjgF,KAAAkuL,aAAA1mL,EACA04E,EAAAlgF,KAAAkuL,aAAA5oL,EAEA,OADAtF,KAAA6uL,WAAArjB,EAAAvrF,EAAAwrF,EAAAvrF,EAAAwrF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA/rK,KAGA6yE,WAAA24F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,MAAAuhB,EAAA,IAAA/hB,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAEA,GAAA/rK,KAAAotL,OAAA/sL,OAAA,EAAA,CAEA,MAAAyuL,EAAAxB,EAAAljB,SAAA,GAEA0kB,EAAApnG,OAAA1nF,KAAAkuL,eACAluL,KAAAouL,OAAAU,EAAAtnL,EAAAsnL,EAAAxpL,GAIAtF,KAAAotL,OAAA5sL,KAAA8sL,GACA,MAAAyB,EAAAzB,EAAAljB,SAAA,GAEA,OADApqK,KAAAkuL,aAAAr8K,KAAAk9K,GACA/uL,KAGA6yE,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAkuL,aAAAr8K,KAAA+vB,EAAAssJ,cACAluL,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SAEA,OADApxF,EAAAksL,aAAAluL,KAAAkuL,aAAAx+K,UACA1N,EAGA6wE,SAAAmwF,GAGA,OAFA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAkuL,aAAAv0G,UAAAqpF,EAAAkrB,cACAluL,MAKA,MAAAgvL,WAAAf,GACAp7G,YAAAtrE,GACA0zE,MAAA1zE,GACAvH,KAAAk7E,KAAA9H,KACApzE,KAAAD,KAAA,QACAC,KAAA0zK,MAAA,GAGA7gG,eAAAw3F,GACA,MAAA4kB,EAAA,GAEA,IAAA,IAAAtuL,EAAA,EAAA4P,EAAAvQ,KAAA0zK,MAAArzK,OAAAM,EAAA4P,EAAA5P,IACAsuL,EAAAtuL,GAAAX,KAAA0zK,MAAA/yK,GAAAqtL,UAAA3jB,GAGA,OAAA4kB,EAIAp8G,cAAAw3F,GACA,MAAA,CACAt2E,MAAA/zF,KAAAguL,UAAA3jB,GACAqJ,MAAA1zK,KAAAkvL,eAAA7kB,IAIAx3F,KAAAjxC,GACAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA0zK,MAAA,GAEA,IAAA,IAAA/yK,EAAA,EAAA4P,EAAAqxB,EAAA8xI,MAAArzK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAqxK,EAAApwI,EAAA8xI,MAAA/yK,GACAX,KAAA0zK,MAAAlzK,KAAAwxK,EAAAtzF,SAGA,OAAA1+E,KAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,SACApxF,EAAAk5E,KAAAl7E,KAAAk7E,KACAl5E,EAAA0xK,MAAA,GAEA,IAAA,IAAA/yK,EAAA,EAAA4P,EAAAvQ,KAAA0zK,MAAArzK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAqxK,EAAAhyK,KAAA0zK,MAAA/yK,GACAqB,EAAA0xK,MAAAlzK,KAAAwxK,EAAA5+E,UAGA,OAAApxF,EAGA6wE,SAAAmwF,GACA/nF,MAAAkxF,SAAAnJ,GACAhjK,KAAAk7E,KAAA8nF,EAAA9nF,KACAl7E,KAAA0zK,MAAA,GAEA,IAAA,IAAA/yK,EAAA,EAAA4P,EAAAyyJ,EAAA0Q,MAAArzK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAqxK,EAAAhP,EAAA0Q,MAAA/yK,GACAX,KAAA0zK,MAAAlzK,MAAA,IAAAytL,IAAA9hB,SAAA6F,IAGA,OAAAhyK,MAKA,MAAAmvL,WAAAt+F,GACAhe,YAAAlyD,EAAAovH,EAAA,GACA90D,QACAj7E,KAAAD,KAAA,QACAC,KAAA2gB,MAAA,IAAA+kF,GAAA/kF,GACA3gB,KAAA+vI,UAAAA,EAGAl9D,WAGAA,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA2gB,MAAA9O,KAAA+vB,EAAAjhB,OACA3gB,KAAA+vI,UAAAnuG,EAAAmuG,UACA/vI,KAGA6yE,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GASA,OARA55E,EAAAiwD,OAAAtxC,MAAA3gB,KAAA2gB,MAAA64E,SACAx3F,EAAAiwD,OAAA89E,UAAA/vI,KAAA+vI,eACA3oG,IAAApnC,KAAA6mH,cAAA7kH,EAAAiwD,OAAA40D,YAAA7mH,KAAA6mH,YAAArtB,eACApyD,IAAApnC,KAAAqc,WAAAra,EAAAiwD,OAAA51C,SAAArc,KAAAqc,eACA+qB,IAAApnC,KAAAw/B,QAAAx9B,EAAAiwD,OAAAzyB,MAAAx/B,KAAAw/B,YACA4H,IAAApnC,KAAAimH,QAAAjkH,EAAAiwD,OAAAg0D,MAAAjmH,KAAAimH,YACA7+E,IAAApnC,KAAA0wI,WAAA1uI,EAAAiwD,OAAAy+E,SAAA1wI,KAAA0wI,eACAtpG,IAAApnC,KAAAkqE,SAAAloE,EAAAiwD,OAAAiY,OAAAlqE,KAAAkqE,OAAAkpB,UACApxF,GAKAmtL,GAAApmL,UAAAopF,SAAA,EAEA,MAAAi9F,WAAAD,GACAt8G,YAAA+zC,EAAAC,EAAAkpB,GACA90D,MAAA2rC,EAAAmpB,GACA/vI,KAAAD,KAAA,kBACAC,KAAAgV,SAAAnD,KAAAg/E,GAAAC,WACA9wF,KAAA2xF,eACA3xF,KAAA6mH,YAAA,IAAAnhB,GAAAmhB,GAGAh0C,KAAAjxC,GAGA,OAFAutJ,GAAApmL,UAAA8I,KAAAqH,KAAAlZ,KAAA4hC,GACA5hC,KAAA6mH,YAAAh1G,KAAA+vB,EAAAilF,aACA7mH,MAKAovL,GAAArmL,UAAA8nI,mBAAA,EAEA,MAAAw+C,GAAA,IAAA1jG,GAEA2jG,GAAA,IAAA1sG,GAEA2sG,GAAA,IAAA3sG,GAEA,MAAA4sG,GACA38G,YAAA6Q,GACA1jF,KAAA0jF,OAAAA,EACA1jF,KAAAswI,KAAA,EACAtwI,KAAAuwI,WAAA,EACAvwI,KAAA8a,OAAA,EACA9a,KAAAuzI,YAAA,EACAvzI,KAAAwwI,QAAA,IAAAz6D,GAAA,IAAA,KACA/1E,KAAAkgB,IAAA,KACAlgB,KAAAwzI,QAAA,KACAxzI,KAAA29B,OAAA,IAAAguD,GACA3rF,KAAAu0I,YAAA,EACAv0I,KAAAs8E,aAAA,EACAt8E,KAAAoyI,SAAA,IAAA76B,GACAv3G,KAAAyvL,cAAA,IAAA15G,GAAA,EAAA,GACA/1E,KAAA0vL,eAAA,EACA1vL,KAAA2vL,WAAA,CAAA,IAAAhzG,GAAA,EAAA,EAAA,EAAA,IAGA9J,mBACA,OAAA7yE,KAAA0vL,eAGA78G,aACA,OAAA7yE,KAAAoyI,SAGAv/D,eAAAs7D,GACA,MAAAgG,EAAAn0I,KAAA0jF,OACAksG,EAAA5vL,KAAA29B,OAEA2xJ,GAAAr9F,sBAAAk8C,EAAApqD,aAEAowD,EAAAn/H,SAAAnD,KAAAy9K,IAEAC,GAAAt9F,sBAAAk8C,EAAAh/H,OAAA40E,aAEAowD,EAAA/hD,OAAAm9F,IACAp7C,EAAAxhD,oBAEA08F,GAAAr3G,iBAAAm8D,EAAAtwD,iBAAAswD,EAAAvwD,oBAEA5jF,KAAAoyI,SAAAoqB,wBAAA6yB,IAEAO,EAAA3qK,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GACA2qK,EAAA99F,SAAAqiD,EAAAtwD,kBACA+rG,EAAA99F,SAAAqiD,EAAAvwD,oBAGA/Q,YAAAg9G,GACA,OAAA7vL,KAAA2vL,WAAAE,GAGAh9G,kBACA,OAAA7yE,KAAAyvL,cAGA58G,UACA7yE,KAAAkgB,KACAlgB,KAAAkgB,IAAAu+D,UAGAz+E,KAAAwzI,SACAxzI,KAAAwzI,QAAA/0D,UAIA5L,KAAAjxC,GAKA,OAJA5hC,KAAA0jF,OAAA9hD,EAAA8hD,OAAAhF,QACA1+E,KAAAswI,KAAA1uG,EAAA0uG,KACAtwI,KAAA8a,OAAA8mB,EAAA9mB,OACA9a,KAAAwwI,QAAA3+H,KAAA+vB,EAAA4uG,SACAxwI,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,SACA,MAAA5gB,EAAA,GAOA,OANA,IAAAjyD,KAAAswI,OAAAr+E,EAAAq+E,KAAAtwI,KAAAswI,MACA,IAAAtwI,KAAAuwI,aAAAt+E,EAAAs+E,WAAAvwI,KAAAuwI,YACA,IAAAvwI,KAAA8a,SAAAm3C,EAAAn3C,OAAA9a,KAAA8a,QACA,MAAA9a,KAAAwwI,QAAAhpI,GAAA,MAAAxH,KAAAwwI,QAAAlrI,IAAA2sD,EAAAu+E,QAAAxwI,KAAAwwI,QAAA9gI,WACAuiD,EAAAyxB,OAAA1jF,KAAA0jF,OAAA0P,QAAA,GAAAnhC,cACAA,EAAAyxB,OAAA/lD,OACAs0B,GAKA,MAAA69H,WAAAN,GACA38G,cACAoI,MAAA,IAAAw4B,GAAA,GAAA,EAAA,GAAA,MACAzzG,KAAA4zG,MAAA,EAGA/gC,eAAAs7D,GACA,MAAAzqD,EAAA1jF,KAAA0jF,OACAgwB,EAAA,EAAAvgC,GAAAg7D,EAAA3uG,MAAAx/B,KAAA4zG,MACAD,EAAA3zG,KAAAwwI,QAAAztI,MAAA/C,KAAAwwI,QAAAl2G,OACA20D,EAAAk/C,EAAA9xH,UAAAqnE,EAAAuL,IAEAykB,IAAAhwB,EAAAgwB,KAAAC,IAAAjwB,EAAAiwB,QAAA1kB,IAAAvL,EAAAuL,MACAvL,EAAAgwB,IAAAA,EACAhwB,EAAAiwB,OAAAA,EACAjwB,EAAAuL,IAAAA,EACAvL,EAAAswB,0BAGA/4B,MAAAu6D,eAAArH,GAGAt7D,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA4zG,MAAAhyE,EAAAgyE,MACA5zG,MAKA8vL,GAAA/mL,UAAAgnL,mBAAA,EAEA,MAAAC,WAAAb,GACAt8G,YAAAlyD,EAAAovH,EAAA1zH,EAAA,EAAAmjB,EAAAt5B,KAAA2F,GAAA,EAAA6kI,EAAA,EAAAzqB,EAAA,GACAhrC,MAAAt6D,EAAAovH,GACA/vI,KAAAD,KAAA,YACAC,KAAAgV,SAAAnD,KAAAg/E,GAAAC,WACA9wF,KAAA2xF,eACA3xF,KAAAmP,OAAA,IAAA0hF,GACA7wF,KAAAqc,SAAAA,EACArc,KAAAw/B,MAAAA,EACAx/B,KAAA0wI,SAAAA,EACA1wI,KAAAimH,MAAAA,EAEAjmH,KAAAkqE,OAAA,IAAA4lH,GAGA/pL,YAGA,OAAA/F,KAAA+vI,UAAA7pI,KAAA2F,GAGA9F,UAAAA,GAEA/F,KAAA+vI,UAAAhqI,EAAAG,KAAA2F,GAGAgnE,UACA7yE,KAAAkqE,OAAAuU,UAGA5L,KAAAjxC,GAQA,OAPAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAqc,SAAAulB,EAAAvlB,SACArc,KAAAw/B,MAAAoC,EAAApC,MACAx/B,KAAA0wI,SAAA9uG,EAAA8uG,SACA1wI,KAAAimH,MAAArkF,EAAAqkF,MACAjmH,KAAAmP,OAAAyyB,EAAAzyB,OAAAuvE,QACA1+E,KAAAkqE,OAAAtoC,EAAAsoC,OAAAwU,QACA1+E,MAKAgwL,GAAAjnL,UAAA0nI,aAAA,EAEA,MAAA0lB,GAAA,IAAAxqE,GAEAskG,GAAA,IAAArtG,GAEAstG,GAAA,IAAAttG,GAEA,MAAAutG,WAAAX,GACA38G,cACAoI,MAAA,IAAAw4B,GAAA,GAAA,EAAA,GAAA,MACAzzG,KAAAyvL,cAAA,IAAA15G,GAAA,EAAA,GACA/1E,KAAA0vL,eAAA,EACA1vL,KAAA2vL,WAAA,CAaA,IAAAhzG,GAAA,EAAA,EAAA,EAAA,GACA,IAAAA,GAAA,EAAA,EAAA,EAAA,GACA,IAAAA,GAAA,EAAA,EAAA,EAAA,GACA,IAAAA,GAAA,EAAA,EAAA,EAAA,GACA,IAAAA,GAAA,EAAA,EAAA,EAAA,GACA,IAAAA,GAAA,EAAA,EAAA,EAAA,IACA38E,KAAAowL,gBAAA,CAAA,IAAAxtG,GAAA,EAAA,EAAA,GAAA,IAAAA,IAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,GAAA,EAAA,IACA5iF,KAAAqwL,SAAA,CAAA,IAAAztG,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,EAAA,GAAA,IAAAA,GAAA,EAAA,GAAA,IAGA/P,eAAAs7D,EAAA0hD,EAAA,GACA,MAAAnsG,EAAA1jF,KAAA0jF,OACAksG,EAAA5vL,KAAA29B,OACAsxD,EAAAk/C,EAAA9xH,UAAAqnE,EAAAuL,IAEAA,IAAAvL,EAAAuL,MACAvL,EAAAuL,IAAAA,EACAvL,EAAAswB,0BAGAi8E,GAAAh+F,sBAAAk8C,EAAApqD,aAEAL,EAAA1uE,SAAAnD,KAAAo+K,IAEAC,GAAAr+K,KAAA6xE,EAAA1uE,UAEAk7K,GAAA5yK,IAAAtd,KAAAowL,gBAAAP,IAEAnsG,EAAAyJ,GAAAt7E,KAAA7R,KAAAqwL,SAAAR,IACAnsG,EAAA0O,OAAA89F,IACAxsG,EAAAiP,oBACAi9F,EAAA9kF,iBAAAmlF,GAAAzoL,GAAAyoL,GAAA3qL,GAAA2qL,GAAAhxJ,GAEAk3H,GAAAn+E,iBAAA0L,EAAAG,iBAAAH,EAAAE,oBAEA5jF,KAAAoyI,SAAAoqB,wBAAArG,KAKAg6B,GAAApnL,UAAAmsI,oBAAA,EAEA,MAAAo7C,WAAAnB,GACAt8G,YAAAlyD,EAAAovH,EAAA1zH,EAAA,EAAA4pG,EAAA,GACAhrC,MAAAt6D,EAAAovH,GACA/vI,KAAAD,KAAA,aACAC,KAAAqc,SAAAA,EACArc,KAAAimH,MAAAA,EAEAjmH,KAAAkqE,OAAA,IAAAimH,GAGApqL,YAGA,OAAA,EAAA/F,KAAA+vI,UAAA7pI,KAAA2F,GAGA9F,UAAAA,GAEA/F,KAAA+vI,UAAAhqI,GAAA,EAAAG,KAAA2F,IAGAgnE,UACA7yE,KAAAkqE,OAAAuU,UAGA5L,KAAAjxC,GAKA,OAJAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAqc,SAAAulB,EAAAvlB,SACArc,KAAAimH,MAAArkF,EAAAqkF,MACAjmH,KAAAkqE,OAAAtoC,EAAAsoC,OAAAwU,QACA1+E,MAKAswL,GAAAvnL,UAAA6nI,cAAA,EAEA,MAAA2/C,WAAAf,GACA38G,cACAoI,MAAA,IAAAs3C,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,OAKAg+D,GAAAxnL,UAAAynL,0BAAA,EAEA,MAAAC,WAAAtB,GACAt8G,YAAAlyD,EAAAovH,GACA90D,MAAAt6D,EAAAovH,GACA/vI,KAAAD,KAAA,mBACAC,KAAAgV,SAAAnD,KAAAg/E,GAAAC,WACA9wF,KAAA2xF,eACA3xF,KAAAmP,OAAA,IAAA0hF,GACA7wF,KAAAkqE,OAAA,IAAAqmH,GAGA19G,UACA7yE,KAAAkqE,OAAAuU,UAGA5L,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAmP,OAAAyyB,EAAAzyB,OAAAuvE,QACA1+E,KAAAkqE,OAAAtoC,EAAAsoC,OAAAwU,QACA1+E,MAKAywL,GAAA1nL,UAAAqnI,oBAAA,EAEA,MAAAsgD,WAAAvB,GACAt8G,YAAAlyD,EAAAovH,GACA90D,MAAAt6D,EAAAovH,GACA/vI,KAAAD,KAAA,gBAKA2wL,GAAA3nL,UAAAinI,gBAAA,EAEA,MAAA2gD,WAAAxB,GACAt8G,YAAAlyD,EAAAovH,EAAAhtI,EAAA,GAAAu3B,EAAA,IACA2gD,MAAAt6D,EAAAovH,GACA/vI,KAAAD,KAAA,gBACAC,KAAA+C,MAAAA,EACA/C,KAAAs6B,OAAAA,EAGAv0B,YAEA,OAAA/F,KAAA+vI,UAAA/vI,KAAA+C,MAAA/C,KAAAs6B,OAAAp0B,KAAA2F,GAGA9F,UAAAA,GAEA/F,KAAA+vI,UAAAhqI,GAAA/F,KAAA+C,MAAA/C,KAAAs6B,OAAAp0B,KAAA2F,IAGAgnE,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA+C,MAAA6+B,EAAA7+B,MACA/C,KAAAs6B,OAAAsH,EAAAtH,OACAt6B,KAGA6yE,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GAGA,OAFA55E,EAAAiwD,OAAAlvD,MAAA/C,KAAA+C,MACAf,EAAAiwD,OAAA33B,OAAAt6B,KAAAs6B,OACAt4B,GAKA2uL,GAAA5nL,UAAA4nI,iBAAA,EAWA,MAAAigD,GACA/9G,cACA7yE,KAAAmwI,aAAA,GAEA,IAAA,IAAAxvI,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAA3vI,KAAA,IAAAoiF,IAIA/P,IAAAs9D,GACA,IAAA,IAAAxvI,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAAkR,KAAAs+H,EAAAxvI,IAGA,OAAAX,KAGA6yE,OACA,IAAA,IAAAlyE,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAAskB,IAAA,EAAA,EAAA,GAGA,OAAAjlB,KAKA6yE,MAAA+R,EAAAz1E,GAEA,MAAA3H,EAAAo9E,EAAAp9E,EACAlC,EAAAs/E,EAAAt/E,EACA25B,EAAA2lD,EAAA3lD,EACA4xJ,EAAA7wL,KAAAmwI,aAaA,OAXAhhI,EAAA0C,KAAAg/K,EAAA,IAAAz6G,eAAA,SAEAjnE,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAAvrL,GACA6J,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAA5xJ,GACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAArpL,GAEA2H,EAAA6mF,gBAAA66F,EAAA,GAAArpL,EAAAlC,EAAA,UACA6J,EAAA6mF,gBAAA66F,EAAA,GAAAvrL,EAAA25B,EAAA,UACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAA,EAAA5xJ,EAAAA,EAAA,IACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAArpL,EAAAy3B,EAAA,UACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAArpL,EAAAA,EAAAlC,EAAAA,IACA6J,EAMA0jE,gBAAA+R,EAAAz1E,GAEA,MAAA3H,EAAAo9E,EAAAp9E,EACAlC,EAAAs/E,EAAAt/E,EACA25B,EAAA2lD,EAAA3lD,EACA4xJ,EAAA7wL,KAAAmwI,aAkBA,OAhBAhhI,EAAA0C,KAAAg/K,EAAA,IAAAz6G,eAAA,SAGAjnE,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAAvrL,GAEA6J,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAA5xJ,GACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAArpL,GAEA2H,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAArpL,EAAAlC,GAEA6J,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAAvrL,EAAA25B,GACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAA5xJ,EAAAA,EAAA,SAEA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,QAAArpL,EAAAy3B,GACA9vB,EAAA6mF,gBAAA66F,EAAA,GAAA,SAAArpL,EAAAA,EAAAlC,EAAAA,IAEA6J,EAGA0jE,IAAAq9D,GACA,IAAA,IAAAvvI,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAA2c,IAAA4yH,EAAAC,aAAAxvI,IAGA,OAAAX,KAGA6yE,YAAAq9D,EAAAx0H,GACA,IAAA,IAAA/a,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAAq1F,gBAAAk6C,EAAAC,aAAAxvI,GAAA+a,GAGA,OAAA1b,KAGA6yE,MAAAn3D,GACA,IAAA,IAAA/a,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAAy1E,eAAA16D,GAGA,OAAA1b,KAGA6yE,KAAAq9D,EAAAl5G,GACA,IAAA,IAAAr2B,EAAA,EAAAA,EAAA,EAAAA,IACAX,KAAAmwI,aAAAxvI,GAAA+yE,KAAAw8D,EAAAC,aAAAxvI,GAAAq2B,GAGA,OAAAh3B,KAGA6yE,OAAAq9D,GACA,IAAA,IAAAvvI,EAAA,EAAAA,EAAA,EAAAA,IACA,IAAAX,KAAAmwI,aAAAxvI,GAAA+mF,OAAAwoD,EAAAC,aAAAxvI,IACA,OAAA,EAIA,OAAA,EAGAkyE,KAAAq9D,GACA,OAAAlwI,KAAAilB,IAAAirH,EAAAC,cAGAt9D,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,UAAA1O,EAAAltD,EAAA,GACA,MAAAk5H,EAAAnwI,KAAAmwI,aAEA,IAAA,IAAAxvI,EAAA,EAAAA,EAAA,EAAAA,IACAwvI,EAAAxvI,GAAAg5E,UAAAxV,EAAAltD,EAAA,EAAAtW,GAGA,OAAAX,KAGA6yE,QAAA1O,EAAA,GAAAltD,EAAA,GACA,MAAAk5H,EAAAnwI,KAAAmwI,aAEA,IAAA,IAAAxvI,EAAA,EAAAA,EAAA,EAAAA,IACAwvI,EAAAxvI,GAAA+O,QAAAy0D,EAAAltD,EAAA,EAAAtW,GAGA,OAAAwjE,EAKA0O,kBAAA+R,EAAAksG,GAEA,MAAAtpL,EAAAo9E,EAAAp9E,EACAlC,EAAAs/E,EAAAt/E,EACA25B,EAAA2lD,EAAA3lD,EAEA6xJ,EAAA,GAAA,QAEAA,EAAA,GAAA,QAAAxrL,EACAwrL,EAAA,GAAA,QAAA7xJ,EACA6xJ,EAAA,GAAA,QAAAtpL,EAEAspL,EAAA,GAAA,SAAAtpL,EAAAlC,EACAwrL,EAAA,GAAA,SAAAxrL,EAAA25B,EACA6xJ,EAAA,GAAA,SAAA,EAAA7xJ,EAAAA,EAAA,GACA6xJ,EAAA,GAAA,SAAAtpL,EAAAy3B,EACA6xJ,EAAA,GAAA,SAAAtpL,EAAAA,EAAAlC,EAAAA,IAKAsrL,GAAA7nL,UAAAgoL,uBAAA,EAEA,MAAAC,WAAA7B,GACAt8G,YAAAq9D,EAAA,IAAA0gD,GAAA7gD,EAAA,GACA90D,WAAA7zC,EAAA2oG,GACA/vI,KAAAkwI,GAAAA,EAGAr9D,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAkwI,GAAAr+H,KAAA+vB,EAAAsuG,IACAlwI,KAGA6yE,SAAAmwF,GAIA,OAHAhjK,KAAA+vI,UAAAizB,EAAAjzB,UAEA/vI,KAAAkwI,GAAAv2D,UAAAqpF,EAAA9yB,IACAlwI,KAGA6yE,OAAA+I,GACA,MAAA55E,EAAAi5E,MAAAmY,OAAAxX,GAEA,OADA55E,EAAAiwD,OAAAi+E,GAAAlwI,KAAAkwI,GAAAxgI,UACA1N,GAKAgvL,GAAAjoL,UAAAknI,cAAA,EAEA,MAAAghD,WAAA1G,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GACAxqL,KAAA87E,SAAA,GAGAjJ,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAmqL,EAAA,IAAAY,GAAAl9K,EAAA28K,SACAL,EAAAsC,QAAA5+K,EAAAyoC,MACA6zI,EAAA8B,iBAAAp+K,EAAA+8K,eACAT,EAAA2C,mBAAAj/K,EAAA68K,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAZ,GACA,IACA4mL,EAAAx7K,EAAA2mF,MAAAhxF,KAAAgxF,MAAA/xF,KACA,MAAAoqB,GACA08J,EACAA,EAAA18J,GAEA5e,QAAApK,MAAAgpB,GAGAhf,EAAA28K,QAAAV,UAAAzmL,MAEAimL,EAAAC,GAGA12G,MAAAmwF,GACA,MAAAlnF,EAAA97E,KAAA87E,SAEA,SAAAo1G,EAAAhxL,GAKA,YAJAknC,IAAA00C,EAAA57E,IACA+N,QAAAC,KAAA,0CAAAhO,GAGA47E,EAAA57E,GAGA,MAAAk0F,EAAA,IAAA0qF,GAAA9b,EAAAjjK,MAmEA,QAlEAqnC,IAAA47H,EAAA9nF,OAAAkZ,EAAAlZ,KAAA8nF,EAAA9nF,WACA9zC,IAAA47H,EAAA9iK,OAAAk0F,EAAAl0F,KAAA8iK,EAAA9iK,WACAknC,IAAA47H,EAAAriJ,YAAAymB,IAAAgtD,EAAAzzE,OAAAyzE,EAAAzzE,MAAAilF,OAAAo9D,EAAAriJ,YACAymB,IAAA47H,EAAAvpE,YAAArF,EAAAqF,UAAAupE,EAAAvpE,gBACAryD,IAAA47H,EAAAtpE,YAAAtF,EAAAsF,UAAAspE,EAAAtpE,gBACAtyD,IAAA47H,EAAArpE,YAAAvF,EAAAuF,WAAA,IAAA+L,IAAAE,OAAAo9D,EAAArpE,iBACAvyD,IAAA47H,EAAAppE,eAAAxyD,IAAAgtD,EAAAwF,UAAAxF,EAAAwF,SAAAgM,OAAAo9D,EAAAppE,eACAxyD,IAAA47H,EAAAlpE,eAAA1yD,IAAAgtD,EAAA0F,UAAA1F,EAAA0F,SAAA8L,OAAAo9D,EAAAlpE,eACA1yD,IAAA47H,EAAAjpE,oBAAA3F,EAAA2F,kBAAAipE,EAAAjpE,wBACA3yD,IAAA47H,EAAAhpE,mBAAA5yD,IAAAgtD,EAAA4F,cAAA5F,EAAA4F,aAAA4L,OAAAo9D,EAAAhpE,mBACA5yD,IAAA47H,EAAA/oE,YAAA7F,EAAA6F,UAAA+oE,EAAA/oE,gBACA7yD,IAAA47H,EAAA9oE,YAAA9F,EAAA8F,UAAA8oE,EAAA9oE,gBACA9yD,IAAA47H,EAAA7oE,qBAAA/F,EAAA+F,mBAAA6oE,EAAA7oE,yBACA/yD,IAAA47H,EAAA9mE,eAAA9H,EAAA8H,aAAA8mE,EAAA9mE,mBACA90D,IAAA47H,EAAA5mE,YAAAhI,EAAAgI,UAAA4mE,EAAA5mE,gBACAh1D,IAAA47H,EAAA1mE,sBAAAlI,EAAAkI,oBAAA0mE,EAAA1mE,0BACAl1D,IAAA47H,EAAAzmE,sBAAAn1D,IAAAgtD,EAAAmI,iBAAAnI,EAAAmI,gBAAAqJ,OAAAo9D,EAAAzmE,sBACAn1D,IAAA47H,EAAA/rE,MAAA7C,EAAA6C,IAAA+rE,EAAA/rE,UACA7vD,IAAA47H,EAAA1pE,cAAAlF,EAAAkF,YAAA0pE,EAAA1pE,kBACAlyD,IAAA47H,EAAA9rE,WAAA9C,EAAA8C,SAAA8rE,EAAA9rE,eACA9vD,IAAA47H,EAAAnnE,UAAAzH,EAAAyH,QAAAmnE,EAAAnnE,cACAz0D,IAAA47H,EAAAhhI,OAAAoyD,EAAApyD,KAAAghI,EAAAhhI,WACAoF,IAAA47H,EAAAxqE,aAAApE,EAAAoE,WAAAwqE,EAAAxqE,iBACApxD,IAAA47H,EAAAtmG,UAAA03B,EAAA13B,QAAAsmG,EAAAtmG,cACAt1B,IAAA47H,EAAAhxI,SAAAoiE,EAAApiE,OAAAgxI,EAAAhxI,aACAoV,IAAA47H,EAAAzjJ,cAAA60E,EAAA70E,YAAAyjJ,EAAAzjJ,kBACA6nB,IAAA47H,EAAA7pE,YAAA/E,EAAA+E,UAAA6pE,EAAA7pE,gBACA/xD,IAAA47H,EAAArrE,YAAAvD,EAAAuD,UAAAqrE,EAAArrE,gBACAvwD,IAAA47H,EAAAprE,aAAAxD,EAAAwD,WAAAorE,EAAAprE,iBACAxwD,IAAA47H,EAAAvqE,aAAArE,EAAAqE,WAAAuqE,EAAAvqE,iBACArxD,IAAA47H,EAAA5qE,eAAAhE,EAAAgE,aAAA4qE,EAAA5qE,mBACAhxD,IAAA47H,EAAAnrE,mBAAAzD,EAAAyD,iBAAAmrE,EAAAnrE,uBACAzwD,IAAA47H,EAAAlrE,cAAA1D,EAAA0D,YAAAkrE,EAAAlrE,kBACA1wD,IAAA47H,EAAAjrE,aAAA3D,EAAA2D,WAAAirE,EAAAjrE,iBACA3wD,IAAA47H,EAAAhrE,kBAAA5D,EAAA4D,gBAAAgrE,EAAAhrE,sBACA5wD,IAAA47H,EAAA/qE,cAAA7D,EAAA6D,YAAA+qE,EAAA/qE,kBACA7wD,IAAA47H,EAAA9qE,eAAA9D,EAAA8D,aAAA8qE,EAAA9qE,mBACA9wD,IAAA47H,EAAA7qE,eAAA/D,EAAA+D,aAAA6qE,EAAA7qE,mBACA/wD,IAAA47H,EAAApmE,YAAAxI,EAAAwI,UAAAomE,EAAApmE,gBACAx1D,IAAA47H,EAAAnmE,qBAAAzI,EAAAyI,mBAAAmmE,EAAAnmE,yBACAz1D,IAAA47H,EAAAlmE,mBAAA1I,EAAA0I,iBAAAkmE,EAAAlmE,uBACA11D,IAAA47H,EAAAjmE,oBAAA3I,EAAA2I,kBAAAimE,EAAAjmE,wBACA31D,IAAA47H,EAAA9jI,WAAAk1D,EAAAl1D,SAAA8jI,EAAA9jI,UACA,IAAA8jI,EAAAvmE,YAAArI,EAAAqI,UAAAumE,EAAAvmE,gBACAr1D,IAAA47H,EAAAtmE,WAAAtI,EAAAsI,SAAAsmE,EAAAtmE,eACAt1D,IAAA47H,EAAArmE,UAAAvI,EAAAuI,QAAAqmE,EAAArmE,cACAv1D,IAAA47H,EAAAjsI,QAAAq9D,EAAAr9D,MAAAisI,EAAAjsI,YACAqQ,IAAA47H,EAAArqE,gBAAAvE,EAAAuE,cAAAqqE,EAAArqE,oBACAvxD,IAAA47H,EAAApqE,sBAAAxE,EAAAwE,oBAAAoqE,EAAApqE,0BACAxxD,IAAA47H,EAAAnqE,qBAAAzE,EAAAyE,mBAAAmqE,EAAAnqE,yBACAzxD,IAAA47H,EAAAlqE,YAAA1E,EAAA0E,UAAAkqE,EAAAlqE,gBACA1xD,IAAA47H,EAAAjqE,kBAAA3E,EAAA2E,gBAAAiqE,EAAAjqE,sBACA3xD,IAAA47H,EAAAhqE,qBAAA5E,EAAA4E,mBAAAgqE,EAAAhqE,yBACA5xD,IAAA47H,EAAA3xE,UAAA+C,EAAA/C,QAAA2xE,EAAA3xE,cACAjqD,IAAA47H,EAAA/pE,aAAA7E,EAAA6E,WAAA+pE,EAAA/pE,iBACA7xD,IAAA47H,EAAAtxE,WAAA0C,EAAA1C,SAAAsxE,EAAAtxE,eAEAtqD,IAAA47H,EAAA7rE,eACA,iBAAA6rE,EAAA7rE,aACA/C,EAAA+C,aAAA6rE,EAAA7rE,aAAA,EAEA/C,EAAA+C,aAAA6rE,EAAA7rE,mBAKA/vD,IAAA47H,EAAA5wD,SACA,IAAA,MAAAlyG,KAAA8iK,EAAA5wD,SAAA,CACA,MAAAue,EAAAqyC,EAAA5wD,SAAAlyG,GAGA,OAFAk0F,EAAAge,SAAAlyG,GAAA,GAEAywH,EAAA5wH,MACA,IAAA,IACAq0F,EAAAge,SAAAlyG,GAAAJ,MAAAoxL,EAAAvgE,EAAA7wH,OACA,MAEA,IAAA,IACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAA4lG,IAAAE,OAAA+qB,EAAA7wH,OACA,MAEA,IAAA,KACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAAi2E,IAAA4D,UAAAg3C,EAAA7wH,OACA,MAEA,IAAA,KACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAA8iF,IAAAjJ,UAAAg3C,EAAA7wH,OACA,MAEA,IAAA,KACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAA68E,IAAAhD,UAAAg3C,EAAA7wH,OACA,MAEA,IAAA,KACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAAk3E,IAAA2C,UAAAg3C,EAAA7wH,OACA,MAEA,IAAA,KACAs0F,EAAAge,SAAAlyG,GAAAJ,OAAA,IAAA6rF,IAAAhS,UAAAg3C,EAAA7wH,OACA,MAEA,QACAs0F,EAAAge,SAAAlyG,GAAAJ,MAAA6wH,EAAA7wH,OASA,QAJAsnC,IAAA47H,EAAAvwD,UAAAre,EAAAqe,QAAAuwD,EAAAvwD,cACArrE,IAAA47H,EAAAtwD,eAAAte,EAAAse,aAAAswD,EAAAtwD,mBACAtrE,IAAA47H,EAAArwD,iBAAAve,EAAAue,eAAAqwD,EAAArwD,qBAEAvrE,IAAA47H,EAAAlwD,WACA,IAAA,MAAA/vF,KAAAigJ,EAAAlwD,WACA1e,EAAA0e,WAAA/vF,GAAAigJ,EAAAlwD,WAAA/vF,GAmBA,QAdAqkB,IAAA47H,EAAAmuB,UAAA/8F,EAAAkF,YAAA,IAAA0pE,EAAAmuB,cAGA/pJ,IAAA47H,EAAA5/G,OAAAgxC,EAAAhxC,KAAA4/G,EAAA5/G,WACAhc,IAAA47H,EAAAxmE,kBAAApI,EAAAoI,gBAAAwmE,EAAAxmE,sBAEAp1D,IAAA47H,EAAA9iJ,MAAAk0E,EAAAl0E,IAAAgxK,EAAAluB,EAAA9iJ,WACAknB,IAAA47H,EAAAxoE,SAAApG,EAAAoG,OAAA02F,EAAAluB,EAAAxoE,cACApzD,IAAA47H,EAAAvoE,WAAArG,EAAAqG,SAAAy2F,EAAAluB,EAAAvoE,gBACArzD,IAAA47H,EAAAloE,UAAA1G,EAAA0G,QAAAo2F,EAAAluB,EAAAloE,eACA1zD,IAAA47H,EAAAjoE,YAAA3G,EAAA2G,UAAAioE,EAAAjoE,gBACA3zD,IAAA47H,EAAAhoE,YAAA5G,EAAA4G,UAAAk2F,EAAAluB,EAAAhoE,iBACA5zD,IAAA47H,EAAA/nE,gBAAA7G,EAAA6G,cAAA+nE,EAAA/nE,oBAEA7zD,IAAA47H,EAAA9nE,YAAA,CACA,IAAAA,EAAA8nE,EAAA9nE,aAEA,IAAAhuF,MAAAhM,QAAAg6F,KAEAA,EAAA,CAAAA,EAAAA,IAGA9G,EAAA8G,aAAA,IAAAnlB,IAAA4D,UAAAuhB,GA4BA,YAzBA9zD,IAAA47H,EAAA7nE,kBAAA/G,EAAA+G,gBAAA+1F,EAAAluB,EAAA7nE,uBACA/zD,IAAA47H,EAAA5nE,oBAAAhH,EAAAgH,kBAAA4nE,EAAA5nE,wBACAh0D,IAAA47H,EAAA3nE,mBAAAjH,EAAAiH,iBAAA2nE,EAAA3nE,uBACAj0D,IAAA47H,EAAA1nE,eAAAlH,EAAAkH,aAAA41F,EAAAluB,EAAA1nE,oBACAl0D,IAAA47H,EAAAznE,eAAAnH,EAAAmH,aAAA21F,EAAAluB,EAAAznE,oBACAn0D,IAAA47H,EAAAxnE,cAAApH,EAAAoH,YAAA01F,EAAAluB,EAAAxnE,mBACAp0D,IAAA47H,EAAAnpE,oBAAAzF,EAAAyF,kBAAAmpE,EAAAnpE,wBACAzyD,IAAA47H,EAAAvnE,cAAArH,EAAAqH,YAAAy1F,EAAAluB,EAAAvnE,mBACAr0D,IAAA47H,EAAAtnE,uBAAAtH,EAAAsH,qBAAAw1F,EAAAluB,EAAAtnE,4BACAt0D,IAAA47H,EAAArnE,kBAAAvH,EAAAuH,gBAAAu1F,EAAAluB,EAAArnE,uBACAv0D,IAAA47H,EAAApnE,SAAAxH,EAAAwH,OAAAs1F,EAAAluB,EAAApnE,cACAx0D,IAAA47H,EAAAlnE,kBAAA1H,EAAA0H,gBAAAknE,EAAAlnE,sBACA10D,IAAA47H,EAAAjnE,eAAA3H,EAAA2H,aAAAinE,EAAAjnE,mBACA30D,IAAA47H,EAAAhnE,kBAAA5H,EAAA4H,gBAAAgnE,EAAAhnE,sBACA50D,IAAA47H,EAAAtoE,WAAAtG,EAAAsG,SAAAw2F,EAAAluB,EAAAtoE,gBACAtzD,IAAA47H,EAAAroE,oBAAAvG,EAAAuG,kBAAAqoE,EAAAroE,wBACAvzD,IAAA47H,EAAApoE,QAAAxG,EAAAwG,MAAAs2F,EAAAluB,EAAApoE,aACAxzD,IAAA47H,EAAAnoE,iBAAAzG,EAAAyG,eAAAmoE,EAAAnoE,qBACAzzD,IAAA47H,EAAA/mE,cAAA7H,EAAA6H,YAAAi1F,EAAAluB,EAAA/mE,mBACA70D,IAAA47H,EAAA5oE,eAAAhG,EAAAgG,aAAA82F,EAAAluB,EAAA5oE,oBACAhzD,IAAA47H,EAAA3oE,wBAAAjG,EAAAiG,sBAAA62F,EAAAluB,EAAA3oE,6BACAjzD,IAAA47H,EAAA1oE,qBAAAlG,EAAAkG,mBAAA42F,EAAAluB,EAAA1oE,0BACAlzD,IAAA47H,EAAAzoE,uBAAAnG,EAAAmG,sBAAA,IAAAxkB,IAAA4D,UAAAqpF,EAAAzoE,4BACAnzD,IAAA47H,EAAA7mE,kBAAA/H,EAAA+H,gBAAA+0F,EAAAluB,EAAA7mE,uBACA/0D,IAAA47H,EAAA3mE,eAAAjI,EAAAiI,aAAA60F,EAAAluB,EAAA3mE,eACAjI,EAGAvhB,YAAA/yE,GAEA,OADAE,KAAA87E,SAAAh8E,EACAE,MAKA,MAAAoxL,GACAv+G,kBAAA1O,GACA,GAAA,oBAAAktH,YACA,OAAA,IAAAA,aAAAC,OAAAntH,GAKA,IAAAzoD,EAAA,GAEA,IAAA,IAAA/a,EAAA,EAAAqzB,EAAAmwC,EAAA9jE,OAAAM,EAAAqzB,EAAArzB,IAEA+a,GAAAi0F,OAAA4hF,aAAAptH,EAAAxjE,IAGA,IAEA,OAAAyqL,mBAAAoG,OAAA91K,IACA,MAAAmR,GAEA,OAAAnR,GAIAm3D,sBAAAxvE,GACA,MAAAiV,EAAAjV,EAAA2f,YAAA,KACA,OAAA,IAAA1K,EAAA,KACAjV,EAAAkU,OAAA,EAAAe,EAAA,IAKA,MAAAm5K,WAAAxnF,GACAp3B,cACAoI,QACAj7E,KAAAD,KAAA,0BACAC,KAAA85H,cAAA30G,EAAAA,EAGA0tD,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAA85H,cAAAl4F,EAAAk4F,cACA95H,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,SACA,MAAA7wE,EAAAi5E,MAAAmY,OAAApzF,MAGA,OAFAgC,EAAA83H,cAAA95H,KAAA85H,cACA93H,EAAAyqH,2BAAA,EACAzqH,GAKAyvL,GAAA1oL,UAAA0jH,2BAAA,EAEA,MAAAilE,WAAAnH,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAmqL,EAAA,IAAAY,GAAAl9K,EAAA28K,SACAL,EAAAsC,QAAA5+K,EAAAyoC,MACA6zI,EAAA8B,iBAAAp+K,EAAA+8K,eACAT,EAAA2C,mBAAAj/K,EAAA68K,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAZ,GACA,IACA4mL,EAAAx7K,EAAA2mF,MAAAhxF,KAAAgxF,MAAA/xF,KACA,MAAAoqB,GACA08J,EACAA,EAAA18J,GAEA5e,QAAApK,MAAAgpB,GAGAhf,EAAA28K,QAAAV,UAAAzmL,MAEAimL,EAAAC,GAGA12G,MAAAmwF,GACA,MAAA2uB,EAAA,GACAC,EAAA,GAEA,SAAAC,EAAA7uB,EAAA9nF,GACA,QAAA9zC,IAAAuqJ,EAAAz2G,GAAA,OAAAy2G,EAAAz2G,GACA,MACA0kF,EADAoD,EAAAnD,mBACA3kF,GACAwuB,EAQA,SAAAs5D,EAAA9nF,GACA,QAAA9zC,IAAAwqJ,EAAA12G,GAAA,OAAA02G,EAAA12G,GACA,MACA42G,EADA9uB,EAAA3D,aACAnkF,GACAiyB,EAAA,IAAAnE,YAAA8oF,GAAApoF,OAEA,OADAkoF,EAAA12G,GAAAiyB,EACAA,EAdA4kF,CAAA/uB,EAAApD,EAAAl2D,QACAvlC,EAAAslC,GAAAm2D,EAAA7/J,KAAA2pG,GACA61D,EAAA,IAAAH,GAAAj7F,EAAAy7F,EAAA/xD,QAGA,OAFA0xD,EAAArkF,KAAA0kF,EAAA1kF,KACAy2G,EAAAz2G,GAAAqkF,EACAA,EAYA,MAAAt5E,EAAA+8E,EAAAv2C,0BAAA,IAAAglE,GAAA,IAAAxnF,GACA3xF,EAAA0qJ,EAAAhhK,KAAAsW,MAEA,QAAA8uB,IAAA9uB,EAAA,CACA,MAAA05K,EAAAvoF,GAAAnxF,EAAAvY,KAAAuY,EAAA6rD,OACA8hB,EAAAmoB,SAAA,IAAA9G,GAAA0qF,EAAA,IAGA,MAAAt9I,EAAAsuH,EAAAhhK,KAAA0yC,WAEA,IAAA,MAAA3xB,KAAA2xB,EAAA,CACA,MAAAkiC,EAAAliC,EAAA3xB,GACA,IAAAkvK,EAEA,GAAAr7G,EAAAg3B,6BAAA,CACA,MAAAgyD,EAAAiyB,EAAA7uB,EAAAhhK,KAAA40E,EAAA50E,MACAiwL,EAAA,IAAAtyB,GAAAC,EAAAhpF,EAAA2wB,SAAA3wB,EAAA3/D,OAAA2/D,EAAAmwB,gBACA,CACA,MAAAirF,EAAAvoF,GAAA7yB,EAAA72E,KAAA62E,EAAAzS,OAEA8tH,EAAA,IADAr7G,EAAAs2C,2BAAAg2C,GAAA57D,IACA0qF,EAAAp7G,EAAA2wB,SAAA3wB,EAAAmwB,iBAGA3/D,IAAAwvC,EAAA12E,OAAA+xL,EAAA/xL,KAAA02E,EAAA12E,WACAknC,IAAAwvC,EAAA4wB,OAAAyqF,EAAAzyB,SAAA5oF,EAAA4wB,YAEApgE,IAAAwvC,EAAA6wB,cACAwqF,EAAAxqF,YAAAxwF,OAAA2/D,EAAA6wB,YAAAxwF,OACAg7K,EAAAxqF,YAAA5oB,MAAAjI,EAAA6wB,YAAA5oB,OAGAoH,EAAAz1D,aAAAzN,EAAAkvK,GAGA,MAAA/nF,EAAA84D,EAAAhhK,KAAAkoG,gBAEA,GAAAA,EACA,IAAA,MAAAnnF,KAAAmnF,EAAA,CACA,MAAAiE,EAAAjE,EAAAnnF,GACAohD,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAAqzB,EAAAm6E,EAAA9tG,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAi2E,EAAAu3B,EAAAxtG,GACA,IAAAsxL,EAEA,GAAAr7G,EAAAg3B,6BAAA,CACA,MAAAgyD,EAAAiyB,EAAA7uB,EAAAhhK,KAAA40E,EAAA50E,MACAiwL,EAAA,IAAAtyB,GAAAC,EAAAhpF,EAAA2wB,SAAA3wB,EAAA3/D,OAAA2/D,EAAAmwB,gBACA,CACA,MAAAirF,EAAAvoF,GAAA7yB,EAAA72E,KAAA62E,EAAAzS,OACA8tH,EAAA,IAAA3qF,GAAA0qF,EAAAp7G,EAAA2wB,SAAA3wB,EAAAmwB,iBAGA3/D,IAAAwvC,EAAA12E,OAAA+xL,EAAA/xL,KAAA02E,EAAA12E,MACAikE,EAAA3jE,KAAAyxL,GAGAhsG,EAAAikB,gBAAAnnF,GAAAohD,EAIA6+F,EAAAhhK,KAAAmoG,uBAGAlkB,EAAAkkB,sBAAA,GAGA,MAAAC,EAAA44D,EAAAhhK,KAAAooG,QAAA44D,EAAAhhK,KAAAkwL,WAAAlvB,EAAAhhK,KAAAmwL,QAEA,QAAA/qJ,IAAAgjE,EACA,IAAA,IAAAzpG,EAAA,EAAAkK,EAAAu/F,EAAA/pG,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA2rG,EAAAlC,EAAAzpG,GACAslF,EAAAgoB,SAAA3B,EAAA7lG,MAAA6lG,EAAAztB,MAAAytB,EAAA/B,eAIA,MAAAF,EAAA24D,EAAAhhK,KAAAqoG,eAEA,QAAAjjE,IAAAijE,EAAA,CACA,MAAAxwF,EAAA,IAAA+oE,QAEAx7C,IAAAijE,EAAAxwF,QACAA,EAAA8/D,UAAA0wB,EAAAxwF,QAGAosE,EAAAokB,eAAA,IAAAjiB,GAAAvuE,EAAAwwF,EAAAvvF,QAKA,OAFAkoJ,EAAA9iK,OAAA+lF,EAAA/lF,KAAA8iK,EAAA9iK,MACA8iK,EAAAtxE,WAAAzL,EAAAyL,SAAAsxE,EAAAtxE,UACAzL,GAsrBA,MAAAmsG,GAAA,CACA/iH,UAAAA,EACAC,sBAAAA,EACAC,sBAAAA,EACAC,iCAAAA,EACAC,iCAAAA,EACAC,wBAAAA,EACAC,wBAAAA,GAEA0iH,GAAA,CACAziH,eAAAA,EACAC,oBAAAA,EACAC,uBAAAA,GAEAwiH,GAAA,CACAviH,cAAAA,EACAC,2BAAAA,EACAC,0BAAAA,EACAC,aAAAA,EACAC,0BAAAA,EACAC,yBAAAA,GAGA,MAAAmiH,WAAAhI,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAEA,oBAAAgI,mBACAvkL,QAAAC,KAAA,+DAGA,oBAAAukL,OACAxkL,QAAAC,KAAA,mDAGAlO,KAAAq0C,QAAA,CACAknC,iBAAA,QAIA1I,WAAAx+B,GAEA,OADAr0C,KAAAq0C,QAAAA,EACAr0C,KAGA6yE,KAAAxvE,EAAAgmL,EAAAC,EAAAC,QACAniJ,IAAA/jC,IAAAA,EAAA,SACA+jC,IAAApnC,KAAAs2C,OAAAjzC,EAAArD,KAAAs2C,KAAAjzC,GACAA,EAAArD,KAAAwqL,QAAAT,WAAA1mL,GACA,MAAAwK,EAAA7N,KACA+5G,EAAAmvE,GAAArrK,IAAAxa,GAEA,QAAA+jC,IAAA2yE,EAMA,OALAlsG,EAAA28K,QAAAZ,UAAAvmL,GACA8e,YAAA,WACAknK,GAAAA,EAAAtvE,GACAlsG,EAAA28K,QAAAX,QAAAxmL,KACA,GACA02G,EAGA,MAAA24E,EAAA,GACAA,EAAAC,YAAA,cAAA3yL,KAAAyqL,YAAA,cAAA,UACAiI,EAAAE,QAAA5yL,KAAA4qL,cACA6H,MAAApvL,EAAAqvL,GAAA3rK,MAAA,SAAAghB,GACA,OAAAA,EAAA8qJ,UACA9rK,MAAA,SAAA8rK,GACA,OAAAL,kBAAAK,EAAAnqL,OAAA26B,OAAAx1B,EAAAwmC,QAAA,CACAy+I,qBAAA,aAEA/rK,MAAA,SAAAgsK,GACA7J,GAAA5rK,IAAAja,EAAA0vL,GACA1J,GAAAA,EAAA0J,GACAllL,EAAA28K,QAAAX,QAAAxmL,MACA2vL,OAAA,SAAAnmK,GACA08J,GAAAA,EAAA18J,GACAhf,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,MAEAwK,EAAA28K,QAAAZ,UAAAvmL,IAKAkvL,GAAAxpL,UAAAkqL,qBAAA,EAEA,MAAAC,GACArgH,cACA7yE,KAAAD,KAAA,YACAC,KAAA2gB,MAAA,IAAA+kF,GACA1lG,KAAAmzL,SAAA,GACAnzL,KAAAozL,YAAA,KAGAvgH,OAAArrE,EAAAlC,GAIA,OAHAtF,KAAAozL,YAAA,IAAAnF,GACAjuL,KAAAmzL,SAAA3yL,KAAAR,KAAAozL,aACApzL,KAAAozL,YAAAjF,OAAA3mL,EAAAlC,GACAtF,KAGA6yE,OAAArrE,EAAAlC,GAEA,OADAtF,KAAAozL,YAAAhF,OAAA5mL,EAAAlC,GACAtF,KAGA6yE,iBAAAw7G,EAAAC,EAAA9iB,EAAAC,GAEA,OADAzrK,KAAAozL,YAAAC,iBAAAhF,EAAAC,EAAA9iB,EAAAC,GACAzrK,KAGA6yE,cAAA07G,EAAAC,EAAAC,EAAAC,EAAAljB,EAAAC,GAEA,OADAzrK,KAAAozL,YAAAE,cAAA/E,EAAAC,EAAAC,EAAAC,EAAAljB,EAAAC,GACAzrK,KAGA6yE,WAAA4gG,GAEA,OADAzzK,KAAAozL,YAAAG,WAAA9f,GACAzzK,KAGA6yE,SAAA2gH,EAAAC,GACA,SAAAC,EAAAC,GACA,MAAA3gG,EAAA,GAEA,IAAA,IAAAryF,EAAA,EAAA4P,EAAAojL,EAAAtzL,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAizL,EAAAD,EAAAhzL,GACAkzL,EAAA,IAAA7E,GACA6E,EAAAzG,OAAAwG,EAAAxG,OACAp6F,EAAAxyF,KAAAqzL,GAGA,OAAA7gG,EAGA,SAAA8gG,EAAAhe,EAAAie,GACA,MAAAC,EAAAD,EAAA1zL,OAKA,IAAAqyK,GAAA,EAEA,IAAA,IAAAtwK,EAAA4xL,EAAA,EAAA1+G,EAAA,EAAAA,EAAA0+G,EAAA5xL,EAAAkzE,IAAA,CACA,IAAA2+G,EAAAF,EAAA3xL,GACA8xL,EAAAH,EAAAz+G,GACA6+G,EAAAD,EAAA1sL,EAAAysL,EAAAzsL,EACA4sL,EAAAF,EAAA5uL,EAAA2uL,EAAA3uL,EAEA,GAAAY,KAAAiO,IAAAigL,GAAAj0K,OAAAqgE,QAAA,CASA,GAPA4zG,EAAA,IACAH,EAAAF,EAAAz+G,GACA6+G,GAAAA,EACAD,EAAAH,EAAA3xL,GACAgyL,GAAAA,GAGAte,EAAAxwK,EAAA2uL,EAAA3uL,GAAAwwK,EAAAxwK,EAAA4uL,EAAA5uL,EAAA,SAEA,GAAAwwK,EAAAxwK,IAAA2uL,EAAA3uL,GACA,GAAAwwK,EAAAtuK,IAAAysL,EAAAzsL,EAAA,OAAA,MAEA,CACA,MAAA6sL,EAAAD,GAAAte,EAAAtuK,EAAAysL,EAAAzsL,GAAA2sL,GAAAre,EAAAxwK,EAAA2uL,EAAA3uL,GACA,GAAA,IAAA+uL,EAAA,OAAA,EAEA,GAAAA,EAAA,EAAA,SACA3hB,GAAAA,OAEA,CAEA,GAAAoD,EAAAxwK,IAAA2uL,EAAA3uL,EAAA,SAGA,GAAA4uL,EAAA1sL,GAAAsuK,EAAAtuK,GAAAsuK,EAAAtuK,GAAAysL,EAAAzsL,GAAAysL,EAAAzsL,GAAAsuK,EAAAtuK,GAAAsuK,EAAAtuK,GAAA0sL,EAAA1sL,EAAA,OAAA,GAKA,OAAAkrK,EAGA,MAAA4C,EAAA/B,GAAA+B,YACA6d,EAAAnzL,KAAAmzL,SACA,GAAA,IAAAA,EAAA9yL,OAAA,MAAA,GACA,IAAA,IAAAozL,EAAA,OAAAC,EAAAP,GACA,IAAAmB,EAAAV,EAAAC,EACA,MAAA7gG,EAAA,GAEA,GAAA,IAAAmgG,EAAA9yL,OAKA,OAJAuzL,EAAAT,EAAA,GACAU,EAAA,IAAA7E,GACA6E,EAAAzG,OAAAwG,EAAAxG,OACAp6F,EAAAxyF,KAAAqzL,GACA7gG,EAGA,IAAAuhG,GAAAjf,EAAA6d,EAAA,GAAAnF,aACAuG,EAAAf,GAAAe,EAAAA,EAEA,MAAAC,EAAA,GACAC,EAAA,GACA,IAEAC,EA2EAC,EA7EAC,EAAA,GACAC,EAAA,EAEAJ,EAAAI,QAAAztJ,EACAwtJ,EAAAC,GAAA,GAEA,IAAA,IAAAl0L,EAAA,EAAA4P,EAAA4iL,EAAA9yL,OAAAM,EAAA4P,EAAA5P,IACAizL,EAAAT,EAAAxyL,GACA+zL,EAAAd,EAAA5F,YACAsG,EAAAhf,EAAAof,GACAJ,EAAAd,GAAAc,EAAAA,EAEAA,IACAC,GAAAE,EAAAI,IAAAA,IACAJ,EAAAI,GAAA,CACAn5K,EAAA,IAAAszK,GACA5sL,EAAAsyL,GAEAD,EAAAI,GAAAn5K,EAAA0xK,OAAAwG,EAAAxG,OACAmH,GAAAM,IACAD,EAAAC,GAAA,IAEAD,EAAAC,GAAAr0L,KAAA,CACAif,EAAAm0K,EACAxxL,EAAAsyL,EAAA,KAMA,IAAAD,EAAA,GAAA,OAAAf,EAAAP,GAEA,GAAAsB,EAAAp0L,OAAA,EAAA,CACA,IAAAy0L,GAAA,EACA,MAAAC,EAAA,GAEA,IAAA,IAAAC,EAAA,EAAAC,EAAAR,EAAAp0L,OAAA20L,EAAAC,EAAAD,IACAR,EAAAQ,GAAA,GAGA,IAAA,IAAAA,EAAA,EAAAC,EAAAR,EAAAp0L,OAAA20L,EAAAC,EAAAD,IAAA,CACA,MAAAE,EAAAN,EAAAI,GAEA,IAAA,IAAAG,EAAA,EAAAA,EAAAD,EAAA70L,OAAA80L,IAAA,CACA,MAAAC,EAAAF,EAAAC,GACA,IAAAE,GAAA,EAEA,IAAA,IAAAC,EAAA,EAAAA,EAAAb,EAAAp0L,OAAAi1L,IACAxB,EAAAsB,EAAAhzL,EAAAqyL,EAAAa,GAAAlzL,KACA4yL,IAAAM,GAAAP,EAAAv0L,KAAA,CACA+0L,MAAAP,EACAQ,IAAAF,EACAtjB,KAAAmjB,IAGAE,GACAA,GAAA,EACAb,EAAAc,GAAA90L,KAAA40L,IAEAN,GAAA,GAKAO,GACAb,EAAAQ,GAAAx0L,KAAA40L,IAMAL,EAAA10L,OAAA,IAEAy0L,IAAAF,EAAAJ,IAMA,IAAA,IAAA7zL,EAAA,EAAAqzB,EAAAygK,EAAAp0L,OAAAM,EAAAqzB,EAAArzB,IAAA,CACAkzL,EAAAY,EAAA9zL,GAAA+a,EACAs3E,EAAAxyF,KAAAqzL,GACAc,EAAAC,EAAAj0L,GAEA,IAAA,IAAAsZ,EAAA,EAAAoxF,EAAAspF,EAAAt0L,OAAA4Z,EAAAoxF,EAAApxF,IACA45K,EAAAngB,MAAAlzK,KAAAm0L,EAAA16K,GAAAwF,GAKA,OAAAuzE,GAKA,MAAAyiG,GACA5iH,YAAA7wE,GACAhC,KAAAD,KAAA,OACAC,KAAAgC,KAAAA,EAGA6wE,eAAApwE,EAAA2gD,EAAA,KACA,MAAA4vC,EAAA,GACAzrB,EAWA,SAAA9kE,EAAA2gD,EAAAphD,GACA,MAAA0zL,EAAAxoL,MAAAqM,KAAA9W,GACAs0B,EAAAqsB,EAAAphD,EAAAixI,WACA0iD,GAAA3zL,EAAAkkF,YAAA0vG,KAAA5zL,EAAAkkF,YAAA2vG,KAAA7zL,EAAA8zL,oBAAA/+J,EACAwwC,EAAA,GACA,IAAAgtC,EAAA,EACAC,EAAA,EAEA,IAAA,IAAA7zG,EAAA,EAAAA,EAAA+0L,EAAAr1L,OAAAM,IAAA,CACA,MAAAo1L,EAAAL,EAAA/0L,GAEA,GAAA,OAAAo1L,EACAxhF,EAAA,EACAC,GAAAmhF,MACA,CACA,MAAAK,EAAAC,GAAAF,EAAAh/J,EAAAw9E,EAAAC,EAAAxyG,GACAuyG,GAAAyhF,EAAAzhF,QACAhtC,EAAA/mE,KAAAw1L,EAAA1/I,OAIA,OAAAixB,EAhCA2uH,CAAAzzL,EAAA2gD,EAAApjD,KAAAgC,MAEA,IAAA,IAAAI,EAAA,EAAAyqI,EAAAtlE,EAAAlnE,OAAA+B,EAAAyqI,EAAAzqI,IACA8K,MAAAnE,UAAAvI,KAAAwY,MAAAg6E,EAAAzrB,EAAAnlE,GAAA+zL,YAGA,OAAAnjG,GA6BA,SAAAijG,GAAAF,EAAAh/J,EAAAw9E,EAAAC,EAAAxyG,GACA,MAAAo0L,EAAAp0L,EAAAq0L,OAAAN,IAAA/zL,EAAAq0L,OAAA,KAEA,IAAAD,EAEA,YADAnoL,QAAApK,MAAA,0BAAAkyL,EAAA,oCAAA/zL,EAAAs0L,WAAA,KAIA,MAAAhgJ,EAAA,IAAA48I,GACA,IAAA1rL,EAAAlC,EAAAixL,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAEA,GAAAR,EAAAnwJ,EAAA,CACA,MAAA4wJ,EAAAT,EAAAU,iBAAAV,EAAAU,eAAAV,EAAAnwJ,EAAAl2B,MAAA,MAEA,IAAA,IAAApP,EAAA,EAAA4P,EAAAsmL,EAAAx2L,OAAAM,EAAA4P,GAAA,CAGA,OAFAsmL,EAAAl2L,MAGA,IAAA,IAEA6G,EAAAqvL,EAAAl2L,KAAAo2B,EAAAw9E,EACAjvG,EAAAuxL,EAAAl2L,KAAAo2B,EAAAy9E,EACAl+D,EAAA63I,OAAA3mL,EAAAlC,GACA,MAEA,IAAA,IAEAkC,EAAAqvL,EAAAl2L,KAAAo2B,EAAAw9E,EACAjvG,EAAAuxL,EAAAl2L,KAAAo2B,EAAAy9E,EACAl+D,EAAA83I,OAAA5mL,EAAAlC,GACA,MAEA,IAAA,IAEAixL,EAAAM,EAAAl2L,KAAAo2B,EAAAw9E,EACAiiF,EAAAK,EAAAl2L,KAAAo2B,EAAAy9E,EACAiiF,EAAAI,EAAAl2L,KAAAo2B,EAAAw9E,EACAmiF,EAAAG,EAAAl2L,KAAAo2B,EAAAy9E,EACAl+D,EAAA+8I,iBAAAoD,EAAAC,EAAAH,EAAAC,GACA,MAEA,IAAA,IAEAD,EAAAM,EAAAl2L,KAAAo2B,EAAAw9E,EACAiiF,EAAAK,EAAAl2L,KAAAo2B,EAAAy9E,EACAiiF,EAAAI,EAAAl2L,KAAAo2B,EAAAw9E,EACAmiF,EAAAG,EAAAl2L,KAAAo2B,EAAAy9E,EACAmiF,EAAAE,EAAAl2L,KAAAo2B,EAAAw9E,EACAqiF,EAAAC,EAAAl2L,KAAAo2B,EAAAy9E,EACAl+D,EAAAg9I,cAAAmD,EAAAC,EAAAC,EAAAC,EAAAL,EAAAC,KAMA,MAAA,CACAjiF,QAAA6hF,EAAAW,GAAAhgK,EACAuf,KAAAA,GAIAm/I,GAAA1sL,UAAAwyK,QAAA,EAkCA,IAAA3nB,GAEA,MAAAojC,GAAA,CACA/8G,WAAA,WAKA,YAJA7yC,IAAAwsH,KACAA,GAAA,IAAAtvJ,OAAA0yL,cAAA1yL,OAAA2yL,qBAGArjC,IAEAv6C,WAAA,SAAAv5G,GACA8zJ,GAAA9zJ,IAIA,MAAAo3L,WAAA3M,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAmqL,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAA0C,gBAAA,eACA1C,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAA9sL,KAAA0qL,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAqmG,GACA,IAGA,MAAAytF,EAAAztF,EAAAh5F,MAAA,GACAsmL,GAAA/8G,aACAm9G,gBAAAD,GAAA,SAAAE,GACAhO,EAAAgO,MAEA,MAAAxqK,GACA08J,EACAA,EAAA18J,GAEA5e,QAAApK,MAAAgpB,GAGAhf,EAAA28K,QAAAV,UAAAzmL,MAEAimL,EAAAC,IAKA,MAAA+N,WAAAtG,GACAn+G,YAAA+zC,EAAAC,EAAAkpB,EAAA,GACA90D,WAAA7zC,EAAA2oG,GACA,MAAAlpC,GAAA,IAAAnB,IAAAzgF,IAAA2hG,GACA9f,GAAA,IAAApB,IAAAzgF,IAAA4hG,GACA0wE,EAAA,IAAA30G,GAAAikB,EAAAtgG,EAAAsgG,EAAA9mF,EAAA8mF,EAAAv+F,GACAkvL,EAAA,IAAA50G,GAAAkkB,EAAAvgG,EAAAugG,EAAA/mF,EAAA+mF,EAAAx+F,GAEAkkK,EAAAtmK,KAAA+F,KAAA/F,KAAA2F,IACAk1E,EAAAyrF,EAAAtmK,KAAA+F,KAAA,KACAjM,KAAAkwI,GAAAC,aAAA,GAAAt+H,KAAA0lL,GAAAj6K,IAAAk6K,GAAAphH,eAAAo2F,GACAxsK,KAAAkwI,GAAAC,aAAA,GAAAt+H,KAAA0lL,GAAA5yG,IAAA6yG,GAAAphH,eAAA2K,IAKAu2G,GAAAvuL,UAAA0uL,wBAAA,EAEA,MAAAC,WAAA1G,GACAn+G,YAAAlyD,EAAAovH,EAAA,GACA90D,WAAA7zC,EAAA2oG,GACA,MAAAlpC,GAAA,IAAAnB,IAAAzgF,IAAAtE,GAEA3gB,KAAAkwI,GAAAC,aAAA,GAAAlrH,IAAA4hF,EAAAtgG,EAAAsgG,EAAA9mF,EAAA8mF,EAAAv+F,GAAA8tE,eAAA,EAAAlwE,KAAA+F,KAAA/F,KAAA2F,MAKA6rL,GAAA3uL,UAAA4uL,qBAAA,EAEA,MAAAC,GAAA,IAAAjsG,GAEAksG,GAAA,IAAAlsG,GAkEA,MAAAmsG,GACAjlH,YAAAklH,GAAA,GACA/3L,KAAA+3L,UAAAA,EACA/3L,KAAAulB,UAAA,EACAvlB,KAAAg4L,QAAA,EACAh4L,KAAAi4L,YAAA,EACAj4L,KAAAw+C,SAAA,EAGAq0B,QACA7yE,KAAAulB,UAAAnE,KACAphB,KAAAg4L,QAAAh4L,KAAAulB,UACAvlB,KAAAi4L,YAAA,EACAj4L,KAAAw+C,SAAA,EAGAq0B,OACA7yE,KAAAk4L,iBACAl4L,KAAAw+C,SAAA,EACAx+C,KAAA+3L,WAAA,EAGAllH,iBAEA,OADA7yE,KAAAm4L,WACAn4L,KAAAi4L,YAGAplH,WACA,IAAA74B,EAAA,EAEA,GAAAh6C,KAAA+3L,YAAA/3L,KAAAw+C,QAEA,OADAx+C,KAAAyG,QACA,EAGA,GAAAzG,KAAAw+C,QAAA,CACA,MAAA45I,EAAAh3K,KACA44B,GAAAo+I,EAAAp4L,KAAAg4L,SAAA,IACAh4L,KAAAg4L,QAAAI,EACAp4L,KAAAi4L,aAAAj+I,EAGA,OAAAA,GAKA,SAAA54B,KACA,OAAA,oBAAAi3K,YAAAl3K,KAAAk3K,aAAAj3K,MAGA,MAAAk3K,GAAA,IAAA11G,GAEA21G,GAAA,IAAAr5G,GAEAs5G,GAAA,IAAA51G,GAEA61G,GAAA,IAAA71G,GAsFA,MAAA81G,WAAA7nG,GACAhe,YAAAvoC,GACA2wC,QACAj7E,KAAAD,KAAA,QACAC,KAAAsqC,SAAAA,EACAtqC,KAAAioC,QAAAqC,EAAArC,QACAjoC,KAAA24L,KAAA34L,KAAAioC,QAAA2wJ,aACA54L,KAAA24L,KAAAE,QAAAvuJ,EAAAwuJ,YACA94L,KAAAu+C,UAAA,EACAv+C,KAAA0pG,OAAA,KACA1pG,KAAA+4L,OAAA,EACA/4L,KAAA44C,MAAA,EACA54C,KAAAg5L,UAAA,EACAh5L,KAAAi5L,QAAA,EACAj5L,KAAAiX,OAAA,EACAjX,KAAAuL,cAAA67B,EACApnC,KAAAk5L,aAAA,EACAl5L,KAAAm5L,WAAA,EACAn5L,KAAAo5L,oBAAA,EACAp5L,KAAA4hC,OAAA,KACA5hC,KAAAq5L,WAAA,QACAr5L,KAAAs5L,WAAA,EACAt5L,KAAAu5L,UAAA,EACAv5L,KAAAw5L,YAAA,EACAx5L,KAAAy5L,QAAA,GAGA5mH,YACA,OAAA7yE,KAAA24L,KAGA9lH,cAAA6mH,GAKA,OAJA15L,KAAAo5L,oBAAA,EACAp5L,KAAAq5L,WAAA,YACAr5L,KAAA4hC,OAAA83J,EACA15L,KAAA64L,UACA74L,KAGA6yE,sBAAA8mH,GAKA,OAJA35L,KAAAo5L,oBAAA,EACAp5L,KAAAq5L,WAAA,YACAr5L,KAAA4hC,OAAA5hC,KAAAioC,QAAA2xJ,yBAAAD,GACA35L,KAAA64L,UACA74L,KAGA6yE,qBAAAgnH,GAKA,OAJA75L,KAAAo5L,oBAAA,EACAp5L,KAAAq5L,WAAA,kBACAr5L,KAAA4hC,OAAA5hC,KAAAioC,QAAA6xJ,wBAAAD,GACA75L,KAAA64L,UACA74L,KAGA6yE,UAAAwkH,GAIA,OAHAr3L,KAAA0pG,OAAA2tF,EACAr3L,KAAAq5L,WAAA,SACAr5L,KAAAu+C,UAAAv+C,KAAAqmB,OACArmB,KAGA6yE,KAAApnE,EAAA,GACA,IAAA,IAAAzL,KAAAm5L,UAEA,YADAlrL,QAAAC,KAAA,0CAIA,IAAA,IAAAlO,KAAAo5L,mBAEA,YADAnrL,QAAAC,KAAA,oDAIAlO,KAAAs5L,WAAAt5L,KAAAioC,QAAA8xJ,YAAAtuL,EACA,MAAAm2B,EAAA5hC,KAAAioC,QAAA+xJ,qBAWA,OAVAp4J,EAAA8nE,OAAA1pG,KAAA0pG,OACA9nE,EAAAgX,KAAA54C,KAAA44C,KACAhX,EAAAo3J,UAAAh5L,KAAAg5L,UACAp3J,EAAAq3J,QAAAj5L,KAAAi5L,QACAr3J,EAAAq4J,QAAAj6L,KAAAk6L,QAAAlzJ,KAAAhnC,MACA4hC,EAAAn7B,MAAAzG,KAAAs5L,WAAAt5L,KAAAu5L,UAAAv5L,KAAAiX,OAAAjX,KAAAuL,UACAvL,KAAAm5L,WAAA,EACAn5L,KAAA4hC,OAAAA,EACA5hC,KAAAm6L,UAAAn6L,KAAA+4L,QACA/4L,KAAAo6L,gBAAAp6L,KAAAk5L,cACAl5L,KAAA64L,UAGAhmH,QACA,IAAA,IAAA7yE,KAAAo5L,mBAmBA,OAdA,IAAAp5L,KAAAm5L,YAEAn5L,KAAAu5L,WAAArzL,KAAAiS,IAAAnY,KAAAioC,QAAA8xJ,YAAA/5L,KAAAs5L,WAAA,GAAAt5L,KAAAk5L,cAEA,IAAAl5L,KAAA44C,OAEA54C,KAAAu5L,UAAAv5L,KAAAu5L,WAAAv5L,KAAAuL,UAAAvL,KAAA0pG,OAAAn+F,WAGAvL,KAAA4hC,OAAAg3B,OACA54D,KAAA4hC,OAAAq4J,QAAA,KACAj6L,KAAAm5L,WAAA,GAGAn5L,KAlBAiO,QAAAC,KAAA,oDAqBA2kE,OACA,IAAA,IAAA7yE,KAAAo5L,mBASA,OAJAp5L,KAAAu5L,UAAA,EACAv5L,KAAA4hC,OAAAg3B,OACA54D,KAAA4hC,OAAAq4J,QAAA,KACAj6L,KAAAm5L,WAAA,EACAn5L,KARAiO,QAAAC,KAAA,oDAWA2kE,UACA,GAAA7yE,KAAAy5L,QAAAp5L,OAAA,EAAA,CACAL,KAAA4hC,OAAAi3J,QAAA74L,KAAAy5L,QAAA,IAEA,IAAA,IAAA94L,EAAA,EAAA4P,EAAAvQ,KAAAy5L,QAAAp5L,OAAAM,EAAA4P,EAAA5P,IACAX,KAAAy5L,QAAA94L,EAAA,GAAAk4L,QAAA74L,KAAAy5L,QAAA94L,IAGAX,KAAAy5L,QAAAz5L,KAAAy5L,QAAAp5L,OAAA,GAAAw4L,QAAA74L,KAAAq6L,kBAEAr6L,KAAA4hC,OAAAi3J,QAAA74L,KAAAq6L,aAIA,OADAr6L,KAAAw5L,YAAA,EACAx5L,KAGA6yE,aACA,GAAA7yE,KAAAy5L,QAAAp5L,OAAA,EAAA,CACAL,KAAA4hC,OAAAuT,WAAAn1C,KAAAy5L,QAAA,IAEA,IAAA,IAAA94L,EAAA,EAAA4P,EAAAvQ,KAAAy5L,QAAAp5L,OAAAM,EAAA4P,EAAA5P,IACAX,KAAAy5L,QAAA94L,EAAA,GAAAw0C,WAAAn1C,KAAAy5L,QAAA94L,IAGAX,KAAAy5L,QAAAz5L,KAAAy5L,QAAAp5L,OAAA,GAAA80C,WAAAn1C,KAAAq6L,kBAEAr6L,KAAA4hC,OAAAuT,WAAAn1C,KAAAq6L,aAIA,OADAr6L,KAAAw5L,YAAA,EACAx5L,KAGA6yE,aACA,OAAA7yE,KAAAy5L,QAGA5mH,WAAA/yE,GAWA,OAVAA,IAAAA,EAAA,KAEA,IAAAE,KAAAw5L,YACAx5L,KAAAm1C,aACAn1C,KAAAy5L,QAAA35L,EAAA4Q,QACA1Q,KAAA64L,WAEA74L,KAAAy5L,QAAA35L,EAAA4Q,QAGA1Q,KAGA6yE,UAAA/yE,GAEA,GADAE,KAAA+4L,OAAAj5L,OACAsnC,IAAApnC,KAAA4hC,OAAAm3J,OAMA,OAJA,IAAA/4L,KAAAm5L,WACAn5L,KAAA4hC,OAAAm3J,OAAAuB,gBAAAt6L,KAAA+4L,OAAA/4L,KAAAioC,QAAA8xJ,YAAA,KAGA/5L,KAGA6yE,YACA,OAAA7yE,KAAA+4L,OAGAlmH,YACA,OAAA7yE,KAAAu6L,aAAA,GAGA1nH,UAAAzyE,GACA,OAAAJ,KAAAw6L,WAAAp6L,EAAA,CAAAA,GAAA,IAGAyyE,gBAAA/yE,GACA,IAAA,IAAAE,KAAAo5L,mBAWA,OANAp5L,KAAAk5L,aAAAp5L,GAEA,IAAAE,KAAAm5L,WACAn5L,KAAA4hC,OAAAs3J,aAAAoB,gBAAAt6L,KAAAk5L,aAAAl5L,KAAAioC,QAAA8xJ,YAAA,KAGA/5L,KAVAiO,QAAAC,KAAA,oDAaA2kE,kBACA,OAAA7yE,KAAAk5L,aAGArmH,UACA7yE,KAAAm5L,WAAA,EAGAtmH,UACA,OAAA,IAAA7yE,KAAAo5L,oBACAnrL,QAAAC,KAAA,qDACA,GAGAlO,KAAA44C,KAGAi6B,QAAA/yE,GACA,IAAA,IAAAE,KAAAo5L,mBAWA,OANAp5L,KAAA44C,KAAA94C,GAEA,IAAAE,KAAAm5L,YACAn5L,KAAA4hC,OAAAgX,KAAA54C,KAAA44C,MAGA54C,KAVAiO,QAAAC,KAAA,oDAaA2kE,aAAA/yE,GAEA,OADAE,KAAAg5L,UAAAl5L,EACAE,KAGA6yE,WAAA/yE,GAEA,OADAE,KAAAi5L,QAAAn5L,EACAE,KAGA6yE,YACA,OAAA7yE,KAAA24L,KAAAA,KAAA74L,MAGA+yE,UAAA/yE,GAEA,OADAE,KAAA24L,KAAAA,KAAA2B,gBAAAx6L,EAAAE,KAAAioC,QAAA8xJ,YAAA,KACA/5L,MAKA,MAAAy6L,GAAA,IAAA73G,GAEA83G,GAAA,IAAAx7G,GAEAy7G,GAAA,IAAA/3G,GAEAg4G,GAAA,IAAAh4G,GAmFA,MAAAi4G,GACAhoH,YAAAioH,EAAAC,EAAA,MACA/6L,KAAAg7L,SAAAF,EAAA7yJ,QAAAgzJ,iBACAj7L,KAAAg7L,SAAAD,QAAAA,EACA/6L,KAAAgC,KAAA,IAAAsmG,WAAAtoG,KAAAg7L,SAAAE,mBACAJ,EAAAT,YAAAxB,QAAA74L,KAAAg7L,UAGAnoH,mBAEA,OADA7yE,KAAAg7L,SAAAG,qBAAAn7L,KAAAgC,MACAhC,KAAAgC,KAGA6wE,sBACA,IAAA/yE,EAAA,EACA,MAAAkC,EAAAhC,KAAAo7L,mBAEA,IAAA,IAAAz6L,EAAA,EAAAA,EAAAqB,EAAA3B,OAAAM,IACAb,GAAAkC,EAAArB,GAGA,OAAAb,EAAAkC,EAAA3B,QAKA,MAAAg7L,GACAxoH,YAAAyoH,EAAAtS,EAAA5I,GAGA,IAAAmb,EAAAC,EAAAC,EAgBA,OAlBAz7L,KAAAs7L,QAAAA,EACAt7L,KAAAogL,UAAAA,EAiBA4I,GACA,IAAA,aACAuS,EAAAv7L,KAAA07L,OACAF,EAAAx7L,KAAA27L,eACAF,EAAAz7L,KAAA47L,+BACA57L,KAAA0pG,OAAA,IAAAJ,aAAA,EAAA82E,GACApgL,KAAA67L,WAAA,EACA,MAEA,IAAA,SACA,IAAA,OACAN,EAAAv7L,KAAA87L,QAGAN,EAAAx7L,KAAA87L,QACAL,EAAAz7L,KAAA+7L,0BACA/7L,KAAA0pG,OAAA,IAAAx8F,MAAA,EAAAkzK,GACA,MAEA,QACAmb,EAAAv7L,KAAAg8L,MACAR,EAAAx7L,KAAAi8L,cACAR,EAAAz7L,KAAAk8L,4BACAl8L,KAAA0pG,OAAA,IAAAJ,aAAA,EAAA82E,GAGApgL,KAAAm8L,iBAAAZ,EACAv7L,KAAAo8L,yBAAAZ,EACAx7L,KAAAq8L,aAAAZ,EACAz7L,KAAAs8L,WAAA,EACAt8L,KAAAu8L,UAAA,EACAv8L,KAAAw8L,iBAAA,EACAx8L,KAAAy8L,yBAAA,EACAz8L,KAAA08L,SAAA,EACA18L,KAAA28L,eAAA,EAIA9pH,WAAA+pH,EAAAtlE,GAGA,MAAA5tB,EAAA1pG,KAAA0pG,OACAmE,EAAA7tG,KAAAogL,UACAnpK,EAAA2lL,EAAA/uF,EAAAA,EACA,IAAAgvF,EAAA78L,KAAAw8L,iBAEA,GAAA,IAAAK,EAAA,CAEA,IAAA,IAAAl8L,EAAA,EAAAA,IAAAktG,IAAAltG,EACA+oG,EAAAzyF,EAAAtW,GAAA+oG,EAAA/oG,GAGAk8L,EAAAvlE,MACA,CAEAulE,GAAAvlE,EACA,MAAAwlE,EAAAxlE,EAAAulE,EAEA78L,KAAAm8L,iBAAAzyF,EAAAzyF,EAAA,EAAA6lL,EAAAjvF,GAGA7tG,KAAAw8L,iBAAAK,EAIAhqH,mBAAAykD,GACA,MAAA5tB,EAAA1pG,KAAA0pG,OACAmE,EAAA7tG,KAAAogL,UACAnpK,EAAA42F,EAAA7tG,KAAAu8L,UAEA,IAAAv8L,KAAAy8L,0BAEAz8L,KAAAq8L,eAIAr8L,KAAAo8L,yBAAA1yF,EAAAzyF,EAAA,EAAAqgH,EAAAzpB,GAEA7tG,KAAAy8L,0BAAAnlE,EAIAzkD,MAAA+pH,GACA,MAAA/uF,EAAA7tG,KAAAogL,UACA12E,EAAA1pG,KAAA0pG,OACAzyF,EAAA2lL,EAAA/uF,EAAAA,EACAypB,EAAAt3H,KAAAw8L,iBACAO,EAAA/8L,KAAAy8L,yBACAnB,EAAAt7L,KAAAs7L,QAIA,GAHAt7L,KAAAw8L,iBAAA,EACAx8L,KAAAy8L,yBAAA,EAEAnlE,EAAA,EAAA,CAEA,MAAA0lE,EAAAnvF,EAAA7tG,KAAAs8L,WAEAt8L,KAAAm8L,iBAAAzyF,EAAAzyF,EAAA+lL,EAAA,EAAA1lE,EAAAzpB,GAGAkvF,EAAA,GAEA/8L,KAAAo8L,yBAAA1yF,EAAAzyF,EAAAjX,KAAAu8L,UAAA1uF,EAAA,EAAAA,GAGA,IAAA,IAAAltG,EAAAktG,EAAAhhF,EAAAghF,EAAAA,EAAAltG,IAAAksB,IAAAlsB,EACA,GAAA+oG,EAAA/oG,KAAA+oG,EAAA/oG,EAAAktG,GAAA,CAEAytF,EAAAtgE,SAAAtxB,EAAAzyF,GACA,OAMA47D,oBACA,MAAAyoH,EAAAt7L,KAAAs7L,QACA5xF,EAAA1pG,KAAA0pG,OACAmE,EAAA7tG,KAAAogL,UACA4c,EAAAnvF,EAAA7tG,KAAAs8L,WACAhB,EAAA2B,SAAAvzF,EAAAszF,GAEA,IAAA,IAAAr8L,EAAAktG,EAAAhhF,EAAAmwK,EAAAr8L,IAAAksB,IAAAlsB,EACA+oG,EAAA/oG,GAAA+oG,EAAAszF,EAAAr8L,EAAAktG,GAIA7tG,KAAAq8L,eAEAr8L,KAAAw8L,iBAAA,EACAx8L,KAAAy8L,yBAAA,EAIA5pH,uBACA,MAAAmqH,EAAA,EAAAh9L,KAAAogL,UACApgL,KAAAs7L,QAAAtgE,SAAAh7H,KAAA0pG,OAAAszF,GAGAnqH,8BACA,MAAA4uG,EAAAzhL,KAAAu8L,UAAAv8L,KAAAogL,UACAsB,EAAAD,EAAAzhL,KAAAogL,UAEA,IAAA,IAAAz/K,EAAA8gL,EAAA9gL,EAAA+gL,EAAA/gL,IACAX,KAAA0pG,OAAA/oG,GAAA,EAIAkyE,iCACA7yE,KAAAk8L,8BAEAl8L,KAAA0pG,OAAA1pG,KAAAu8L,UAAAv8L,KAAAogL,UAAA,GAAA,EAGAvtG,4BACA,MAAA4uG,EAAAzhL,KAAAs8L,WAAAt8L,KAAAogL,UACA8c,EAAAl9L,KAAAu8L,UAAAv8L,KAAAogL,UAEA,IAAA,IAAAz/K,EAAA,EAAAA,EAAAX,KAAAogL,UAAAz/K,IACAX,KAAA0pG,OAAAwzF,EAAAv8L,GAAAX,KAAA0pG,OAAA+3E,EAAA9gL,GAKAkyE,QAAA62B,EAAA9pB,EAAA6/F,EAAAx4K,EAAA4mG,GACA,GAAA5mG,GAAA,GACA,IAAA,IAAAtG,EAAA,EAAAA,IAAAktG,IAAAltG,EACA+oG,EAAA9pB,EAAAj/E,GAAA+oG,EAAA+1E,EAAA9+K,GAKAkyE,OAAA62B,EAAA9pB,EAAA6/F,EAAAx4K,GACAi4E,GAAA2nG,UAAAn9E,EAAA9pB,EAAA8pB,EAAA9pB,EAAA8pB,EAAA+1E,EAAAx4K,GAGA4rE,eAAA62B,EAAA9pB,EAAA6/F,EAAAx4K,EAAA4mG,GACA,MAAAsvF,EAAAn9L,KAAA67L,WAAAhuF,EAEA3uB,GAAA8iG,wBAAAt4E,EAAAyzF,EAAAzzF,EAAA9pB,EAAA8pB,EAAA+1E,GAEAvgG,GAAA2nG,UAAAn9E,EAAA9pB,EAAA8pB,EAAA9pB,EAAA8pB,EAAAyzF,EAAAl2L,GAGA4rE,MAAA62B,EAAA9pB,EAAA6/F,EAAAx4K,EAAA4mG,GACA,MAAAnyF,EAAA,EAAAzU,EAEA,IAAA,IAAAtG,EAAA,EAAAA,IAAAktG,IAAAltG,EAAA,CACA,MAAAsZ,EAAA2lE,EAAAj/E,EACA+oG,EAAAzvF,GAAAyvF,EAAAzvF,GAAAyB,EAAAguF,EAAA+1E,EAAA9+K,GAAAsG,GAIA4rE,cAAA62B,EAAA9pB,EAAA6/F,EAAAx4K,EAAA4mG,GACA,IAAA,IAAAltG,EAAA,EAAAA,IAAAktG,IAAAltG,EAAA,CACA,MAAAsZ,EAAA2lE,EAAAj/E,EACA+oG,EAAAzvF,GAAAyvF,EAAAzvF,GAAAyvF,EAAA+1E,EAAA9+K,GAAAsG,IAOA,MAAAm2L,GAAA,gBAEAC,GAAA,IAAAx8K,OAAA,kBAAA,KAKAy8K,GAAA,mBAEAC,GAAA,KAAAH,GAAA5lL,QAAA,MAAA,IAAA,IAIAgmL,GAAA,kBAAA57J,OAAApqB,QAAA,KAAA8lL,IAGAG,GAAA,WAAA77J,OAAApqB,QAAA,OAAA+lL,IAIAG,GAAA,4BAAA97J,OAAApqB,QAAA,KAAA8lL,IAIAK,GAAA,uBAAA/7J,OAAApqB,QAAA,KAAA8lL,IAEAM,GAAA,IAAA/8K,OAAA,IAAA28K,GAAAC,GAAAC,GAAAC,GAAA,KAEAE,GAAA,CAAA,WAAA,YAAA,SAiDA,MAAAC,GACAjrH,YAAAkrH,EAAAznJ,EAAA0nJ,GACAh+L,KAAAs2C,KAAAA,EACAt2C,KAAAg+L,WAAAA,GAAAF,GAAAG,eAAA3nJ,GACAt2C,KAAA8jD,KAAAg6I,GAAAI,SAAAH,EAAA/9L,KAAAg+L,WAAAh6J,WAAA+5J,EACA/9L,KAAA+9L,SAAAA,EAEA/9L,KAAAi9L,SAAAj9L,KAAAm+L,kBACAn+L,KAAAg7H,SAAAh7H,KAAAo+L,kBAGAvrH,cAAA5K,EAAA3xB,EAAA0nJ,GACA,OAAA/1H,GAAAA,EAAAo2H,uBAGA,IAAAP,GAAAQ,UAAAr2H,EAAA3xB,EAAA0nJ,GAFA,IAAAF,GAAA71H,EAAA3xB,EAAA0nJ,GAcAnrH,wBAAA3yE,GACA,OAAAA,EAAAsX,QAAA,MAAA,KAAAA,QAAA6lL,GAAA,IAGAxqH,sBAAAs1G,GACA,MAAA56I,EAAAqwJ,GAAAvlL,KAAA8vK,GAEA,IAAA56I,EACA,MAAA,IAAAuc,MAAA,4CAAAq+H,GAGA,MAAAoW,EAAA,CAEAv6J,SAAAuJ,EAAA,GACAixJ,WAAAjxJ,EAAA,GACAkxJ,YAAAlxJ,EAAA,GACA86I,aAAA96I,EAAA,GAEAmxJ,cAAAnxJ,EAAA,IAEAoxJ,EAAAJ,EAAAv6J,UAAAu6J,EAAAv6J,SAAAhhB,YAAA,KAEA,QAAAokB,IAAAu3J,IAAA,IAAAA,EAAA,CACA,MAAAH,EAAAD,EAAAv6J,SAAApgB,UAAA+6K,EAAA,IAKA,IAAAd,GAAAh5L,QAAA25L,KACAD,EAAAv6J,SAAAu6J,EAAAv6J,SAAApgB,UAAA,EAAA+6K,GACAJ,EAAAC,WAAAA,GAIA,GAAA,OAAAD,EAAAlW,cAAA,IAAAkW,EAAAlW,aAAAhoL,OACA,MAAA,IAAAypD,MAAA,+DAAAq+H,GAGA,OAAAoW,EAGA1rH,gBAAA5K,EAAAjkC,GACA,IAAAA,GAAA,KAAAA,GAAA,MAAAA,IAAA,IAAAA,GAAAA,IAAAikC,EAAA/nE,MAAA8jC,IAAAikC,EAAAiT,KACA,OAAAjT,EAIA,GAAAA,EAAAksB,SAAA,CACA,MAAA4uE,EAAA96F,EAAAksB,SAAAyqG,cAAA56J,GAEA,QAAAoD,IAAA27H,EACA,OAAAA,EAKA,GAAA96F,EAAAx9C,SAAA,CACA,MAAAo0K,EAAA,SAAAp0K,GACA,IAAA,IAAA9pB,EAAA,EAAAA,EAAA8pB,EAAApqB,OAAAM,IAAA,CACA,MAAAm+L,EAAAr0K,EAAA9pB,GAEA,GAAAm+L,EAAA5+L,OAAA8jC,GAAA86J,EAAA5jH,OAAAl3C,EACA,OAAA86J,EAGA,MAAAr+K,EAAAo+K,EAAAC,EAAAr0K,UACA,GAAAhK,EAAA,OAAAA,EAGA,OAAA,MAGAs+K,EAAAF,EAAA52H,EAAAx9C,UAEA,GAAAs0K,EACA,OAAAA,EAIA,OAAA,KAIAlsH,yBAEAA,yBAGAA,iBAAA62B,EAAAzyF,GACAyyF,EAAAzyF,GAAAjX,KAAAg/L,aAAAh/L,KAAAqoL,cAGAx1G,gBAAA62B,EAAAzyF,GACA,MAAA2qB,EAAA5hC,KAAAi/L,iBAEA,IAAA,IAAAt+L,EAAA,EAAAkK,EAAA+2B,EAAAvhC,OAAAM,IAAAkK,IAAAlK,EACA+oG,EAAAzyF,KAAA2qB,EAAAjhC,GAIAkyE,uBAAA62B,EAAAzyF,GACAyyF,EAAAzyF,GAAAjX,KAAAi/L,iBAAAj/L,KAAA0+L,eAGA7rH,kBAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAvvL,QAAAg6F,EAAAzyF,GAIA47D,iBAAA62B,EAAAzyF,GACAjX,KAAAg/L,aAAAh/L,KAAAqoL,cAAA3+E,EAAAzyF,GAGA47D,gCAAA62B,EAAAzyF,GACAjX,KAAAg/L,aAAAh/L,KAAAqoL,cAAA3+E,EAAAzyF,GACAjX,KAAAg/L,aAAA1iH,aAAA,EAGAzJ,2CAAA62B,EAAAzyF,GACAjX,KAAAg/L,aAAAh/L,KAAAqoL,cAAA3+E,EAAAzyF,GACAjX,KAAAg/L,aAAA5tG,wBAAA,EAIAve,gBAAA62B,EAAAzyF,GACA,MAAAioL,EAAAl/L,KAAAi/L,iBAEA,IAAA,IAAAt+L,EAAA,EAAAkK,EAAAq0L,EAAA7+L,OAAAM,IAAAkK,IAAAlK,EACAu+L,EAAAv+L,GAAA+oG,EAAAzyF,KAIA47D,+BAAA62B,EAAAzyF,GACA,MAAAioL,EAAAl/L,KAAAi/L,iBAEA,IAAA,IAAAt+L,EAAA,EAAAkK,EAAAq0L,EAAA7+L,OAAAM,IAAAkK,IAAAlK,EACAu+L,EAAAv+L,GAAA+oG,EAAAzyF,KAGAjX,KAAAg/L,aAAA1iH,aAAA,EAGAzJ,0CAAA62B,EAAAzyF,GACA,MAAAioL,EAAAl/L,KAAAi/L,iBAEA,IAAA,IAAAt+L,EAAA,EAAAkK,EAAAq0L,EAAA7+L,OAAAM,IAAAkK,IAAAlK,EACAu+L,EAAAv+L,GAAA+oG,EAAAzyF,KAGAjX,KAAAg/L,aAAA5tG,wBAAA,EAIAve,uBAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAj/L,KAAA0+L,eAAAh1F,EAAAzyF,GAGA47D,sCAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAj/L,KAAA0+L,eAAAh1F,EAAAzyF,GACAjX,KAAAg/L,aAAA1iH,aAAA,EAGAzJ,iDAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAj/L,KAAA0+L,eAAAh1F,EAAAzyF,GACAjX,KAAAg/L,aAAA5tG,wBAAA,EAIAve,oBAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAtlH,UAAA+vB,EAAAzyF,GAGA47D,mCAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAtlH,UAAA+vB,EAAAzyF,GACAjX,KAAAg/L,aAAA1iH,aAAA,EAGAzJ,8CAAA62B,EAAAzyF,GACAjX,KAAAi/L,iBAAAtlH,UAAA+vB,EAAAzyF,GACAjX,KAAAg/L,aAAA5tG,wBAAA,EAGAve,kBAAAssH,EAAAloL,GACAjX,KAAAgnC,OACAhnC,KAAAi9L,SAAAkC,EAAAloL,GAGA47D,kBAAAusH,EAAAnoL,GACAjX,KAAAgnC,OACAhnC,KAAAg7H,SAAAokE,EAAAnoL,GAIA47D,OACA,IAAAmsH,EAAAh/L,KAAA8jD,KACA,MAAAk6I,EAAAh+L,KAAAg+L,WACAQ,EAAAR,EAAAQ,WACAnW,EAAA2V,EAAA3V,aACA,IAAAqW,EAAAV,EAAAU,cAWA,GATAM,IACAA,EAAAlB,GAAAI,SAAAl+L,KAAA+9L,SAAAC,EAAAh6J,WAAAhkC,KAAA+9L,SACA/9L,KAAA8jD,KAAAk7I,GAIAh/L,KAAAi9L,SAAAj9L,KAAAq/L,sBACAr/L,KAAAg7H,SAAAh7H,KAAAs/L,uBAEAN,EAEA,YADA/wL,QAAApK,MAAA,2DAAA7D,KAAAs2C,KAAA,yBAIA,GAAAkoJ,EAAA,CACA,IAAAC,EAAAT,EAAAS,YAEA,OAAAD,GACA,IAAA,YACA,IAAAQ,EAAA5qG,SAEA,YADAnmF,QAAApK,MAAA,oFAAA7D,MAIA,IAAAg/L,EAAA5qG,SAAArB,UAEA,YADA9kF,QAAApK,MAAA,8GAAA7D,MAIAg/L,EAAAA,EAAA5qG,SAAArB,UACA,MAEA,IAAA,QACA,IAAAisG,EAAA7qG,SAEA,YADAlmF,QAAApK,MAAA,iFAAA7D,MAMAg/L,EAAAA,EAAA7qG,SAAA23C,MAEA,IAAA,IAAAnrI,EAAA,EAAAA,EAAAq+L,EAAA3+L,OAAAM,IACA,GAAAq+L,EAAAr+L,GAAAT,OAAAu+L,EAAA,CACAA,EAAA99L,EACA,MAIA,MAEA,QACA,QAAAymC,IAAA43J,EAAAR,GAEA,YADAvwL,QAAApK,MAAA,uEAAA7D,MAIAg/L,EAAAA,EAAAR,GAGA,QAAAp3J,IAAAq3J,EAAA,CACA,QAAAr3J,IAAA43J,EAAAP,GAEA,YADAxwL,QAAApK,MAAA,wFAAA7D,KAAAg/L,GAIAA,EAAAA,EAAAP,IAKA,MAAAc,EAAAP,EAAA3W,GAEA,QAAAjhJ,IAAAm4J,EAAA,CACA,MAAAv7J,EAAAg6J,EAAAh6J,SAEA,YADA/1B,QAAApK,MAAA,+DAAAmgC,EAAA,IAAAqkJ,EAAA,wBAAA2W,GAKA,IAAAQ,EAAAx/L,KAAAy/L,WAAAC,KACA1/L,KAAAg/L,aAAAA,OAEA53J,IAAA43J,EAAA1iH,YAEAkjH,EAAAx/L,KAAAy/L,WAAAE,iBACAv4J,IAAA43J,EAAA5tG,yBAEAouG,EAAAx/L,KAAAy/L,WAAAG,wBAIA,IAAAC,EAAA7/L,KAAA8/L,YAAAC,OAEA,QAAA34J,IAAAs3J,EAAA,CAEA,GAAA,0BAAArW,EAAA,CAGA,IAAA2W,EAAA/4G,SAEA,YADAh4E,QAAApK,MAAA,sGAAA7D,MAIA,IAAAg/L,EAAA/4G,SAAAonB,iBAWA,YADAp/F,QAAApK,MAAA,oHAAA7D,MATA,IAAAg/L,EAAA/4G,SAAAikB,gBAEA,YADAj8F,QAAApK,MAAA,sHAAA7D,WAIAonC,IAAA43J,EAAAvvF,sBAAAivF,KACAA,EAAAM,EAAAvvF,sBAAAivF,IAQAmB,EAAA7/L,KAAA8/L,YAAAE,aACAhgM,KAAAi/L,iBAAAM,EACAv/L,KAAA0+L,cAAAA,YACAt3J,IAAAm4J,EAAA5lH,gBAAAvyC,IAAAm4J,EAAA7vL,SAEAmwL,EAAA7/L,KAAA8/L,YAAAG,eACAjgM,KAAAi/L,iBAAAM,GACAryL,MAAAhM,QAAAq+L,IACAM,EAAA7/L,KAAA8/L,YAAAI,YACAlgM,KAAAi/L,iBAAAM,GAEAv/L,KAAAqoL,aAAAA,EAIAroL,KAAAi9L,SAAAj9L,KAAAmgM,oBAAAN,GACA7/L,KAAAg7H,SAAAh7H,KAAAogM,iCAAAP,GAAAL,GAGA3sH,SACA7yE,KAAA8jD,KAAA,KAGA9jD,KAAAi9L,SAAAj9L,KAAAm+L,kBACAn+L,KAAAg7H,SAAAh7H,KAAAo+L,mBAKAN,GAAAQ,UAtaA,MACAzrH,YAAAwtH,EAAA/pJ,EAAAgqJ,GACA,MAAAtC,EAAAsC,GAAAxC,GAAAG,eAAA3nJ,GACAt2C,KAAAugM,aAAAF,EACArgM,KAAAwgM,UAAAH,EAAAI,WAAAnqJ,EAAA0nJ,GAGAnrH,SAAA1O,EAAAltD,GACAjX,KAAAgnC,OAEA,MAAA05J,EAAA1gM,KAAAugM,aAAAI,gBACArF,EAAAt7L,KAAAwgM,UAAAE,QAEAt5J,IAAAk0J,GAAAA,EAAA2B,SAAA94H,EAAAltD,GAGA47D,SAAA1O,EAAAltD,GACA,MAAA2pL,EAAA5gM,KAAAwgM,UAEA,IAAA,IAAA7/L,EAAAX,KAAAugM,aAAAI,gBAAA91L,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EACAigM,EAAAjgM,GAAAq6H,SAAA72D,EAAAltD,GAIA47D,OACA,MAAA+tH,EAAA5gM,KAAAwgM,UAEA,IAAA,IAAA7/L,EAAAX,KAAAugM,aAAAI,gBAAA91L,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EACAigM,EAAAjgM,GAAAqmC,OAIA6rC,SACA,MAAA+tH,EAAA5gM,KAAAwgM,UAEA,IAAA,IAAA7/L,EAAAX,KAAAugM,aAAAI,gBAAA91L,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EACAigM,EAAAjgM,GAAAkgM,WAmYA/C,GAAA/0L,UAAA+2L,YAAA,CACAC,OAAA,EACAG,YAAA,EACAF,aAAA,EACAC,eAAA,GAEAnC,GAAA/0L,UAAA02L,WAAA,CACAC,KAAA,EACAC,YAAA,EACAC,uBAAA,GAEA9B,GAAA/0L,UAAAo3L,oBAAA,CAAArC,GAAA/0L,UAAA+3L,iBAAAhD,GAAA/0L,UAAAg4L,gBAAAjD,GAAA/0L,UAAAi4L,uBAAAlD,GAAA/0L,UAAAk4L,mBACAnD,GAAA/0L,UAAAq3L,iCAAA,CAAA,CACAtC,GAAA/0L,UAAAm4L,iBAAApD,GAAA/0L,UAAAo4L,gCAAArD,GAAA/0L,UAAAq4L,4CAAA,CACAtD,GAAA/0L,UAAAs4L,gBAAAvD,GAAA/0L,UAAAu4L,+BAAAxD,GAAA/0L,UAAAw4L,2CAAA,CACAzD,GAAA/0L,UAAAy4L,uBAAA1D,GAAA/0L,UAAA04L,sCAAA3D,GAAA/0L,UAAA24L,kDAAA,CACA5D,GAAA/0L,UAAA44L,oBAAA7D,GAAA/0L,UAAA64L,mCAAA9D,GAAA/0L,UAAA84L,gDA+BA,MAAAC,GACAjvH,cACA7yE,KAAAk7E,KAAA9H,KAEApzE,KAAAkyI,SAAAhlI,MAAAnE,UAAA2H,MAAAwI,KAAAsM,WACAxlB,KAAA2gM,gBAAA,EAGA,MAAAr1F,EAAA,GACAtrG,KAAA+hM,eAAAz2F,EAEA,IAAA,IAAA3qG,EAAA,EAAAkK,EAAA2a,UAAAnlB,OAAAM,IAAAkK,IAAAlK,EACA2qG,EAAA9lF,UAAA7kB,GAAAu6E,MAAAv6E,EAGAX,KAAAgiM,OAAA,GAEAhiM,KAAAiiM,aAAA,GAEAjiM,KAAAwgM,UAAA,GAEAxgM,KAAAkiM,uBAAA,GAEA,MAAAr0L,EAAA7N,KACAA,KAAAmiM,MAAA,CACAj6E,QAAA,CACAl1F,YACA,OAAAnlB,EAAAqkI,SAAA7xI,QAGA+hM,YACA,OAAApiM,KAAAgzB,MAAAnlB,EAAA8yL,kBAKA0B,wBACA,OAAAx0L,EAAA2yL,UAAAngM,SAMAwyE,MACA,MAAAq1C,EAAAloH,KAAAkyI,SACAowD,EAAAtiM,KAAA+hM,eACAx6H,EAAAvnE,KAAAgiM,OACAO,EAAAviM,KAAAiiM,aACArB,EAAA5gM,KAAAwgM,UACAgC,EAAA5B,EAAAvgM,OACA,IAAAoiM,EACAC,EAAAx6E,EAAA7nH,OACAsiM,EAAA3iM,KAAA2gM,gBAEA,IAAA,IAAAhgM,EAAA,EAAAkK,EAAA2a,UAAAnlB,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAsxD,EAAAzsC,UAAA7kB,GACAu6E,EAAAjpB,EAAAipB,KACA,IAAA5iE,EAAAgqL,EAAApnH,GAEA,QAAA9zC,IAAA9uB,EAAA,CAEAA,EAAAoqL,IACAJ,EAAApnH,GAAA5iE,EACA4vG,EAAA1nH,KAAAyxD,GAEA,IAAA,IAAAh4C,EAAA,EAAA6S,EAAA01K,EAAAvoL,IAAA6S,IAAA7S,EACA2mL,EAAA3mL,GAAAzZ,KAAA,IAAAs9L,GAAA7rI,EAAAsV,EAAAttD,GAAAsoL,EAAAtoL,UAEA,GAAA3B,EAAAqqL,EAAA,CACAF,EAAAv6E,EAAA5vG,GAEA,MAAAsqL,IAAAD,EACAE,EAAA36E,EAAA06E,GACAN,EAAAO,EAAA3nH,MAAA5iE,EACA4vG,EAAA5vG,GAAAuqL,EACAP,EAAApnH,GAAA0nH,EACA16E,EAAA06E,GAAA3wI,EAEA,IAAA,IAAAh4C,EAAA,EAAA6S,EAAA01K,EAAAvoL,IAAA6S,IAAA7S,EAAA,CACA,MAAA6oL,EAAAlC,EAAA3mL,GACA8oL,EAAAD,EAAAF,GACA,IAAAtH,EAAAwH,EAAAxqL,GACAwqL,EAAAxqL,GAAAyqL,OAEA37J,IAAAk0J,IAIAA,EAAA,IAAAwC,GAAA7rI,EAAAsV,EAAAttD,GAAAsoL,EAAAtoL,KAGA6oL,EAAAF,GAAAtH,QAEApzE,EAAA5vG,KAAAmqL,GACAx0L,QAAApK,MAAA,sJAMA7D,KAAA2gM,gBAAAgC,EAGA9vH,SACA,MAAAq1C,EAAAloH,KAAAkyI,SACAowD,EAAAtiM,KAAA+hM,eACAnB,EAAA5gM,KAAAwgM,UACAgC,EAAA5B,EAAAvgM,OACA,IAAAsiM,EAAA3iM,KAAA2gM,gBAEA,IAAA,IAAAhgM,EAAA,EAAAkK,EAAA2a,UAAAnlB,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAsxD,EAAAzsC,UAAA7kB,GACAu6E,EAAAjpB,EAAAipB,KACA5iE,EAAAgqL,EAAApnH,GAEA,QAAA9zC,IAAA9uB,GAAAA,GAAAqqL,EAAA,CAEA,MAAAK,EAAAL,IACAM,EAAA/6E,EAAA86E,GACAV,EAAAW,EAAA/nH,MAAA5iE,EACA4vG,EAAA5vG,GAAA2qL,EACAX,EAAApnH,GAAA8nH,EACA96E,EAAA86E,GAAA/wI,EAEA,IAAA,IAAAh4C,EAAA,EAAA6S,EAAA01K,EAAAvoL,IAAA6S,IAAA7S,EAAA,CACA,MAAA6oL,EAAAlC,EAAA3mL,GACAipL,EAAAJ,EAAAE,GACA1H,EAAAwH,EAAAxqL,GACAwqL,EAAAxqL,GAAA4qL,EACAJ,EAAAE,GAAA1H,IAMAt7L,KAAA2gM,gBAAAgC,EAIA9vH,UACA,MAAAq1C,EAAAloH,KAAAkyI,SACAowD,EAAAtiM,KAAA+hM,eACAnB,EAAA5gM,KAAAwgM,UACAgC,EAAA5B,EAAAvgM,OACA,IAAAsiM,EAAA3iM,KAAA2gM,gBACA+B,EAAAx6E,EAAA7nH,OAEA,IAAA,IAAAM,EAAA,EAAAkK,EAAA2a,UAAAnlB,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MACAu6E,EADA11D,UAAA7kB,GACAu6E,KACA5iE,EAAAgqL,EAAApnH,GAEA,QAAA9zC,IAAA9uB,EAGA,UAFAgqL,EAAApnH,GAEA5iE,EAAAqqL,EAAA,CAEA,MAAAC,IAAAD,EACAE,EAAA36E,EAAA06E,GACA3hL,IAAAyhL,EACAS,EAAAj7E,EAAAjnG,GAEAqhL,EAAAO,EAAA3nH,MAAA5iE,EACA4vG,EAAA5vG,GAAAuqL,EAEAP,EAAAa,EAAAjoH,MAAA0nH,EACA16E,EAAA06E,GAAAO,EACAj7E,EAAAtsE,MAEA,IAAA,IAAA3hC,EAAA,EAAA6S,EAAA01K,EAAAvoL,IAAA6S,IAAA7S,EAAA,CACA,MAAA6oL,EAAAlC,EAAA3mL,GACA8oL,EAAAD,EAAAF,GACA3xK,EAAA6xK,EAAA7hL,GACA6hL,EAAAxqL,GAAAyqL,EACAD,EAAAF,GAAA3xK,EACA6xK,EAAAlnJ,WAEA,CAEA,MAAA36B,IAAAyhL,EACAS,EAAAj7E,EAAAjnG,GAEAA,EAAA,IACAqhL,EAAAa,EAAAjoH,MAAA5iE,GAGA4vG,EAAA5vG,GAAA6qL,EACAj7E,EAAAtsE,MAEA,IAAA,IAAA3hC,EAAA,EAAA6S,EAAA01K,EAAAvoL,IAAA6S,IAAA7S,EAAA,CACA,MAAA6oL,EAAAlC,EAAA3mL,GACA6oL,EAAAxqL,GAAAwqL,EAAA7hL,GACA6hL,EAAAlnJ,QASA57C,KAAA2gM,gBAAAgC,EAIA9vH,WAAAv8B,EAAA0nJ,GAGA,MAAAoF,EAAApjM,KAAAkiM,uBACA,IAAA5pL,EAAA8qL,EAAA9sJ,GACA,MAAAsqJ,EAAA5gM,KAAAwgM,UACA,QAAAp5J,IAAA9uB,EAAA,OAAAsoL,EAAAtoL,GACA,MAAAivD,EAAAvnE,KAAAgiM,OACAO,EAAAviM,KAAAiiM,aACA/5E,EAAAloH,KAAAkyI,SACAwwD,EAAAx6E,EAAA7nH,OACAsiM,EAAA3iM,KAAA2gM,gBACAmC,EAAA,IAAA51L,MAAAw1L,GACApqL,EAAAsoL,EAAAvgM,OACA+iM,EAAA9sJ,GAAAh+B,EACAivD,EAAA/mE,KAAA81C,GACAisJ,EAAA/hM,KAAAw9L,GACA4C,EAAApgM,KAAAsiM,GAEA,IAAA,IAAAniM,EAAAgiM,EAAA93L,EAAAq9G,EAAA7nH,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAsxD,EAAAi2D,EAAAvnH,GACAmiM,EAAAniM,GAAA,IAAAm9L,GAAA7rI,EAAA3b,EAAA0nJ,GAGA,OAAA8E,EAGAjwH,aAAAv8B,GAGA,MAAA8sJ,EAAApjM,KAAAkiM,uBACA5pL,EAAA8qL,EAAA9sJ,GAEA,QAAAlP,IAAA9uB,EAAA,CACA,MAAAivD,EAAAvnE,KAAAgiM,OACAO,EAAAviM,KAAAiiM,aACArB,EAAA5gM,KAAAwgM,UACA6C,EAAAzC,EAAAvgM,OAAA,EACAijM,EAAA1C,EAAAyC,GAEAD,EADA9sJ,EAAA+sJ,IACA/qL,EACAsoL,EAAAtoL,GAAAgrL,EACA1C,EAAAhlJ,MACA2mJ,EAAAjqL,GAAAiqL,EAAAc,GACAd,EAAA3mJ,MACA2rB,EAAAjvD,GAAAivD,EAAA87H,GACA97H,EAAA3rB,QAMAkmJ,GAAA/4L,UAAAs1L,wBAAA,EAEA,MAAAkF,GACA1wH,YAAA2wH,EAAAvjB,EAAAwjB,EAAA,KAAAvhB,EAAAjC,EAAAiC,WACAliL,KAAA0jM,OAAAF,EACAxjM,KAAA2jM,MAAA1jB,EACAjgL,KAAA4jM,WAAAH,EACAzjM,KAAAkiL,UAAAA,EACA,MAAAhC,EAAAD,EAAAC,OACA2jB,EAAA3jB,EAAA7/K,OACAyjM,EAAA,IAAA52L,MAAA22L,GACAE,EAAA,CACApgB,YAAA/xG,EACAgyG,UAAAhyG,GAGA,IAAA,IAAAjxE,EAAA,EAAAA,IAAAkjM,IAAAljM,EAAA,CACA,MAAAghL,EAAAzB,EAAAv/K,GAAAygL,kBAAA,MACA0iB,EAAAnjM,GAAAghL,EACAA,EAAAa,SAAAuhB,EAGA/jM,KAAAgkM,qBAAAD,EACA/jM,KAAAikM,cAAAH,EAGA9jM,KAAAkkM,kBAAA,IAAAh3L,MAAA22L,GACA7jM,KAAAmkM,YAAA,KAEAnkM,KAAAokM,kBAAA,KAEApkM,KAAAqkM,sBAAA,KACArkM,KAAAskM,mBAAA,KACAtkM,KAAA44C,KA78+BA,KA88+BA54C,KAAAukM,YAAA,EAGAvkM,KAAAuK,WAAA,KAGAvK,KAAA+G,KAAA,EACA/G,KAAAoV,UAAA,EACApV,KAAAwkM,oBAAA,EACAxkM,KAAAs3H,OAAA,EACAt3H,KAAAykM,iBAAA,EACAzkM,KAAA0kM,YAAAv/K,EAAAA,EAEAnlB,KAAA8lB,QAAA,EAEA9lB,KAAAw1C,SAAA,EAEAx1C,KAAA2kM,mBAAA,EAEA3kM,KAAA4kM,kBAAA,EAEA5kM,KAAA6kM,gBAAA,EAIAhyH,OAGA,OAFA7yE,KAAA0jM,OAAAoB,gBAAA9kM,MAEAA,KAGA6yE,OAGA,OAFA7yE,KAAA0jM,OAAAqB,kBAAA/kM,MAEAA,KAAAyrH,QAGA54C,QASA,OARA7yE,KAAA8lB,QAAA,EACA9lB,KAAAw1C,SAAA,EACAx1C,KAAA+G,KAAA,EAEA/G,KAAAukM,YAAA,EAEAvkM,KAAAuK,WAAA,KAEAvK,KAAAglM,aAAAC,cAGApyH,YACA,OAAA7yE,KAAAw1C,UAAAx1C,KAAA8lB,QAAA,IAAA9lB,KAAAoV,WAAA,OAAApV,KAAAuK,YAAAvK,KAAA0jM,OAAAwB,gBAAAllM,MAIA6yE,cACA,OAAA7yE,KAAA0jM,OAAAwB,gBAAAllM,MAGA6yE,QAAA9rE,GAEA,OADA/G,KAAAuK,WAAAxD,EACA/G,KAGA6yE,QAAAi7C,EAAA42E,GAGA,OAFA1kM,KAAA44C,KAAAk1E,EACA9tH,KAAA0kM,YAAAA,EACA1kM,KAOA6yE,mBAAAykD,GAIA,OAHAt3H,KAAAs3H,OAAAA,EAEAt3H,KAAAykM,iBAAAzkM,KAAAw1C,QAAA8hF,EAAA,EACAt3H,KAAAglM,aAIAnyH,qBACA,OAAA7yE,KAAAykM,iBAGA5xH,OAAAtnE,GACA,OAAAvL,KAAAmlM,gBAAA55L,EAAA,EAAA,GAGAsnE,QAAAtnE,GACA,OAAAvL,KAAAmlM,gBAAA55L,EAAA,EAAA,GAGAsnE,cAAAuyH,EAAA75L,EAAA85L,GAIA,GAHAD,EAAAE,QAAA/5L,GACAvL,KAAAulM,OAAAh6L,GAEA85L,EAAA,CACA,MAAAG,EAAAxlM,KAAA2jM,MAAAp4L,SACAk6L,EAAAL,EAAAzB,MAAAp4L,SACAm6L,EAAAD,EAAAD,EACAG,EAAAH,EAAAC,EACAL,EAAAC,KAAA,EAAAK,EAAAn6L,GACAvL,KAAAqlM,KAAAM,EAAA,EAAAp6L,GAGA,OAAAvL,KAGA6yE,YAAA+yH,EAAAr6L,EAAA85L,GACA,OAAAO,EAAAC,cAAA7lM,KAAAuL,EAAA85L,GAGAxyH,aACA,MAAAizH,EAAA9lM,KAAAskM,mBAQA,OANA,OAAAwB,IACA9lM,KAAAskM,mBAAA,KAEAtkM,KAAA0jM,OAAAqC,4BAAAD,IAGA9lM,KAOA6yE,sBAAAz9D,GAGA,OAFApV,KAAAoV,UAAAA,EACApV,KAAAwkM,oBAAAxkM,KAAA8lB,OAAA,EAAA1Q,EACApV,KAAAilM,cAIApyH,wBACA,OAAA7yE,KAAAwkM,oBAGA3xH,YAAAtnE,GAEA,OADAvL,KAAAoV,UAAApV,KAAA2jM,MAAAp4L,SAAAA,EACAvL,KAAAilM,cAGApyH,SAAAmzH,GAGA,OAFAhmM,KAAA+G,KAAAi/L,EAAAj/L,KACA/G,KAAAoV,UAAA4wL,EAAA5wL,UACApV,KAAAilM,cAGApyH,KAAAtnE,GACA,OAAAvL,KAAAqlM,KAAArlM,KAAAwkM,oBAAA,EAAAj5L,GAGAsnE,KAAAozH,EAAAC,EAAA36L,GACA,MAAAi4L,EAAAxjM,KAAA0jM,OACAtiL,EAAAoiL,EAAAz8L,KACAqO,EAAApV,KAAAoV,UACA,IAAAusK,EAAA3hL,KAAAqkM,sBAEA,OAAA1iB,IACAA,EAAA6hB,EAAA2C,0BACAnmM,KAAAqkM,sBAAA1iB,GAGA,MAAArC,EAAAqC,EAAAS,mBACA7hL,EAAAohL,EAAAU,aAKA,OAJA/C,EAAA,GAAAl+J,EACAk+J,EAAA,GAAAl+J,EAAA7V,EACAhL,EAAA,GAAA0lM,EAAA7wL,EACA7U,EAAA,GAAA2lM,EAAA9wL,EACApV,KAGA6yE,cACA,MAAAuzH,EAAApmM,KAAAqkM,sBAQA,OANA,OAAA+B,IACApmM,KAAAqkM,sBAAA,KAEArkM,KAAA0jM,OAAAqC,4BAAAK,IAGApmM,KAIA6yE,WACA,OAAA7yE,KAAA0jM,OAGA7wH,UACA,OAAA7yE,KAAA2jM,MAGA9wH,UACA,OAAA7yE,KAAA4jM,YAAA5jM,KAAA0jM,OAAA2C,MAIAxzH,QAAA9rE,EAAAu/L,EAAAC,EAAA3J,GAEA,IAAA58L,KAAAw1C,QAIA,YAFAx1C,KAAAwmM,cAAAz/L,GAKA,MAAAwe,EAAAvlB,KAAAuK,WAEA,GAAA,OAAAgb,EAAA,CAEA,MAAAkhL,GAAA1/L,EAAAwe,GAAAghL,EAEA,GAAAE,EAAA,GAAA,IAAAF,EACA,OAIAvmM,KAAAuK,WAAA,KAEA+7L,EAAAC,EAAAE,EAIAH,GAAAtmM,KAAA0mM,iBAAA3/L,GAEA,MAAA4/L,EAAA3mM,KAAA4mM,YAAAN,GAIAhvE,EAAAt3H,KAAAwmM,cAAAz/L,GAEA,GAAAuwH,EAAA,EAAA,CACA,MAAAwsE,EAAA9jM,KAAAikM,cACA4C,EAAA7mM,KAAAkkM,kBAEA,OAAAlkM,KAAAkiL,WACA,KAAAlwG,EACA,IAAA,IAAA/3D,EAAA,EAAA6S,EAAAg3K,EAAAzjM,OAAA4Z,IAAA6S,IAAA7S,EACA6pL,EAAA7pL,GAAA2nK,SAAA+kB,GACAE,EAAA5sL,GAAA6sL,mBAAAxvE,GAGA,MAEA,KAAAvlD,EACA,QACA,IAAA,IAAA93D,EAAA,EAAA6S,EAAAg3K,EAAAzjM,OAAA4Z,IAAA6S,IAAA7S,EACA6pL,EAAA7pL,GAAA2nK,SAAA+kB,GACAE,EAAA5sL,GAAA8sL,WAAAnK,EAAAtlE,KAOAzkD,cAAA9rE,GACA,IAAAuwH,EAAA,EAEA,GAAAt3H,KAAAw1C,QAAA,CACA8hF,EAAAt3H,KAAAs3H,OACA,MAAAqqD,EAAA3hL,KAAAskM,mBAEA,GAAA,OAAA3iB,EAAA,CACA,MAAAqlB,EAAArlB,EAAAC,SAAA76K,GAAA,GACAuwH,GAAA0vE,EAEAjgM,EAAA46K,EAAAS,mBAAA,KACApiL,KAAAglM,aAEA,IAAAgC,IAEAhnM,KAAAw1C,SAAA,KAOA,OADAx1C,KAAAykM,iBAAAntE,EACAA,EAGAzkD,iBAAA9rE,GACA,IAAAqO,EAAA,EAEA,IAAApV,KAAA8lB,OAAA,CACA1Q,EAAApV,KAAAoV,UACA,MAAAusK,EAAA3hL,KAAAqkM,sBAEA,GAAA,OAAA1iB,EAAA,CAEAvsK,GADAusK,EAAAC,SAAA76K,GAAA,GAGAA,EAAA46K,EAAAS,mBAAA,KACApiL,KAAAilM,cAEA,IAAA7vL,EAEApV,KAAA8lB,QAAA,EAGA9lB,KAAAoV,UAAAA,IAOA,OADApV,KAAAwkM,oBAAApvL,EACAA,EAGAy9D,YAAAyzH,GACA,MAAA/6L,EAAAvL,KAAA2jM,MAAAp4L,SACAqtC,EAAA54C,KAAA44C,KACA,IAAA7xC,EAAA/G,KAAA+G,KAAAu/L,EACAW,EAAAjnM,KAAAukM,WACA,MAAA2C,EA5w/BA,OA4w/BAtuJ,EAEA,GAAA,IAAA0tJ,EACA,OAAA,IAAAW,EAAAlgM,EACAmgM,GAAA,IAAA,EAAAD,GAAA17L,EAAAxE,EAAAA,EAGA,GArx/BA,OAqx/BA6xC,EAAA,EACA,IAAAquJ,IAEAjnM,KAAAukM,WAAA,EAEAvkM,KAAAmnM,aAAA,GAAA,GAAA,IAGAC,EAAA,CACA,GAAArgM,GAAAwE,EACAxE,EAAAwE,MACA,CAAA,KAAAxE,EAAA,GAEA,CACA/G,KAAA+G,KAAAA,EACA,MAAAqgM,EAHArgM,EAAA,EAMA/G,KAAA2kM,kBAAA3kM,KAAA8lB,QAAA,EAAA9lB,KAAAw1C,SAAA,EACAx1C,KAAA+G,KAAAA,EAEA/G,KAAA0jM,OAAAx3J,cAAA,CACAnsC,KAAA,WACAimM,OAAAhmM,KACAwhC,UAAA8kK,EAAA,GAAA,EAAA,SAGA,CAgBA,IAdA,IAAAW,IAEAX,GAAA,GACAW,EAAA,EAEAjnM,KAAAmnM,aAAA,EAAA,IAAAnnM,KAAA0kM,YAAAwC,IAKAlnM,KAAAmnM,YAAA,IAAAnnM,KAAA0kM,aAAA,EAAAwC,IAIAngM,GAAAwE,GAAAxE,EAAA,EAAA,CAEA,MAAAsgM,EAAAnhM,KAAA4N,MAAA/M,EAAAwE,GAEAxE,GAAAwE,EAAA87L,EACAJ,GAAA/gM,KAAAiO,IAAAkzL,GACA,MAAAC,EAAAtnM,KAAA0kM,YAAAuC,EAEA,GAAAK,GAAA,EAEAtnM,KAAA2kM,kBAAA3kM,KAAA8lB,QAAA,EAAA9lB,KAAAw1C,SAAA,EACAzuC,EAAAu/L,EAAA,EAAA/6L,EAAA,EACAvL,KAAA+G,KAAAA,EAEA/G,KAAA0jM,OAAAx3J,cAAA,CACAnsC,KAAA,WACAimM,OAAAhmM,KACAwhC,UAAA8kK,EAAA,EAAA,GAAA,QAEA,CAEA,GAAA,IAAAgB,EAAA,CAEA,MAAAC,EAAAjB,EAAA,EAEAtmM,KAAAmnM,YAAAI,GAAAA,EAAAL,QAEAlnM,KAAAmnM,aAAA,GAAA,EAAAD,GAGAlnM,KAAAukM,WAAA0C,EACAjnM,KAAA+G,KAAAA,EAEA/G,KAAA0jM,OAAAx3J,cAAA,CACAnsC,KAAA,OACAimM,OAAAhmM,KACAqnM,UAAAA,UAIArnM,KAAA+G,KAAAA,EAGA,GAAAmgM,GAAA,IAAA,EAAAD,GAEA,OAAA17L,EAAAxE,EAIA,OAAAA,EAGA8rE,YAAA00H,EAAAC,EAAAN,GACA,MAAA1kB,EAAAxiL,KAAAgkM,qBAEAkD,GACA1kB,EAAAmB,YAAA9xG,EACA2wG,EAAAoB,UAAA/xG,IAIA2wG,EAAAmB,YADA4jB,EACAvnM,KAAA4kM,iBAAA/yH,EAAAD,EAEAE,EAIA0wG,EAAAoB,UADA4jB,EACAxnM,KAAA6kM,eAAAhzH,EAAAD,EAEAE,GAKAe,gBAAAtnE,EAAAk8L,EAAAC,GACA,MAAAlE,EAAAxjM,KAAA0jM,OACAtiL,EAAAoiL,EAAAz8L,KACA,IAAA46K,EAAA3hL,KAAAskM,mBAEA,OAAA3iB,IACAA,EAAA6hB,EAAA2C,0BACAnmM,KAAAskM,mBAAA3iB,GAGA,MAAArC,EAAAqC,EAAAS,mBACA7hL,EAAAohL,EAAAU,aAKA,OAJA/C,EAAA,GAAAl+J,EACA7gB,EAAA,GAAAknM,EACAnoB,EAAA,GAAAl+J,EAAA7V,EACAhL,EAAA,GAAAmnM,EACA1nM,MAKA,MAAA2nM,WAAA/0H,GACAC,YAAA5K,GACAgT,QACAj7E,KAAAqmM,MAAAp+H,EAEAjoE,KAAA4nM,qBAEA5nM,KAAA6nM,WAAA,EACA7nM,KAAA+G,KAAA,EACA/G,KAAAoV,UAAA,EAGAy9D,YAAAmzH,EAAA8B,GACA,MAAA7/H,EAAA+9H,EAAApC,YAAA5jM,KAAAqmM,MACAnmB,EAAA8lB,EAAArC,MAAAzjB,OACA2jB,EAAA3jB,EAAA7/K,OACAugM,EAAAoF,EAAA9B,kBACAJ,EAAAkC,EAAA/B,cACA8D,EAAA9/H,EAAAiT,KACA8sH,EAAAhoM,KAAAioM,uBACA,IAAAC,EAAAF,EAAAD,QAEA3gK,IAAA8gK,IACAA,EAAA,GACAF,EAAAD,GAAAG,GAGA,IAAA,IAAAvnM,EAAA,EAAAA,IAAAkjM,IAAAljM,EAAA,CACA,MAAAw/K,EAAAD,EAAAv/K,GACAwnL,EAAAhI,EAAAjgL,KACA,IAAAo7L,EAAA4M,EAAA/f,GAEA,QAAA/gJ,IAAAk0J,EACAsF,EAAAjgM,GAAA26L,MACA,CAGA,GAFAA,EAAAsF,EAAAjgM,QAEAymC,IAAAk0J,EAAA,CAEA,OAAAA,EAAA6I,gBACA7I,EAAAqB,eAEA38L,KAAAmoM,oBAAA7M,EAAAyM,EAAA5f,IAGA,SAGA,MAAA7xI,EAAAwxJ,GAAAA,EAAA5D,kBAAAvjM,GAAA26L,QAAA0C,WACA1C,EAAA,IAAAD,GAAAyC,GAAA90L,OAAAi/D,EAAAkgH,EAAA7xI,GAAA6pI,EAAAa,cAAAb,EAAAE,kBACAib,EAAAqB,eAEA38L,KAAAmoM,oBAAA7M,EAAAyM,EAAA5f,GAEAyY,EAAAjgM,GAAA26L,EAGAwI,EAAAnjM,GAAAkhL,aAAAyZ,EAAA5xF,QAIA72B,gBAAAmzH,GACA,IAAAhmM,KAAAklM,gBAAAc,GAAA,CACA,GAAA,OAAAA,EAAA7B,YAAA,CAGA,MAAA4D,GAAA/B,EAAApC,YAAA5jM,KAAAqmM,OAAAnrH,KACAktH,EAAApC,EAAArC,MAAAzoH,KACAmtH,EAAAroM,KAAAsoM,eAAAF,GAEApoM,KAAAuoM,YAAAvC,EAAAqC,GAAAA,EAAAG,aAAA,IAEAxoM,KAAAyoM,mBAAAzC,EAAAoC,EAAAL,GAGA,MAAAnH,EAAAoF,EAAA9B,kBAEA,IAAA,IAAAvjM,EAAA,EAAAkK,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA26L,EAAAsF,EAAAjgM,GAEA,GAAA26L,EAAAoB,aACA18L,KAAA0oM,aAAApN,GAEAA,EAAAqN,qBAIA3oM,KAAA4oM,YAAA5C,IAIAnzH,kBAAAmzH,GACA,GAAAhmM,KAAAklM,gBAAAc,GAAA,CACA,MAAApF,EAAAoF,EAAA9B,kBAEA,IAAA,IAAAvjM,EAAA,EAAAkK,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA26L,EAAAsF,EAAAjgM,GAEA,KAAA26L,EAAAoB,WACApB,EAAAuN,uBAEA7oM,KAAA8oM,iBAAAxN,IAIAt7L,KAAA+oM,gBAAA/C,IAKAnzH,qBACA7yE,KAAAgpM,SAAA,GAEAhpM,KAAAipM,gBAAA,EACAjpM,KAAAsoM,eAAA,GAMAtoM,KAAAwgM,UAAA,GAEAxgM,KAAAkpM,iBAAA,EACAlpM,KAAAioM,uBAAA,GAEAjoM,KAAAmpM,qBAAA,GAEAnpM,KAAAopM,4BAAA,EACA,MAAAv7L,EAAA7N,KACAA,KAAAmiM,MAAA,CACAnhM,QAAA,CACAgyB,YACA,OAAAnlB,EAAAm7L,SAAA3oM,QAGA+hM,YACA,OAAAv0L,EAAAo7L,kBAIArI,SAAA,CACA5tK,YACA,OAAAnlB,EAAA2yL,UAAAngM,QAGA+hM,YACA,OAAAv0L,EAAAq7L,mBAIAG,oBAAA,CACAr2K,YACA,OAAAnlB,EAAAs7L,qBAAA9oM,QAGA+hM,YACA,OAAAv0L,EAAAu7L,+BAQAv2H,gBAAAmzH,GACA,MAAA1tL,EAAA0tL,EAAA7B,YACA,OAAA,OAAA7rL,GAAAA,EAAAtY,KAAAipM,gBAGAp2H,mBAAAmzH,EAAAoC,EAAAL,GACA,MAAA/mM,EAAAhB,KAAAgpM,SACAM,EAAAtpM,KAAAsoM,eACA,IAAAD,EAAAiB,EAAAlB,GAEA,QAAAhhK,IAAAihK,EACAA,EAAA,CACAG,aAAA,CAAAxC,GACAuD,aAAA,IAEAvD,EAAA5B,kBAAA,EACAkF,EAAAlB,GAAAC,MACA,CACA,MAAAG,EAAAH,EAAAG,aACAxC,EAAA5B,kBAAAoE,EAAAnoM,OACAmoM,EAAAhoM,KAAAwlM,GAGAA,EAAA7B,YAAAnjM,EAAAX,OACAW,EAAAR,KAAAwlM,GACAqC,EAAAkB,aAAAxB,GAAA/B,EAGAnzH,sBAAAmzH,GACA,MAAAhlM,EAAAhB,KAAAgpM,SACAQ,EAAAxoM,EAAAA,EAAAX,OAAA,GACAopM,EAAAzD,EAAA7B,YACAqF,EAAArF,YAAAsF,EACAzoM,EAAAyoM,GAAAD,EACAxoM,EAAA46C,MACAoqJ,EAAA7B,YAAA,KACA,MAAAiE,EAAApC,EAAArC,MAAAzoH,KACAouH,EAAAtpM,KAAAsoM,eACAD,EAAAiB,EAAAlB,GACAsB,EAAArB,EAAAG,aACAmB,EAAAD,EAAAA,EAAArpM,OAAA,GACAupM,EAAA5D,EAAA5B,kBACAuF,EAAAvF,kBAAAwF,EACAF,EAAAE,GAAAD,EACAD,EAAA9tJ,MACAoqJ,EAAA5B,kBAAA,YACAiE,EAAAkB,cACAvD,EAAApC,YAAA5jM,KAAAqmM,OAAAnrH,MAGA,IAAAwuH,EAAArpM,eACAipM,EAAAlB,GAGApoM,KAAA6pM,iCAAA7D,GAGAnzH,iCAAAmzH,GACA,MAAApF,EAAAoF,EAAA9B,kBAEA,IAAA,IAAAvjM,EAAA,EAAAkK,EAAA+1L,EAAAvgM,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAA26L,EAAAsF,EAAAjgM,GAEA,KAAA26L,EAAAqB,gBACA38L,KAAA8pM,uBAAAxO,IAKAzoH,YAAAmzH,GAMA,MAAAhlM,EAAAhB,KAAAgpM,SACAt+I,EAAAs7I,EAAA7B,YACA4F,EAAA/pM,KAAAipM,kBACAe,EAAAhpM,EAAA+oM,GACA/D,EAAA7B,YAAA4F,EACA/oM,EAAA+oM,GAAA/D,EACAgE,EAAA7F,YAAAz5I,EACA1pD,EAAA0pD,GAAAs/I,EAGAn3H,gBAAAmzH,GAMA,MAAAhlM,EAAAhB,KAAAgpM,SACAt+I,EAAAs7I,EAAA7B,YACA8F,IAAAjqM,KAAAipM,gBACAiB,EAAAlpM,EAAAipM,GACAjE,EAAA7B,YAAA8F,EACAjpM,EAAAipM,GAAAjE,EACAkE,EAAA/F,YAAAz5I,EACA1pD,EAAA0pD,GAAAw/I,EAIAr3H,oBAAAyoH,EAAAyM,EAAA5f,GACA,MAAA6f,EAAAhoM,KAAAioM,uBACArH,EAAA5gM,KAAAwgM,UACA,IAAA2J,EAAAnC,EAAAD,QAEA3gK,IAAA+iK,IACAA,EAAA,GACAnC,EAAAD,GAAAoC,GAGAA,EAAAhiB,GAAAmT,EACAA,EAAA6I,YAAAvD,EAAAvgM,OACAugM,EAAApgM,KAAA86L,GAGAzoH,uBAAAyoH,GACA,MAAAsF,EAAA5gM,KAAAwgM,UACA4J,EAAA9O,EAAAA,QACAyM,EAAAqC,EAAArM,SAAA7iH,KACAitG,EAAAiiB,EAAA9zJ,KACA0xJ,EAAAhoM,KAAAioM,uBACAkC,EAAAnC,EAAAD,GACAsC,EAAAzJ,EAAAA,EAAAvgM,OAAA,GACAopM,EAAAnO,EAAA6I,YACAkG,EAAAlG,YAAAsF,EACA7I,EAAA6I,GAAAY,EACAzJ,EAAAhlJ,aACAuuJ,EAAAhiB,GAEA,IAAAz/K,OAAAg7B,KAAAymK,GAAA9pM,eACA2nM,EAAAD,GAIAl1H,aAAAyoH,GACA,MAAAsF,EAAA5gM,KAAAwgM,UACA91I,EAAA4wI,EAAA6I,YACA4F,EAAA/pM,KAAAkpM,mBACAoB,EAAA1J,EAAAmJ,GACAzO,EAAA6I,YAAA4F,EACAnJ,EAAAmJ,GAAAzO,EACAgP,EAAAnG,YAAAz5I,EACAk2I,EAAAl2I,GAAA4/I,EAGAz3H,iBAAAyoH,GACA,MAAAsF,EAAA5gM,KAAAwgM,UACA91I,EAAA4wI,EAAA6I,YACA8F,IAAAjqM,KAAAkpM,iBACAqB,EAAA3J,EAAAqJ,GACA3O,EAAA6I,YAAA8F,EACArJ,EAAAqJ,GAAA3O,EACAiP,EAAApG,YAAAz5I,EACAk2I,EAAAl2I,GAAA6/I,EAIA13H,0BACA,MAAAixH,EAAA9jM,KAAAmpM,qBACAY,EAAA/pM,KAAAopM,8BACA,IAAAznB,EAAAmiB,EAAAiG,GAQA,YANA3iK,IAAAu6I,IACAA,EAAA,IAAAgD,GAAA,IAAAv7E,aAAA,GAAA,IAAAA,aAAA,GAAA,EAAAppG,KAAAwqM,kCACA7oB,EAAA8oB,aAAAV,EACAjG,EAAAiG,GAAApoB,GAGAA,EAGA9uG,4BAAA8uG,GACA,MAAAmiB,EAAA9jM,KAAAmpM,qBACAz+I,EAAAi3H,EAAA8oB,aACAR,IAAAjqM,KAAAopM,4BACAsB,EAAA5G,EAAAmG,GACAtoB,EAAA8oB,aAAAR,EACAnG,EAAAmG,GAAAtoB,EACA+oB,EAAAD,aAAA//I,EACAo5I,EAAAp5I,GAAAggJ,EAMA73H,WAAAotG,EAAA0qB,EAAAzoB,GACA,MAAAj6G,EAAA0iI,GAAA3qM,KAAAqmM,MACA0B,EAAA9/H,EAAAiT,KACA,IAAA0vH,EAAA,iBAAA3qB,EAAAgH,GAAA4jB,WAAA5iI,EAAAg4G,GAAAA,EACA,MAAAmoB,EAAA,OAAAwC,EAAAA,EAAA1vH,KAAA+kG,EACAooB,EAAAroM,KAAAsoM,eAAAF,GACA,IAAAN,EAAA,KAUA,QARA1gK,IAAA86I,IAEAA,EADA,OAAA0oB,EACAA,EAAA1oB,UAEAnwG,QAIA3qC,IAAAihK,EAAA,CACA,MAAAyC,EAAAzC,EAAAkB,aAAAxB,GAEA,QAAA3gK,IAAA0jK,GAAAA,EAAA5oB,YAAAA,EACA,OAAA4oB,EAKAhD,EAAAO,EAAAG,aAAA,GAEA,OAAAoC,IAAAA,EAAA9C,EAAAnE,OAIA,GAAA,OAAAiH,EAAA,OAAA,KAEA,MAAAG,EAAA,IAAAxH,GAAAvjM,KAAA4qM,EAAAD,EAAAzoB,GAOA,OALAliL,KAAAuoM,YAAAwC,EAAAjD,GAGA9nM,KAAAyoM,mBAAAsC,EAAA3C,EAAAL,GAEAgD,EAIAl4H,eAAAotG,EAAA0qB,GACA,MAAA1iI,EAAA0iI,GAAA3qM,KAAAqmM,MACA0B,EAAA9/H,EAAAiT,KACA0vH,EAAA,iBAAA3qB,EAAAgH,GAAA4jB,WAAA5iI,EAAAg4G,GAAAA,EACAmoB,EAAAwC,EAAAA,EAAA1vH,KAAA+kG,EACAooB,EAAAroM,KAAAsoM,eAAAF,GAEA,YAAAhhK,IAAAihK,GACAA,EAAAkB,aAAAxB,IAGA,KAIAl1H,gBACA,MAAA7xE,EAAAhB,KAAAgpM,SAGA,IAAA,IAAAroM,EAFAX,KAAAipM,gBAEA,EAAAtoM,GAAA,IAAAA,EACAK,EAAAL,GAAAi4D,OAGA,OAAA54D,KAIA6yE,OAAAyzH,GACAA,GAAAtmM,KAAAoV,UACA,MAAApU,EAAAhB,KAAAgpM,SACAgC,EAAAhrM,KAAAipM,gBACAliM,EAAA/G,KAAA+G,MAAAu/L,EACAC,EAAArgM,KAAAmyD,KAAAiuI,GACA1J,EAAA58L,KAAA6nM,YAAA,EAEA,IAAA,IAAAlnM,EAAA,EAAAA,IAAAqqM,IAAArqM,EAAA,CACAK,EAAAL,GAEAsqM,QAAAlkM,EAAAu/L,EAAAC,EAAA3J,GAIA,MAAAgE,EAAA5gM,KAAAwgM,UACAgC,EAAAxiM,KAAAkpM,iBAEA,IAAA,IAAAvoM,EAAA,EAAAA,IAAA6hM,IAAA7hM,EACAigM,EAAAjgM,GAAAqY,MAAA4jL,GAGA,OAAA58L,KAIA6yE,QAAAq4H,GACAlrM,KAAA+G,KAAA,EAEA,IAAA,IAAApG,EAAA,EAAAA,EAAAX,KAAAgpM,SAAA3oM,OAAAM,IACAX,KAAAgpM,SAAAroM,GAAAoG,KAAA,EAGA,OAAA/G,KAAAijD,OAAAioJ,GAIAr4H,UACA,OAAA7yE,KAAAqmM,MAIAxzH,YAAAotG,GACA,MAAAj/K,EAAAhB,KAAAgpM,SACAZ,EAAAnoB,EAAA/kG,KACAouH,EAAAtpM,KAAAsoM,eACAD,EAAAiB,EAAAlB,GAEA,QAAAhhK,IAAAihK,EAAA,CAIA,MAAA8C,EAAA9C,EAAAG,aAEA,IAAA,IAAA7nM,EAAA,EAAAkK,EAAAsgM,EAAA9qM,OAAAM,IAAAkK,IAAAlK,EAAA,CACA,MAAAqlM,EAAAmF,EAAAxqM,GAEAX,KAAA+kM,kBAAAiB,GAEA,MAAAyD,EAAAzD,EAAA7B,YACAqF,EAAAxoM,EAAAA,EAAAX,OAAA,GACA2lM,EAAA7B,YAAA,KACA6B,EAAA5B,kBAAA,KACAoF,EAAArF,YAAAsF,EACAzoM,EAAAyoM,GAAAD,EACAxoM,EAAA46C,MAEA57C,KAAA6pM,iCAAA7D,UAGAsD,EAAAlB,IAKAv1H,YAAA5K,GACA,MAAA8/H,EAAA9/H,EAAAiT,KACAouH,EAAAtpM,KAAAsoM,eAEA,IAAA,MAAAF,KAAAkB,EAAA,CACA,MACAtD,EADAsD,EAAAlB,GAAAmB,aACAxB,QAEA3gK,IAAA4+J,IACAhmM,KAAA+kM,kBAAAiB,GAEAhmM,KAAAorM,sBAAApF,IAIA,MACAmE,EADAnqM,KAAAioM,uBACAF,GAEA,QAAA3gK,IAAA+iK,EACA,IAAA,MAAAhiB,KAAAgiB,EAAA,CACA,MAAA7O,EAAA6O,EAAAhiB,GACAmT,EAAAuN,uBAEA7oM,KAAA8pM,uBAAAxO,IAMAzoH,cAAAotG,EAAA0qB,GACA,MAAA3E,EAAAhmM,KAAA8qM,eAAA7qB,EAAA0qB,GAEA,OAAA3E,IACAhmM,KAAA+kM,kBAAAiB,GAEAhmM,KAAAorM,sBAAApF,KAMA2B,GAAA5+L,UAAAyhM,iCAAA,IAAAphG,aAAA,GAEA,MAAAiiG,GACAx4H,YAAA/yE,GACA,iBAAAA,IACAmO,QAAAC,KAAA,sDACApO,EAAA0lB,UAAA,IAGAxlB,KAAAF,MAAAA,EAGA+yE,QACA,OAAA,IAAAw4H,QAAAjkK,IAAApnC,KAAAF,MAAA4+E,MAAA1+E,KAAAF,MAAAE,KAAAF,MAAA4+E,UAKA,MAAA4sH,WAAAlsC,GACAvsF,YAAA1O,EAAA0pC,EAAAsd,EAAA,GACAlwC,MAAA9W,EAAA0pC,GACA7tG,KAAAmrH,iBAAAA,EAGAt4C,KAAAjxC,GAGA,OAFAq5C,MAAAppE,KAAA+vB,GACA5hC,KAAAmrH,iBAAAvpF,EAAAupF,iBACAnrH,KAGA6yE,MAAA7wE,GACA,MAAAu9J,EAAAtkF,MAAAyD,MAAA18E,GAEA,OADAu9J,EAAAp0C,iBAAAnrH,KAAAmrH,iBACAo0C,EAGA1sF,OAAA7wE,GACA,MAAAghK,EAAA/nF,MAAAmY,OAAApxF,GAGA,OAFAghK,EAAAl2C,8BAAA,EACAk2C,EAAA73C,iBAAAnrH,KAAAmrH,iBACA63C,GAKAsoC,GAAAviM,UAAA+jH,8BAAA,EAEA,MAAAy+E,GACA14H,YAAA62B,EAAA3pG,EAAAwnG,EAAA0S,EAAAp7B,GACA7+E,KAAA0pG,OAAAA,EACA1pG,KAAAD,KAAAA,EACAC,KAAAunG,SAAAA,EACAvnG,KAAAi6G,YAAAA,EACAj6G,KAAA6+E,MAAAA,EACA7+E,KAAAwI,QAAA,EAGA8zE,gBAAAx8E,IACA,IAAAA,GAAAE,KAAAwI,UAGAqqE,UAAA62B,GAEA,OADA1pG,KAAA0pG,OAAAA,EACA1pG,KAGA6yE,QAAA9yE,EAAAk6G,GAGA,OAFAj6G,KAAAD,KAAAA,EACAC,KAAAi6G,YAAAA,EACAj6G,KAGA6yE,YAAA00B,GAEA,OADAvnG,KAAAunG,SAAAA,EACAvnG,KAGA6yE,SAAAgM,GAEA,OADA7+E,KAAA6+E,MAAAA,EACA7+E,MAKAurM,GAAAxiM,UAAAmiG,qBAAA,EA4DA,SAAAsgG,GAAA1jM,EAAAQ,GACA,OAAAR,EAAAuU,SAAA/T,EAAA+T,SAGA,SAAAovL,GAAAx5I,EAAA49C,EAAAC,EAAAvb,GAKA,GAJAtiC,EAAA89B,OAAA7uE,KAAA2uF,EAAA9f,SACA99B,EAAAuvG,QAAA3xD,EAAAC,IAGA,IAAAvb,EAAA,CACA,MAAA9pE,EAAAwnC,EAAAxnC,SAEA,IAAA,IAAA9pB,EAAA,EAAA4P,EAAAka,EAAApqB,OAAAM,EAAA4P,EAAA5P,IACA8qM,GAAAhhL,EAAA9pB,GAAAkvG,EAAAC,GAAA,IAgHA,MAAA47F,GAAA,IAAA31H,GAEA,MAAA41H,GACA94H,YAAA1sE,EAAA,IAAA4vE,GAAA5wD,EAAAA,EAAAA,EAAAA,GAAAhN,EAAA,IAAA49D,IAAA5wD,EAAAA,GAAAA,EAAAA,IACAnlB,KAAAmG,IAAAA,EACAnG,KAAAmY,IAAAA,EAGA06D,IAAA1sE,EAAAgS,GAGA,OAFAnY,KAAAmG,IAAA0L,KAAA1L,GACAnG,KAAAmY,IAAAtG,KAAAsG,GACAnY,KAGA6yE,cAAAtrE,GACAvH,KAAAwlF,YAEA,IAAA,IAAA7kF,EAAA,EAAAqzB,EAAAzsB,EAAAlH,OAAAM,EAAAqzB,EAAArzB,IACAX,KAAAylF,cAAAl+E,EAAA5G,IAGA,OAAAX,KAGA6yE,qBAAAh5D,EAAAupC,GACA,MAAAsiC,EAAAgmH,GAAA75L,KAAAuxC,GAAAgzB,eAAA,IAIA,OAFAp2E,KAAAmG,IAAA0L,KAAAgI,GAAA8qE,IAAAe,GACA1lF,KAAAmY,IAAAtG,KAAAgI,GAAAyD,IAAAooE,GACA1lF,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,MAGA6yE,KAAAjmC,GAGA,OAFA5sC,KAAAmG,IAAA0L,KAAA+6B,EAAAzmC,KACAnG,KAAAmY,IAAAtG,KAAA+6B,EAAAz0B,KACAnY,KAGA6yE,YAGA,OAFA7yE,KAAAmG,IAAAqB,EAAAxH,KAAAmG,IAAAb,EAAA6f,EAAAA,EACAnlB,KAAAmY,IAAA3Q,EAAAxH,KAAAmY,IAAA7S,GAAA6f,EAAAA,EACAnlB,KAGA6yE,UAEA,OAAA7yE,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,GAAAxH,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAAb,EAGAutE,UAAA1jE,GACA,OAAAnP,KAAA6lF,UAAA12E,EAAA8V,IAAA,EAAA,GAAA9V,EAAA+mE,WAAAl2E,KAAAmG,IAAAnG,KAAAmY,KAAAi+D,eAAA,IAGAvD,QAAA1jE,GACA,OAAAnP,KAAA6lF,UAAA12E,EAAA8V,IAAA,EAAA,GAAA9V,EAAAgnE,WAAAn2E,KAAAmY,IAAAnY,KAAAmG,KAGA0sE,cAAAzkB,GAGA,OAFApuD,KAAAmG,IAAAA,IAAAioD,GACApuD,KAAAmY,IAAAA,IAAAi2C,GACApuD,KAGA6yE,eAAAiT,GAGA,OAFA9lF,KAAAmG,IAAAw+E,IAAAmB,GACA9lF,KAAAmY,IAAAmF,IAAAwoE,GACA9lF,KAGA6yE,eAAAmD,GAGA,OAFAh2E,KAAAmG,IAAA4/E,WAAA/P,GACAh2E,KAAAmY,IAAA4tE,UAAA/P,GACAh2E,KAGA6yE,cAAAzkB,GACA,QAAAA,EAAA5mD,EAAAxH,KAAAmG,IAAAqB,GAAA4mD,EAAA5mD,EAAAxH,KAAAmY,IAAA3Q,GAAA4mD,EAAA9oD,EAAAtF,KAAAmG,IAAAb,GAAA8oD,EAAA9oD,EAAAtF,KAAAmY,IAAA7S,GAGAutE,YAAAjmC,GACA,OAAA5sC,KAAAmG,IAAAqB,GAAAolC,EAAAzmC,IAAAqB,GAAAolC,EAAAz0B,IAAA3Q,GAAAxH,KAAAmY,IAAA3Q,GAAAxH,KAAAmG,IAAAb,GAAAsnC,EAAAzmC,IAAAb,GAAAsnC,EAAAz0B,IAAA7S,GAAAtF,KAAAmY,IAAA7S,EAGAutE,aAAAzkB,EAAAj/C,GAGA,OAAAA,EAAA8V,KAAAmpC,EAAA5mD,EAAAxH,KAAAmG,IAAAqB,IAAAxH,KAAAmY,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,IAAA4mD,EAAA9oD,EAAAtF,KAAAmG,IAAAb,IAAAtF,KAAAmY,IAAA7S,EAAAtF,KAAAmG,IAAAb,IAGAutE,cAAAjmC,GAEA,QAAAA,EAAAz0B,IAAA3Q,EAAAxH,KAAAmG,IAAAqB,GAAAolC,EAAAzmC,IAAAqB,EAAAxH,KAAAmY,IAAA3Q,GAAAolC,EAAAz0B,IAAA7S,EAAAtF,KAAAmG,IAAAb,GAAAsnC,EAAAzmC,IAAAb,EAAAtF,KAAAmY,IAAA7S,GAGAutE,WAAAzkB,EAAAj/C,GACA,OAAAA,EAAA0C,KAAAu8C,GAAAnmD,MAAAjI,KAAAmG,IAAAnG,KAAAmY,KAGA06D,gBAAAzkB,GAGA,OAFAs9I,GAAA75L,KAAAu8C,GAAAnmD,MAAAjI,KAAAmG,IAAAnG,KAAAmY,KAEAwsE,IAAAv2B,GAAA/tD,SAGAwyE,UAAAjmC,GAGA,OAFA5sC,KAAAmG,IAAAgS,IAAAy0B,EAAAzmC,KACAnG,KAAAmY,IAAAhS,IAAAymC,EAAAz0B,KACAnY,KAGA6yE,MAAAjmC,GAGA,OAFA5sC,KAAAmG,IAAAA,IAAAymC,EAAAzmC,KACAnG,KAAAmY,IAAAA,IAAAy0B,EAAAz0B,KACAnY,KAGA6yE,UAAA57D,GAGA,OAFAjX,KAAAmG,IAAAmX,IAAArG,GACAjX,KAAAmY,IAAAmF,IAAArG,GACAjX,KAGA6yE,OAAAjmC,GACA,OAAAA,EAAAzmC,IAAAuhF,OAAA1nF,KAAAmG,MAAAymC,EAAAz0B,IAAAuvE,OAAA1nF,KAAAmY,MAKAwzL,GAAA5iM,UAAA6iM,QAAA,EAEA,MAAAC,GAAA,IAAAjpH,GAEAkpH,GAAA,IAAAlpH,GAEA,MAAAmpH,GACAl5H,YAAApsE,EAAA,IAAAm8E,GAAAl8E,EAAA,IAAAk8E,IACA5iF,KAAAyG,MAAAA,EACAzG,KAAA0G,IAAAA,EAGAmsE,IAAApsE,EAAAC,GAGA,OAFA1G,KAAAyG,MAAAoL,KAAApL,GACAzG,KAAA0G,IAAAmL,KAAAnL,GACA1G,KAGA6yE,KAAAgkC,GAGA,OAFA72G,KAAAyG,MAAAoL,KAAAglG,EAAApwG,OACAzG,KAAA0G,IAAAmL,KAAAglG,EAAAnwG,KACA1G,KAGA6yE,UAAA1jE,GACA,OAAAA,EAAA+mE,WAAAl2E,KAAAyG,MAAAzG,KAAA0G,KAAA0vE,eAAA,IAGAvD,MAAA1jE,GACA,OAAAA,EAAAgnE,WAAAn2E,KAAA0G,IAAA1G,KAAAyG,OAGAosE,aACA,OAAA7yE,KAAAyG,MAAAgwE,kBAAAz2E,KAAA0G,KAGAmsE,WACA,OAAA7yE,KAAAyG,MAAA8hF,WAAAvoF,KAAA0G,KAGAmsE,GAAA5rE,EAAAkI,GACA,OAAAnP,KAAA83D,MAAA3oD,GAAAinE,eAAAnvE,GAAAqW,IAAAtd,KAAAyG,OAGAosE,6BAAAzkB,EAAA49I,GACAH,GAAA11H,WAAA/nB,EAAApuD,KAAAyG,OAEAqlM,GAAA31H,WAAAn2E,KAAA0G,IAAA1G,KAAAyG,OAEA,MAAAwlM,EAAAH,GAAAvqH,IAAAuqH,IAIA,IAAA7kM,EAFA6kM,GAAAvqH,IAAAsqH,IAEAI,EAMA,OAJAD,IACA/kM,EAAAgB,GAAAhB,EAAA,EAAA,IAGAA,EAGA4rE,oBAAAzkB,EAAA49I,EAAA78L,GACA,MAAAlI,EAAAjH,KAAAksM,6BAAA99I,EAAA49I,GACA,OAAAhsM,KAAA83D,MAAA3oD,GAAAinE,eAAAnvE,GAAAqW,IAAAtd,KAAAyG,OAGAosE,aAAAl1C,GAGA,OAFA39B,KAAAyG,MAAAk9E,aAAAhmD,GACA39B,KAAA0G,IAAAi9E,aAAAhmD,GACA39B,KAGA6yE,OAAAgkC,GACA,OAAAA,EAAApwG,MAAAihF,OAAA1nF,KAAAyG,QAAAowG,EAAAnwG,IAAAghF,OAAA1nF,KAAA0G,KAGAmsE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,OAKA,MAAAmsM,WAAAt7G,GACAhe,YAAAuhB,GACAnZ,QACAj7E,KAAAo0F,SAAAA,EAEAp0F,KAAA4Q,OAAA,aAEA5Q,KAAAk5J,cAAA,EACAl5J,KAAAm5J,YAAA,EACAn5J,KAAAq5J,WAAA,EACAr5J,KAAAo5J,QAAA,EACAp5J,KAAAs5J,cAAA,KACAt5J,KAAAw5J,YAAA,KACAx5J,KAAA05J,WAAA,KACA15J,KAAAy5J,QAAA,KACAz5J,KAAA6+E,MAAA,GAKAstH,GAAApjM,UAAA2xJ,yBAAA,EAEA,MAAA0xC,GAAA,IAAAxpH,GAqDA,MAAAypH,GAAA,IAAAzpH,GAEA0pH,GAAA,IAAA3gH,GAEA4gH,GAAA,IAAA5gH,GAEA,MAAA6gH,WAAA7nC,GACA9xF,YAAA5gB,GACA,MAAA65E,EAAA2gE,GAAAx6I,GACAg0B,EAAA,IAAAgkB,GACAgH,EAAA,GACAvwF,EAAA,GACAmmF,EAAA,IAAAnB,GAAA,EAAA,EAAA,GACAoB,EAAA,IAAApB,GAAA,EAAA,EAAA,GAEA,IAAA,IAAA/kG,EAAA,EAAAA,EAAAmrI,EAAAzrI,OAAAM,IAAA,CACA,MAAAoiK,EAAAj3B,EAAAnrI,GAEAoiK,EAAAhxJ,QAAAgxJ,EAAAhxJ,OAAA0wJ,SACAxxD,EAAAzwG,KAAA,EAAA,EAAA,GACAywG,EAAAzwG,KAAA,EAAA,EAAA,GACAkgB,EAAAlgB,KAAAqmG,EAAAtgG,EAAAsgG,EAAA9mF,EAAA8mF,EAAAv+F,GACAoY,EAAAlgB,KAAAsmG,EAAAvgG,EAAAugG,EAAA/mF,EAAA+mF,EAAAx+F,IAIA29E,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAhrB,EAAAz1D,aAAA,QAAA,IAAA24E,GAAAzoF,EAAA,IAQAu6D,MAAAgL,EAPA,IAAAmlD,GAAA,CACAj0C,cAAA,EACAQ,WAAA,EACAC,YAAA,EACAqB,YAAA,EACA15E,aAAA,KAGAvf,KAAAD,KAAA,iBACAC,KAAA0sM,kBAAA,EACA1sM,KAAAioE,KAAAhW,EACAjyD,KAAA8rI,MAAAA,EACA9rI,KAAA29B,OAAAs0B,EAAA8xB,YACA/jF,KAAAq7E,kBAAA,EAGAxI,kBAAA7hE,GACA,MAAA86H,EAAA9rI,KAAA8rI,MACA7lD,EAAAjmF,KAAAimF,SACAjxE,EAAAixE,EAAAr2E,aAAA,YAEA28L,GAAA16L,KAAA7R,KAAAioE,KAAA8b,aAAA9rB,SAEA,IAAA,IAAAt3D,EAAA,EAAAsZ,EAAA,EAAAtZ,EAAAmrI,EAAAzrI,OAAAM,IAAA,CACA,MAAAoiK,EAAAj3B,EAAAnrI,GAEAoiK,EAAAhxJ,QAAAgxJ,EAAAhxJ,OAAA0wJ,SACA6pC,GAAAt0H,iBAAAu0H,GAAAxpC,EAAAh/E,aAEAsoH,GAAAp6G,sBAAAq6G,IAEAt3L,EAAA+yF,OAAA9tF,EAAAoyL,GAAA7kM,EAAA6kM,GAAA/mM,EAAA+mM,GAAAptK,GAEAqtK,GAAAt0H,iBAAAu0H,GAAAxpC,EAAAhxJ,OAAAgyE,aAEAsoH,GAAAp6G,sBAAAq6G,IAEAt3L,EAAA+yF,OAAA9tF,EAAA,EAAAoyL,GAAA7kM,EAAA6kM,GAAA/mM,EAAA+mM,GAAAptK,GACAhlB,GAAA,GAIAgsE,EAAAr2E,aAAA,YAAA0sE,aAAA,EACArB,MAAA0X,kBAAA3hF,IAKA,SAAAy7L,GAAAx6I,GACA,MAAA06I,EAAA,GAEA16I,GAAAA,EAAAwwG,QACAkqC,EAAAnsM,KAAAyxD,GAGA,IAAA,IAAAtxD,EAAA,EAAAA,EAAAsxD,EAAAxnC,SAAApqB,OAAAM,IACAgsM,EAAAnsM,KAAAwY,MAAA2zL,EAAAF,GAAAx6I,EAAAxnC,SAAA9pB,KAGA,OAAAgsM,EA4DA,MAAAC,GAAA,IAAAhqH,GAEAiqH,GAAA,IAAAnnG,GAEAonG,GAAA,IAAApnG,GAuDA,MAAAqnG,WAAApoC,GACA9xF,YAAAzvB,EAAA,GAAAinH,EAAA,GAAAxjE,EAAA,QAAAC,EAAA,SACAD,EAAA,IAAAnB,GAAAmB,GACAC,EAAA,IAAApB,GAAAoB,GACA,MAAAjtF,EAAAwwJ,EAAA,EACA7oF,EAAAp+B,EAAAinH,EACA3kF,EAAAtiC,EAAA,EACA6tD,EAAA,GACAvwF,EAAA,GAEA,IAAA,IAAA/f,EAAA,EAAAsZ,EAAA,EAAA6wB,GAAA46C,EAAA/kF,GAAA0pK,EAAA1pK,IAAAmqC,GAAA02C,EAAA,CACAyvB,EAAAzwG,MAAAklF,EAAA,EAAA56C,EAAA46C,EAAA,EAAA56C,GACAmmE,EAAAzwG,KAAAsqC,EAAA,GAAA46C,EAAA56C,EAAA,EAAA46C,GACA,MAAA/kE,EAAAhgB,IAAAkZ,EAAAgtF,EAAAC,EACAnmF,EAAAjR,QAAAgR,EAAAzG,GACAA,GAAA,EACA0G,EAAAjR,QAAAgR,EAAAzG,GACAA,GAAA,EACA0G,EAAAjR,QAAAgR,EAAAzG,GACAA,GAAA,EACA0G,EAAAjR,QAAAgR,EAAAzG,GACAA,GAAA,EAGA,MAAAgsE,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAhrB,EAAAz1D,aAAA,QAAA,IAAA24E,GAAAzoF,EAAA,IAKAu6D,MAAAgL,EAJA,IAAAmlD,GAAA,CACAj0C,cAAA,EACA8B,YAAA,KAGAj5F,KAAAD,KAAA,cAyDA,MAAAitM,GAAA,IAAApqH,GAEAqqH,GAAA,IAAArqH,GAEAsqH,GAAA,IAAAtqH,GAwDA,MAAAuqH,GAAA,IAAAvqH,GAEAwqH,GAAA,IAAA55F,GAoIA,SAAA65F,GAAAj/I,EAAAk/I,EAAArnH,EAAAvC,EAAAl8E,EAAAlC,EAAA25B,GACAkuK,GAAAloL,IAAAzd,EAAAlC,EAAA25B,GAAAsuK,UAAA7pH,GAEA,MAAAn8E,EAAA+lM,EAAAl/I,GAEA,QAAAhnB,IAAA7/B,EAAA,CACA,MAAAyN,EAAAixE,EAAAr2E,aAAA,YAEA,IAAA,IAAAjP,EAAA,EAAA4P,EAAAhJ,EAAAlH,OAAAM,EAAA4P,EAAA5P,IACAqU,EAAA+yF,OAAAxgG,EAAA5G,GAAAwsM,GAAA3lM,EAAA2lM,GAAA7nM,EAAA6nM,GAAAluK,IAKA,MAAAuuK,GAAA,IAAAnoH,GAEA,MAAAooH,WAAA9oC,GACA9xF,YAAA5gB,EAAAtxC,EAAA,UACA,MAAA2qF,EAAA,IAAA1C,YAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA1wC,EAAA,IAAAkxC,aAAA,IACAnjB,EAAA,IAAAgkB,GACAhkB,EAAAmoB,SAAA,IAAA9G,GAAAgE,EAAA,IACArlB,EAAAz1D,aAAA,WAAA,IAAA82E,GAAApvC,EAAA,IACA+iB,MAAAgL,EAAA,IAAAmlD,GAAA,CACAzqH,MAAAA,EACAs4E,YAAA,KAEAj5F,KAAAiyD,OAAAA,EACAjyD,KAAAD,KAAA,YACAC,KAAAq7E,kBAAA,EACAr7E,KAAAijD,SAGA4vB,OAAA5gB,GASA,QARA7qB,IAAA6qB,GACAhkD,QAAAC,KAAA,4DAGAk5B,IAAApnC,KAAAiyD,QACAu7I,GAAAE,cAAA1tM,KAAAiyD,QAGAu7I,GAAA3nH,UAAA,OACA,MAAA1/E,EAAAqnM,GAAArnM,IACAgS,EAAAq1L,GAAAr1L,IAgBAnD,EAAAhV,KAAAimF,SAAAvxC,WAAA1/B,SACAmvD,EAAAnvD,EAAAmvD,MACAA,EAAA,GAAAhsD,EAAA3Q,EACA28D,EAAA,GAAAhsD,EAAA7S,EACA6+D,EAAA,GAAAhsD,EAAA8mB,EACAklC,EAAA,GAAAh+D,EAAAqB,EACA28D,EAAA,GAAAhsD,EAAA7S,EACA6+D,EAAA,GAAAhsD,EAAA8mB,EACAklC,EAAA,GAAAh+D,EAAAqB,EACA28D,EAAA,GAAAh+D,EAAAb,EACA6+D,EAAA,GAAAhsD,EAAA8mB,EACAklC,EAAA,GAAAhsD,EAAA3Q,EACA28D,EAAA,IAAAh+D,EAAAb,EACA6+D,EAAA,IAAAhsD,EAAA8mB,EACAklC,EAAA,IAAAhsD,EAAA3Q,EACA28D,EAAA,IAAAhsD,EAAA7S,EACA6+D,EAAA,IAAAh+D,EAAA84B,EACAklC,EAAA,IAAAh+D,EAAAqB,EACA28D,EAAA,IAAAhsD,EAAA7S,EACA6+D,EAAA,IAAAh+D,EAAA84B,EACAklC,EAAA,IAAAh+D,EAAAqB,EACA28D,EAAA,IAAAh+D,EAAAb,EACA6+D,EAAA,IAAAh+D,EAAA84B,EACAklC,EAAA,IAAAhsD,EAAA3Q,EACA28D,EAAA,IAAAh+D,EAAAb,EACA6+D,EAAA,IAAAh+D,EAAA84B,EACAjqB,EAAAsnE,aAAA,EACAt8E,KAAAimF,SAAAykB,wBAGA73B,cAAA5gB,GAGA,OAFAjyD,KAAAiyD,OAAAA,EACAjyD,KAAAijD,SACAjjD,KAGA6yE,KAAAjxC,GAGA,OAFA+iI,GAAA57J,UAAA8I,KAAAqH,KAAAlZ,KAAA4hC,GACA5hC,KAAAiyD,OAAArwB,EAAAqwB,OACAjyD,MAwEA,MAAA2tM,GAAA,IAAA/qH,GAEA,IAAAgrH,GAAAC,GAwEA,MAAAC,WAAAnpC,GACA9xF,YAAAzvB,EAAA,GACA,MAAA6tD,EAAA,CAAA,EAAA,EAAA,EAAA7tD,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAA,GAEA6iC,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAhrB,EAAAz1D,aAAA,QAAA,IAAA24E,GAHA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAGA,IAKAluB,MAAAgL,EAJA,IAAAmlD,GAAA,CACAj0C,cAAA,EACA8B,YAAA,KAGAj5F,KAAAD,KAAA,aAGA8yE,UAAAk7H,EAAAC,EAAAC,GACA,MAAAttL,EAAA,IAAA+kF,GACAvhC,EAAAnkE,KAAAimF,SAAAvxC,WAAA/zB,MAAAwjD,MAWA,OAVAxjD,EAAAsE,IAAA8oL,GACAptL,EAAAjR,QAAAy0D,EAAA,GACAxjD,EAAAjR,QAAAy0D,EAAA,GACAxjD,EAAAsE,IAAA+oL,GACArtL,EAAAjR,QAAAy0D,EAAA,GACAxjD,EAAAjR,QAAAy0D,EAAA,GACAxjD,EAAAsE,IAAAgpL,GACAttL,EAAAjR,QAAAy0D,EAAA,IACAxjD,EAAAjR,QAAAy0D,EAAA,IACAnkE,KAAAimF,SAAAvxC,WAAA/zB,MAAA27D,aAAA,EACAt8E,KAGA6yE,UACA7yE,KAAAimF,SAAAxH,UACAz+E,KAAAo0F,SAAA3V,WAKA,MAAAyvH,GAAA,IAAA9kG,aAAA,GAEA+kG,GAAA,IAAArlG,WAAAolG,GAAAxkG,QAmJAsgE,GAAAhhK,OAAA,SAAAu9B,EAAA6jI,GAKA,OAJAn8J,QAAAtH,IAAA,4CACA4/B,EAAAx9B,UAAAL,OAAAM,OAAAghK,GAAAjhK,WACAw9B,EAAAx9B,UAAAE,YAAAs9B,EACAA,EAAAx9B,UAAAqhK,SAAAA,EACA7jI,GAIA0nJ,GAAAllL,UAAAqlM,WAAA,SAAA7mM,GAEA,OADA0G,QAAAC,KAAA,mEACAlO,KAAAynF,cAAAlgF,IAmBAwlM,GAAAhkM,UAAAslM,UAAA,WACApgM,QAAApK,MAAA,6FAGA2oM,GAAAzjM,UAAAk6C,OAAA,WACAh1C,QAAApK,MAAA,iEAUA0mL,GAAAxhL,UAAAulM,eAAA,SAAAjrM,GAEA,OADA4K,QAAAC,KAAA,wGACAkjL,GAAAkd,eAAAjrM,IAGAknL,GAAAgkB,SAAA,CACAjxL,IAAA,WACArP,QAAApK,MAAA,4FAEAga,IAAA,WACA5P,QAAApK,MAAA,6FAYA8nM,GAAA5iM,UAAA8Q,OAAA,SAAAqwJ,GAEA,OADAj8J,QAAAC,KAAA,2DACAlO,KAAA2mF,UAAAujF,IAGAyhC,GAAA5iM,UAAAylM,MAAA,WAEA,OADAvgM,QAAAC,KAAA,wDACAlO,KAAA6lF,WAGA8lH,GAAA5iM,UAAA0lM,kBAAA,SAAA7hK,GAEA,OADA3+B,QAAAC,KAAA,0EACAlO,KAAA+vG,cAAAnjE,IAGA++J,GAAA5iM,UAAAq6C,KAAA,SAAA8mH,GAEA,OADAj8J,QAAAC,KAAA,uDACAlO,KAAAunF,QAAA2iF,IAIA7kF,GAAAt8E,UAAA8Q,OAAA,SAAAqwJ,GAEA,OADAj8J,QAAAC,KAAA,2DACAlO,KAAA2mF,UAAAujF,IAGA7kF,GAAAt8E,UAAAylM,MAAA,WAEA,OADAvgM,QAAAC,KAAA,wDACAlO,KAAA6lF,WAGAR,GAAAt8E,UAAA0lM,kBAAA,SAAA7hK,GAEA,OADA3+B,QAAAC,KAAA,0EACAlO,KAAA+vG,cAAAnjE,IAGAy4C,GAAAt8E,UAAA2lM,qBAAA,SAAApoH,GAEA,OADAr4E,QAAAC,KAAA,gFACAlO,KAAAyoF,iBAAAnC,IAGAjB,GAAAt8E,UAAAq6C,KAAA,SAAA8mH,GAEA,OADAj8J,QAAAC,KAAA,uDACAlO,KAAAunF,QAAA2iF,IAIA9hF,GAAAr/E,UAAAylM,MAAA,WAEA,OADAvgM,QAAAC,KAAA,0DACAlO,KAAA6lF,WAIA0xB,GAAAxuG,UAAA4lM,cAAA,SAAA7hL,GAEA,OADA7e,QAAAC,KAAA,mFACAlO,KAAAw8J,wBAAA1vI,IAIAi/K,GAAAhjM,UAAA8Q,OAAA,SAAAqwJ,GAEA,OADAj8J,QAAAC,KAAA,4DACAlO,KAAA2mF,UAAAujF,IAIAlzF,GAAAjuE,UAAA6lM,qBAAA,SAAAzqI,EAAAltD,GAEA,OADAhJ,QAAAC,KAAA,uFACAlO,KAAA0P,QAAAy0D,EAAAltD,IAGA+/D,GAAAjuE,UAAA8lM,gBAAA,SAAA/oH,GAEA,OADA73E,QAAAC,KAAA,kGACA43E,EAAAzJ,aAAAr8E,OAGAg3E,GAAAjuE,UAAA+lM,qBAAA,WACA7gM,QAAApK,MAAA,6DAGAmzE,GAAAjuE,UAAAgmM,uBAAA,SAAAn4H,GAEA,OADA3oE,QAAAC,KAAA,4GACA0oE,EAAAyF,aAAAr8E,OAGAg3E,GAAAjuE,UAAAimM,oBAAA,WACA/gM,QAAApK,MAAA,4DAGAmzE,GAAAjuE,UAAAkmM,WAAA,SAAAtxK,GAEA,OADA1vB,QAAAC,KAAA,kGACAlO,KAAA6R,KAAA8rB,GAAAs6B,UAIA0zB,GAAA5iF,UAAAmmM,gBAAA,SAAApiL,GAEA,OADA7e,QAAAC,KAAA,0EACAlO,KAAA0pH,aAAA58F,IAGA6+D,GAAA5iF,UAAA6lM,qBAAA,SAAAzqI,EAAAltD,GAEA,OADAhJ,QAAAC,KAAA,uFACAlO,KAAA0P,QAAAy0D,EAAAltD,IAGA00E,GAAA5iF,UAAAomM,YAAA,WAEA,OADAlhM,QAAAC,KAAA,yGACA,IAAA00E,IAAAsC,oBAAAllF,KAAA,IAGA2rF,GAAA5iF,UAAAqmM,0BAAA,SAAA95H,GAEA,OADArnE,QAAAC,KAAA,kGACAlO,KAAAuvF,2BAAAja,IAGAqW,GAAA5iF,UAAAsmM,gBAAA,WACAphM,QAAAC,KAAA,wDAGAy9E,GAAA5iF,UAAA8lM,gBAAA,SAAA/oH,GAEA,OADA73E,QAAAC,KAAA,kGACA43E,EAAAnC,aAAA3jF,OAGA2rF,GAAA5iF,UAAAumM,gBAAA,SAAAxpH,GAEA,OADA73E,QAAAC,KAAA,kGACA43E,EAAAnC,aAAA3jF,OAGA2rF,GAAA5iF,UAAA+lM,qBAAA,WACA7gM,QAAApK,MAAA,6DAGA8nF,GAAA5iF,UAAAwmM,WAAA,SAAAltM,GACA4L,QAAAC,KAAA,oGACA7L,EAAAqpF,mBAAA1rF,OAGA2rF,GAAA5iF,UAAAymM,YAAA,SAAA1pH,GAEA,OADA73E,QAAAC,KAAA,8FACA43E,EAAAnC,aAAA3jF,OAGA2rF,GAAA5iF,UAAA+vC,UAAA,WACA7qC,QAAApK,MAAA,kDAGA8nF,GAAA5iF,UAAAuiE,QAAA,WACAr9D,QAAApK,MAAA,gDAGA8nF,GAAA5iF,UAAAsiE,QAAA,WACAp9D,QAAApK,MAAA,gDAGA8nF,GAAA5iF,UAAA0mM,QAAA,WACAxhM,QAAApK,MAAA,gDAGA8nF,GAAA5iF,UAAA2mM,aAAA,WACAzhM,QAAApK,MAAA,qDAGA8nF,GAAA5iF,UAAAgmM,uBAAA,SAAAn4H,GAEA,OADA3oE,QAAAC,KAAA,4GACA0oE,EAAA+M,aAAA3jF,OAGA2rF,GAAA5iF,UAAAimM,oBAAA,WACA/gM,QAAApK,MAAA,4DAGA8nF,GAAA5iF,UAAA4mM,YAAA,SAAAr1L,EAAAyiB,EAAAD,EAAAD,EAAAmyD,EAAAC,GAEA,OADAhhF,QAAAC,KAAA,wHACAlO,KAAA20G,gBAAAr6F,EAAAyiB,EAAAF,EAAAC,EAAAkyD,EAAAC,IAGAtD,GAAA5iF,UAAAkmM,WAAA,SAAAtxK,GAEA,OADA1vB,QAAAC,KAAA,kGACAlO,KAAA6R,KAAA8rB,GAAAs6B,UAIAy+C,GAAA3tG,UAAA6mM,mBAAA,SAAA/4F,GAEA,OADA5oG,QAAAC,KAAA,6EACAlO,KAAA6vM,eAAAh5F,IAIA33B,GAAAn2E,UAAA8lM,gBAAA,SAAA/oH,GAEA,OADA73E,QAAAC,KAAA,mHACA43E,EAAAhD,gBAAA9iF,OAGAk/E,GAAAn2E,UAAA67D,QAAA,WAEA,OADA32D,QAAAC,KAAA,8DACAlO,KAAAi4D,UAIAqxB,GAAAvgF,UAAA0lM,kBAAA,SAAA7hK,GAEA,OADA3+B,QAAAC,KAAA,yEACAlO,KAAA+vG,cAAAnjE,IAGA08C,GAAAvgF,UAAA+mM,oBAAA,SAAAtpH,GAEA,OADAv4E,QAAAC,KAAA,6EACAlO,KAAAg3G,gBAAAxwB,IAGA8C,GAAAvgF,UAAA2lM,qBAAA,SAAApoH,GAEA,OADAr4E,QAAAC,KAAA,+EACAlO,KAAAyoF,iBAAAnC,IAIA6O,GAAApsF,UAAAwnK,KAAA,WAEA,OADAtiK,QAAAC,KAAA,2DACAlO,KAAA+vM,WAGA56G,GAAApsF,UAAAinM,mBAAA,SAAA5hJ,EAAAj/C,GAEA,OADAlB,QAAAC,KAAA,8EACAlO,KAAA41F,aAAAxnC,EAAAj/C,IAGAgmF,GAAApsF,UAAAknM,SAAA,SAAA9gM,GAEA,OADAlB,QAAAC,KAAA,mEACAlO,KAAAkwM,YAAA/gM,IAGAgmF,GAAAg7G,gBAAA,SAAAhhM,GAEA,OADAlB,QAAAC,KAAA,+DACAlO,KAAAm2F,UAAAhnF,IAGAgmF,GAAApsF,UAAAy9E,MAAA,SAAAr3E,GAEA,OADAlB,QAAAC,KAAA,6DACAlO,KAAAowM,SAAAjhM,IAGAgmF,GAAA66G,mBAAA,SAAA5hJ,EAAAtmD,EAAAQ,EAAAnB,EAAAgI,GAEA,OADAlB,QAAAC,KAAA,8EACAinF,GAAAS,aAAAxnC,EAAAtmD,EAAAQ,EAAAnB,EAAAgI,IAGAgmF,GAAAvQ,OAAA,SAAA98E,EAAAQ,EAAAnB,EAAAgI,GAEA,OADAlB,QAAAC,KAAA,+DACAinF,GAAAgB,UAAAruF,EAAAQ,EAAAnB,EAAAgI,IAIA6/K,GAAAjmL,UAAAsnM,iBAAA,SAAAhmC,GAEA,OADAp8J,QAAAC,KAAA,oFACAlO,KAAAq1K,cAAAhL,IAGA2kB,GAAAjmL,UAAAunM,QAAA,SAAAj8J,GAEA,OADApmC,QAAAC,KAAA,4EACA,IAAA6lK,GAAA/zK,KAAAq0C,IAGA26I,GAAAjmL,UAAAwnM,aAAA,SAAAl8J,GAEA,OADApmC,QAAAC,KAAA,+EACA,IAAAysK,GAAA36K,KAAAq0C,IAIA0hC,GAAAhtE,UAAAynM,cAAA,SAAA55H,EAAAt+D,EAAArB,GAEA,OADAhJ,QAAAC,KAAA,+EACAlO,KAAA6nG,oBAAAjxB,EAAAt+D,EAAArB,IAGA8+D,GAAAhtE,UAAA0nM,oBAAA,SAAApuM,GAEA,OADA4L,QAAAC,KAAA,qFACAlO,KAAA0wM,oBAAAruM,IAGA0zE,GAAAhtE,UAAA4nM,gBAAA,WAEA,OADA1iM,QAAAC,KAAA,6EACAlO,KAAAkiK,mBAIAt/E,GAAA75E,UAAA6nM,2BAAA,WACA3iM,QAAApK,MAAA,8GAGA++E,GAAA75E,UAAA8nM,uBAAA,WACA5iM,QAAApK,MAAA,sGAGA++E,GAAA75E,UAAA+nM,sBAAA,SAAAhkL,GAEA,OADA7e,QAAAC,KAAA,yFACAlO,KAAAiyF,sBAAAnlE,IAGA81D,GAAA75E,UAAAgoM,mBAAA,SAAAjkL,GAEA,OADA7e,QAAAC,KAAA,mFACAlO,KAAA6gK,mBAAA/zI,IAGA81D,GAAA75E,UAAAioM,oBAAA,SAAA14L,EAAAqlB,GAEA,OADA1vB,QAAAC,KAAA,qFACAlO,KAAAklF,oBAAAvnD,EAAArlB,IAGAsqE,GAAA75E,UAAAkoM,gBAAA,SAAAnkL,GAEA,OADA7e,QAAAC,KAAA,uFACAlO,KAAA2jF,aAAA72D,IAGA81D,GAAA75E,UAAAynM,cAAA,SAAA55H,EAAAt+D,EAAArB,GAEA,OADAhJ,QAAAC,KAAA,+EACAlO,KAAA6nG,oBAAAjxB,EAAAt+D,EAAArB,IAGA2rE,GAAA75E,UAAA0nM,oBAAA,SAAApuM,GAEA,OADA4L,QAAAC,KAAA,qFACAlO,KAAA0wM,oBAAAruM,IAGAugF,GAAA75E,UAAA4nM,gBAAA,WAEA,OADA1iM,QAAAC,KAAA,6EACAlO,KAAAkiK,mBAIAvlF,GAAA5zE,UAAAynM,cAAA,SAAA55H,EAAAt+D,EAAArB,GAEA,OADAhJ,QAAAC,KAAA,+EACAlO,KAAA6nG,oBAAAjxB,EAAAt+D,EAAArB,IAGA0lE,GAAA5zE,UAAA4nM,gBAAA,WAEA,OADA1iM,QAAAC,KAAA,6EACAlO,KAAAkiK,mBAIArxE,GAAA9nF,UAAAmoM,eAAA,SAAAhxM,GAEA,OADA+N,QAAAC,KAAA,6EACAlO,KAAAmxM,gBAAAjxM,IAGA2wF,GAAA9nF,UAAAqoM,YAAA,WACAnjM,QAAAC,KAAA,8EAGA2iF,GAAA9nF,UAAA+vC,UAAA,SAAAz8B,EAAA3C,GAEA,OADAzL,QAAAC,KAAA,kGACAlO,KAAAgyF,gBAAAt4E,EAAA2C,IAGAw0E,GAAA9nF,UAAAsoM,iBAAA,WACApjM,QAAApK,MAAA,mHAGAgtF,GAAA9nF,UAAAuoM,YAAA,SAAA3zK,GAEA,OADA1vB,QAAAC,KAAA,uEACAlO,KAAA2jF,aAAAhmD,IAGAj1B,OAAAsoF,iBAAAH,GAAA9nF,UAAA,CACAwoM,WAAA,CACA1zL,IAAA,WAEA,OADA5P,QAAAC,KAAA,uDACAlO,KAAAk/B,SAAAgnB,OAEAjhC,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,uDACAlO,KAAAk/B,SAAAgnB,MAAApmD,IAGA0xM,cAAA,CACA3zL,IAAA,WACA5P,QAAAC,KAAA,kGAEA+W,IAAA,WACAhX,QAAAC,KAAA,qGAKAohG,GAAAvmG,UAAA0oM,YAAA,WACAxjM,QAAApK,MAAA,8LAGA6E,OAAAsoF,iBAAAse,GAAAvmG,UAAA,CACA2oM,SAAA,CACA7zL,IAAA,WAEA,OADA5P,QAAApK,MAAA,oGA9zkCA,GAi0kCAohB,IAAA,WACAhX,QAAApK,MAAA,4LAKAi+J,GAAA/4J,UAAA4oM,UAAA,WACA1jM,QAAApK,MAAA,qDAIA4vG,GAAA1qG,UAAA6oM,QAAA,SAAA39F,EAAAH,GACA7lG,QAAAC,KAAA,oHACAk5B,IAAA0sE,IAAA9zG,KAAA8zG,UAAAA,GACA9zG,KAAA6xM,eAAA59F,IAIAvrG,OAAAsoF,iBAAAm+F,GAAApmL,UAAA,CACA+oM,WAAA,CACA7sL,IAAA,WACAhX,QAAAC,KAAA,gDAGA6jM,gBAAA,CACA9sL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAkqE,OAAAwZ,OAAAgwB,IAAA5zG,IAGAkyM,iBAAA,CACA/sL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,8DACAlO,KAAAkqE,OAAAwZ,OAAAppE,KAAAxa,IAGAmyM,kBAAA,CACAhtL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,gEACAlO,KAAAkqE,OAAAwZ,OAAA3mD,MAAAj9B,IAGAoyM,gBAAA,CACAjtL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAkqE,OAAAwZ,OAAA7mD,IAAA/8B,IAGAqyM,mBAAA,CACAltL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,kEACAlO,KAAAkqE,OAAAwZ,OAAA5mD,OAAAh9B,IAGAymH,iBAAA,CACAthG,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,8DACAlO,KAAAkqE,OAAAwZ,OAAAsL,KAAAlvF,IAGA0mH,gBAAA,CACAvhG,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAkqE,OAAAwZ,OAAAuL,IAAAnvF,IAGAsyM,oBAAA,CACAntL,IAAA,WACAhX,QAAAC,KAAA,oHAGAs3G,WAAA,CACAvgG,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,iDACAlO,KAAAkqE,OAAAomE,KAAAxwI,IAGAuyM,eAAA,CACAptL,IAAA,WACAhX,QAAAC,KAAA,oDAGAokM,eAAA,CACArtL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,8DACAlO,KAAAkqE,OAAAsmE,QAAAztI,MAAAjD,IAGAyyM,gBAAA,CACAttL,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,gEACAlO,KAAAkqE,OAAAsmE,QAAAl2G,OAAAx6B,MAKA4I,OAAAsoF,iBAAAsW,GAAAv+F,UAAA,CACA1I,OAAA,CACAwd,IAAA,WAEA,OADA5P,QAAAC,KAAA,2EACAlO,KAAAmkE,MAAA9jE,SAGAmyM,QAAA,CACA30L,IAAA,WAEA,OADA5P,QAAAC,KAAA,4EACAlO,KAAAwnG,QAAA90B,IAEAztD,IAAA,WACAhX,QAAAC,KAAA,4EACAlO,KAAAw/J,SAAA9sF,QAKA40B,GAAAv+F,UAAA0pM,WAAA,SAAA3yM,GAGA,OAFAmO,QAAAC,KAAA,sFACAlO,KAAAw/J,UAAA,IAAA1/J,EAAA4yE,GAAAD,IACAzyE,MAGAsnG,GAAAv+F,UAAA2pM,iBAAA,WACAzkM,QAAApK,MAAA,iEACAyjG,GAAAv+F,UAAA4pM,SAAA,WACA1kM,QAAApK,MAAA,4HAGAomG,GAAAlhG,UAAA6pM,SAAA,SAAAt6L,GACArK,QAAAC,KAAA,sEACAlO,KAAAouG,SAAA91F,IAGA2xF,GAAAlhG,UAAA8pM,aAAA,SAAA3yM,EAAA02E,GAGA,OAFA3oE,QAAAC,KAAA,8EAEA0oE,GAAAA,EAAAsxB,mBAAAtxB,GAAAA,EAAAg3B,6BAKA,UAAA1tG,GACA+N,QAAAC,KAAA,2EACAlO,KAAAouG,SAAAx3B,GACA52E,MAGAA,KAAAwwB,aAAAtwB,EAAA02E,IAVA3oE,QAAAC,KAAA,0EACAlO,KAAAwwB,aAAAtwB,EAAA,IAAAonG,GAAA9hF,UAAA,GAAAA,UAAA,OAYAykF,GAAAlhG,UAAA+pM,YAAA,SAAArsM,EAAAo4E,EAAA+7F,QACAxzI,IAAAwzI,GACA3sK,QAAAC,KAAA,wEAGAD,QAAAC,KAAA,4DACAlO,KAAAiuG,SAAAxnG,EAAAo4E,IAGAorB,GAAAlhG,UAAAgqM,eAAA,WACA9kM,QAAAC,KAAA,kEACAlO,KAAAgzM,eAGA/oG,GAAAlhG,UAAAkqM,eAAA,WACAhlM,QAAAC,KAAA,8DAGA+7F,GAAAlhG,UAAA4xB,gBAAA,SAAAz6B,GAEA,OADA+N,QAAAC,KAAA,oFACAlO,KAAAwpH,gBAAAtpH,IAGA+pG,GAAAlhG,UAAAuoM,YAAA,SAAA3zK,GAEA,OADA1vB,QAAAC,KAAA,6EACAlO,KAAA2jF,aAAAhmD,IAGAj1B,OAAAsoF,iBAAAiZ,GAAAlhG,UAAA,CACAmpL,UAAA,CACAr0K,IAAA,WAEA,OADA5P,QAAApK,MAAA,iEACA7D,KAAAoqG,SAGA+nF,QAAA,CACAt0K,IAAA,WAEA,OADA5P,QAAAC,KAAA,+DACAlO,KAAAoqG,WAKAg1D,GAAAr2J,UAAA0pM,WAAA,SAAA3yM,GAGA,OAFAmO,QAAAC,KAAA,wFACAlO,KAAAw/J,UAAA,IAAA1/J,EAAA4yE,GAAAD,IACAzyE,MAGAo/J,GAAAr2J,UAAA4pM,SAAA,WACA1kM,QAAApK,MAAA,8HAIAkwK,GAAAhrK,UAAAmqM,UAAA,WACAjlM,QAAApK,MAAA,0DAGAkwK,GAAAhrK,UAAAoqM,aAAA,WACAllM,QAAApK,MAAA,6DAGAkwK,GAAAhrK,UAAAkrK,SAAA,WACAhmK,QAAApK,MAAA,yDAIAs7J,GAAAp2J,UAAA01E,QAAA,WACAxwE,QAAApK,MAAA,8CAIAwnM,GAAAtiM,UAAAugB,SAAA,WAEA,OADArb,QAAAC,KAAA,qFACAlO,MAIA0I,OAAAsoF,iBAAAgG,GAAAjuF,UAAA,CACAqqM,WAAA,CACAv1L,IAAA,WACA5P,QAAAC,KAAA,kDAEA+W,IAAA,WACAhX,QAAAC,KAAA,mDAGAmlM,SAAA,CACAx1L,IAAA,WACA5P,QAAAC,KAAA,gDAEA+W,IAAA,WACAhX,QAAAC,KAAA,iDAGAolM,QAAA,CACAz1L,IAAA,WAEA,OADA5P,QAAAC,KAAA,8CACA,IAAAw3F,KAGAyrF,QAAA,CACAtzK,IAAA,WACA5P,QAAApK,MAAA,SAAA7D,KAAAD,KAAA,uEAEAklB,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,sEACAC,KAAAs5F,YA3slCA,IA2slCAx5F,IAGA83I,YAAA,CACA/5H,IAAA,WAEA,OADA5P,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,kEACAC,KAAAg4F,iBAEA/yE,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,kEACAC,KAAAg4F,gBAAAl4F,IAGAynI,eAAA,CACA1pH,IAAA,WACA5P,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,wCAEAklB,IAAA,WACAhX,QAAAC,KAAA,SAAAlO,KAAAD,KAAA,2CAIA2I,OAAAsoF,iBAAAwhB,GAAAzpG,UAAA,CACAgqG,YAAA,CACAl1F,IAAA,WAEA,OADA5P,QAAAC,KAAA,iFACAlO,KAAA8yG,WAAAC,aAEA9tF,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,kFACAlO,KAAA8yG,WAAAC,YAAAjzG,MAKA4zJ,GAAA3qJ,UAAAwqM,YAAA,SAAAz+F,EAAAn0F,EAAAgrD,EAAA2qC,GACAroG,QAAAC,KAAA,yGACAlO,KAAA21G,gBAAAb,GACA90G,KAAA8rB,MAAAnL,EAAAgrD,EAAA2qC,IAGAo9C,GAAA3qJ,UAAAyqM,QAAA,SAAA/2L,GACAxO,QAAAC,KAAA,+DACAlO,KAAAo5G,iBAAA38F,IAGAi3I,GAAA3qJ,UAAA0qM,uBAAA,WAEA,OADAxlM,QAAAC,KAAA,6EACAlO,KAAA01G,mBAGAg+C,GAAA3qJ,UAAAinH,iBAAA,WAEA,OADA/hH,QAAAC,KAAA,qFACAlO,KAAAw5G,aAAAwW,oBAGA0jC,GAAA3qJ,UAAA2qM,aAAA,WAEA,OADAzlM,QAAAC,KAAA,wEACAlO,KAAAw5G,aAAA9gB,WAGAg7D,GAAA3qJ,UAAA4qM,aAAA,WAEA,OADA1lM,QAAAC,KAAA,+DACAlO,KAAAooE,MAAAqjD,SAGAioC,GAAA3qJ,UAAA6qM,sBAAA,WAEA,OADA3lM,QAAAC,KAAA,gGACAlO,KAAA8yG,WAAAj1F,IAAA,sBAGA61I,GAAA3qJ,UAAA8qM,0BAAA,WAEA,OADA5lM,QAAAC,KAAA,yGACAlO,KAAA8yG,WAAAj1F,IAAA,2BAGA61I,GAAA3qJ,UAAA+qM,4BAAA,WAEA,OADA7lM,QAAAC,KAAA,6GACAlO,KAAA8yG,WAAAj1F,IAAA,6BAGA61I,GAAA3qJ,UAAAgrM,8BAAA,WAEA,OADA9lM,QAAAC,KAAA,oHACAlO,KAAA8yG,WAAAj1F,IAAA,kCAGA61I,GAAA3qJ,UAAAirM,+BAAA,WAEA,OADA/lM,QAAAC,KAAA,sHACAlO,KAAA8yG,WAAAj1F,IAAA,mCAGA61I,GAAA3qJ,UAAAkrM,oBAAA,WAEA,OADAhmM,QAAAC,KAAA,6FACAlO,KAAA8yG,WAAAj1F,IAAA,qBAGA61I,GAAA3qJ,UAAAm+H,uBAAA,WAEA,OADAj5H,QAAAC,KAAA,uFACAlO,KAAAw5G,aAAAsW,gBAGA4jC,GAAA3qJ,UAAAmrM,wBAAA,WAEA,OADAjmM,QAAAC,KAAA,uGACAlO,KAAA8yG,WAAAj1F,IAAA,2BAGA61I,GAAA3qJ,UAAAorM,kBAAA,SAAAx7C,GACA1qJ,QAAAC,KAAA,uEACAlO,KAAA+0I,eAAA4jB,IAGAjF,GAAA3qJ,UAAAqrM,aAAA,WACAnmM,QAAAC,KAAA,2DAGAwlJ,GAAA3qJ,UAAAsrM,aAAA,WACApmM,QAAAC,KAAA,2DAGAwlJ,GAAA3qJ,UAAAurM,cAAA,WACArmM,QAAAC,KAAA,4DAGAwlJ,GAAA3qJ,UAAAwrM,gBAAA,WACAtmM,QAAAC,KAAA,8DAGAwlJ,GAAA3qJ,UAAAyrM,eAAA,WACAvmM,QAAAC,KAAA,6DAGAwlJ,GAAA3qJ,UAAA0rM,iBAAA,WACAxmM,QAAAC,KAAA,+DAGAwlJ,GAAA3qJ,UAAA2rM,WAAA,WACAzmM,QAAAC,KAAA,yDAGAwlJ,GAAA3qJ,UAAAu5I,aAAA,WACAr0I,QAAAC,KAAA,2DAGAwlJ,GAAA3qJ,UAAA45I,eAAA,WACA10I,QAAAC,KAAA,6DAGAwlJ,GAAA3qJ,UAAA4rM,qBAAA,WAEA,OADA1mM,QAAAC,KAAA,gFACAlO,KAAA20I,wBAGAjsI,OAAAsoF,iBAAA0iE,GAAA3qJ,UAAA,CACAg/H,iBAAA,CACAlqH,IAAA,WACA,OAAA7d,KAAAysI,UAAAj3F,SAEAvwB,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,qEACAlO,KAAAysI,UAAAj3F,QAAA11C,IAGAolI,cAAA,CACArnH,IAAA,WACA,OAAA7d,KAAAysI,UAAA1sI,MAEAklB,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,+DACAlO,KAAAysI,UAAA1sI,KAAAD,IAGA80M,kBAAA,CACA/2L,IAAA,WACA5P,QAAAC,KAAA,+FAGA+W,IAAA,WACAhX,QAAAC,KAAA,gGAGA+5B,QAAA,CACApqB,IAAA,WAEA,OADA5P,QAAAC,KAAA,8EACAlO,KAAAi6E,eAGA46H,GAAA,CACAh3L,IAAA,WAEA,OADA5P,QAAAC,KAAA,oDACAlO,KAAAw1G,KAGAs/F,WAAA,CACAj3L,IAAA,WAEA,OADA5P,QAAAC,KAAA,mHACA,GAEA+W,IAAA,WACAhX,QAAAC,KAAA,oHAGA6mM,YAAA,CACAl3L,IAAA,WAEA,OADA5P,QAAAC,KAAA,kGACA,GAEA+W,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,iGACAlO,KAAAu0H,gBAAA,IAAAz0H,EAAAoyE,EAAAD,IAGA+iI,sBAAA,CACAn3L,IAAA,WAEA,OADA5P,QAAAC,KAAA,iEACA,GAEA+W,IAAA,WACAhX,QAAAC,KAAA,qEAIAxF,OAAAsoF,iBAAAihD,GAAAlpI,UAAA,CACAs0I,SAAA,CACAx/H,IAAA,WACA5P,QAAAC,KAAA,gGAGA+W,IAAA,WACAhX,QAAAC,KAAA,iGAGA+mM,mBAAA,CACAp3L,IAAA,WACA5P,QAAAC,KAAA,0GAGA+W,IAAA,WACAhX,QAAAC,KAAA,2GAGAgnM,kBAAA,CACAr3L,IAAA,WACA5P,QAAAC,KAAA,yGAGA+W,IAAA,WACAhX,QAAAC,KAAA,4GASAxF,OAAAsoF,iBAAA/S,GAAAl1E,UAAA,CACA4xE,MAAA,CACA98D,IAAA,WAEA,OADA5P,QAAAC,KAAA,0DACAlO,KAAAq+E,QAAA1D,OAEA11D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,0DACAlO,KAAAq+E,QAAA1D,MAAA76E,IAGA86E,MAAA,CACA/8D,IAAA,WAEA,OADA5P,QAAAC,KAAA,0DACAlO,KAAAq+E,QAAAzD,OAEA31D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,0DACAlO,KAAAq+E,QAAAzD,MAAA96E,IAGA+6E,UAAA,CACAh9D,IAAA,WAEA,OADA5P,QAAAC,KAAA,kEACAlO,KAAAq+E,QAAAxD,WAEA51D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,kEACAlO,KAAAq+E,QAAAxD,UAAA/6E,IAGAg7E,UAAA,CACAj9D,IAAA,WAEA,OADA5P,QAAAC,KAAA,kEACAlO,KAAAq+E,QAAAvD,WAEA71D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,kEACAlO,KAAAq+E,QAAAvD,UAAAh7E,IAGAi7E,WAAA,CACAl9D,IAAA,WAEA,OADA5P,QAAAC,KAAA,oEACAlO,KAAAq+E,QAAAtD,YAEA91D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,oEACAlO,KAAAq+E,QAAAtD,WAAAj7E,IAGAmX,OAAA,CACA4G,IAAA,WAEA,OADA5P,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAApnE,QAEAgO,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAApnE,OAAAnX,IAGA2W,OAAA,CACAoH,IAAA,WAEA,OADA5P,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAA5nE,QAEAwO,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAA5nE,OAAA3W,IAGAkyB,OAAA,CACAnU,IAAA,WAEA,OADA5P,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAArsD,QAEA/M,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,4DACAlO,KAAAq+E,QAAArsD,OAAAlyB,IAGAC,KAAA,CACA8d,IAAA,WAEA,OADA5P,QAAAC,KAAA,wDACAlO,KAAAq+E,QAAAt+E,MAEAklB,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,wDACAlO,KAAAq+E,QAAAt+E,KAAAD,IAGAw7E,gBAAA,CACAz9D,IAAA,WAEA,OADA5P,QAAAC,KAAA,8EACAlO,KAAAq+E,QAAA/C,iBAEAr2D,IAAA,SAAAnlB,GACAmO,QAAAC,KAAA,8EACAlO,KAAAq+E,QAAA/C,gBAAAx7E,MAKA44L,GAAA3vL,UAAAwqD,KAAA,SAAA41H,GACAl7K,QAAAC,KAAA,0EACA,MAAAL,EAAA7N,KAKA,OAJA,IAAAk3L,IACA3jI,KAAA41H,GAAA,SAAAz/E,GACA77F,EAAAsnM,UAAAzrG,MAEA1pG,MAGA66L,GAAA9xL,UAAAqsM,QAAA,WAEA,OADAnnM,QAAAC,KAAA,+DACAlO,KAAAo7L,oBAIAvmF,GAAA9rG,UAAAssM,cAAA,SAAAjkL,EAAAkkF,GAEA,OADArnG,QAAAC,KAAA,wDACAlO,KAAAijD,OAAA7xB,EAAAkkF,IAGAT,GAAA9rG,UAAA+iB,MAAA,SAAAsF,EAAAzQ,EAAAgrD,EAAA2qC,GAEA,OADAroG,QAAAC,KAAA,4DACAlO,KAAA80G,aAAAhpF,MAAAsF,EAAAzQ,EAAAgrD,EAAA2qC,IAGAx8B,GAAA2wG,iBAAArjJ,EAEA0yC,GAAA6yG,YAAA,SAAAtpL,EAAAo3E,EAAA4uG,EAAAE,GACAt7K,QAAAC,KAAA,wFACA,MAAAi8K,EAAA,IAAA8C,GACA9C,EAAAqC,eAAAxsL,KAAAyqL,aACA,MAAApsG,EAAA8rG,EAAA52H,KAAAlwD,EAAAgmL,OAAAjiJ,EAAAmiJ,GAEA,OADA9uG,IAAA4D,EAAA5D,QAAAA,GACA4D,GAGAvE,GAAAw7H,gBAAA,SAAA/oB,EAAA9xG,EAAA4uG,EAAAE,GACAt7K,QAAAC,KAAA,gGACA,MAAAi8K,EAAA,IAAAmC,GACAnC,EAAAqC,eAAAxsL,KAAAyqL,aACA,MAAApsG,EAAA8rG,EAAA52H,KAAAg5H,EAAAlD,OAAAjiJ,EAAAmiJ,GAEA,OADA9uG,IAAA4D,EAAA5D,QAAAA,GACA4D,GAGAvE,GAAAy7H,sBAAA,WACAtnM,QAAApK,MAAA,0FAGAi2E,GAAA07H,0BAAA,WACAvnM,QAAApK,MAAA,8FAYA,MAAA4xM,GAAA,CACAC,0BAAA,WACAznM,QAAApK,MAAA,yEAEA8xM,OAAA,WACA1nM,QAAApK,MAAA,yEAEAuwC,OAAA,WACAnmC,QAAApK,MAAA,0EAQA,oBAAAk7J,oBAEAA,mBAAA7yH,cAAA,IAAAxG,YAAA,WAAA,CACAoG,OAAA,CACA8pK,SAAAzmI,MAOA,oBAAA7qE,SACAA,OAAAuxM,UACA5nM,QAAAC,KAAA,2DAEA5J,OAAAuxM,UAAA1mI,GAIAlrE,EAAA6xM,sBA5mmCA,EA6mmCA7xM,EAAAmrE,YAAAA,EACAnrE,EAAA8xM,aAnnmCA,EAonmCA9xM,EAAA+tE,2BAAAA,EACA/tE,EAAA+xM,iBAnpmCA,EAopmCA/xM,EAAAgyM,YA/kmCA,KAglmCAhyM,EAAAiyM,YAhomCA,EAiomCAjyM,EAAAkyM,kBAl/lCA,IAm/lCAlyM,EAAAysL,aAAAA,GACAzsL,EAAAyzL,kBAAAA,GACAzzL,EAAAgjL,cAAAA,GACAhjL,EAAAmyM,gBAz/PA,cAAA7rB,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAmqL,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAA9sL,KAAA0qL,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAZ,GACA,IACA4mL,EAAAx7K,EAAA2mF,MAAAhxF,KAAAgxF,MAAA/xF,KACA,MAAAoqB,GACA08J,EACAA,EAAA18J,GAEA5e,QAAApK,MAAAgpB,GAGAhf,EAAA28K,QAAAV,UAAAzmL,MAEAimL,EAAAC,GAGA12G,MAAAmwF,GACA,MAAAj5I,EAAA,GAEA,IAAA,IAAAppB,EAAA,EAAAA,EAAAqiK,EAAA3iK,OAAAM,IAAA,CACA,MAAAs/K,EAAAgH,GAAAzyF,MAAAwuE,EAAAriK,IACAopB,EAAAvpB,KAAAy/K,GAGA,OAAAl2J,IAw9PA9lB,EAAA0jM,eAAAA,GACA1jM,EAAA69L,qBAAAA,GACA79L,EAAA86K,eAAAA,GACA96K,EAAAooK,SAAAA,GACApoK,EAAAmlJ,YAAAA,GACAnlJ,EAAAoyM,YAr6CA,cAAAxlH,GAEAhe,YAAAjpB,EAAA,IAAAg5B,GAAA,EAAA,EAAA,GAAA3mD,EAAA,IAAA2mD,GAAA,EAAA,EAAA,GAAAviF,EAAA,EAAAsgB,EAAA,SAAA21L,EAAA,GAAAj2M,EAAAk2M,EAAA,GAAAD,GACAr7H,QACAj7E,KAAAD,KAAA,mBAEAqnC,IAAAwmK,KACAA,GAAA,IAAA3jG,GAEA2jG,GAAAp9K,aAAA,WAAA,IAAA24E,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAEA0kG,GAAA,IAAAtnC,GAAA,EAAA,GAAA,EAAA,EAAA,GAEAsnC,GAAA/0J,UAAA,GAAA,GAAA,IAGA94C,KAAAgV,SAAAnD,KAAAoqB,GACAj8B,KAAA62G,KAAA,IAAAqtD,GAAA0pC,GAAA,IAAAxiE,GAAA,CACAzqH,MAAAA,EACAs4E,YAAA,KAEAj5F,KAAA62G,KAAAx7B,kBAAA,EACAr7E,KAAAsd,IAAAtd,KAAA62G,MACA72G,KAAAw2M,KAAA,IAAAlnG,GAAAu+F,GAAA,IAAA5mG,GAAA,CACAtmF,MAAAA,EACAs4E,YAAA,KAEAj5F,KAAAw2M,KAAAn7H,kBAAA,EACAr7E,KAAAsd,IAAAtd,KAAAw2M,MACAx2M,KAAAy2M,aAAA7sJ,GACA5pD,KAAA02M,UAAAr2M,EAAAi2M,EAAAC,GAGA1jI,aAAAjpB,GAEA,GAAAA,EAAAtkD,EAAA,OACAtF,KAAA2gF,WAAA17D,IAAA,EAAA,EAAA,EAAA,QACA,GAAA2kC,EAAAtkD,GAAA,OACAtF,KAAA2gF,WAAA17D,IAAA,EAAA,EAAA,EAAA,OACA,CACA0oL,GAAA1oL,IAAA2kC,EAAA3qB,EAAA,GAAA2qB,EAAApiD,GAAAyrB,YAEA,MAAAmiD,EAAAlvE,KAAA02E,KAAAhzB,EAAAtkD,GACAtF,KAAA2gF,WAAAsC,iBAAA0qH,GAAAv4H,IAIAvC,UAAAxyE,EAAAi2M,EAAA,GAAAj2M,EAAAk2M,EAAA,GAAAD,GACAt2M,KAAA62G,KAAA9/E,MAAA9R,IAAA,EAAA/e,KAAAiS,IAAA,KAAA9X,EAAAi2M,GAAA,GAEAt2M,KAAA62G,KAAAllB,eACA3xF,KAAAw2M,KAAAz/K,MAAA9R,IAAAsxL,EAAAD,EAAAC,GACAv2M,KAAAw2M,KAAAxhM,SAAA1P,EAAAjF,EACAL,KAAAw2M,KAAA7kH,eAGA9e,SAAAlyD,GACA3gB,KAAA62G,KAAAziB,SAAAzzE,MAAAsE,IAAAtE,GACA3gB,KAAAw2M,KAAApiH,SAAAzzE,MAAAsE,IAAAtE,GAGAkyD,KAAAjxC,GAIA,OAHAq5C,MAAAppE,KAAA+vB,GAAA,GACA5hC,KAAA62G,KAAAhlG,KAAA+vB,EAAAi1E,MACA72G,KAAAw2M,KAAA3kM,KAAA+vB,EAAA40K,MACAx2M,OAq2CAiE,EAAAy0L,MAAAA,GACAz0L,EAAA42L,cAAAA,GACA52L,EAAA+yL,aAAAA,GACA/yL,EAAA0yM,cAjiKA,cAAA9lH,GACAhe,cACAoI,QACAj7E,KAAAD,KAAA,gBACAC,KAAAioC,QAAA+uJ,GAAA/8G,aACAj6E,KAAA24L,KAAA34L,KAAAioC,QAAA2wJ,aACA54L,KAAA24L,KAAAE,QAAA74L,KAAAioC,QAAA2uK,aACA52M,KAAAI,OAAA,KACAJ,KAAA62M,UAAA,EAEA72M,KAAA82M,OAAA,IAAAhf,GAGAjlH,WACA,OAAA7yE,KAAA24L,KAGA9lH,eAQA,OAPA,OAAA7yE,KAAAI,SACAJ,KAAA24L,KAAAxjJ,WAAAn1C,KAAAI,QACAJ,KAAAI,OAAA+0C,WAAAn1C,KAAAioC,QAAA2uK,aACA52M,KAAA24L,KAAAE,QAAA74L,KAAAioC,QAAA2uK,aACA52M,KAAAI,OAAA,MAGAJ,KAGA6yE,YACA,OAAA7yE,KAAAI,OAGAyyE,UAAA/yE,GAWA,OAVA,OAAAE,KAAAI,QACAJ,KAAA24L,KAAAxjJ,WAAAn1C,KAAAI,QACAJ,KAAAI,OAAA+0C,WAAAn1C,KAAAioC,QAAA2uK,cAEA52M,KAAA24L,KAAAxjJ,WAAAn1C,KAAAioC,QAAA2uK,aAGA52M,KAAAI,OAAAN,EACAE,KAAA24L,KAAAE,QAAA74L,KAAAI,QACAJ,KAAAI,OAAAy4L,QAAA74L,KAAAioC,QAAA2uK,aACA52M,KAGA6yE,kBACA,OAAA7yE,KAAA24L,KAAAA,KAAA74L,MAGA+yE,gBAAA/yE,GAEA,OADAE,KAAA24L,KAAAA,KAAA2B,gBAAAx6L,EAAAE,KAAAioC,QAAA8xJ,YAAA,KACA/5L,KAGA6yE,kBAAA7hE,GACAiqE,MAAA0X,kBAAA3hF,GACA,MAAAs5B,EAAAtqC,KAAAioC,QAAAqC,SACA6iD,EAAAntF,KAAAmtF,GAMA,GALAntF,KAAA62M,UAAA72M,KAAA82M,OAAA3e,WACAn4L,KAAA+jF,YAAA8N,UAAAymG,GAAAC,GAAAC,IAEAC,GAAAxzK,IAAA,EAAA,GAAA,GAAA69D,gBAAAy1G,IAEAjuJ,EAAAysK,UAAA,CAEA,MAAAhgM,EAAA/W,KAAAioC,QAAA8xJ,YAAA/5L,KAAA62M,UACAvsK,EAAAysK,UAAAC,wBAAA1e,GAAA9wL,EAAAuP,GACAuzB,EAAA2sK,UAAAD,wBAAA1e,GAAAhzL,EAAAyR,GACAuzB,EAAA4sK,UAAAF,wBAAA1e,GAAAr5J,EAAAloB,GACAuzB,EAAA6sK,SAAAH,wBAAAve,GAAAjxL,EAAAuP,GACAuzB,EAAA8sK,SAAAJ,wBAAAve,GAAAnzL,EAAAyR,GACAuzB,EAAA+sK,SAAAL,wBAAAve,GAAAx5J,EAAAloB,GACAuzB,EAAAgtK,IAAAN,wBAAA7pH,EAAA3lF,EAAAuP,GACAuzB,EAAAitK,IAAAP,wBAAA7pH,EAAA7nF,EAAAyR,GACAuzB,EAAAktK,IAAAR,wBAAA7pH,EAAAluD,EAAAloB,QAEAuzB,EAAAmtK,YAAAnf,GAAA9wL,EAAA8wL,GAAAhzL,EAAAgzL,GAAAr5J,GACAqL,EAAAotK,eAAAjf,GAAAjxL,EAAAixL,GAAAnzL,EAAAmzL,GAAAx5J,EAAAkuD,EAAA3lF,EAAA2lF,EAAA7nF,EAAA6nF,EAAAluD,KAo9JAh7B,EAAAizL,YAAAA,GACAjzL,EAAA6pM,WAAAA,GACA7pM,EAAA0zM,WA5pCA,SAAAv0J,GAEA,OADAn1C,QAAAC,KAAA,0DACA,IAAA4/L,GAAA1qJ,IA2pCAn/C,EAAA2zM,SA9qmCA,EA+qmCA3zM,EAAA4zM,kBAxhmCA,KAyhmCA5zM,EAAA6zM,eArrmCA,EAsrmCA7zM,EAAA8zM,oBAjnCA,SAAAvtB,GAEA,OADAv8K,QAAAC,KAAA,0EACA,IAAA0+K,GAAApC,IAgnCAvmL,EAAAu+J,KAAAA,GACAv+J,EAAAwiL,qBAAAA,GACAxiL,EAAA+zM,kBA/pCA,SAAA/lJ,EAAAtxC,GAEA,OADA1S,QAAAC,KAAA,oFACA,IAAAu/L,GAAAx7I,EAAAtxC,IA8pCA1c,EAAA0nM,KAAAA,GACA1nM,EAAAohF,KAAAA,GACAphF,EAAAg0M,WA7/CA,cAAAtzC,GACA9xF,YAAAjmC,EAAAjsB,EAAA,UACA,MAAA2qF,EAAA,IAAA1C,YAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAEA3iB,EAAA,IAAAgkB,GACAhkB,EAAAmoB,SAAA,IAAA9G,GAAAgE,EAAA,IACArlB,EAAAz1D,aAAA,WAAA,IAAA24E,GAHA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAGA,IACAluB,MAAAgL,EAAA,IAAAmlD,GAAA,CACAzqH,MAAAA,EACAs4E,YAAA,KAEAj5F,KAAA4sC,IAAAA,EACA5sC,KAAAD,KAAA,aACAC,KAAAimF,SAAAykB,wBAGA73B,kBAAA7hE,GACA,MAAA47B,EAAA5sC,KAAA4sC,IACAA,EAAAi5C,YACAj5C,EAAA+5C,UAAA3mF,KAAAgV,UACA43B,EAAA26C,QAAAvnF,KAAA+2B,OACA/2B,KAAA+2B,MAAAq/C,eAAA,IACA6E,MAAA0X,kBAAA3hF,MAw+CA/M,EAAAm5K,kBAAAvsE,GACA5sG,EAAA4sG,YAAAA,GACA5sG,EAAAwpM,UAAAA,GACAxpM,EAAAqjG,gBAAAA,GACArjG,EAAAgmG,eAAAA,GACAhmG,EAAAytL,qBAAAA,GACAztL,EAAAi0M,SA9nmCA,KA+nmCAj0M,EAAAilL,MAAAA,GACAjlL,EAAAuvG,OAAAA,GACAvvG,EAAAk0M,aA1uDA,cAAAxzC,GACA9xF,YAAA6Q,GACA,MAAAuC,EAAA,IAAAgkB,GACA7V,EAAA,IAAAg3C,GAAA,CACAzqH,MAAA,SACAw2E,cAAA,EACA8B,YAAA,IAEAgY,EAAA,GACAvwF,EAAA,GACA4sL,EAAA,GAEA8K,EAAA,IAAA1yG,GAAA,UACA2yG,EAAA,IAAA3yG,GAAA,UACA4yG,EAAA,IAAA5yG,GAAA,OACA6yG,EAAA,IAAA7yG,GAAA,UACA8yG,EAAA,IAAA9yG,GAAA,SAkCA,SAAA+yG,EAAA3wM,EAAAQ,EAAAqY,GACA+3L,EAAA5wM,EAAA6Y,GACA+3L,EAAApwM,EAAAqY,GAGA,SAAA+3L,EAAA11M,EAAA2d,GACAswF,EAAAzwG,KAAA,EAAA,EAAA,GACAkgB,EAAAlgB,KAAAmgB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,QAEA8+B,IAAAkmK,EAAAtqM,KACAsqM,EAAAtqM,GAAA,IAGAsqM,EAAAtqM,GAAAxC,KAAAywG,EAAA5wG,OAAA,EAAA,GA7CAo4M,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GAEAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GAEAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GACAK,EAAA,KAAA,KAAAL,GAEAK,EAAA,IAAA,KAAAJ,GACAI,EAAA,IAAA,KAAAJ,GACAI,EAAA,IAAA,KAAAJ,GACAI,EAAA,IAAA,KAAAJ,GAEAI,EAAA,KAAA,KAAAH,GACAG,EAAA,KAAA,KAAAH,GACAG,EAAA,KAAA,KAAAH,GAEAG,EAAA,IAAA,IAAAF,GACAE,EAAA,IAAA,IAAAD,GAEAC,EAAA,MAAA,MAAAD,GACAC,EAAA,MAAA,MAAAD,GACAC,EAAA,MAAA,MAAAD,GACAC,EAAA,MAAA,MAAAD,GAkBAvyH,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAhrB,EAAAz1D,aAAA,QAAA,IAAA24E,GAAAzoF,EAAA,IACAu6D,MAAAgL,EAAAmO,GACAp0F,KAAAD,KAAA,eACAC,KAAA0jF,OAAAA,EACA1jF,KAAA0jF,OAAAswB,wBAAAh0G,KAAA0jF,OAAAswB,yBACAh0G,KAAA29B,OAAA+lD,EAAAK,YACA/jF,KAAAq7E,kBAAA,EACAr7E,KAAAstM,SAAAA,EACAttM,KAAAijD,SAGA4vB,SACA,MAAAoT,EAAAjmF,KAAAimF,SACAqnH,EAAAttM,KAAAstM,SAKAF,GAAAtpH,wBAAAjyE,KAAA7R,KAAA0jF,OAAAI,yBAGAupH,GAAA,IAAAC,EAAArnH,EAAAmnH,GAAA,EAAA,GAAA,GACAC,GAAA,IAAAC,EAAArnH,EAAAmnH,GAAA,EAAA,EAAA,GAEAC,GAAA,KAAAC,EAAArnH,EAAAmnH,IAVA,GACA,GASA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,GAXA,GACA,GAUA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,IAZA,EACA,GAWA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,GAbA,EACA,GAYA,GAEAC,GAAA,KAAAC,EAAArnH,EAAAmnH,IAfA,GACA,EAcA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,GAhBA,GACA,EAeA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,IAjBA,EACA,EAgBA,GACAC,GAAA,KAAAC,EAAArnH,EAAAmnH,GAlBA,EACA,EAiBA,GAEAC,GAAA,KAAAC,EAAArnH,EAAAmnH,GAAAn3H,GAAAx2D,KAAA,GACA4tL,GAAA,KAAAC,EAAArnH,EAAAmnH,IAAA,GAAA3tL,KAAA,GACA4tL,GAAA,KAAAC,EAAArnH,EAAAmnH,GAAA,EAAA3tL,GAAA,GAEA4tL,GAAA,MAAAC,EAAArnH,EAAAmnH,IAxBA,EAwBA,EAAA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GAzBA,EAyBA,EAAA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GAAA,GAzBA,EAyBA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GAAA,EA1BA,EA0BA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,IA5BA,EA4BA,GAAA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GA7BA,EA6BA,GAAA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GAAA,GA7BA,GA6BA,GACAC,GAAA,MAAAC,EAAArnH,EAAAmnH,GAAA,EA9BA,GA8BA,GACAnnH,EAAAr2E,aAAA,YAAA0sE,aAAA,EAGAzJ,UACA7yE,KAAAimF,SAAAxH,UACAz+E,KAAAo0F,SAAA3V,YAqnDAx6E,EAAA00M,eAxFA,WACA1qM,QAAApK,MAAA,0CAwFAI,EAAA6hK,cAAAA,GACA7hK,EAAAmpK,iBAAAA,GACAnpK,EAAA20M,kBA7pmCA,EA8pmCA30M,EAAAo5K,qBAAApX,GACAhiK,EAAAgiK,eAAAA,GACAhiK,EAAA4rE,oBAAAA,EACA5rE,EAAA6zL,MAAAA,GACA7zL,EAAAyhG,MAAAA,GACAzhG,EAAAyiL,mBAAAA,GACAziL,EAAA4hK,kBAAAA,GACA5hK,EAAA40M,wBAz/PA,cAAAtuB,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAqvD,EAAA,GACAgvB,EAAA,IAAAwnF,GACAskB,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA0C,gBAAA,eACA1C,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAAj/K,EAAA68K,iBACA,IAAAgC,EAAA,EAEA,SAAAC,EAAAhsL,GACAwpL,EAAA52H,KAAAlwD,EAAA1C,IAAA,SAAA+oG,GACA,MAAAovG,EAAAjrM,EAAA2mF,MAAAkV,GAAA,GACAr6C,EAAA1uD,GAAA,CACAoC,MAAA+1M,EAAA/1M,MACAu3B,OAAAw+K,EAAAx+K,OACAtI,OAAA8mL,EAAA9mL,OACAmpD,QAAA29H,EAAA39H,SAEAuxG,GAAA,EAEA,IAAAA,IACA,IAAAosB,EAAA9rB,cAAA3uG,EAAAvD,UAAA5K,GACAmO,EAAA1uB,MAAAN,EACAgvB,EAAArsD,OAAA8mL,EAAA9mL,OACAqsD,EAAA/B,aAAA,EACA+sG,GAAAA,EAAAhrG,MAEAirG,EAAAC,GAGA,GAAAr8K,MAAAhM,QAAAmC,GACA,IAAA,IAAA1C,EAAA,EAAAqzB,EAAA3wB,EAAAhD,OAAAM,EAAAqzB,IAAArzB,EACAgsL,EAAAhsL,QAIAwpL,EAAA52H,KAAAlwD,GAAA,SAAAqmG,GACA,MAAAovG,EAAAjrM,EAAA2mF,MAAAkV,GAAA,GAEA,GAAAovG,EAAAC,UAAA,CACA,MAAAplC,EAAAmlC,EAAA39H,QAAA96E,OAAAy4M,EAAA9rB,YAEA,IAAA,IAAA9qK,EAAA,EAAAA,EAAAyxJ,EAAAzxJ,IAAA,CACAmtC,EAAAntC,GAAA,CACAi5D,QAAA,IAGA,IAAA,IAAAx6E,EAAA,EAAAA,EAAAm4M,EAAA9rB,YAAArsL,IACA0uD,EAAAntC,GAAAi5D,QAAA36E,KAAAs4M,EAAA39H,QAAAj5D,EAAA42L,EAAA9rB,YAAArsL,IACA0uD,EAAAntC,GAAA8P,OAAA8mL,EAAA9mL,OACAq9B,EAAAntC,GAAAnf,MAAA+1M,EAAA/1M,MACAssD,EAAAntC,GAAAoY,OAAAw+K,EAAAx+K,OAIA+jD,EAAA1uB,MAAAN,OAEAgvB,EAAA1uB,MAAA5sD,MAAA+1M,EAAA/1M,MACAs7E,EAAA1uB,MAAAr1B,OAAAw+K,EAAAx+K,OACA+jD,EAAAlD,QAAA29H,EAAA39H,QAGA,IAAA29H,EAAA9rB,cACA3uG,EAAAvD,UAAA5K,GAGAmO,EAAArsD,OAAA8mL,EAAA9mL,OACAqsD,EAAA/B,aAAA,EACA+sG,GAAAA,EAAAhrG,KACAirG,EAAAC,GAGA,OAAAlrG,IA26PAp6E,EAAAq5K,mBAAAjW,GACApjK,EAAAojK,aAAAA,GACApjK,EAAA4wG,WAAAA,GACA5wG,EAAAqrE,sBAAAA,EACArrE,EAAAsrE,sBAAAA,EACAtrE,EAAA2xG,YAAAA,GACA3xG,EAAAqoL,kBAAAA,GACAroL,EAAAyrE,wBAAAA,EACAzrE,EAAA0rE,wBAAAA,EACA1rE,EAAAiqK,iBAAAA,GACAjqK,EAAAoqK,kBAAAA,GACApqK,EAAAq/K,iBAAAA,GACAr/K,EAAA+0M,aAlumCA,EAmumCA/0M,EAAAg1M,cAlumCA,EAmumCAh1M,EAAAi1M,kBAlumCA,EAmumCAj1M,EAAAk1M,aAtumCA,EAuumCAl1M,EAAA+lK,MAAAA,GACA/lK,EAAAkpL,UAAAA,GACAlpL,EAAAm1M,eAvtmCA,EAwtmCAn1M,EAAAo1M,kBAvrmCA,EAwrmCAp1M,EAAAs5K,uBAAAhX,GACAtiK,EAAAsiK,iBAAAA,GACAtiK,EAAAq1M,YAv8EA,MACAzmI,YAAA/3D,EAAA,EAAA4+D,EAAA,EAAAp0E,EAAA,GAOA,OANAtF,KAAA8a,OAAAA,EAEA9a,KAAA05E,MAAAA,EAEA15E,KAAAsF,EAAAA,EAEAtF,KAGA6yE,IAAA/3D,EAAA4+D,EAAAp0E,GAIA,OAHAtF,KAAA8a,OAAAA,EACA9a,KAAA05E,MAAAA,EACA15E,KAAAsF,EAAAA,EACAtF,KAGA6yE,KAAA0mI,GAIA,OAHAv5M,KAAA8a,OAAAy+L,EAAAz+L,OACA9a,KAAA05E,MAAA6/H,EAAA7/H,MACA15E,KAAAsF,EAAAi0M,EAAAj0M,EACAtF,KAGA6yE,eAAAxwE,GACA,OAAArC,KAAAw5M,uBAAAn3M,EAAAmF,EAAAnF,EAAAiD,EAAAjD,EAAA48B,GAGA4zC,uBAAArrE,EAAAlC,EAAA25B,GAIA,OAHAj/B,KAAA8a,OAAA5U,KAAA+F,KAAAzE,EAAAA,EAAAy3B,EAAAA,GACAj/B,KAAA05E,MAAAxzE,KAAAuwB,MAAAjvB,EAAAy3B,GACAj/B,KAAAsF,EAAAA,EACAtF,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,QAm6EAiE,EAAAy+J,YAAAA,GACAz+J,EAAAs3H,mBAAAA,GACAt3H,EAAAy3H,cAAAA,GACAz3H,EAAA2oL,kBAAAA,GACA3oL,EAAAw1M,UAx3CA,MAEA5mI,mBAAApyE,GAMAytM,GAAA,GAAAztM,EACA,MAAA+G,EAAA2mM,GAAA,GACA,IAAAr1C,EAAAtxJ,GAAA,GAAA,MAGAslB,EAAAtlB,GAAA,GAAA,KAGA,MAAAqlB,EAAArlB,GAAA,GAAA,IAMA,OAAAqlB,EAAA,IAAAisI,EAGAjsI,EAAA,KACAisI,GAAA,MAIAA,IAAA,KAAAjsI,EAAA,EAAA,IAAA,QAAArlB,EACAsxJ,GAKAjsI,EAAA,KACAC,GAAA,KAIAgsI,IAAAhsI,GAAA,IAAAD,IAAAC,GAAA,IAAAD,EAAA,GACAisI,IAGAA,GAAAjsI,EAAA,KAAA,GAAAC,GAAA,EAIAgsI,GAAA,EAAAhsI,EACAgsI,KAu0CA70J,EAAAy1M,mBA3kmCA,KA4kmCAz1M,EAAA01M,uBA1kmCA,MA2kmCA11M,EAAAqmL,sBAAAA,GACArmL,EAAA4sE,YAAAA,EACA5sE,EAAA6sE,mBAAAA,EACA7sE,EAAA+hK,aAAAA,GACA/hK,EAAAwsL,iBAAAA,GACAxsL,EAAA21M,uBA31DA,cAAA/oH,GACAhe,YAAAs7D,EAAA/qF,EAAAziC,GACAs6D,QACAj7E,KAAAmuI,MAAAA,EACAnuI,KAAAmuI,MAAAx7C,oBACA3yF,KAAA29B,OAAAwwG,EAAApqD,YACA/jF,KAAAq7E,kBAAA,EACAr7E,KAAA2gB,MAAAA,OACAymB,IAAAgc,IAAAA,EAAA,GACA,IAAA6iC,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA,EAAA/lD,EAAAA,EAAA,EAAAA,EAAAA,EAAA,EAAAA,GAAAA,EAAA,GAAAA,GAAAA,EAAA,GAAAA,EAAAA,EAAA,GAAA,IACA,MAAAgxC,EAAA,IAAAg3C,GAAA,CACAn0C,KAAA,EACAgC,YAAA,IAEAj5F,KAAA65M,WAAA,IAAA31C,GAAAj+E,EAAAmO,GACAp0F,KAAAsd,IAAAtd,KAAA65M,YACA5zH,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IACAnpG,KAAA85M,WAAA,IAAA51C,GAAAj+E,EAAAmO,GACAp0F,KAAAsd,IAAAtd,KAAA85M,YACA95M,KAAAijD,SAGA4vB,UACA7yE,KAAA65M,WAAA5zH,SAAAxH,UACAz+E,KAAA65M,WAAAzlH,SAAA3V,UACAz+E,KAAA85M,WAAA7zH,SAAAxH,UACAz+E,KAAA85M,WAAA1lH,SAAA3V,UAGA5L,SACAm6H,GAAA/6G,sBAAAjyF,KAAAmuI,MAAApqD,aAEAkpH,GAAAh7G,sBAAAjyF,KAAAmuI,MAAAh/H,OAAA40E,aAEAmpH,GAAA/2H,WAAA82H,GAAAD,IAEAhtM,KAAA65M,WAAAznH,OAAA66G,SAEA7lK,IAAApnC,KAAA2gB,OACA3gB,KAAA65M,WAAAzlH,SAAAzzE,MAAAsE,IAAAjlB,KAAA2gB,OACA3gB,KAAA85M,WAAA1lH,SAAAzzE,MAAAsE,IAAAjlB,KAAA2gB,SAEA3gB,KAAA65M,WAAAzlH,SAAAzzE,MAAA9O,KAAA7R,KAAAmuI,MAAAxtH,OACA3gB,KAAA85M,WAAA1lH,SAAAzzE,MAAA9O,KAAA7R,KAAAmuI,MAAAxtH,QAGA3gB,KAAA85M,WAAA1nH,OAAA66G,IACAjtM,KAAA85M,WAAA/iL,MAAAkI,EAAAiuK,GAAA7sM,WA2yDA4D,EAAA+gL,oBAAAA,GACA/gL,EAAAu5K,2BAAA7U,GACA1kK,EAAA0kK,qBAAAA,GACA1kK,EAAA81M,WApvmCA,EAqvmCA91M,EAAA+1M,eAjumCA,IAkumCA/1M,EAAAg2M,eAhumCA,IAiumCAh2M,EAAAi2M,uBA/xCA,SAAA/1I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,8HACA,IAAAo5F,GAAAnjC,EAAAojC,GAAAi4D,SAAA9sF,KA8xCAzuE,EAAAk2M,iBAvkmCA,MAwkmCAl2M,EAAAyuE,iBAAAA,GACAzuE,EAAAm2M,iBA5kmCA,MA6kmCAn2M,EAAA+kK,cAAAA,GACA/kK,EAAAo2M,YApuCA,SAAApoJ,EAAA6zC,GAEA,OADA73F,QAAAC,KAAA,wEACA,IAAAy2J,GAAA,IAAAqE,GAAA/2G,EAAAg0B,UAAA,IAAAmlD,GAAA,CACAzqH,WAAAymB,IAAA0+D,EAAAA,EAAA,aAkuCA7hG,EAAAsnK,aAAAA,GACAtnK,EAAAq2M,WAjumCA,EAkumCAr2M,EAAAs2M,iBA3lmCA,IA4lmCAt2M,EAAAurE,iCAAAA,EACAvrE,EAAAwrE,iCAAAA,EACAxrE,EAAAorF,MAAAA,GACAprF,EAAA2uE,gBAAAA,GACA3uE,EAAAw5K,sBAAA1J,GACA9vK,EAAA8vK,gBAAAA,GACA9vK,EAAAu2M,WA51CA,EA61CAv2M,EAAA8mL,WAAAA,GACA9mL,EAAAw2M,YAvwmCA,EAwwmCAx2M,EAAAglG,uBAAAA,GACAhlG,EAAAy2M,iBAlxCA,SAAAv2I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,4FACA,IAAAi7F,GAAAhlC,EAAAojC,IAixCAtjG,EAAAklG,uBAAAA,GACAllG,EAAA02M,iBAhxCA,SAAAx2I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,4FACA,IAAAm7F,GAAAllC,EAAAojC,IA+wCAtjG,EAAAolG,uBAAAA,GACAplG,EAAAusE,UAAAA,EACAvsE,EAAAi7J,IAAAA,GACAj7J,EAAAg7J,QAAAA,GACAh7J,EAAAwxL,KAAAA,GACAxxL,EAAA22M,WAz3KA,cAAArwB,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAmqL,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAAj/K,EAAA68K,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAZ,GACA,IAAAugK,EAEA,IACAA,EAAAx/J,KAAAgxF,MAAA/xF,GACA,MAAAoqB,GACA5e,QAAAC,KAAA,yFACA80J,EAAAx/J,KAAAgxF,MAAA/xF,EAAAmhB,UAAA,GAAAnhB,EAAApC,OAAA,IAGA,MAAAi7K,EAAAztK,EAAA2mF,MAAAwuE,GACAqmB,GAAAA,EAAA/N,KACAgO,EAAAC,GAGA12G,MAAAmwF,GACA,OAAA,IAAAyyB,GAAAzyB,KA+1KA/+J,EAAA42M,UArxmCA,EAsxmCA52M,EAAAszG,QAAAA,GACAtzG,EAAAsnM,kBAAAA,GACAtnM,EAAA62M,MAnmmCA,MAommCA72M,EAAA0uE,MAAAA,GACA1uE,EAAAkuE,cAAAA,EACAluE,EAAA82M,aA1vmCA,EA2vmCA92M,EAAA+2M,kBA5vmCA,EA6vmCA/2M,EAAAg3M,wBAnnmCA,IAonmCAh3M,EAAAi3M,mBAtnmCA,IAunmCAj3M,EAAA8oM,WAAAA,GACA9oM,EAAAslJ,MAAAA,GACAtlJ,EAAAwsE,cAAAA,EACAxsE,EAAAmrL,gBAAAA,GACAnrL,EAAAk3M,sBAhiEA,cAAAtqH,GACAhe,YAAAs7D,EAAA/qF,EAAAziC,GACAs6D,QACAj7E,KAAAmuI,MAAAA,EACAnuI,KAAAmuI,MAAAx7C,oBACA3yF,KAAA29B,OAAAwwG,EAAApqD,YACA/jF,KAAAq7E,kBAAA,EACAr7E,KAAA2gB,MAAAA,EACA,MAAAslE,EAAA,IAAA2zF,GAAAx2H,GACA6iC,EAAA5a,QAAA,GAAAnlE,KAAA2F,IACA7L,KAAAo0F,SAAA,IAAA6S,GAAA,CACArK,WAAA,EACA3F,KAAA,EACAgC,YAAA,SAEA7xD,IAAApnC,KAAA2gB,QAAA3gB,KAAAo0F,SAAA+C,cAAA,GACA,MAAAniF,EAAAixE,EAAAr2E,aAAA,YACA8Q,EAAA,IAAA0oF,aAAA,EAAAp0F,EAAA6pE,OACAoH,EAAAz1D,aAAA,QAAA,IAAA82E,GAAA5mF,EAAA,IACA1gB,KAAAsd,IAAA,IAAAgyF,GAAArpB,EAAAjmF,KAAAo0F,WACAp0F,KAAAijD,SAGA4vB,UACA7yE,KAAAyqB,SAAA,GAAAw7D,SAAAxH,UACAz+E,KAAAyqB,SAAA,GAAA2pE,SAAA3V,UAGA5L,SACA,MAAAujC,EAAAp2G,KAAAyqB,SAAA,GAEA,QAAA2c,IAAApnC,KAAA2gB,MACA3gB,KAAAo0F,SAAAzzE,MAAAsE,IAAAjlB,KAAA2gB,WACA,CACA,MAAAD,EAAA01F,EAAAnwB,SAAAr2E,aAAA,SAEAi9L,GAAAh7L,KAAA7R,KAAAmuI,MAAAxtH,OAEAmsL,GAAAj7L,KAAA7R,KAAAmuI,MAAAtnB,aAEA,IAAA,IAAAlmH,EAAA,EAAA4P,EAAAmQ,EAAAm+D,MAAAl+E,EAAA4P,EAAA5P,IAAA,CACA,MAAAggB,EAAAhgB,EAAA4P,EAAA,EAAAs8L,GAAAC,GACApsL,EAAAqnF,OAAApnG,EAAAggB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,GAGAoY,EAAA47D,aAAA,EAGA85B,EAAAhkB,OAAAw6G,GAAA36G,sBAAAjyF,KAAAmuI,MAAApqD,aAAAinB,YAi/DA/mG,EAAAqzL,qBAAAA,GACArzL,EAAAy5K,0BAAAnE,GACAt1K,EAAAs1K,oBAAAA,GACAt1K,EAAAsuL,kBAAAA,GACAtuL,EAAAkoL,YAAAA,GACAloL,EAAA61E,WAAAA,GACA71E,EAAAkoM,sBAAAA,GACAloM,EAAAm3M,mBA5omCA,KA6omCAn3M,EAAAo3M,uBA3omCA,MA4omCAp3M,EAAAi/J,yBAAAA,GACAj/J,EAAAwtL,wBAAAA,GACAxtL,EAAAqnM,2BAAAA,GACArnM,EAAAs/J,cAAAA,GACAt/J,EAAAq3M,eAv0CA,SAAAn3I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,wFACA,IAAAu6F,GAAAtkC,EAAAojC,IAs0CAtjG,EAAAwkG,qBAAAA,GACAxkG,EAAAs3M,eAj0CA,SAAAp3I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,wFACA,IAAA26F,GAAA1kC,EAAAojC,IAg0CAtjG,EAAA4kG,qBAAAA,GACA5kG,EAAAu3M,cAv1CA,SAAAr3I,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,sFACA,IAAAi6F,GAAAhkC,EAAAojC,IAs1CAtjG,EAAAkkG,oBAAAA,GACAlkG,EAAAw3M,QAnvmCA,KAovmCAx3M,EAAAm7J,kBAAAA,GACAn7J,EAAA07J,2BAAAA,GACA17J,EAAAk+K,YAAAA,GACAl+K,EAAAwtE,oBAAAA,EACAxtE,EAAAytE,kBAAAA,EACAztE,EAAA0tE,kBAAAA,EACA1tE,EAAAy3M,gBA3pmCA,KA4pmCAz3M,EAAA03M,WAhNA,WACA1tM,QAAApK,MAAA,uCAgNAI,EAAAuuE,cAAAA,GACAvuE,EAAAghL,cAAAA,GACAhhL,EAAAk9J,IAAAA,GACAl9J,EAAA05K,oBAAAnE,GACAv1K,EAAAu1K,cAAAA,GACAv1K,EAAA2rF,OAAAA,GACA3rF,EAAA23M,UAvMA,WACA3tM,QAAApK,MAAA,yEAuMAI,EAAA43M,UA1ymCA,EA2ymCA53M,EAAA63M,eA1ymCA,EA2ymCA73M,EAAA83M,qBAlqmCA,IAmqmCA93M,EAAA+3M,gBArqmCA,IAsqmCA/3M,EAAAkrL,MAAAA,GACAlrL,EAAA+sL,WAAAA,GACA/sL,EAAAigK,KAAAA,GACAjgK,EAAA8nM,MAAAA,GACA9nM,EAAAmnI,kBAAAA,GACAnnI,EAAAsqK,UAAAA,GACAtqK,EAAAwqK,WAAAA,GACAxqK,EAAAonI,mBAAAA,GACApnI,EAAA2gK,SAAAA,GACA3gK,EAAAg4M,WA16CA,EA26CAh4M,EAAA0gK,aAAAA,GACA1gK,EAAAi4M,UA76CA,EA86CAj4M,EAAAguE,eAAAA,EACAhuE,EAAAisE,aAAAA,EACAjsE,EAAA0gL,kBAAAA,GACA1gL,EAAAk4M,yBA3xmCA,KA4xmCAl4M,EAAAm4M,0BA9xmCA,KA+xmCAn4M,EAAAmsE,yBAAAA,EACAnsE,EAAAksE,0BAAAA,EACAlsE,EAAAo4M,kBAvzmCA,EAwzmCAp4M,EAAAsmL,OAAAA,GACAtmL,EAAAmtL,YAAAA,GACAntL,EAAAmlL,eAAAA,GACAnlL,EAAAq4M,eA9smCA,KA+smCAr4M,EAAAs4M,SAjumCA,KAkumCAt4M,EAAAu4M,aAhumCA,KAiumCAv4M,EAAAw4M,WAlumCA,KAmumCAx4M,EAAAy4M,qBAtxmCA,KAuxmCAz4M,EAAA04M,gBAxxmCA,KAyxmCA14M,EAAA24M,MA93mCA,CACAC,KAAA,EACAC,OAAA,EACAC,MAAA,EACAC,OAAA,EACAC,MAAA,EACAC,IAAA,GAy3mCAj5M,EAAA+yF,SAAAA,GACA/yF,EAAAgtL,eAAAA,GACAhtL,EAAAiC,KAAA6tE,GACA9vE,EAAA8vE,UAAAA,GACA9vE,EAAA+yE,QAAAA,GACA/yE,EAAA0nF,QAAAA,GACA1nF,EAAAk5M,YAh2mCA,IAi2mCAl5M,EAAAqrG,KAAAA,GACArrG,EAAAgjG,kBAAAA,GACAhjG,EAAA0mI,kBAAAA,GACA1mI,EAAA2mI,qBAAAA,GACA3mI,EAAAm5M,iBAt8CA,SAAArqH,GAEA,OADA9kF,QAAAC,KAAA,kEACA6kF,GAq8CA9uF,EAAA6mI,oBAAAA,GACA7mI,EAAAknI,mBAAAA,GACAlnI,EAAA4mI,mBAAAA,GACA5mI,EAAA8mI,kBAAAA,GACA9mI,EAAAinI,qBAAAA,GACAjnI,EAAAgnI,qBAAAA,GACAhnI,EAAA+mI,iBAAAA,GACA/mI,EAAAo5M,YA92mCA,IA+2mCAp5M,EAAA6rE,uBAAAA,EACA7rE,EAAAq5M,aA11mCA,EA21mCAr5M,EAAAs5M,cA78CA,SAAAxqH,EAAA,IASA,OARA9kF,QAAAC,KAAA,+DACA6kF,EAAAyqH,iBAAA,EACAzqH,EAAAA,UAAAA,EAEAA,EAAArU,MAAA,WACA,OAAAqU,EAAAriF,SAGAqiF,GAq8CA9uF,EAAAw5M,iBAv3mCA,EAw3mCAx5M,EAAAy5M,kBA91mCA,EA+1mCAz5M,EAAA8rE,cAAAA,EACA9rE,EAAA05M,0BAz0mCA,KA00mCA15M,EAAA25M,2BA50mCA,KA60mCA35M,EAAAgsE,0BAAAA,EACAhsE,EAAA+rE,2BAAAA,EACA/rE,EAAA45M,WA52mCA,EA62mCA55M,EAAA65M,iBApumCA,IAqumCA75M,EAAA85M,WAp4mCA,EAq4mCA95M,EAAA+5M,SA/9CA,EAg+CA/5M,EAAAg6M,cAr2mCA,EAs2mCAh6M,EAAA8tE,yBAAAA,EACA9tE,EAAAi6M,eAv4mCA,EAw4mCAj6M,EAAAk6M,cA52mCA,EA62mCAl6M,EAAAm6M,oBAtumCA,IAuumCAn6M,EAAA0iL,oBAAAA,GACA1iL,EAAA4sF,SAAAA,GACA5sF,EAAAo6M,aA5jNA,cAAA9zB,GACA13G,YAAA23G,GACAvvG,MAAAuvG,GAGA33G,KAAAxvE,EAAAgmL,EAAAC,EAAAC,GACA,MAAA17K,EAAA7N,KACAs2C,EAAA,KAAAt2C,KAAAs2C,KAAA86I,GAAAkd,eAAAjrM,GAAArD,KAAAs2C,KACAt2C,KAAA2qL,aAAA3qL,KAAA2qL,cAAAr0I,EACA,MAAA6zI,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAA9sL,KAAA0qL,iBACAP,EAAA52H,KAAAlwD,GAAA,SAAAZ,GACA,IAAAugK,EAAA,KAEA,IACAA,EAAAx/J,KAAAgxF,MAAA/xF,GACA,MAAAoB,GAGA,YAFAujC,IAAAmiJ,GAAAA,EAAA1lL,QACAoK,QAAApK,MAAA,mCAAAR,EAAA,IAAAQ,EAAAuK,SAIA,MAAA4tE,EAAAgnF,EAAAhnF,cAEA50C,IAAA40C,QAAA50C,IAAA40C,EAAAj8E,MAAA,aAAAi8E,EAAAj8E,KAAAokB,cAKAtW,EAAA2mF,MAAAwuE,EAAAqmB,GAJAp7K,QAAApK,MAAA,kCAAAR,KAKAimL,EAAAC,GAGA12G,gBAAAxvE,EAAAimL,GACA,MACAhzI,EAAA,KAAAt2C,KAAAs2C,KAAA86I,GAAAkd,eAAAjrM,GAAArD,KAAAs2C,KACAt2C,KAAA2qL,aAAA3qL,KAAA2qL,cAAAr0I,EACA,MAAA6zI,EAAA,IAAAY,GAAA/qL,KAAAwqL,SACAL,EAAAsC,QAAAzsL,KAAAs2C,MACA6zI,EAAA8B,iBAAAjsL,KAAA4qL,eACAT,EAAA2C,mBAAA9sL,KAAA0qL,iBACA,MAAAjoL,QAAA0nL,EAAAm0B,UAAAj7M,EAAAimL,GACAtmB,EAAAx/J,KAAAgxF,MAAA/xF,GACAu5E,EAAAgnF,EAAAhnF,SAEA,QAAA50C,IAAA40C,QAAA50C,IAAA40C,EAAAj8E,MAAA,aAAAi8E,EAAAj8E,KAAAokB,cACA,MAAA,IAAA2lC,MAAA,kCAAAzmD,GAGA,aAfArD,KAeAu+M,WAAAv7C,GAGAnwF,MAAAmwF,EAAAqmB,GACA,MAAAt/J,EAAA/pB,KAAAw+M,gBAAAx7C,EAAAj5I,YACAipE,EAAAhzF,KAAAy+M,YAAAz7C,EAAAhwE,QACAF,EAAA9yF,KAAA0+M,gBAAA17C,EAAAlwE,WAAAE,GACA3jC,EAAArvD,KAAA2+M,YAAA37C,EAAA3zG,QAAA,gBACAjoB,IAAAiiJ,GAAAA,EAAAp3H,MAEA6pB,EAAA97E,KAAA4+M,cAAA57C,EAAAlnF,SAAAzsB,GACA0jC,EAAA/yF,KAAA6+M,eAAA77C,EAAAjwE,UAAAjX,GACA7pB,EAAAjyD,KAAA8+M,YAAA97C,EAAA/wG,OAAA6gC,EAAAC,EAAAjX,EAAA/xD,GACAkpE,EAAAjzF,KAAA++M,eAAA/7C,EAAA/vE,UAAAhhC,GAGA,GAFAjyD,KAAAg/M,cAAA/sJ,EAAAghC,QAEA7rD,IAAAiiJ,EAAA,CACA,IAAA41B,GAAA,EAEA,IAAA,MAAA/jI,KAAA7rB,EACA,GAAAA,EAAA6rB,aAAAqB,iBAAA,CACA0iI,GAAA,EACA,OAIA,IAAAA,GAAA51B,EAAAp3H,GAGA,OAAAA,EAGA4gB,iBAAAmwF,GACA,MAAAj5I,EAAA/pB,KAAAw+M,gBAAAx7C,EAAAj5I,YACAipE,EAAAhzF,KAAAy+M,YAAAz7C,EAAAhwE,QACAF,EAAA9yF,KAAA0+M,gBAAA17C,EAAAlwE,WAAAE,GACA3jC,QAAArvD,KAAAk/M,iBAAAl8C,EAAA3zG,QACAysB,EAAA97E,KAAA4+M,cAAA57C,EAAAlnF,SAAAzsB,GACA0jC,EAAA/yF,KAAA6+M,eAAA77C,EAAAjwE,UAAAjX,GACA7pB,EAAAjyD,KAAA8+M,YAAA97C,EAAA/wG,OAAA6gC,EAAAC,EAAAjX,EAAA/xD,GACAkpE,EAAAjzF,KAAA++M,eAAA/7C,EAAA/vE,UAAAhhC,GAEA,OADAjyD,KAAAg/M,cAAA/sJ,EAAAghC,GACAhhC,EAGA4gB,YAAAmwF,GACA,MAAAhwE,EAAA,GAEA,QAAA5rD,IAAA47H,EACA,IAAA,IAAAriK,EAAA,EAAA4P,EAAAyyJ,EAAA3iK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAozF,GAAA,IAAAi7F,IAAA7iB,SAAAnJ,EAAAriK,IACAqyF,EAAAe,EAAA7Y,MAAA6Y,EAIA,OAAAf,EAGAngB,eAAAmwF,EAAA/wG,GACA,MAAAghC,EAAA,GACA64C,EAAA,GAMA,GAJA75E,EAAAugC,UAAA,SAAApgF,GACAA,EAAAqwJ,SAAA32B,EAAA15H,EAAA8oE,MAAA9oE,WAGAg1B,IAAA47H,EACA,IAAA,IAAAriK,EAAA,EAAA4P,EAAAyyJ,EAAA3iK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAwzF,GAAA,IAAA0uE,IAAAsJ,SAAAnJ,EAAAriK,GAAAmrI,GACA74C,EAAAkB,EAAAjZ,MAAAiZ,EAIA,OAAAlB,EAGApgB,gBAAAmwF,EAAAhwE,GACA,MAAAF,EAAA,GAEA,QAAA1rD,IAAA47H,EAAA,CACA,MAAAm8C,EAAA,IAAAztB,GAEA,IAAA,IAAA/wL,EAAA,EAAA4P,EAAAyyJ,EAAA3iK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,IAAAslF,EACA,MAAAjkF,EAAAghK,EAAAriK,GAEA,OAAAqB,EAAAjC,MACA,IAAA,iBACA,IAAA,0BACAkmF,EAAAk5H,EAAA3qH,MAAAxyF,GACA,MAEA,IAAA,WACAiM,QAAApK,MAAA,wEACA,MAEA,QACA7B,EAAAjC,QAAAo9K,GACAl3F,EAAAk3F,GAAAn7K,EAAAjC,MAAAosK,SAAAnqK,EAAAgxF,GAEA/kF,QAAAC,KAAA,kDAAAlM,EAAAjC,SAKAkmF,EAAA/K,KAAAl5E,EAAAk5E,UACA9zC,IAAAplC,EAAA9B,OAAA+lF,EAAA/lF,KAAA8B,EAAA9B,OACA,IAAA+lF,EAAAonB,uBAAAjmE,IAAAplC,EAAA0vF,WAAAzL,EAAAyL,SAAA1vF,EAAA0vF,UACAoB,EAAA9wF,EAAAk5E,MAAA+K,GAIA,OAAA6M,EAGAjgB,eAAAmwF,EAAAlnF,GACA,MAAAx4E,EAAA,GAEAyvF,EAAA,GAEA,QAAA3rD,IAAA47H,EAAA,CACA,MAAAmnB,EAAA,IAAA8G,GACA9G,EAAAi1B,YAAAtjI,GAEA,IAAA,IAAAn7E,EAAA,EAAA4P,EAAAyyJ,EAAA3iK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAqB,EAAAghK,EAAAriK,GAEA,GAAA,kBAAAqB,EAAAjC,KAAA,CAEA,MAAAokE,EAAA,GAEA,IAAA,IAAAlqD,EAAA,EAAAA,EAAAjY,EAAA+wF,UAAA1yF,OAAA4Z,IAAA,CACA,MAAAm6E,EAAApyF,EAAA+wF,UAAA94E,QAEAmtB,IAAA9jC,EAAA8wF,EAAAlZ,QACA53E,EAAA8wF,EAAAlZ,MAAAivG,EAAA31F,MAAAJ,IAGAjwB,EAAA3jE,KAAA8C,EAAA8wF,EAAAlZ,OAGA6X,EAAA/wF,EAAAk5E,MAAA/W,YAEA/8B,IAAA9jC,EAAAtB,EAAAk5E,QACA53E,EAAAtB,EAAAk5E,MAAAivG,EAAA31F,MAAAxyF,IAGA+wF,EAAA/wF,EAAAk5E,MAAA53E,EAAAtB,EAAAk5E,OAKA,OAAA6X,EAGAlgB,gBAAAmwF,GACA,MAAAj5I,EAAA,GAEA,QAAAqd,IAAA47H,EACA,IAAA,IAAAriK,EAAA,EAAAA,EAAAqiK,EAAA3iK,OAAAM,IAAA,CACA,MAAAqB,EAAAghK,EAAAriK,GACAs/K,EAAAgH,GAAAzyF,MAAAxyF,GACA+nB,EAAAk2J,EAAA/kG,MAAA+kG,EAIA,OAAAl2J,EAGA8oD,YAAAmwF,EAAAqmB,GACA,MAAAx7K,EAAA7N,KACAqvD,EAAA,GACA,IAAA86H,EAYA,SAAAk1B,EAAA1vJ,GACA,GAAA,iBAAAA,EAAA,CACA,MAAAtsD,EAAAssD,EAEA,OAdA,SAAAtsD,GAEA,OADAwK,EAAA28K,QAAAZ,UAAAvmL,GACA8mL,EAAA52H,KAAAlwD,GAAA,WACAwK,EAAA28K,QAAAX,QAAAxmL,UACA+jC,GAAA,WACAv5B,EAAA28K,QAAAV,UAAAzmL,GACAwK,EAAA28K,QAAAX,QAAAxmL,MAQAisD,CADA,4BAAApuC,KAAA7d,GAAAA,EAAAwK,EAAA88K,aAAAtnL,GAGA,OAAAssD,EAAA3tD,KACA,CACAA,KAAAynG,GAAA95C,EAAA5vD,KAAA4vD,EAAA3tD,MACAe,MAAA4sD,EAAA5sD,MACAu3B,OAAAq1B,EAAAr1B,QAGA,KAKA,QAAA8M,IAAA47H,GAAAA,EAAA3iK,OAAA,EAAA,CACA,MAAAmqL,EAAA,IAAApB,GAAAC,GACAc,EAAA,IAAAgC,GAAA3B,GACAL,EAAAqC,eAAAxsL,KAAAyqL,aAEA,IAAA,IAAA9pL,EAAA,EAAAqzB,EAAAgvI,EAAA3iK,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAgvD,EAAAqzG,EAAAriK,GACA0C,EAAAssD,EAAAtsD,IAEA,GAAA6J,MAAAhM,QAAAmC,GAAA,CAEAgsD,EAAAM,EAAAurB,MAAA,GAEA,IAAA,IAAAjhE,EAAA,EAAAoxF,EAAAhoG,EAAAhD,OAAA4Z,EAAAoxF,EAAApxF,IAAA,CACA,MACAqlM,EAAAD,EADAh8M,EAAA4W,IAGA,OAAAqlM,IACAA,aAAA/iI,iBACAltB,EAAAM,EAAAurB,MAAA16E,KAAA8+M,GAGAjwJ,EAAAM,EAAAurB,MAAA16E,KAAA,IAAAkiK,GAAA48C,EAAAt9M,KAAAs9M,EAAAv8M,MAAAu8M,EAAAhlL,eAIA,CAEA,MAAAglL,EAAAD,EAAA1vJ,EAAAtsD,KAEA,OAAAi8M,IACAjwJ,EAAAM,EAAAurB,MAAAokI,KAMA,OAAAjwJ,EAGAwjB,uBAAAmwF,GACA,MAAAn1J,EAAA7N,KACAqvD,EAAA,GACA,IAAA86H,EAEA/7B,eAAAixD,EAAA1vJ,GACA,GAAA,iBAAAA,EAAA,CACA,MAAAtsD,EAAAssD,EACArZ,EAAA,4BAAAp1B,KAAA7d,GAAAA,EAAAwK,EAAA88K,aAAAtnL,EACA,aAAA8mL,EAAAm0B,UAAAhoK,GAEA,OAAAqZ,EAAA3tD,KACA,CACAA,KAAAynG,GAAA95C,EAAA5vD,KAAA4vD,EAAA3tD,MACAe,MAAA4sD,EAAA5sD,MACAu3B,OAAAq1B,EAAAr1B,QAGA,KAKA,QAAA8M,IAAA47H,GAAAA,EAAA3iK,OAAA,EAAA,CACA8pL,EAAA,IAAAgC,GAAAnsL,KAAAwqL,SACAL,EAAAqC,eAAAxsL,KAAAyqL,aAEA,IAAA,IAAA9pL,EAAA,EAAAqzB,EAAAgvI,EAAA3iK,OAAAM,EAAAqzB,EAAArzB,IAAA,CACA,MAAAgvD,EAAAqzG,EAAAriK,GACA0C,EAAAssD,EAAAtsD,IAEA,GAAA6J,MAAAhM,QAAAmC,GAAA,CAEAgsD,EAAAM,EAAAurB,MAAA,GAEA,IAAA,IAAAjhE,EAAA,EAAAoxF,EAAAhoG,EAAAhD,OAAA4Z,EAAAoxF,EAAApxF,IAAA,CACA,MAAAslM,EAAAl8M,EAAA4W,GACAqlM,QAAAD,EAAAE,GAEA,OAAAD,IACAA,aAAA/iI,iBACAltB,EAAAM,EAAAurB,MAAA16E,KAAA8+M,GAGAjwJ,EAAAM,EAAAurB,MAAA16E,KAAA,IAAAkiK,GAAA48C,EAAAt9M,KAAAs9M,EAAAv8M,MAAAu8M,EAAAhlL,eAIA,CAEA,MAAAglL,QAAAD,EAAA1vJ,EAAAtsD,KAEA,OAAAi8M,IACAjwJ,EAAAM,EAAAurB,MAAAokI,KAMA,OAAAjwJ,EAGAwjB,cAAAmwF,EAAA3zG,GACA,SAAAmwJ,EAAA1/M,EAAAC,GACA,MAAA,iBAAAD,EAAAA,GACAmO,QAAAC,KAAA,uEAAApO,GACAC,EAAAD,IAGA,MAAAg8E,EAAA,GAEA,QAAA10C,IAAA47H,EACA,IAAA,IAAAriK,EAAA,EAAA4P,EAAAyyJ,EAAA3iK,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAqB,EAAAghK,EAAAriK,GAUA,IAAA09E,OARAj3C,IAAAplC,EAAA2tD,OACA1hD,QAAAC,KAAA,+CAAAlM,EAAAk5E,WAGA9zC,IAAAioB,EAAArtD,EAAA2tD,QACA1hD,QAAAC,KAAA,sCAAAlM,EAAA2tD,OAIA,MAAAA,EAAAN,EAAArtD,EAAA2tD,OAEAziD,MAAAhM,QAAAyuD,IACA0uB,EAAA,IAAAu3B,GAAAjmD,GACA,IAAAA,EAAAtvD,SAAAg+E,EAAA/B,aAAA,KAGA+B,EADA1uB,GAAAA,EAAA3tD,KACA,IAAA0gK,GAAA/yG,EAAA3tD,KAAA2tD,EAAA5sD,MAAA4sD,EAAAr1B,QAEA,IAAAigD,GAAA5qB,GAGAA,IAAA0uB,EAAA/B,aAAA,IAGA+B,EAAAnD,KAAAl5E,EAAAk5E,UACA9zC,IAAAplC,EAAA9B,OAAAm+E,EAAAn+E,KAAA8B,EAAA9B,WACAknC,IAAAplC,EAAAy4E,UAAA4D,EAAA5D,QAAA+kI,EAAAx9M,EAAAy4E,QAAA23G,UACAhrJ,IAAAplC,EAAAiV,QAAAonE,EAAApnE,OAAA0iE,UAAA33E,EAAAiV,aACAmwB,IAAAplC,EAAAyU,QAAA4nE,EAAA5nE,OAAAkjE,UAAA33E,EAAAyU,aACA2wB,IAAAplC,EAAA6X,QAAAwkE,EAAAxkE,OAAA8/D,UAAA33E,EAAA6X,aACAutB,IAAAplC,EAAAk9B,WAAAm/C,EAAAn/C,SAAAl9B,EAAAk9B,eAEAkI,IAAAplC,EAAA6wB,OACAwrD,EAAA1D,MAAA6kI,EAAAx9M,EAAA6wB,KAAA,GAAAw/J,IACAh0G,EAAAzD,MAAA4kI,EAAAx9M,EAAA6wB,KAAA,GAAAw/J,UAGAjrJ,IAAAplC,EAAAgwB,SAAAqsD,EAAArsD,OAAAhwB,EAAAgwB,aACAoV,IAAAplC,EAAAjC,OAAAs+E,EAAAt+E,KAAAiC,EAAAjC,WACAqnC,IAAAplC,EAAAg5E,WAAAqD,EAAArD,SAAAh5E,EAAAg5E,eACA5zC,IAAAplC,EAAA84E,YAAAuD,EAAAvD,UAAA0kI,EAAAx9M,EAAA84E,UAAAw3G,UACAlrJ,IAAAplC,EAAA64E,YAAAwD,EAAAxD,UAAA2kI,EAAAx9M,EAAA64E,UAAAy3G,UACAlrJ,IAAAplC,EAAA+4E,aAAAsD,EAAAtD,WAAA/4E,EAAA+4E,iBACA3zC,IAAAplC,EAAAw5E,QAAA6C,EAAA7C,MAAAx5E,EAAAw5E,YACAp0C,IAAAplC,EAAAu5E,mBAAA8C,EAAA9C,iBAAAv5E,EAAAu5E,uBACAn0C,IAAAplC,EAAAy5E,kBAAA4C,EAAA5C,gBAAAz5E,EAAAy5E,iBACAK,EAAA95E,EAAAk5E,MAAAmD,EAIA,OAAAvC,EAGAjJ,YAAA7wE,EAAA8wF,EAAAC,EAAAjX,EAAA/xD,GACA,IAAAkoC,EA4CAg0B,EAAAmO,EA1CA,SAAAqrH,EAAAv/M,GAKA,YAJAknC,IAAA0rD,EAAA5yF,IACA+N,QAAAC,KAAA,yCAAAhO,GAGA4yF,EAAA5yF,GAGA,SAAAw/M,EAAAx/M,GACA,QAAAknC,IAAAlnC,EAAA,CAEA,GAAAgN,MAAAhM,QAAAhB,GAAA,CACA,MAAAikE,EAAA,GAEA,IAAA,IAAAxjE,EAAA,EAAA4P,EAAArQ,EAAAG,OAAAM,EAAA4P,EAAA5P,IAAA,CACA,MAAAu6E,EAAAh7E,EAAAS,QAEAymC,IAAA2rD,EAAA7X,IACAjtE,QAAAC,KAAA,yCAAAgtE,GAGA/W,EAAA3jE,KAAAuyF,EAAA7X,IAGA,OAAA/W,EAOA,YAJA/8B,IAAA2rD,EAAA7yF,IACA+N,QAAAC,KAAA,yCAAAhO,GAGA6yF,EAAA7yF,IAGA,SAAAgxL,EAAAh2G,GAKA,YAJA9zC,IAAA00C,EAAAZ,IACAjtE,QAAAC,KAAA,wCAAAgtE,GAGAY,EAAAZ,GAKA,OAAAl5E,EAAAjC,MACA,IAAA,QACAkyD,EAAA,IAAAktG,QAEA/3H,IAAAplC,EAAAwgE,aACAriD,OAAA61F,UAAAh0G,EAAAwgE,YACAvQ,EAAAuQ,WAAA,IAAAkjC,GAAA1jG,EAAAwgE,YAEAvQ,EAAAuQ,WAAA0uH,EAAAlvL,EAAAwgE,kBAIAp7B,IAAAplC,EAAA0xF,cACAzhC,EAAAyhC,YAAAw9F,EAAAlvL,EAAA0xF,mBAGAtsD,IAAAplC,EAAAi1F,MACA,QAAAj1F,EAAAi1F,IAAAl3F,KACAkyD,EAAAglC,IAAA,IAAAioE,GAAAl9J,EAAAi1F,IAAAt2E,MAAA3e,EAAAi1F,IAAAjI,KAAAhtF,EAAAi1F,IAAAhI,KACA,YAAAjtF,EAAAi1F,IAAAl3F,OACAkyD,EAAAglC,IAAA,IAAAgoE,GAAAj9J,EAAAi1F,IAAAt2E,MAAA3e,EAAAi1F,IAAA86D,WAIA,MAEA,IAAA,oBACA9/F,EAAA,IAAAwhD,GAAAzxG,EAAA0xG,IAAA1xG,EAAA2xG,OAAA3xG,EAAAgtF,KAAAhtF,EAAAitF,UACA7nD,IAAAplC,EAAA4xG,QAAA3hD,EAAA2hD,MAAA5xG,EAAA4xG,YACAxsE,IAAAplC,EAAA88D,OAAA7M,EAAA6M,KAAA98D,EAAA88D,WACA13B,IAAAplC,EAAA8xG,YAAA7hD,EAAA6hD,UAAA9xG,EAAA8xG,gBACA1sE,IAAAplC,EAAA+xG,aAAA9hD,EAAA8hD,WAAA/xG,EAAA+xG,iBACA3sE,IAAAplC,EAAA6xG,OAAA5hD,EAAA4hD,KAAAnrG,OAAA26B,OAAA,GAAArhC,EAAA6xG,OACA,MAEA,IAAA,qBACA5hD,EAAA,IAAAsgE,GAAAvwH,EAAAsY,KAAAtY,EAAA+6B,MAAA/6B,EAAA66B,IAAA76B,EAAA86B,OAAA96B,EAAAgtF,KAAAhtF,EAAAitF,UACA7nD,IAAAplC,EAAA88D,OAAA7M,EAAA6M,KAAA98D,EAAA88D,WACA13B,IAAAplC,EAAA6xG,OAAA5hD,EAAA4hD,KAAAnrG,OAAA26B,OAAA,GAAArhC,EAAA6xG,OACA,MAEA,IAAA,eACA5hD,EAAA,IAAAy+H,GAAA1uL,EAAA2e,MAAA3e,EAAA+tI,WACA,MAEA,IAAA,mBACA99E,EAAA,IAAAw+H,GAAAzuL,EAAA2e,MAAA3e,EAAA+tI,WACA,MAEA,IAAA,aACA99E,EAAA,IAAAq+H,GAAAtuL,EAAA2e,MAAA3e,EAAA+tI,UAAA/tI,EAAAqa,SAAAra,EAAAikH,OACA,MAEA,IAAA,gBACAh0D,EAAA,IAAA0+H,GAAA3uL,EAAA2e,MAAA3e,EAAA+tI,UAAA/tI,EAAAe,MAAAf,EAAAs4B,QACA,MAEA,IAAA,YACA23B,EAAA,IAAA+9H,GAAAhuL,EAAA2e,MAAA3e,EAAA+tI,UAAA/tI,EAAAqa,SAAAra,EAAAw9B,MAAAx9B,EAAA0uI,SAAA1uI,EAAAikH,OACA,MAEA,IAAA,kBACAh0D,EAAA,IAAAm9H,GAAAptL,EAAA2e,MAAA3e,EAAA6kH,YAAA7kH,EAAA+tI,WACA,MAEA,IAAA,aACA99E,GAAA,IAAA++H,IAAA7kB,SAAAnqK,GACA,MAEA,IAAA,cACAikF,EAAAw5H,EAAAz9M,EAAAikF,UACAmO,EAAAsrH,EAAA19M,EAAAoyF,UACAniC,EAAA,IAAA6vG,GAAA77E,EAAAmO,QACAhtD,IAAAplC,EAAAiyF,WAAAhiC,EAAAgiC,SAAAjyF,EAAAiyF,eACA7sD,IAAAplC,EAAAkyF,YAAAjiC,EAAAiiC,WAAAva,UAAA33E,EAAAkyF,iBACA9sD,IAAAplC,EAAAmyF,WAAAliC,EAAAkiC,SAAAnyF,EAAAmyF,UACA,MAEA,IAAA,OACAlO,EAAAw5H,EAAAz9M,EAAAikF,UACAmO,EAAAsrH,EAAA19M,EAAAoyF,UACAniC,EAAA,IAAAq9C,GAAArpB,EAAAmO,GACA,MAEA,IAAA,gBACAnO,EAAAw5H,EAAAz9M,EAAAikF,UACAmO,EAAAsrH,EAAA19M,EAAAoyF,UACA,MAAAvV,EAAA78E,EAAA68E,MACAyU,EAAAtxF,EAAAsxF,eACAC,EAAAvxF,EAAAuxF,cACAthC,EAAA,IAAAsxG,GAAAt9E,EAAAmO,EAAAvV,GACA5sB,EAAAqhC,eAAA,IAAA4vE,GAAA,IAAA95D,aAAA9V,EAAAnvB,OAAA,SACA/8B,IAAAmsD,IAAAthC,EAAAshC,cAAA,IAAA2vE,GAAA,IAAA95D,aAAA7V,EAAApvB,OAAAovB,EAAAgU,WACA,MAEA,IAAA,MACAt1C,EAAA,IAAAkvG,GACA,MAEA,IAAA,OACAlvG,EAAA,IAAAiyG,GAAAu7C,EAAAz9M,EAAAikF,UAAAy5H,EAAA19M,EAAAoyF,WACA,MAEA,IAAA,WACAniC,EAAA,IAAA2yG,GAAA66C,EAAAz9M,EAAAikF,UAAAy5H,EAAA19M,EAAAoyF,WACA,MAEA,IAAA,eACAniC,EAAA,IAAA0yG,GAAA86C,EAAAz9M,EAAAikF,UAAAy5H,EAAA19M,EAAAoyF,WACA,MAEA,IAAA,aACA,IAAA,SACAniC,EAAA,IAAAgzG,GAAAw6C,EAAAz9M,EAAAikF,UAAAy5H,EAAA19M,EAAAoyF,WACA,MAEA,IAAA,SACAniC,EAAA,IAAA0uG,GAAA++C,EAAA19M,EAAAoyF,WACA,MAEA,IAAA,QACAniC,EAAA,IAAAs3F,GACA,MAEA,IAAA,OACAt3F,EAAA,IAAAuwG,GACA,MAEA,QACAvwG,EAAA,IAAA4+B,GAkCA,GA/BA5+B,EAAAipB,KAAAl5E,EAAAk5E,UACA9zC,IAAAplC,EAAA9B,OAAA+xD,EAAA/xD,KAAA8B,EAAA9B,WAEAknC,IAAAplC,EAAA27B,QACAs0B,EAAAt0B,OAAAg8C,UAAA33E,EAAA27B,aACAyJ,IAAAplC,EAAAq5E,mBAAAppB,EAAAopB,iBAAAr5E,EAAAq5E,kBACAppB,EAAAopB,kBAAAppB,EAAAt0B,OAAAk0D,UAAA5/B,EAAAj9C,SAAAi9C,EAAA0uB,WAAA1uB,EAAAl7B,cAEAqQ,IAAAplC,EAAAgT,UAAAi9C,EAAAj9C,SAAA2kE,UAAA33E,EAAAgT,eACAoyB,IAAAplC,EAAAk9B,UAAA+yB,EAAA/yB,SAAAy6C,UAAA33E,EAAAk9B,eACAkI,IAAAplC,EAAA2+E,YAAA1uB,EAAA0uB,WAAAhH,UAAA33E,EAAA2+E,iBACAv5C,IAAAplC,EAAA+0B,OAAAk7B,EAAAl7B,MAAA4iD,UAAA33E,EAAA+0B,aAGAqQ,IAAAplC,EAAAsvF,aAAAr/B,EAAAq/B,WAAAtvF,EAAAsvF,iBACAlqD,IAAAplC,EAAAuvF,gBAAAt/B,EAAAs/B,cAAAvvF,EAAAuvF,eAEAvvF,EAAAkoE,cACA9iC,IAAAplC,EAAAkoE,OAAAomE,OAAAr+E,EAAAiY,OAAAomE,KAAAtuI,EAAAkoE,OAAAomE,WACAlpG,IAAAplC,EAAAkoE,OAAAqmE,aAAAt+E,EAAAiY,OAAAqmE,WAAAvuI,EAAAkoE,OAAAqmE,iBACAnpG,IAAAplC,EAAAkoE,OAAApvD,SAAAm3C,EAAAiY,OAAApvD,OAAA9Y,EAAAkoE,OAAApvD,aACAssB,IAAAplC,EAAAkoE,OAAAsmE,SAAAv+E,EAAAiY,OAAAsmE,QAAA72D,UAAA33E,EAAAkoE,OAAAsmE,cACAppG,IAAAplC,EAAAkoE,OAAAwZ,SAAAzxB,EAAAiY,OAAAwZ,OAAA1jF,KAAA8+M,YAAA98M,EAAAkoE,OAAAwZ,eAGAt8C,IAAAplC,EAAAqvF,UAAAp/B,EAAAo/B,QAAArvF,EAAAqvF,cACAjqD,IAAAplC,EAAAwvF,gBAAAv/B,EAAAu/B,cAAAxvF,EAAAwvF,oBACApqD,IAAAplC,EAAAyvF,cAAAx/B,EAAAw/B,YAAAzvF,EAAAyvF,kBACArqD,IAAAplC,EAAA0vF,WAAAz/B,EAAAy/B,SAAA1vF,EAAA0vF,eACAtqD,IAAAplC,EAAA+tF,SAAA99B,EAAA89B,OAAAF,KAAA7tF,EAAA+tF,aAEA3oD,IAAAplC,EAAAyoB,SAAA,CACA,MAAAA,EAAAzoB,EAAAyoB,SAEA,IAAA,IAAA9pB,EAAA,EAAAA,EAAA8pB,EAAApqB,OAAAM,IACAsxD,EAAA30C,IAAAtd,KAAA8+M,YAAAr0L,EAAA9pB,GAAAmyF,EAAAC,EAAAjX,EAAA/xD,IAIA,QAAAqd,IAAAplC,EAAA+nB,WAAA,CACA,MAAA41L,EAAA39M,EAAA+nB,WAEA,IAAA,IAAAppB,EAAA,EAAAA,EAAAg/M,EAAAt/M,OAAAM,IAAA,CACA,MAAAu6E,EAAAykI,EAAAh/M,GACAsxD,EAAAloC,WAAAvpB,KAAAupB,EAAAmxD,KAIA,GAAA,QAAAl5E,EAAAjC,KAAA,MACAqnC,IAAAplC,EAAAuyI,aAAAtiF,EAAAsiF,WAAAvyI,EAAAuyI,YACA,MAAA8sB,EAAAr/J,EAAAq/J,OAEA,IAAA,IAAA9wJ,EAAA,EAAAA,EAAA8wJ,EAAAhhK,OAAAkQ,IAAA,CACA,MAAAgtJ,EAAA8D,EAAA9wJ,GACA6B,EAAA6/C,EAAAsgC,oBAAA,OAAAgrE,EAAAtrG,aAEA7qB,IAAAh1B,GACA6/C,EAAAqvG,SAAAlvJ,EAAAmrJ,EAAAlhJ,WAKA,OAAA41C,EAGA4gB,cAAA5gB,EAAAghC,GACA,IAAAvqF,OAAAg7B,KAAAuvD,GAAA5yF,QACA4xD,EAAAugC,UAAA,SAAApgF,GACA,IAAA,IAAAA,EAAA4hF,oBAAA5sD,IAAAh1B,EAAA+hF,SAAA,CACA,MAAAA,EAAAlB,EAAA7gF,EAAA+hF,eAEA/sD,IAAA+sD,EACAlmF,QAAAC,KAAA,mDAAAkE,EAAA+hF,UAEA/hF,EAAA40B,KAAAmtD,EAAA/hF,EAAA8hF,gBAQArhB,eAAA/yE,GAEA,OADAmO,QAAAC,KAAA,iFACAlO,KAAA4/M,gBAAA9/M,KAi5LAmE,EAAA47M,qBAxvmCA,EAyvmCA57M,EAAA25K,yBAAAhE,GACA31K,EAAA21K,mBAAAA,GACA31K,EAAA67M,UAr4mCA,IAs4mCA77M,EAAA87M,uBAh4mCA,IAi4mCA97M,EAAA+7M,uBA/3mCA,IAg4mCA/7M,EAAAg8M,uBAp4mCA,IAq4mCAh8M,EAAAi8M,uBAv4mCA,IAw4mCAj8M,EAAAsuH,mBAAAA,GACAtuH,EAAAk8M,aA/5mCA,EAg6mCAl8M,EAAAm8M,iBA/5mCA,EAg6mCAn8M,EAAA4vH,eAAAA,GACA5vH,EAAA45K,yBAAAhE,GACA51K,EAAA41K,mBAAAA,GACA51K,EAAAo8M,SAh+CA,SAAAjsH,GAEA,OADAnmF,QAAAC,KAAA,oDACA,IAAAyyJ,GAAAvsE,IA+9CAnwF,EAAAq8M,sBAr9CA,SAAAxsH,GAEA,OADA7lF,QAAAC,KAAA,yEACA,IAAAo9H,GAAAx3C,IAo9CA7vF,EAAAs8M,eA99CA,SAAAt6H,EAAAmO,GAEA,OADAnmF,QAAAC,KAAA,0DACA,IAAA+2J,GAAAh/E,EAAAmO,IA69CAnwF,EAAAu8M,uBAn9CA,SAAA1sH,GAEA,OADA7lF,QAAAC,KAAA,0EACA,IAAAo9H,GAAAx3C,IAk9CA7vF,EAAAgqL,KAAAA,GACAhqL,EAAAwvG,kBAAAA,GACAxvG,EAAAyyG,MAAAA,GACAzyG,EAAA65K,oBAAA7iE,GACAh3G,EAAAg3G,cAAAA,GACAh3G,EAAAw8M,YAptDA,cAAAv8C,GACArxF,YAAA2T,EAAApjC,EAAA,EAAA0iD,EAAA,UACA,MAAAnlF,EAAAmlF,EAEA7f,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAFA,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,IACAljB,EAAAykB,wBACAzvB,MAAAgL,EAAA,IAAAmlD,GAAA,CACAzqH,MAAAA,EACAs4E,YAAA,KAEAj5F,KAAAD,KAAA,cACAC,KAAAwmF,MAAAA,EACAxmF,KAAAojD,KAAAA,EACA,MACA0qD,EAAA,IAAA7D,GACA6D,EAAAt9E,aAAA,WAAA,IAAA24E,GAFA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAEA,IACA2E,EAAApD,wBACA1qG,KAAAsd,IAAA,IAAAgyF,GAAAxB,EAAA,IAAA7G,GAAA,CACAtmF,MAAAA,EACA+7C,QAAA,GACAn9C,aAAA,EACAq4E,YAAA,EACAqB,YAAA,MAIApmB,kBAAA7hE,GACA,IAAA+lB,GAAA/2B,KAAAwmF,MAAAC,SACAvgF,KAAAiO,IAAA4iB,GAAA,OAAAA,EAAA,MAEA/2B,KAAA+2B,MAAA9R,IAAA,GAAAjlB,KAAAojD,KAAA,GAAApjD,KAAAojD,KAAArsB,GACA/2B,KAAAyqB,SAAA,GAAA2pE,SAAApyD,KAAAjL,EAAA,EArvjCA,EADA,EAwvjCA/2B,KAAAoyF,OAAApyF,KAAAwmF,MAAA5B,QACA3J,MAAA0X,kBAAA3hF,KAkrDA/M,EAAAy8M,WA9+CA,SAAAz6H,EAAAmO,GAEA,OADAnmF,QAAAC,KAAA,sDACA,IAAA+2J,GAAAh/E,EAAAmO,IA6+CAnwF,EAAA08M,mBAn+CA,SAAA7sH,GAEA,OADA7lF,QAAAC,KAAA,sEACA,IAAAo9H,GAAAx3C,IAk+CA7vF,EAAAqsL,WAAAA,GACArsL,EAAA28M,iBA1uEA,cAAAtxG,GACAz8B,YAAAs7D,EAAA0yE,EAAAlgM,GAOAs6D,MANA,IAAA+/F,GAAA6lC,EAAA,EAAA,GACA,IAAA55G,GAAA,CACArK,WAAA,EACA3F,KAAA,EACAgC,YAAA,KAGAj5F,KAAAmuI,MAAAA,EACAnuI,KAAAmuI,MAAAx7C,oBACA3yF,KAAA2gB,MAAAA,EACA3gB,KAAAD,KAAA,mBACAC,KAAA29B,OAAA39B,KAAAmuI,MAAApqD,YACA/jF,KAAAq7E,kBAAA,EACAr7E,KAAAijD,SAiBA4vB,UACA7yE,KAAAimF,SAAAxH,UACAz+E,KAAAo0F,SAAA3V,UAGA5L,cACAzrC,IAAApnC,KAAA2gB,MACA3gB,KAAAo0F,SAAAzzE,MAAAsE,IAAAjlB,KAAA2gB,OAEA3gB,KAAAo0F,SAAAzzE,MAAA9O,KAAA7R,KAAAmuI,MAAAxtH,SAksEA1c,EAAAghK,OAAAA,GACAhhK,EAAAqnI,eAAAA,GACArnI,EAAA68M,gBAplEA,cAAAn8C,GACA9xF,YAAA/3D,EAAA,GAAAimM,EAAA,GAAAC,EAAA,EAAA32C,EAAA,GAAAxjE,EAAA,QAAAC,EAAA,SACAD,EAAA,IAAAnB,GAAAmB,GACAC,EAAA,IAAApB,GAAAoB,GACA,MAAAmK,EAAA,GACAvwF,EAAA,GAEA,IAAA,IAAA/f,EAAA,EAAAA,GAAAogN,EAAApgN,IAAA,CACA,MAAA0B,EAAA1B,EAAAogN,GAAA,EAAA76M,KAAA2F,IACArE,EAAAtB,KAAAmG,IAAAhK,GAAAyY,EACAmkB,EAAA/4B,KAAAiG,IAAA9J,GAAAyY,EACAm2F,EAAAzwG,KAAA,EAAA,EAAA,GACAywG,EAAAzwG,KAAAgH,EAAA,EAAAy3B,GACA,MAAAte,EAAA,EAAAhgB,EAAAkmG,EAAAC,EACApmF,EAAAlgB,KAAAmgB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,GACAoY,EAAAlgB,KAAAmgB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,GAIA,IAAA,IAAA3H,EAAA,EAAAA,GAAAqgN,EAAArgN,IAAA,CACA,MAAAggB,EAAA,EAAAhgB,EAAAkmG,EAAAC,EACAvgG,EAAAuU,EAAAA,EAAAkmM,EAAArgN,EAEA,IAAA,IAAAsZ,EAAA,EAAAA,EAAAowJ,EAAApwJ,IAAA,CAEA,IAAA5X,EAAA4X,EAAAowJ,GAAA,EAAAnkK,KAAA2F,IACArE,EAAAtB,KAAAmG,IAAAhK,GAAAkE,EACA04B,EAAA/4B,KAAAiG,IAAA9J,GAAAkE,EACA0qG,EAAAzwG,KAAAgH,EAAA,EAAAy3B,GACAve,EAAAlgB,KAAAmgB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,GAEAjG,GAAA4X,EAAA,GAAAowJ,GAAA,EAAAnkK,KAAA2F,IACArE,EAAAtB,KAAAmG,IAAAhK,GAAAkE,EACA04B,EAAA/4B,KAAAiG,IAAA9J,GAAAkE,EACA0qG,EAAAzwG,KAAAgH,EAAA,EAAAy3B,GACAve,EAAAlgB,KAAAmgB,EAAApa,EAAAoa,EAAAZ,EAAAY,EAAArY,IAIA,MAAA29E,EAAA,IAAAgkB,GACAhkB,EAAAz1D,aAAA,WAAA,IAAA24E,GAAA8H,EAAA,IACAhrB,EAAAz1D,aAAA,QAAA,IAAA24E,GAAAzoF,EAAA,IAKAu6D,MAAAgL,EAJA,IAAAmlD,GAAA,CACAj0C,cAAA,EACA8B,YAAA,KAGAj5F,KAAAD,KAAA,oBAsiEAkE,EAAA85K,yBAAAzW,GACArjK,EAAAqjK,mBAAAA,GACArjK,EAAAg9M,gBAn8JA,cAAAvoB,GACA7lH,YAAAvoC,GACA2wC,MAAA3wC,GACAtqC,KAAAkhN,OAAAlhN,KAAAioC,QAAAk5K,eACAnhN,KAAAkhN,OAAAE,aAAA,OACAphN,KAAAkhN,OAAAroB,QAAA74L,KAAA24L,MAGA9lH,YACA,OAAA7yE,KAAAkhN,OAGAruI,iBACA,OAAA7yE,KAAAkhN,OAAAG,YAGAxuI,eAAA/yE,GAEA,OADAE,KAAAkhN,OAAAG,YAAAvhN,EACAE,KAGA6yE,mBACA,OAAA7yE,KAAAkhN,OAAAI,cAGAzuI,iBAAA/yE,GAEA,OADAE,KAAAkhN,OAAAI,cAAAxhN,EACAE,KAGA6yE,mBACA,OAAA7yE,KAAAkhN,OAAAK,cAGA1uI,iBAAA/yE,GAEA,OADAE,KAAAkhN,OAAAK,cAAAzhN,EACAE,KAGA6yE,iBACA,OAAA7yE,KAAAkhN,OAAAM,YAGA3uI,eAAA/yE,GAEA,OADAE,KAAAkhN,OAAAM,YAAA1hN,EACAE,KAGA6yE,mBAAA4uI,EAAAC,EAAAC,GAIA,OAHA3hN,KAAAkhN,OAAAO,eAAAA,EACAzhN,KAAAkhN,OAAAQ,eAAAA,EACA1hN,KAAAkhN,OAAAS,cAAAA,EACA3hN,KAGA6yE,kBAAA7hE,GAEA,GADAiqE,MAAA0X,kBAAA3hF,IACA,IAAAhR,KAAAo5L,qBAAA,IAAAp5L,KAAAm5L,UAAA,OACAn5L,KAAA+jF,YAAA8N,UAAA4oG,GAAAC,GAAAC,IAEAC,GAAA31K,IAAA,EAAA,EAAA,GAAA69D,gBAAA43G,IAEA,MAAAwmB,EAAAlhN,KAAAkhN,OAEA,GAAAA,EAAAnK,UAAA,CAEA,MAAAhgM,EAAA/W,KAAAioC,QAAA8xJ,YAAA/5L,KAAAsqC,SAAAusK,UACAqK,EAAAnK,UAAAC,wBAAAvc,GAAAjzL,EAAAuP,GACAmqM,EAAAjK,UAAAD,wBAAAvc,GAAAn1L,EAAAyR,GACAmqM,EAAAhK,UAAAF,wBAAAvc,GAAAx7J,EAAAloB,GACAmqM,EAAAU,aAAA5K,wBAAApc,GAAApzL,EAAAuP,GACAmqM,EAAAW,aAAA7K,wBAAApc,GAAAt1L,EAAAyR,GACAmqM,EAAAY,aAAA9K,wBAAApc,GAAA37J,EAAAloB,QAEAmqM,EAAAzJ,YAAAhd,GAAAjzL,EAAAizL,GAAAn1L,EAAAm1L,GAAAx7J,GACAiiL,EAAAxJ,eAAA9c,GAAApzL,EAAAozL,GAAAt1L,EAAAs1L,GAAA37J,KAy3JAh7B,EAAA65L,gBAAAA,GACA75L,EAAAo3L,cAAAA,GACAp3L,EAAA0qK,qBAAAA,GACA1qK,EAAA4qK,sBAAAA,GACA5qK,EAAAi7E,WAAAA,GACAj7E,EAAA6iL,wBAAAA,GACA7iL,EAAA2iL,4BAAAA,GACA3iL,EAAAkrE,SAAAA,EACAlrE,EAAA89M,iBApymCA,KAqymCA99M,EAAA2sE,WAAAA,EACA3sE,EAAA+9M,kBAt2mCA,KAu2mCA/9M,EAAAg+M,uBAh1mCA,MAi1mCAh+M,EAAAi+M,sBAp1mCA,MAq1mCAj+M,EAAAk+M,sBAp1mCA,MAq1mCAl+M,EAAAm+M,sBAp1mCA,MAq1mCAn+M,EAAAo+M,uBAn1mCA,MAo1mCAp+M,EAAAq+M,uBAn1mCA,MAo1mCAr+M,EAAAs+M,qBAj2mCA,MAk2mCAt+M,EAAAu+M,qBAj2mCA,MAk2mCAv+M,EAAAw+M,qBAj2mCA,MAk2mCAx+M,EAAAy+M,qBAj2mCA,MAk2mCAz+M,EAAA0+M,qBAj2mCA,MAk2mCA1+M,EAAA2+M,qBAj2mCA,MAk2mCA3+M,EAAA4+M,qBAj2mCA,MAk2mCA5+M,EAAA6+M,qBAj2mCA,MAk2mCA7+M,EAAA8+M,iBA31mCA,MA41mCA9+M,EAAAutE,qBAAAA,EACAvtE,EAAAqtE,yBAAAA,EACArtE,EAAAotE,yBAAAA,EACAptE,EAAA+sE,sBAAAA,EACA/sE,EAAAgtE,sBAAAA,EACAhtE,EAAAitE,sBAAAA,EACAjtE,EAAAsuE,aAAAA,EACAtuE,EAAAmuE,aAAAA,EACAnuE,EAAA++M,WAt4mCApyI,KAu4mCA3sE,EAAA0sE,UAAAA,EACA1sE,EAAAg/M,iBAj4mCA,KAk4mCAh/M,EAAAquE,eAAAA,EACAruE,EAAAouE,cAAAA,EACApuE,EAAAi/M,gBA13mCA,MA23mCAj/M,EAAAstE,gBAAAA,EACAttE,EAAAmtE,wBAAAA,EACAntE,EAAAktE,wBAAAA,EACAltE,EAAA8sE,qBAAAA,EACA9sE,EAAAk/M,SA34mCA,KA44mCAl/M,EAAAm/M,gBA34mCA,KA44mCAn/M,EAAA2uH,kBAAAA,GACA3uH,EAAAqlF,IAAAA,GACArlF,EAAAo/M,UAp1FA,MACAxwI,YAAA52C,EAAAuF,EAAAwtD,EAAA,EAAAC,EAAA9pE,EAAAA,GACAnlB,KAAAupF,IAAA,IAAAD,GAAArtD,EAAAuF,GAEAxhC,KAAAgvF,KAAAA,EACAhvF,KAAAivF,IAAAA,EACAjvF,KAAA0jF,OAAA,KACA1jF,KAAA+vF,OAAA,IAAAH,GACA5vF,KAAA0X,OAAA,CACA43F,KAAA,GACA40D,KAAA,CACA3hJ,UAAA,GAEA4+I,IAAA,GACA8D,OAAA,CACA1iJ,UAAA,GAEAo+I,OAAA,IAIA9tF,IAAA52C,EAAAuF,GAEAxhC,KAAAupF,IAAAtkE,IAAAgX,EAAAuF,GAGAqxC,cAAAywI,EAAA5/H,GACAA,GAAAA,EAAAkxB,qBACA50G,KAAAupF,IAAAttD,OAAAg2D,sBAAAvO,EAAAK,aACA/jF,KAAAupF,IAAA/nD,UAAAvc,IAAAq+L,EAAA97M,EAAA87M,EAAAh+M,EAAA,IAAAioM,UAAA7pH,GAAAiB,IAAA3kF,KAAAupF,IAAAttD,QAAAhJ,YACAjzB,KAAA0jF,OAAAA,GACAA,GAAAA,EAAAivC,sBACA3yH,KAAAupF,IAAAttD,OAAAhX,IAAAq+L,EAAA97M,EAAA87M,EAAAh+M,GAAAo+E,EAAAsL,KAAAtL,EAAAuL,MAAAvL,EAAAsL,KAAAtL,EAAAuL,MAAAs+G,UAAA7pH,GAEA1jF,KAAAupF,IAAA/nD,UAAAvc,IAAA,EAAA,GAAA,GAAAymE,mBAAAhI,EAAAK,aACA/jF,KAAA0jF,OAAAA,GAEAz1E,QAAApK,MAAA,6CAAA6/E,EAAA3jF,MAIA8yE,gBAAA5gB,EAAAsiC,GAAA,EAAAub,EAAA,IAGA,OAFA27F,GAAAx5I,EAAAjyD,KAAA8vG,EAAAvb,GACAub,EAAAznG,KAAAmjM,IACA17F,EAGAj9B,iBAAAq1C,EAAA3zB,GAAA,EAAAub,EAAA,IACA,IAAA,IAAAnvG,EAAA,EAAA4P,EAAA23G,EAAA7nH,OAAAM,EAAA4P,EAAA5P,IACA8qM,GAAAvjF,EAAAvnH,GAAAX,KAAA8vG,EAAAvb,GAIA,OADAub,EAAAznG,KAAAmjM,IACA17F,IAgyFA7rG,EAAA0sL,cAAAA,GACA1sL,EAAAs/M,UAn5mCA,KAo5mCAt/M,EAAAu/M,iBAn5mCA,KAo5mCAv/M,EAAAw/M,oBAj8mCA,EAk8mCAx/M,EAAA2rE,eAAAA,EACA3rE,EAAAy/M,iBA70mCA,KA80mCAz/M,EAAA0/M,wBA/9mCA,IAg+mCA1/M,EAAA+5K,mBAAA5D,GACAn2K,EAAAm2K,aAAAA,GACAn2K,EAAA2/M,+BAh3mCA,MAi3mCA3/M,EAAA4/M,8BAp3mCA,MAq3mCA5/M,EAAA6/M,8BAp3mCA,MAq3mCA7/M,EAAA8/M,8BAp3mCA,MAq3mCA9/M,EAAA+/M,+BAn3mCA,MAo3mCA//M,EAAAggN,+BAn3mCA,MAo3mCAhgN,EAAAigN,6BAj4mCA,MAk4mCAjgN,EAAAkgN,6BAj4mCA,MAk4mCAlgN,EAAAmgN,6BAj4mCA,MAk4mCAngN,EAAAogN,6BAj4mCA,MAk4mCApgN,EAAAqgN,6BAj4mCA,MAk4mCArgN,EAAAsgN,6BAj4mCA,MAk4mCAtgN,EAAAugN,6BAj4mCA,MAk4mCAvgN,EAAAwgN,6BAj4mCA,MAk4mCAxgN,EAAAk7J,MAAAA,GACAl7J,EAAAwxM,WAAAA,GACAxxM,EAAAq3G,YAAAA,GACAr3G,EAAAgjH,UAAAA,GACAhjH,EAAAuuG,eAAAA,GACAvuG,EAAAsnI,eAAAA,GACAtnI,EAAA+qL,MAAAA,GACA/qL,EAAAg6K,oBAAAtD,GACA12K,EAAA02K,cAAAA,GACA12K,EAAAivL,UAAAA,GACAjvL,EAAAsvK,WAAAA,GACAtvK,EAAAygN,UAt8mCA,KAu8mCAzgN,EAAA4+J,SAAAA,GACA5+J,EAAAuoM,eAAAA,GACAvoM,EAAA69J,YAAAA,GACA79J,EAAA0gN,cAxgnCA,EAygnCA1gN,EAAAmkF,OAAAA,GACAnkF,EAAAi6K,qBAAAlD,GACA/2K,EAAA+2K,eAAAA,GACA/2K,EAAA2gN,UA5yFA,MACA/xI,YAAA/3D,EAAA,EAAAiqE,EAAA,EAAArL,EAAA,GAMA,OALA15E,KAAA8a,OAAAA,EACA9a,KAAA+kF,IAAAA,EAEA/kF,KAAA05E,MAAAA,EAEA15E,KAGA6yE,IAAA/3D,EAAAiqE,EAAArL,GAIA,OAHA15E,KAAA8a,OAAAA,EACA9a,KAAA+kF,IAAAA,EACA/kF,KAAA05E,MAAAA,EACA15E,KAGA6yE,KAAA0mI,GAIA,OAHAv5M,KAAA8a,OAAAy+L,EAAAz+L,OACA9a,KAAA+kF,IAAAw0H,EAAAx0H,IACA/kF,KAAA05E,MAAA6/H,EAAA7/H,MACA15E,KAIA6yE,WACA,MAAAmnG,EAAA,KAEA,OADAh6K,KAAA+kF,IAAA7+E,KAAAiS,IAAA6hK,EAAA9zK,KAAAC,IAAAD,KAAA2F,GAAAmuK,EAAAh6K,KAAA+kF,MACA/kF,KAGA6yE,eAAAxwE,GACA,OAAArC,KAAAw5M,uBAAAn3M,EAAAmF,EAAAnF,EAAAiD,EAAAjD,EAAA48B,GAGA4zC,uBAAArrE,EAAAlC,EAAA25B,GAWA,OAVAj/B,KAAA8a,OAAA5U,KAAA+F,KAAAzE,EAAAA,EAAAlC,EAAAA,EAAA25B,EAAAA,GAEA,IAAAj/B,KAAA8a,QACA9a,KAAA05E,MAAA,EACA15E,KAAA+kF,IAAA,IAEA/kF,KAAA05E,MAAAxzE,KAAAuwB,MAAAjvB,EAAAy3B,GACAj/B,KAAA+kF,IAAA7+E,KAAA02E,KAAA30E,GAAA3C,EAAAtF,KAAA8a,QAAA,EAAA,KAGA9a,KAGA6yE,QACA,OAAA,IAAA7yE,KAAAiJ,aAAA4I,KAAA7R,QA2vFAiE,EAAA2sL,oBAAAA,GACA3sL,EAAA8qK,YAAAA,GACA9qK,EAAA+rL,UAAAA,GACA/rL,EAAA4gN,gBA79EA,cAAAh0H,GACAhe,YAAAs7D,EAAAxtH,GACAs6D,QACAj7E,KAAAmuI,MAAAA,EACAnuI,KAAAmuI,MAAAx7C,oBACA3yF,KAAA29B,OAAAwwG,EAAApqD,YACA/jF,KAAAq7E,kBAAA,EACAr7E,KAAA2gB,MAAAA,EACA,MAAAslE,EAAA,IAAAgkB,GACA/xC,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAEA,IAAA,IAAAv3D,EAAA,EAAAsZ,EAAA,EAAA1J,EAAA,GAAA5P,EAAA4P,EAAA5P,IAAAsZ,IAAA,CACA,MAAA7T,EAAAzF,EAAA4P,EAAArK,KAAA2F,GAAA,EACAjF,EAAAqT,EAAA1J,EAAArK,KAAA2F,GAAA,EACAqsD,EAAA13D,KAAA0F,KAAAiG,IAAA/F,GAAAF,KAAAmG,IAAAjG,GAAA,EAAAF,KAAAiG,IAAAvF,GAAAV,KAAAmG,IAAAzF,GAAA,GAGAq/E,EAAAz1D,aAAA,WAAA,IAAA24E,GAAAjxC,EAAA,IACA,MAAAk8B,EAAA,IAAAg3C,GAAA,CACAn0C,KAAA,EACAgC,YAAA,IAEAj5F,KAAAw2M,KAAA,IAAA7xC,GAAA1+E,EAAAmO,GACAp0F,KAAAsd,IAAAtd,KAAAw2M,MACAx2M,KAAAijD,SAGA4vB,UACA7yE,KAAAw2M,KAAAvwH,SAAAxH,UACAz+E,KAAAw2M,KAAApiH,SAAA3V,UAGA5L,SACA7yE,KAAAmuI,MAAAx7C,oBACA,MAAAmyH,EAAA9kN,KAAAmuI,MAAA9xH,SAAArc,KAAAmuI,MAAA9xH,SAAA,IACA0oM,EAAAD,EAAA5+M,KAAAo7B,IAAAthC,KAAAmuI,MAAA3uG,OACAx/B,KAAAw2M,KAAAz/K,MAAA9R,IAAA8/L,EAAAA,EAAAD,GAEA1Y,GAAAn6G,sBAAAjyF,KAAAmuI,MAAAh/H,OAAA40E,aAEA/jF,KAAAw2M,KAAApkH,OAAAg6G,SAEAhlK,IAAApnC,KAAA2gB,MACA3gB,KAAAw2M,KAAApiH,SAAAzzE,MAAAsE,IAAAjlB,KAAA2gB,OAEA3gB,KAAAw2M,KAAApiH,SAAAzzE,MAAA9O,KAAA7R,KAAAmuI,MAAAxtH,SAi7EA1c,EAAA08J,OAAAA,GACA18J,EAAAunI,eAAAA,GACAvnI,EAAA+gN,eAngnCA,IAognCA/gN,EAAAghN,uBA9/mCA,IA+/mCAhhN,EAAAihN,eAvgnCA,IAwgnCAjhN,EAAAkhN,gBAx2mCA,MAy2mCAlhN,EAAAwuE,gBAAAA,GACAxuE,EAAAmhN,gBA72mCA,MA82mCAnhN,EAAAohN,aA9gLA,MACAxyI,cACA7yE,KAAAD,KAAA,eACAC,KAAA2zG,OAAA,EACA3zG,KAAAslN,OAAA,KACAtlN,KAAA0sJ,QAAA,IAAAj5C,GACAzzG,KAAA0sJ,QAAA38D,OAAA/hC,OAAA,GACAhuD,KAAA0sJ,QAAArxE,kBAAA,EACAr7E,KAAA2sJ,QAAA,IAAAl5C,GACAzzG,KAAA2sJ,QAAA58D,OAAA/hC,OAAA,GACAhuD,KAAA2sJ,QAAAtxE,kBAAA,EACAr7E,KAAAknC,OAAA,CACA0sE,MAAA,KACAF,IAAA,KACAC,OAAA,KACA3kB,KAAA,KACAC,IAAA,KACAnwB,KAAA,KACAwmJ,OAAA,MAIAzyI,OAAA6Q,GACA,MAAApgF,EAAAtD,KAAAknC,OAGA,GAFA5jC,EAAAswG,QAAAlwB,EAAAkwB,OAAAtwG,EAAAowG,MAAAhwB,EAAAgwB,KAAApwG,EAAAqwG,SAAAjwB,EAAAiwB,OAAA3zG,KAAA2zG,QAAArwG,EAAA0rF,OAAAtL,EAAAsL,MAAA1rF,EAAA2rF,MAAAvL,EAAAuL,KAAA3rF,EAAAw7D,OAAA4kB,EAAA5kB,MAAAx7D,EAAAgiN,SAAAtlN,KAAAslN,OAEA,CACAhiN,EAAAswG,MAAAlwB,EAAAkwB,MACAtwG,EAAAowG,IAAAhwB,EAAAgwB,IACApwG,EAAAqwG,OAAAjwB,EAAAiwB,OAAA3zG,KAAA2zG,OACArwG,EAAA0rF,KAAAtL,EAAAsL,KACA1rF,EAAA2rF,IAAAvL,EAAAuL,IACA3rF,EAAAw7D,KAAA4kB,EAAA5kB,KACAx7D,EAAAgiN,OAAAtlN,KAAAslN,OAGA,MAAAzhI,EAAAH,EAAAG,iBAAAnF,QACA6mI,EAAAjiN,EAAAgiN,OAAA,EACAE,EAAAD,EAAAjiN,EAAA0rF,KAAA1rF,EAAAswG,MACA6xG,EAAAniN,EAAA0rF,KAAA9oF,KAAAo7B,IAAA4xC,GAAA5vE,EAAAowG,IAAA,IAAApwG,EAAAw7D,KACA,IAAA4mJ,EAAAC,EAEA9tB,GAAAxhH,SAAA,KAAAkvI,EACA3tB,GAAAvhH,SAAA,IAAAkvI,EAEAG,GAAAD,EAAAniN,EAAAqwG,OAAA6xG,EACAG,EAAAF,EAAAniN,EAAAqwG,OAAA6xG,EACA3hI,EAAAxN,SAAA,GAAA,EAAA/yE,EAAA0rF,MAAA22H,EAAAD,GACA7hI,EAAAxN,SAAA,IAAAsvI,EAAAD,IAAAC,EAAAD,GACA1lN,KAAA0sJ,QAAA7oE,iBAAAhyE,KAAAgyE,GAEA6hI,GAAAD,EAAAniN,EAAAqwG,OAAA6xG,EACAG,EAAAF,EAAAniN,EAAAqwG,OAAA6xG,EACA3hI,EAAAxN,SAAA,GAAA,EAAA/yE,EAAA0rF,MAAA22H,EAAAD,GACA7hI,EAAAxN,SAAA,IAAAsvI,EAAAD,IAAAC,EAAAD,GACA1lN,KAAA2sJ,QAAA9oE,iBAAAhyE,KAAAgyE,GAGA7jF,KAAA0sJ,QAAA3oE,YAAAlyE,KAAA6xE,EAAAK,aAAA+N,SAAA+lG,IACA73L,KAAA2sJ,QAAA5oE,YAAAlyE,KAAA6xE,EAAAK,aAAA+N,SAAA8lG,MAo9KA3zL,EAAA2hN,gBA12mCA,MA22mCA3hN,EAAA4hN,gBAj3mCA,MAk3mCA5hN,EAAA6hN,gBA/2mCA,MAg3mCA7hN,EAAA8iL,oBAAAA,GACA9iL,EAAA8hN,iBAthnCA,IAuhnCA9hN,EAAA+hN,oBA3hnCA,EA4hnCA/hN,EAAAgiN,MAljnCA,CACAjJ,OAAA,EACAE,IAAA,EACAgJ,UAAA,EACAC,aAAA,GA+inCAliN,EAAAmiN,sBA34mCA,EA44mCAniN,EAAAk6K,0BAAA/C,GACAn3K,EAAAm3K,oBAAAA,GACAn3K,EAAAm6K,mBAAA/C,GACAp3K,EAAAo3K,aAAAA,GACAp3K,EAAAs2E,QAAAA,GACAt2E,EAAAgpL,cAAAA,GACAhpL,EAAAo6K,oBAAA5C,GACAx3K,EAAAw3K,cAAAA,GACAx3K,EAAAq6K,wBAAAzC,GACA53K,EAAA43K,kBAAAA,GACA53K,EAAAkxF,SAAAA,GACAlxF,EAAAoiN,oBAl6mCA,EAm6mCApiN,EAAAqiN,sBAp6mCA,EAq6mCAriN,EAAAsiN,kBAt6mCA,EAu6mCAtiN,EAAAs6K,mBAAAhC,GACAt4K,EAAAs4K,aAAAA,GACAt4K,EAAAorE,UAAAA,EACAprE,EAAAuiN,gBAzkDA,SAAAriJ,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,0FACA,IAAAy6F,GAAAxkC,EAAAojC,IAwkDAtjG,EAAA0kG,sBAAAA,GACA1kG,EAAAwiN,gBAnkDA,SAAAtiJ,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,0FACA,IAAA66F,GAAA5kC,EAAAojC,IAkkDAtjG,EAAA8kG,sBAAAA,GACA9kG,EAAAyiN,eAzlDA,SAAAviJ,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,wFACA,IAAAm6F,GAAAlkC,EAAAojC,IAwlDAtjG,EAAAokG,qBAAAA,GACApkG,EAAA0iN,sBAvlDA,SAAAxiJ,EAAAojC,GAEA,OADAt5F,QAAAC,KAAA,sGACA,IAAAq6F,GAAApkC,EAAAojC,IAslDAtjG,EAAAskG,4BAAAA,GACAtkG,EAAAonM,QAAAA,GACApnM,EAAA4/G,YAAAA,GACA5/G,EAAAquG,cAAAA,GACAruG,EAAAosE,iBAAAA,EACApsE,EAAAysE,mBAAAA,EACAzsE,EAAAssE,gBAAAA,EACAtsE,EAAA2iN,sBA7/mCA,KA8/mCA3iN,EAAA4iN,sBA7/mCA,KA8/mCA5iN,EAAA6iN,qBA7/mCA,KA8/mCA7iN,EAAAqsE,kBAAAA,EACArsE,EAAA8iN,aA1knCA,EA2knCA9iN,EAAA8xE,QAAAA,GACA9xE,EAAA2+E,QAAAA,GACA3+E,EAAA04E,QAAAA,GACA14E,EAAA+iL,oBAAAA,GACA/iL,EAAA+iN,OAznDA,SAAAx/M,EAAAlC,EAAA25B,GAEA,OADAhxB,QAAAC,KAAA,6DACA,IAAA00E,GAAAp7E,EAAAlC,EAAA25B,IAwnDAh7B,EAAAgjN,aAlqDA,EAmqDAhjN,EAAAshK,aAAAA,GACAthK,EAAA+6J,eAAAA,GACA/6J,EAAA6xG,sBAAAA,GACA7xG,EAAA26E,2BAAAA,GACA36E,EAAA86E,6BAAAA,GACA96E,EAAAg6E,kBAAAA,GACAh6E,EAAAijN,sBA9oBA,SAAAnkN,EAAAu3B,EAAA+Z,GAEA,OADApmC,QAAAC,KAAA,wGACA,IAAA4nG,GAAA/yG,EAAAsxC,IA6oBApwC,EAAAyvJ,cAAAA,GACAzvJ,EAAAyjJ,WAAAA,GACAzjJ,EAAA44K,kBAAAA,GACA54K,EAAAkjN,gBAjjDA,SAAAl1J,EAAA6zC,GAEA,OADA73F,QAAAC,KAAA,gFACA,IAAAy2J,GAAA,IAAAkY,GAAA5qH,EAAAg0B,UAAA,IAAAmlD,GAAA,CACAzqH,WAAAymB,IAAA0+D,EAAAA,EAAA,aA+iDA7hG,EAAA6tE,iBAAAA,EACA7tE,EAAAmjN,UA/hDA,SAAA58B,GAEA,OADAv8K,QAAAC,KAAA,yDACA,IAAA68K,GAAAP,IA8hDAvmL,EAAA2tE,oBAAAA,EACA3tE,EAAAojN,WA9knCA,IA+knCApjN,EAAA4tE,gBAAAA,EACA5tE,EAAAqjN,cAp8mCA,EAq8mCArjN,EAAAiuE,aAAAA,EAEAxpE,OAAAC,eAAA1E,EAAA,aAAA,CAAAnE,OAAA;;;;;;;;;;;;;;ACxnnCA,SAAAiE,EAAAC,GAEA,aAEA,iBAAAE,QAAA,iBAAAA,OAAAD,QASAC,OAAAD,QAAAF,EAAA8d,SACA7d,EAAAD,GAAA,GACA,SAAAkyE,GACA,IAAAA,EAAAp0D,SACA,MAAA,IAAAioC,MAAA,4CAEA,OAAA9lD,EAAAiyE,IAGAjyE,EAAAD,GAtBA,CA0BA,oBAAAO,OAAAA,OAAAtE,MAAA,SAAAsE,EAAAijN,GAMA,aAEA,IAAAz/K,EAAA,GAEA0/K,EAAA9+M,OAAAy9B,eAEAz1B,EAAAo3B,EAAAp3B,MAEA+2M,EAAA3/K,EAAA2/K,KAAA,SAAAtjJ,GACA,OAAAr8B,EAAA2/K,KAAAvuM,KAAAirD,IACA,SAAAA,GACA,OAAAr8B,EAAAF,OAAA5uB,MAAA,GAAAmrD,IAIA3jE,EAAAsnC,EAAAtnC,KAEAqE,EAAAijC,EAAAjjC,QAEA6iN,EAAA,GAEAhhL,EAAAghL,EAAAhhL,SAEAihL,EAAAD,EAAApkL,eAEAskL,EAAAD,EAAAjhL,SAEAmhL,EAAAD,EAAA1uM,KAAAxQ,QAEA+/B,EAAA,GAEAq/K,EAAA,SAAA/mN,GASA,MAAA,mBAAAA,GAAA,iBAAAA,EAAA2X,UACA,mBAAA3X,EAAAouD,MAIAsU,EAAA,SAAA1iE,GACA,OAAA,MAAAA,GAAAA,IAAAA,EAAAuD,QAIAud,EAAAvd,EAAAud,SAIAkmM,EAAA,CACAhoN,MAAA,EACA0jC,KAAA,EACAukL,OAAA,EACAC,UAAA,GAGA,SAAAC,EAAAC,EAAArkK,EAAA7e,GAGA,IAAAtkC,EAAAF,EACA2nN,GAHAnjL,EAAAA,GAAApjB,GAGAyR,cAAA,UAGA,GADA80L,EAAA3lN,KAAA0lN,EACArkK,EACA,IAAAnjD,KAAAonN,GAYAtnN,EAAAqjD,EAAAnjD,IAAAmjD,EAAAl0C,cAAAk0C,EAAAl0C,aAAAjP,KAEAynN,EAAA53L,aAAA7vB,EAAAF,GAIAwkC,EAAAojL,KAAA1uL,YAAAyuL,GAAA7uL,WAAAS,YAAAouL,GAIA,SAAAE,EAAAvnN,GACA,OAAA,MAAAA,EACAA,EAAA,GAIA,iBAAAA,GAAA,mBAAAA,EACA2mN,EAAAhhL,EAAAxtB,KAAAnY,KAAA,gBACAA,EAQA,IACAyH,EAAA,QAGAvH,EAAA,SAAAiyB,EAAA+U,GAIA,OAAA,IAAAhnC,EAAA4B,GAAAqa,KAAAgW,EAAA+U,IA0VA,SAAAsgL,EAAAxnN,GAMA,IAAAV,IAAAU,GAAA,WAAAA,GAAAA,EAAAV,OACAN,EAAAuoN,EAAAvnN,GAEA,OAAA+mN,EAAA/mN,KAAA0iE,EAAA1iE,KAIA,UAAAhB,GAAA,IAAAM,GACA,iBAAAA,GAAAA,EAAA,GAAAA,EAAA,KAAAU,GArWAE,EAAA4B,GAAA5B,EAAA8H,UAAA,CAGAy/M,OAAAhgN,EAEAS,YAAAhI,EAGAZ,OAAA,EAEAqP,QAAA,WACA,OAAAgB,EAAAwI,KAAAlZ,OAKA6d,IAAA,SAAAs1J,GAGA,OAAA,MAAAA,EACAziK,EAAAwI,KAAAlZ,MAIAmzK,EAAA,EAAAnzK,KAAAmzK,EAAAnzK,KAAAK,QAAAL,KAAAmzK,IAKAs1C,UAAA,SAAAC,GAGA,IAAA1yB,EAAA/0L,EAAAsxG,MAAAvyG,KAAAiJ,cAAAy/M,GAMA,OAHA1yB,EAAA2yB,WAAA3oN,KAGAg2L,GAIAn2L,KAAA,SAAA4c,GACA,OAAAxb,EAAApB,KAAAG,KAAAyc,IAGAyD,IAAA,SAAAzD,GACA,OAAAzc,KAAAyoN,UAAAxnN,EAAAif,IAAAlgB,MAAA,SAAA4oN,EAAAjoN,GACA,OAAA8b,EAAAvD,KAAA0vM,EAAAjoN,EAAAioN,QAIAl4M,MAAA,WACA,OAAA1Q,KAAAyoN,UAAA/3M,EAAAsI,MAAAhZ,KAAAwlB,aAGAwL,MAAA,WACA,OAAAhxB,KAAA2tC,GAAA,IAGA1c,KAAA,WACA,OAAAjxB,KAAA2tC,IAAA,IAGAk7K,KAAA,WACA,OAAA7oN,KAAAyoN,UAAAxnN,EAAA6nN,KAAA9oN,MAAA,SAAA+oN,EAAApoN,GACA,OAAAA,EAAA,GAAA,OAIAqoN,IAAA,WACA,OAAAhpN,KAAAyoN,UAAAxnN,EAAA6nN,KAAA9oN,MAAA,SAAA+oN,EAAApoN,GACA,OAAAA,EAAA,OAIAgtC,GAAA,SAAAhtC,GACA,IAAAmvC,EAAA9vC,KAAAK,OACA4Z,GAAAtZ,GAAAA,EAAA,EAAAmvC,EAAA,GACA,OAAA9vC,KAAAyoN,UAAAxuM,GAAA,GAAAA,EAAA61B,EAAA,CAAA9vC,KAAAia,IAAA,KAGAvT,IAAA,WACA,OAAA1G,KAAA2oN,YAAA3oN,KAAAiJ,eAKAzI,KAAAA,EACA6H,KAAAy/B,EAAAz/B,KACAmH,OAAAs4B,EAAAt4B,QAGAvO,EAAAuiC,OAAAviC,EAAA4B,GAAA2gC,OAAA,WACA,IAAA6Q,EAAAn0C,EAAAujC,EAAA5xB,EAAAo3M,EAAAvqI,EACAvvE,EAAAqW,UAAA,IAAA,GACA7kB,EAAA,EACAN,EAAAmlB,UAAAnlB,OACA6oN,GAAA,EAsBA,IAnBA,kBAAA/5M,IACA+5M,EAAA/5M,EAGAA,EAAAqW,UAAA7kB,IAAA,GACAA,KAIA,iBAAAwO,GAAA24M,EAAA34M,KACAA,EAAA,IAIAxO,IAAAN,IACA8O,EAAAnP,KACAW,KAGAA,EAAAN,EAAAM,IAGA,GAAA,OAAA0zC,EAAA7uB,UAAA7kB,IAGA,IAAAT,KAAAm0C,EACAxiC,EAAAwiC,EAAAn0C,GAIA,cAAAA,GAAAiP,IAAA0C,IAKAq3M,GAAAr3M,IAAA5Q,EAAAkoN,cAAAt3M,KACAo3M,EAAA/7M,MAAAhM,QAAA2Q,MACA4xB,EAAAt0B,EAAAjP,GAIAw+E,EADAuqI,IAAA/7M,MAAAhM,QAAAuiC,GACA,GACAwlL,GAAAhoN,EAAAkoN,cAAA1lL,GAGAA,EAFA,GAIAwlL,GAAA,EAGA95M,EAAAjP,GAAAe,EAAAuiC,OAAA0lL,EAAAxqI,EAAA7sE,SAGAu1B,IAAAv1B,IACA1C,EAAAjP,GAAA2R,IAOA,OAAA1C,GAGAlO,EAAAuiC,OAAA,CAGA4lL,QAAA,UAAA5gN,EAAAtC,KAAAkC,UAAAoP,QAAA,MAAA,IAGA6xM,SAAA,EAEAxlN,MAAA,SAAAylN,GACA,MAAA,IAAAx/J,MAAAw/J,IAGAC,KAAA,aAEAJ,cAAA,SAAApoN,GACA,IAAA4mC,EAAA6hL,EAIA,SAAAzoN,GAAA,oBAAA2lC,EAAAxtB,KAAAnY,QAIA4mC,EAAA6/K,EAAAzmN,KASA,mBADAyoN,EAAA7B,EAAAzuM,KAAAyuB,EAAA,gBAAAA,EAAA1+B,cACA2+M,EAAA1uM,KAAAswM,KAAA3B,IAGA4B,cAAA,SAAA1oN,GACA,IAAAb,EAEA,IAAAA,KAAAa,EACA,OAAA,EAEA,OAAA,GAKA2oN,WAAA,SAAAvB,EAAA9zK,EAAApP,GACAijL,EAAAC,EAAA,CAAAH,MAAA3zK,GAAAA,EAAA2zK,OAAA/iL,IAGAplC,KAAA,SAAAkB,EAAA0b,GACA,IAAApc,EAAAM,EAAA,EAEA,GAAA4nN,EAAAxnN,GAEA,IADAV,EAAAU,EAAAV,OACAM,EAAAN,IACA,IAAAoc,EAAAvD,KAAAnY,EAAAJ,GAAAA,EAAAI,EAAAJ,IADAA,UAMA,IAAAA,KAAAI,EACA,IAAA,IAAA0b,EAAAvD,KAAAnY,EAAAJ,GAAAA,EAAAI,EAAAJ,IACA,MAKA,OAAAI,GAIA4oN,UAAA,SAAA7hL,EAAAy2J,GACA,IAAAvI,EAAAuI,GAAA,GAaA,OAXA,MAAAz2J,IACAygL,EAAA7/M,OAAAo/B,IACA7mC,EAAAsxG,MAAAyjF,EACA,iBAAAluJ,EACA,CAAAA,GAAAA,GAGAtnC,EAAA0Y,KAAA88K,EAAAluJ,IAIAkuJ,GAGA4zB,QAAA,SAAAhB,EAAA9gL,EAAAnnC,GACA,OAAA,MAAAmnC,GAAA,EAAAjjC,EAAAqU,KAAA4uB,EAAA8gL,EAAAjoN,IAKA4xG,MAAA,SAAAvhF,EAAA64L,GAKA,IAJA,IAAA/5K,GAAA+5K,EAAAxpN,OACA4Z,EAAA,EACAtZ,EAAAqwB,EAAA3wB,OAEA4Z,EAAA61B,EAAA71B,IACA+W,EAAArwB,KAAAkpN,EAAA5vM,GAKA,OAFA+W,EAAA3wB,OAAAM,EAEAqwB,GAGA83L,KAAA,SAAAJ,EAAAjsM,EAAAw7C,GASA,IARA,IACA1qB,EAAA,GACA5sC,EAAA,EACAN,EAAAqoN,EAAAroN,OACAypN,GAAA7xJ,EAIAt3D,EAAAN,EAAAM,KACA8b,EAAAisM,EAAA/nN,GAAAA,KACAmpN,GACAv8K,EAAA/sC,KAAAkoN,EAAA/nN,IAIA,OAAA4sC,GAIArtB,IAAA,SAAAwoM,EAAAjsM,EAAAstM,GACA,IAAA1pN,EAAAP,EACAa,EAAA,EACAq1L,EAAA,GAGA,GAAAuyB,EAAAG,GAEA,IADAroN,EAAAqoN,EAAAroN,OACAM,EAAAN,EAAAM,IAGA,OAFAb,EAAA2c,EAAAisM,EAAA/nN,GAAAA,EAAAopN,KAGA/zB,EAAAx1L,KAAAV,QAMA,IAAAa,KAAA+nN,EAGA,OAFA5oN,EAAA2c,EAAAisM,EAAA/nN,GAAAA,EAAAopN,KAGA/zB,EAAAx1L,KAAAV,GAMA,OAAA2nN,EAAAzxB,IAIAg0B,KAAA,EAIAvhL,QAAAA,IAGA,mBAAAwhL,SACAhpN,EAAA4B,GAAAonN,OAAAC,UAAApiL,EAAAmiL,OAAAC,WAIAjpN,EAAApB,KAAA,uEAAAkQ,MAAA,MACA,SAAA5F,EAAAjK,GACAwnN,EAAA,WAAAxnN,EAAA,KAAAA,EAAAikB,iBAmBA,IAAAgmM;;;;;;;;;;;AAWA,SAAA7lN,GACA,IAAA3D,EACA8nC,EACA2hL,EACAC,EACAC,EACAC,EACAx0F,EACAt0H,EACA+oN,EACAC,EACAC,EAGAC,EACA9oM,EACA+oM,EACAC,EACAC,EACAC,EACAx9K,EACA/D,EAGA4/K,EAAA,SAAA,EAAA,IAAAjoM,KACA6pM,EAAA1mN,EAAAud,SACAopM,EAAA,EACAC,EAAA,EACAC,EAAAC,KACAC,EAAAD,KACAE,EAAAF,KACAG,EAAAH,KACAI,EAAA,SAAA1jN,EAAAQ,GAIA,OAHAR,IAAAQ,IACAoiN,GAAA,GAEA,GAIA/C,EAAA,GAAArkL,eACAwE,EAAA,GACA8T,EAAA9T,EAAA8T,IACA6vK,EAAA3jL,EAAAtnC,KACAA,EAAAsnC,EAAAtnC,KACAkQ,EAAAo3B,EAAAp3B,MAIA7L,EAAA,SAAA1E,EAAAyoN,GAGA,IAFA,IAAAjoN,EAAA,EACAmvC,EAAA3vC,EAAAE,OACAM,EAAAmvC,EAAAnvC,IACA,GAAAR,EAAAQ,KAAAioN,EACA,OAAAjoN,EAGA,OAAA,GAGA+qN,EAAA,6HAMAC,EAAA,sBAGAC,EAAA,oFAIAl3K,EAAA,2BAAAk3K,EAAA,OAAAD,EAGA,gBAAAA,EAIA,2DAAAC,EAAA,OACAD,EAAA,OAEAE,EAAA,KAAAD,EAAA,wFAOAl3K,EAPA,eAcAo3K,EAAA,IAAAjrM,OAAA8qM,EAAA,IAAA,KACAI,EAAA,IAAAlrM,OAAA,uEACA,KAEAmrM,EAAA,IAAAnrM,OAAA,8CACAorM,EAAA,IAAAprM,OAAA,wEAEAqrM,EAAA,IAAArrM,OAAA8qM,EAAA,MAEAQ,EAAA,IAAAtrM,OAAAgrM,GACAO,EAAA,IAAAvrM,OAAA,IAAA+qM,EAAA,KAEAS,EAAA,CACAC,GAAA,IAAAzrM,OAAA,MAAA+qM,EAAA,KACAW,MAAA,IAAA1rM,OAAA,QAAA+qM,EAAA,KACAY,IAAA,IAAA3rM,OAAA,KAAA+qM,EAAA,SACAa,KAAA,IAAA5rM,OAAA,IAAA6zB,GACAg4K,OAAA,IAAA7rM,OAAA,IAAAgrM,GACAc,MAAA,IAAA9rM,OAAA,4LAEA,KACA+rM,KAAA,IAAA/rM,OAAA,OAAA6qM,EAAA,KAAA,KAIAmB,aAAA,IAAAhsM,OAAA,6IAEA,MAGAisM,EAAA,SACAC,EAAA,sCACAC,EAAA,SAEAC,EAAA,yBAGAC,EAAA,mCAEAC,GAAA,OAIAC,GAAA,IAAAvsM,OAAA,8DAAA,KACAwsM,GAAA,SAAA77B,EAAA87B,GACA,IAAAz4I,EAAA,KAAA28G,EAAA9gL,MAAA,GAAA,MAEA,OAAA48M,IASAz4I,EAAA,EACA86B,OAAA4hF,aAAA18G,EAAA,OACA86B,OAAA4hF,aAAA18G,GAAA,GAAA,MAAA,KAAAA,EAAA,SAKA04I,GAAA,sDACAC,GAAA,SAAAC,EAAAC,GACA,OAAAA,EAGA,OAAAD,EACA,IAIAA,EAAA/8M,MAAA,GAAA,GAAA,KACA+8M,EAAAjiC,WAAAiiC,EAAAptN,OAAA,GAAAqmC,SAAA,IAAA,IAIA,KAAA+mL,GAOAE,GAAA,WACAhD,KAGAiD,GAAAC,IACA,SAAAjF,GACA,OAAA,IAAAA,EAAAxvJ,UAAA,aAAAwvJ,EAAA5kL,SAAA7f,gBAEA,CAAAylC,IAAA,aAAA5iD,KAAA,WAIA,IACAxG,EAAAwY,MACA8uB,EAAAp3B,EAAAwI,KAAA8xM,EAAA3mL,YACA2mL,EAAA3mL,YAMAyD,EAAAkjL,EAAA3mL,WAAAhkC,QAAAqY,SACA,MAAAmU,GACArsB,EAAA,CAAAwY,MAAA8uB,EAAAznC,OAGA,SAAA8O,EAAA2+M,GACArC,EAAAzyM,MAAA7J,EAAAuB,EAAAwI,KAAA40M,KAKA,SAAA3+M,EAAA2+M,GAKA,IAJA,IAAA7zM,EAAA9K,EAAA9O,OACAM,EAAA,EAGAwO,EAAA8K,KAAA6zM,EAAAntN,OACAwO,EAAA9O,OAAA4Z,EAAA,IAKA,SAAAkwM,GAAAj3L,EAAA+U,EAAAs2J,EAAAwvB,GACA,IAAAjhM,EAAAnsB,EAAAioN,EAAAoF,EAAA78M,EAAAi5F,EAAA6jH,EACAC,EAAAjmL,GAAAA,EAAAkmL,cAGAz1M,EAAAuvB,EAAAA,EAAAvvB,SAAA,EAKA,GAHA6lL,EAAAA,GAAA,GAGA,iBAAArrK,IAAAA,GACA,IAAAxa,GAAA,IAAAA,GAAA,KAAAA,EAEA,OAAA6lL,EAIA,IAAAwvB,IACApD,EAAA1iL,GACAA,EAAAA,GAAApmB,EAEAgpM,GAAA,CAIA,GAAA,KAAAnyM,IAAAvH,EAAA+7M,EAAA70M,KAAA6a,IAGA,GAAApG,EAAA3b,EAAA,IAGA,GAAA,IAAAuH,EAAA,CACA,KAAAkwM,EAAA3gL,EAAA/D,eAAApX,IAUA,OAAAyxK,EALA,GAAAqqB,EAAA5lN,KAAA8pB,EAEA,OADAyxK,EAAA/9L,KAAAooN,GACArqB,OAYA,GAAA2vB,IAAAtF,EAAAsF,EAAAhqL,eAAApX,KACA0c,EAAAvB,EAAA2gL,IACAA,EAAA5lN,KAAA8pB,EAGA,OADAyxK,EAAA/9L,KAAAooN,GACArqB,MAKA,CAAA,GAAAptL,EAAA,GAEA,OADA3Q,EAAAwY,MAAAulL,EAAAt2J,EAAA3D,qBAAApR,IACAqrK,EAGA,IAAAzxK,EAAA3b,EAAA,KAAAs3B,EAAA2lL,wBACAnmL,EAAAmmL,uBAGA,OADA5tN,EAAAwY,MAAAulL,EAAAt2J,EAAAmmL,uBAAAthM,IACAyxK,EAKA,GAAA91J,EAAAH,MACAijL,EAAAr4L,EAAA,QACA43L,IAAAA,EAAA5pM,KAAAgS,MAIA,IAAAxa,GAAA,WAAAuvB,EAAAjE,SAAA7f,eAAA,CAYA,GAVA8pM,EAAA/6L,EACAg7L,EAAAjmL,EASA,IAAAvvB,IACAwzM,EAAAhrM,KAAAgS,IAAA+4L,EAAA/qM,KAAAgS,IAAA,CAqBA,KAlBAg7L,EAAAf,GAAAjsM,KAAAgS,IAAAm7L,GAAApmL,EAAA1O,aACA0O,KAIAA,GAAAQ,EAAA56B,SAGAmgN,EAAA/lL,EAAAr4B,aAAA,OACAo+M,EAAAA,EAAAx2M,QAAA+1M,GAAAC,IAEAvlL,EAAAzX,aAAA,KAAAw9L,EAAA5E,IAMAzoN,GADAypG,EAAAmgH,EAAAr3L,IACA7yB,OACAM,KACAypG,EAAAzpG,IAAAqtN,EAAA,IAAAA,EAAA,UAAA,IACAM,GAAAlkH,EAAAzpG,IAEAstN,EAAA7jH,EAAA1pG,KAAA,KAGA,IAIA,OAHAF,EAAAwY,MAAAulL,EACA2vB,EAAA/0M,iBAAA80M,IAEA1vB,EACA,MAAAgwB,GACAhD,EAAAr4L,GAAA,GACA,QACA86L,IAAA5E,GACAnhL,EAAAtN,gBAAA,QAQA,OAAAl5B,EAAAyxB,EAAA1b,QAAAu0M,EAAA,MAAA9jL,EAAAs2J,EAAAwvB,GASA,SAAA3C,KACA,IAAA1nL,EAAA,GAYA,OAVA,SAAApgC,EAAAyf,EAAAjjB,GAQA,OALA4jC,EAAAljC,KAAAuiB,EAAA,KAAAqnM,EAAAoE,oBAGAlrN,EAAAogC,EAAA9iB,SAEAtd,EAAAyf,EAAA,KAAAjjB,GASA,SAAA2uN,GAAA5rN,GAEA,OADAA,EAAAumN,IAAA,EACAvmN,EAOA,SAAA6rN,GAAA7rN,GACA,IAAAswB,EAAAtR,EAAAyR,cAAA,YAEA,IACA,QAAAzwB,EAAAswB,GACA,MAAAtG,GACA,OAAA,EACA,QAGAsG,EAAAoG,YACApG,EAAAoG,WAAAS,YAAA7G,GAIAA,EAAA,MASA,SAAAw7L,GAAA9kL,EAAA4B,GAIA,IAHA,IAAA3D,EAAA+B,EAAA95B,MAAA,KACApP,EAAAmnC,EAAAznC,OAEAM,KACAypN,EAAAwE,WAAA9mL,EAAAnnC,IAAA8qC,EAUA,SAAAojL,GAAA/mN,EAAAQ,GACA,IAAAwmN,EAAAxmN,GAAAR,EACAkyC,EAAA80K,GAAA,IAAAhnN,EAAA4Q,UAAA,IAAApQ,EAAAoQ,UACA5Q,EAAAinN,YAAAzmN,EAAAymN,YAGA,GAAA/0K,EACA,OAAAA,EAIA,GAAA80K,EACA,KAAAA,EAAAA,EAAAr1L,aACA,GAAAq1L,IAAAxmN,EACA,OAAA,EAKA,OAAAR,EAAA,GAAA,EAOA,SAAAknN,GAAAjvN,GACA,OAAA,SAAA6oN,GAEA,MAAA,UADAA,EAAA5kL,SAAA7f,eACAykM,EAAA7oN,OAAAA,GAQA,SAAAkvN,GAAAlvN,GACA,OAAA,SAAA6oN,GACA,IAAA1oN,EAAA0oN,EAAA5kL,SAAA7f,cACA,OAAA,UAAAjkB,GAAA,WAAAA,IAAA0oN,EAAA7oN,OAAAA,GAQA,SAAAmvN,GAAA91J,GAGA,OAAA,SAAAwvJ,GAKA,MAAA,SAAAA,EASAA,EAAArvL,aAAA,IAAAqvL,EAAAxvJ,SAGA,UAAAwvJ,EACA,UAAAA,EAAArvL,WACAqvL,EAAArvL,WAAA6/B,WAAAA,EAEAwvJ,EAAAxvJ,WAAAA,EAMAwvJ,EAAAuG,aAAA/1J,GAIAwvJ,EAAAuG,cAAA/1J,GACAw0J,GAAAhF,KAAAxvJ,EAGAwvJ,EAAAxvJ,WAAAA,EAKA,UAAAwvJ,GACAA,EAAAxvJ,WAAAA,GAYA,SAAAg2J,GAAAvsN,GACA,OAAA4rN,IAAA,SAAAY,GAEA,OADAA,GAAAA,EACAZ,IAAA,SAAAV,EAAAxgL,GAMA,IALA,IAAAtzB,EACAq1M,EAAAzsN,EAAA,GAAAkrN,EAAA1tN,OAAAgvN,GACA1uN,EAAA2uN,EAAAjvN,OAGAM,KACAotN,EAAA9zM,EAAAq1M,EAAA3uN,MACAotN,EAAA9zM,KAAAszB,EAAAtzB,GAAA8zM,EAAA9zM,WAYA,SAAAo0M,GAAApmL,GACA,OAAAA,QAAA,IAAAA,EAAA3D,sBAAA2D,EAkrCA,IAAAtnC,KA9qCA8nC,EAAA0hL,GAAA1hL,QAAA,GAOA6hL,EAAAH,GAAAG,MAAA,SAAA1B,GACA,IAAA2G,EAAA3G,GAAAA,EAAA4G,aACA5E,EAAAhC,IAAAA,EAAAuF,eAAAvF,GAAA7vL,gBAKA,OAAA+zL,EAAA5rM,KAAAquM,GAAA3E,GAAAA,EAAA5mL,UAAA,SAQA2mL,EAAAR,GAAAQ,YAAA,SAAA7mK,GACA,IAAA2rK,EAAAC,EACAzqL,EAAA6e,EAAAA,EAAAqqK,eAAArqK,EAAAknK,EAOA,OAAA/lL,GAAApjB,GAAA,IAAAojB,EAAAvsB,UAAAusB,EAAAlM,iBAMA6xL,GADA/oM,EAAAojB,GACAlM,gBACA8xL,GAAAP,EAAAzoM,GAQAmpM,GAAAnpM,IACA6tM,EAAA7tM,EAAA8tM,cAAAD,EAAA7yL,MAAA6yL,IAGAA,EAAA9rL,iBACA8rL,EAAA9rL,iBAAA,SAAA+pL,IAAA,GAGA+B,EAAAE,aACAF,EAAAE,YAAA,WAAAjC,KASAllL,EAAA56B,MAAA6gN,IAAA,SAAAv7L,GAEA,OADAy3L,EAAAjxL,YAAAxG,GAAAwG,YAAA9X,EAAAyR,cAAA,aACA,IAAAH,EAAAha,mBACAga,EAAAha,iBAAA,uBAAA9Y,UASAooC,EAAAiM,WAAAg6K,IAAA,SAAAv7L,GAEA,OADAA,EAAAoW,UAAA,KACApW,EAAAvjB,aAAA,gBAOA64B,EAAAnE,qBAAAoqL,IAAA,SAAAv7L,GAEA,OADAA,EAAAwG,YAAA9X,EAAAguM,cAAA,MACA18L,EAAAmR,qBAAA,KAAAjkC,UAIAooC,EAAA2lL,uBAAAnB,EAAA/rM,KAAAW,EAAAusM,wBAMA3lL,EAAA3e,QAAA4kM,IAAA,SAAAv7L,GAEA,OADAy3L,EAAAjxL,YAAAxG,GAAAnwB,GAAAomN,GACAvnM,EAAAiuM,oBAAAjuM,EAAAiuM,kBAAA1G,GAAA/oN,UAIAooC,EAAA3e,SACAsgM,EAAAhqN,OAAA,GAAA,SAAA4C,GACA,IAAA+sN,EAAA/sN,EAAAwU,QAAA41M,GAAAC,IACA,OAAA,SAAAzE,GACA,OAAAA,EAAAh5M,aAAA,QAAAmgN,IAGA3F,EAAAxqN,KAAA,GAAA,SAAAoD,EAAAilC,GACA,QAAA,IAAAA,EAAA/D,gBAAA2mL,EAAA,CACA,IAAAjC,EAAA3gL,EAAA/D,eAAAlhC,GACA,OAAA4lN,EAAA,CAAAA,GAAA,OAIAwB,EAAAhqN,OAAA,GAAA,SAAA4C,GACA,IAAA+sN,EAAA/sN,EAAAwU,QAAA41M,GAAAC,IACA,OAAA,SAAAzE,GACA,IAAA9kK,OAAA,IAAA8kK,EAAAoH,kBACApH,EAAAoH,iBAAA,MACA,OAAAlsK,GAAAA,EAAAhkD,QAAAiwN,IAMA3F,EAAAxqN,KAAA,GAAA,SAAAoD,EAAAilC,GACA,QAAA,IAAAA,EAAA/D,gBAAA2mL,EAAA,CACA,IAAA/mK,EAAAnjD,EAAA+nN,EACAE,EAAA3gL,EAAA/D,eAAAlhC,GAEA,GAAA4lN,EAAA,CAIA,IADA9kK,EAAA8kK,EAAAoH,iBAAA,QACAlsK,EAAAhkD,QAAAkD,EACA,MAAA,CAAA4lN,GAMA,IAFAF,EAAAzgL,EAAA6nL,kBAAA9sN,GACArC,EAAA,EACAioN,EAAAF,EAAA/nN,MAEA,IADAmjD,EAAA8kK,EAAAoH,iBAAA,QACAlsK,EAAAhkD,QAAAkD,EACA,MAAA,CAAA4lN,GAKA,MAAA,MAMAwB,EAAAxqN,KAAA,IAAA6oC,EAAAnE,qBACA,SAAA2rL,EAAAhoL,GACA,YAAA,IAAAA,EAAA3D,qBACA2D,EAAA3D,qBAAA2rL,GAGAxnL,EAAAH,IACAL,EAAA9uB,iBAAA82M,QADA,GAKA,SAAAA,EAAAhoL,GACA,IAAA2gL,EACA1vI,EAAA,GACAv4E,EAAA,EAGA49L,EAAAt2J,EAAA3D,qBAAA2rL,GAGA,GAAA,MAAAA,EAAA,CACA,KAAArH,EAAArqB,EAAA59L,MACA,IAAAioN,EAAAlwM,UACAwgE,EAAA14E,KAAAooN,GAIA,OAAA1vI,EAEA,OAAAqlH,GAIA6rB,EAAAxqN,KAAA,MAAA6oC,EAAA2lL,wBAAA,SAAA7kL,EAAAtB,GACA,QAAA,IAAAA,EAAAmmL,wBAAAvD,EACA,OAAA5iL,EAAAmmL,uBAAA7kL,IAUAwhL,EAAA,GAOAD,EAAA,IAEAriL,EAAAH,IAAA2kL,EAAA/rM,KAAAW,EAAA1I,qBAIAu1M,IAAA,SAAAv7L,GAEA,IAAA+8L,EAOAtF,EAAAjxL,YAAAxG,GAAAkV,UAAA,UAAA+gL,EAAA,qBACAA,EADA,kEAQAj2L,EAAAha,iBAAA,wBAAA9Y,QACAyqN,EAAAtqN,KAAA,yCAKA2yB,EAAAha,iBAAA,cAAA9Y,QACAyqN,EAAAtqN,KAAA,mCAAAkrN,EAAA,KAIAv4L,EAAAha,iBAAA,QAAAiwM,EAAA,MAAA/oN,QACAyqN,EAAAtqN,KAAA,OAQA0vN,EAAAruM,EAAAyR,cAAA,UACA9C,aAAA,OAAA,IACA2C,EAAAwG,YAAAu2L,GACA/8L,EAAAha,iBAAA,aAAA9Y,QACAyqN,EAAAtqN,KAAA,mFAOA2yB,EAAAha,iBAAA,YAAA9Y,QACAyqN,EAAAtqN,KAAA,YAMA2yB,EAAAha,iBAAA,KAAAiwM,EAAA,MAAA/oN,QACAyqN,EAAAtqN,KAAA,YAKA2yB,EAAAha,iBAAA,QACA2xM,EAAAtqN,KAAA,kBAGAkuN,IAAA,SAAAv7L,GACAA,EAAAkV,UAAA,oFAKA,IAAA6nL,EAAAruM,EAAAyR,cAAA,SACA48L,EAAA1/L,aAAA,OAAA,UACA2C,EAAAwG,YAAAu2L,GAAA1/L,aAAA,OAAA,KAIA2C,EAAAha,iBAAA,YAAA9Y,QACAyqN,EAAAtqN,KAAA,sCAKA,IAAA2yB,EAAAha,iBAAA,YAAA9Y,QACAyqN,EAAAtqN,KAAA,WAAA,aAKAoqN,EAAAjxL,YAAAxG,GAAAimC,UAAA,EACA,IAAAjmC,EAAAha,iBAAA,aAAA9Y,QACAyqN,EAAAtqN,KAAA,WAAA,aAKA2yB,EAAAha,iBAAA,QACA2xM,EAAAtqN,KAAA,aAIAioC,EAAA0nL,gBAAAlD,EAAA/rM,KAAAqsB,EAAAq9K,EAAAr9K,SACAq9K,EAAAp9K,uBACAo9K,EAAAwF,oBACAxF,EAAAyF,kBACAzF,EAAAn9K,qBAEAihL,IAAA,SAAAv7L,GAIAsV,EAAA6nL,kBAAA/iL,EAAAr0B,KAAAia,EAAA,KAIAoa,EAAAr0B,KAAAia,EAAA,aACA43L,EAAAvqN,KAAA,KAAAqrN,MAIAf,EAAAA,EAAAzqN,QAAA,IAAAwgB,OAAAiqM,EAAApqN,KAAA,MACAqqN,EAAAA,EAAA1qN,QAAA,IAAAwgB,OAAAkqM,EAAArqN,KAAA,MAIA+uN,EAAAxC,EAAA/rM,KAAA0pM,EAAA2F,yBAKA/mL,EAAAimL,GAAAxC,EAAA/rM,KAAA0pM,EAAAphL,UACA,SAAA1hC,EAAAQ,GACA,IAAAkoN,EAAA,IAAA1oN,EAAA4Q,SAAA5Q,EAAAixB,gBAAAjxB,EACA2oN,EAAAnoN,GAAAA,EAAAixB,WACA,OAAAzxB,IAAA2oN,MAAAA,GAAA,IAAAA,EAAA/3M,YACA83M,EAAAhnL,SACAgnL,EAAAhnL,SAAAinL,GACA3oN,EAAAyoN,yBAAA,GAAAzoN,EAAAyoN,wBAAAE,MAGA,SAAA3oN,EAAAQ,GACA,GAAAA,EACA,KAAAA,EAAAA,EAAAixB,YACA,GAAAjxB,IAAAR,EACA,OAAA,EAIA,OAAA,GAOA0jN,EAAAiE,EACA,SAAA3nN,EAAAQ,GAGA,GAAAR,IAAAQ,EAEA,OADAoiN,GAAA,EACA,EAIA,IAAAgG,GAAA5oN,EAAAyoN,yBAAAjoN,EAAAioN,wBACA,OAAAG,IAgBA,GAPAA,GAAA5oN,EAAAqmN,eAAArmN,KAAAQ,EAAA6lN,eAAA7lN,GACAR,EAAAyoN,wBAAAjoN,GAGA,KAIAmgC,EAAAkoL,cAAAroN,EAAAioN,wBAAAzoN,KAAA4oN,EAOA5oN,GAAA+Z,GAAA/Z,EAAAqmN,eAAAnD,GACAxhL,EAAAwhL,EAAAljN,IACA,EAOAQ,GAAAuZ,GAAAvZ,EAAA6lN,eAAAnD,GACAxhL,EAAAwhL,EAAA1iN,GACA,EAIAmiN,EACA5lN,EAAA4lN,EAAA3iN,GAAAjD,EAAA4lN,EAAAniN,GACA,EAGA,EAAAooN,GAAA,EAAA,IAEA,SAAA5oN,EAAAQ,GAGA,GAAAR,IAAAQ,EAEA,OADAoiN,GAAA,EACA,EAGA,IAAAoE,EACAnuN,EAAA,EACAiwN,EAAA9oN,EAAAyxB,WACAk3L,EAAAnoN,EAAAixB,WACAs3L,EAAA,CAAA/oN,GACAwrK,EAAA,CAAAhrK,GAGA,IAAAsoN,IAAAH,EAMA,OAAA3oN,GAAA+Z,GAAA,EACAvZ,GAAAuZ,EAAA,EAEA+uM,GAAA,EACAH,EAAA,EACAhG,EACA5lN,EAAA4lN,EAAA3iN,GAAAjD,EAAA4lN,EAAAniN,GACA,EAGA,GAAAsoN,IAAAH,EACA,OAAA5B,GAAA/mN,EAAAQ,GAKA,IADAwmN,EAAAhnN,EACAgnN,EAAAA,EAAAv1L,YACAs3L,EAAAlmL,QAAAmkL,GAGA,IADAA,EAAAxmN,EACAwmN,EAAAA,EAAAv1L,YACA+5I,EAAA3oI,QAAAmkL,GAIA,KAAA+B,EAAAlwN,KAAA2yK,EAAA3yK,IACAA,IAGA,OAAAA,EAGAkuN,GAAAgC,EAAAlwN,GAAA2yK,EAAA3yK,IAOAkwN,EAAAlwN,IAAAqqN,GAAA,EACA13C,EAAA3yK,IAAAqqN,EAAA,EAEA,GAGAnpM,GA/cAA,GAkdAsoM,GAAA58K,QAAA,SAAAujL,EAAAz6I,GACA,OAAA8zI,GAAA2G,EAAA,KAAA,KAAAz6I,IAGA8zI,GAAAgG,gBAAA,SAAAvH,EAAAkI,GAGA,GAFAnG,EAAA/B,GAEAngL,EAAA0nL,iBAAAtF,IACAU,EAAAuF,EAAA,QACA/F,IAAAA,EAAA7pM,KAAA4vM,OACAhG,IAAAA,EAAA5pM,KAAA4vM,IAEA,IACA,IAAA96B,EAAAzoJ,EAAAr0B,KAAA0vM,EAAAkI,GAGA,GAAA96B,GAAAvtJ,EAAA6nL,mBAIA1H,EAAA/mM,UAAA,KAAA+mM,EAAA/mM,SAAAnJ,SACA,OAAAs9K,EAEA,MAAAnpK,GACA0+L,EAAAuF,GAAA,GAIA,OAAA3G,GAAA2G,EAAAjvM,EAAA,KAAA,CAAA+mM,IAAAvoN,OAAA,GAGA8pN,GAAA3gL,SAAA,SAAAvB,EAAA2gL,GAUA,OAHA3gL,EAAAkmL,eAAAlmL,IAAApmB,GACA8oM,EAAA1iL,GAEAuB,EAAAvB,EAAA2gL,IAGAuB,GAAAlqN,KAAA,SAAA2oN,EAAA1oN,IAOA0oN,EAAAuF,eAAAvF,IAAA/mM,GACA8oM,EAAA/B,GAGA,IAAA/lN,EAAAunN,EAAAwE,WAAA1uN,EAAAikB,eAGA1jB,EAAAoC,GAAA8kN,EAAAzuM,KAAAkxM,EAAAwE,WAAA1uN,EAAAikB,eACAthB,EAAA+lN,EAAA1oN,GAAA2qN,QACAzjL,EAEA,YAAAA,IAAA3mC,EACAA,EACAgoC,EAAAiM,aAAAm2K,EACAjC,EAAAh5M,aAAA1P,IACAO,EAAAmoN,EAAAoH,iBAAA9vN,KAAAO,EAAAswN,UACAtwN,EAAAX,MACA,MAGAqqN,GAAA34B,OAAA,SAAAw/B,GACA,OAAAA,EAAA,IAAAx5M,QAAA+1M,GAAAC,KAGArD,GAAAtmN,MAAA,SAAAylN,GACA,MAAA,IAAAx/J,MAAA,0CAAAw/J,IAOAa,GAAA8G,WAAA,SAAA1yB,GACA,IAAAqqB,EACAsI,EAAA,GACAj3M,EAAA,EACAtZ,EAAA,EAOA,GAJA+pN,GAAAjiL,EAAA0oL,iBACA1G,GAAAhiL,EAAA2oL,YAAA7yB,EAAA7tL,MAAA,GACA6tL,EAAAl2L,KAAAmjN,GAEAd,EAAA,CACA,KAAA9B,EAAArqB,EAAA59L,MACAioN,IAAArqB,EAAA59L,KACAsZ,EAAAi3M,EAAA1wN,KAAAG,IAGA,KAAAsZ,KACAskL,EAAA/uL,OAAA0hN,EAAAj3M,GAAA,GAQA,OAFAwwM,EAAA,KAEAlsB,GAOA8rB,EAAAF,GAAAE,QAAA,SAAAzB,GACA,IAAA9kK,EACAkyI,EAAA,GACAr1L,EAAA,EACA+X,EAAAkwM,EAAAlwM,SAEA,GAAAA,GAQA,GAAA,IAAAA,GAAA,IAAAA,GAAA,KAAAA,EAAA,CAIA,GAAA,iBAAAkwM,EAAAv7K,YACA,OAAAu7K,EAAAv7K,YAIA,IAAAu7K,EAAAA,EAAA76K,WAAA66K,EAAAA,EAAAA,EAAAnvL,YACAu8J,GAAAq0B,EAAAzB,QAGA,GAAA,IAAAlwM,GAAA,IAAAA,EACA,OAAAkwM,EAAAyI,eAnBA,KAAAvtK,EAAA8kK,EAAAjoN,MAGAq1L,GAAAq0B,EAAAvmK,GAqBA,OAAAkyI,IAGAo0B,EAAAD,GAAAmH,UAAA,CAGA9C,YAAA,GAEA+C,aAAA9C,GAEAt9M,MAAAk7M,EAEAuC,WAAA,GAEAhvN,KAAA,GAEA+8B,SAAA,CACA60L,IAAA,CAAA5nK,IAAA,aAAA54B,OAAA,GACAygM,IAAA,CAAA7nK,IAAA,cACA8nK,IAAA,CAAA9nK,IAAA,kBAAA54B,OAAA,GACA2gM,IAAA,CAAA/nK,IAAA,oBAGAgoK,UAAA,CACAnF,KAAA,SAAAt7M,GAWA,OAVAA,EAAA,GAAAA,EAAA,GAAAqG,QAAA41M,GAAAC,IAGAl8M,EAAA,IAAAA,EAAA,IAAAA,EAAA,IACAA,EAAA,IAAA,IAAAqG,QAAA41M,GAAAC,IAEA,OAAAl8M,EAAA,KACAA,EAAA,GAAA,IAAAA,EAAA,GAAA,KAGAA,EAAAT,MAAA,EAAA,IAGAi8M,MAAA,SAAAx7M,GAiCA,OArBAA,EAAA,GAAAA,EAAA,GAAAgT,cAEA,QAAAhT,EAAA,GAAAT,MAAA,EAAA,IAGAS,EAAA,IACAg5M,GAAAtmN,MAAAsN,EAAA,IAKAA,EAAA,KAAAA,EAAA,GACAA,EAAA,IAAAA,EAAA,IAAA,GACA,GAAA,SAAAA,EAAA,IAAA,QAAAA,EAAA,KACAA,EAAA,KAAAA,EAAA,GAAAA,EAAA,IAAA,QAAAA,EAAA,KAGAA,EAAA,IACAg5M,GAAAtmN,MAAAsN,EAAA,IAGAA,GAGAu7M,OAAA,SAAAv7M,GACA,IAAA0gN,EACAC,GAAA3gN,EAAA,IAAAA,EAAA,GAEA,OAAAk7M,EAAA,MAAAnrM,KAAA/P,EAAA,IACA,MAIAA,EAAA,GACAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAA,GAGA2gN,GAAA3F,EAAAjrM,KAAA4wM,KAGAD,EAAAtH,EAAAuH,GAAA,MAGAD,EAAAC,EAAAjtN,QAAA,IAAAitN,EAAAzxN,OAAAwxN,GAAAC,EAAAzxN,UAGA8Q,EAAA,GAAAA,EAAA,GAAAT,MAAA,EAAAmhN,GACA1gN,EAAA,GAAA2gN,EAAAphN,MAAA,EAAAmhN,IAIA1gN,EAAAT,MAAA,EAAA,MAIAtQ,OAAA,CAEAosN,IAAA,SAAAuF,GACA,IAAA/tL,EAAA+tL,EAAAv6M,QAAA41M,GAAAC,IAAAlpM,cACA,MAAA,MAAA4tM,EACA,WACA,OAAA,GAEA,SAAAnJ,GACA,OAAAA,EAAA5kL,UAAA4kL,EAAA5kL,SAAA7f,gBAAA6f,IAIAuoL,MAAA,SAAAhjL,GACA,IAAAq+I,EAAAujC,EAAA5hL,EAAA,KAEA,OAAAq+I,IACAA,EAAA,IAAA/mK,OAAA,0BACA0oB,EAAA,IAAAoiL,EAAA,SAAAR,EACA5hL,GAAA,SAAAq/K,GACA,OAAAhhC,EAAA1mK,KACA,iBAAA0nM,EAAAr/K,WAAAq/K,EAAAr/K,gBACA,IAAAq/K,EAAAh5M,cACAg5M,EAAAh5M,aAAA,UACA,QAKA68M,KAAA,SAAAvsN,EAAA8xN,EAAAC,GACA,OAAA,SAAArJ,GACA,IAAAnoM,EAAA0pM,GAAAlqN,KAAA2oN,EAAA1oN,GAEA,OAAA,MAAAugB,EACA,OAAAuxM,GAEAA,IAIAvxM,GAAA,GAIA,MAAAuxM,EAAAvxM,IAAAwxM,EACA,OAAAD,EAAAvxM,IAAAwxM,EACA,OAAAD,EAAAC,GAAA,IAAAxxM,EAAA5b,QAAAotN,GACA,OAAAD,EAAAC,GAAAxxM,EAAA5b,QAAAotN,IAAA,EACA,OAAAD,EAAAC,GAAAxxM,EAAA/P,OAAAuhN,EAAA5xN,UAAA4xN,EACA,OAAAD,GAAA,IAAAvxM,EAAAjJ,QAAAs0M,EAAA,KAAA,KAAAjnN,QAAAotN,IAAA,EACA,OAAAD,IAAAvxM,IAAAwxM,GAAAxxM,EAAA/P,MAAA,EAAAuhN,EAAA5xN,OAAA,KAAA4xN,EAAA,QAOAtF,MAAA,SAAA5sN,EAAAmyN,EAAAC,EAAAnhM,EAAAC,GACA,IAAAmhM,EAAA,QAAAryN,EAAA2Q,MAAA,EAAA,GACA2hN,EAAA,SAAAtyN,EAAA2Q,OAAA,GACA4hN,EAAA,YAAAJ,EAEA,OAAA,IAAAlhM,GAAA,IAAAC,EAGA,SAAA23L,GACA,QAAAA,EAAArvL,YAGA,SAAAqvL,EAAAh1D,EAAA2+D,GACA,IAAAjvN,EAAAkvN,EAAAC,EAAA3uK,EAAA4uK,EAAAjsN,EACAmjD,EAAAwoK,IAAAC,EAAA,cAAA,kBACAtgN,EAAA62M,EAAArvL,WACAr5B,EAAAoyN,GAAA1J,EAAA5kL,SAAA7f,cACAutG,GAAA6gG,IAAAD,EACAt4K,GAAA,EAEA,GAAAjoC,EAAA,CAGA,GAAAqgN,EAAA,CACA,KAAAxoK,GAAA,CAEA,IADA9F,EAAA8kK,EACA9kK,EAAAA,EAAA8F,IACA,GAAA0oK,EACAxuK,EAAA9f,SAAA7f,gBAAAjkB,EACA,IAAA4jD,EAAAprC,SAEA,OAAA,EAKAjS,EAAAmjD,EAAA,SAAA7pD,IAAA0G,GAAA,cAEA,OAAA,EAMA,GAHAA,EAAA,CAAA4rN,EAAAtgN,EAAAg8B,WAAAh8B,EAAA4gN,WAGAN,GAAA3gG,GAkBA,IAHA13E,GADA04K,GADApvN,GAHAkvN,GAJAC,GADA3uK,EAAA/xC,GACAq3M,KAAAtlK,EAAAslK,GAAA,KAIAtlK,EAAA8uK,YACAH,EAAA3uK,EAAA8uK,UAAA,KAEA7yN,IAAA,IACA,KAAAkrN,GAAA3nN,EAAA,KACAA,EAAA,GACAwgD,EAAA4uK,GAAA3gN,EAAAsyB,WAAAquL,GAEA5uK,IAAA4uK,GAAA5uK,GAAAA,EAAA8F,KAGA5P,EAAA04K,EAAA,IAAAjsN,EAAAm1C,OAGA,GAAA,IAAAkI,EAAAprC,YAAAshC,GAAA8J,IAAA8kK,EAAA,CACA4J,EAAAzyN,GAAA,CAAAkrN,EAAAyH,EAAA14K,GACA,YAyBA,GAlBA03E,IAaA13E,EADA04K,GADApvN,GAHAkvN,GAJAC,GADA3uK,EAAA8kK,GACAQ,KAAAtlK,EAAAslK,GAAA,KAIAtlK,EAAA8uK,YACAH,EAAA3uK,EAAA8uK,UAAA,KAEA7yN,IAAA,IACA,KAAAkrN,GAAA3nN,EAAA,KAMA,IAAA02C,EAGA,MAAA8J,IAAA4uK,GAAA5uK,GAAAA,EAAA8F,KACA5P,EAAA04K,EAAA,IAAAjsN,EAAAm1C,UAEA02K,EACAxuK,EAAA9f,SAAA7f,gBAAAjkB,EACA,IAAA4jD,EAAAprC,cACAshC,IAGA03E,KAMA8gG,GALAC,EAAA3uK,EAAAslK,KACAtlK,EAAAslK,GAAA,KAIAtlK,EAAA8uK,YACAH,EAAA3uK,EAAA8uK,UAAA,KAEA7yN,GAAA,CAAAkrN,EAAAjxK,IAGA8J,IAAA8kK,MAUA,OADA5uK,GAAA/oB,KACAD,GAAAgpB,EAAAhpB,GAAA,GAAAgpB,EAAAhpB,GAAA,KAKA07L,OAAA,SAAAmG,EAAAxD,GAMA,IAAA39L,EACA7uB,EAAAunN,EAAAyB,QAAAgH,IAAAzI,EAAA5vB,WAAAq4B,EAAA1uM,gBACAgmM,GAAAtmN,MAAA,uBAAAgvN,GAKA,OAAAhwN,EAAAumN,GACAvmN,EAAAwsN,GAIAxsN,EAAAxC,OAAA,GACAqxB,EAAA,CAAAmhM,EAAAA,EAAA,GAAAxD,GACAjF,EAAA5vB,WAAAl3J,eAAAuvL,EAAA1uM,eACAsqM,IAAA,SAAAV,EAAAxgL,GAIA,IAHA,IAAAulL,EACAC,EAAAlwN,EAAAkrN,EAAAsB,GACA1uN,EAAAoyN,EAAA1yN,OACAM,KAEAotN,EADA+E,EAAAjuN,EAAAkpN,EAAAgF,EAAApyN,OACA4sC,EAAAulL,GAAAC,EAAApyN,OAGA,SAAAioN,GACA,OAAA/lN,EAAA+lN,EAAA,EAAAl3L,KAIA7uB,IAIAgpN,QAAA,CAGAmH,IAAAvE,IAAA,SAAAv7L,GAKA,IAAAg9L,EAAA,GACA3xB,EAAA,GACA00B,EAAAl9F,EAAA7iG,EAAA1b,QAAAu0M,EAAA,OAEA,OAAAkH,EAAA7J,GACAqF,IAAA,SAAAV,EAAAxgL,EAAAqmH,EAAA2+D,GAMA,IALA,IAAA3J,EACAsK,EAAAD,EAAAlF,EAAA,KAAAwE,EAAA,IACA5xN,EAAAotN,EAAA1tN,OAGAM,MACAioN,EAAAsK,EAAAvyN,MACAotN,EAAAptN,KAAA4sC,EAAA5sC,GAAAioN,OAIA,SAAAA,EAAAh1D,EAAA2+D,GAMA,OALArC,EAAA,GAAAtH,EACAqK,EAAA/C,EAAA,KAAAqC,EAAAh0B,GAGA2xB,EAAA,GAAA,MACA3xB,EAAA3iJ,UAIAtU,IAAAmnL,IAAA,SAAAv7L,GACA,OAAA,SAAA01L,GACA,OAAAuB,GAAAj3L,EAAA01L,GAAAvoN,OAAA,MAIAmpC,SAAAilL,IAAA,SAAAhsN,GAEA,OADAA,EAAAA,EAAA+U,QAAA41M,GAAAC,IACA,SAAAzE,GACA,OAAAA,EAAAv7K,aAAAg9K,EAAAzB,IAAA/jN,QAAApC,IAAA,MAWA0wN,KAAA1E,IAAA,SAAA0E,GAOA,OAJA/G,EAAAlrM,KAAAiyM,GAAA,KACAhJ,GAAAtmN,MAAA,qBAAAsvN,GAEAA,EAAAA,EAAA37M,QAAA41M,GAAAC,IAAAlpM,cACA,SAAAykM,GACA,IAAAwK,EACA,GACA,GAAAA,EAAAvI,EACAjC,EAAAuK,KACAvK,EAAAh5M,aAAA,aAAAg5M,EAAAh5M,aAAA,QAGA,OADAwjN,EAAAA,EAAAjvM,iBACAgvM,GAAA,IAAAC,EAAAvuN,QAAAsuN,EAAA,YAEAvK,EAAAA,EAAArvL,aAAA,IAAAqvL,EAAAlwM,UACA,OAAA,MAKAvJ,OAAA,SAAAy5M,GACA,IAAAnkL,EAAAngC,EAAAkgC,UAAAlgC,EAAAkgC,SAAAC,KACA,OAAAA,GAAAA,EAAA/zB,MAAA,KAAAk4M,EAAA5lN,IAGAilE,KAAA,SAAA2gJ,GACA,OAAAA,IAAAgC,GAGAh3G,MAAA,SAAAg1G,GACA,OAAAA,IAAA/mM,EAAAiiB,iBACAjiB,EAAAwxM,UAAAxxM,EAAAwxM,gBACAzK,EAAA7oN,MAAA6oN,EAAAhkL,OAAAgkL,EAAA0K,WAIA99K,QAAA05K,IAAA,GACA91J,SAAA81J,IAAA,GAEAqE,QAAA,SAAA3K,GAIA,IAAA5kL,EAAA4kL,EAAA5kL,SAAA7f,cACA,MAAA,UAAA6f,KAAA4kL,EAAA2K,SACA,WAAAvvL,KAAA4kL,EAAA4K,UAGAA,SAAA,SAAA5K,GASA,OALAA,EAAArvL,YAEAqvL,EAAArvL,WAAAk6L,eAGA,IAAA7K,EAAA4K,UAIAhlB,MAAA,SAAAoa,GAMA,IAAAA,EAAAA,EAAA76K,WAAA66K,EAAAA,EAAAA,EAAAnvL,YACA,GAAAmvL,EAAAlwM,SAAA,EACA,OAAA,EAGA,OAAA,GAGA3G,OAAA,SAAA62M,GACA,OAAAwB,EAAAyB,QAAA,MAAAjD,IAIA58B,OAAA,SAAA48B,GACA,OAAAoE,EAAA9rM,KAAA0nM,EAAA5kL,WAGAksL,MAAA,SAAAtH,GACA,OAAAmE,EAAA7rM,KAAA0nM,EAAA5kL,WAGAiS,OAAA,SAAA2yK,GACA,IAAA1oN,EAAA0oN,EAAA5kL,SAAA7f,cACA,MAAA,UAAAjkB,GAAA,WAAA0oN,EAAA7oN,MAAA,WAAAG,GAGAuC,KAAA,SAAAmmN,GACA,IAAA3oN,EACA,MAAA,UAAA2oN,EAAA5kL,SAAA7f,eACA,SAAAykM,EAAA7oN,OAIA,OAAAE,EAAA2oN,EAAAh5M,aAAA,UACA,SAAA3P,EAAAkkB,gBAIA6M,MAAAo+L,IAAA,WACA,MAAA,CAAA,MAGAn+L,KAAAm+L,IAAA,SAAAsE,EAAArzN,GACA,MAAA,CAAAA,EAAA,MAGAstC,GAAAyhL,IAAA,SAAAsE,EAAArzN,EAAAgvN,GACA,MAAA,CAAAA,EAAA,EAAAA,EAAAhvN,EAAAgvN,MAGAxG,KAAAuG,IAAA,SAAAE,EAAAjvN,GAEA,IADA,IAAAM,EAAA,EACAA,EAAAN,EAAAM,GAAA,EACA2uN,EAAA9uN,KAAAG,GAEA,OAAA2uN,KAGAtG,IAAAoG,IAAA,SAAAE,EAAAjvN,GAEA,IADA,IAAAM,EAAA,EACAA,EAAAN,EAAAM,GAAA,EACA2uN,EAAA9uN,KAAAG,GAEA,OAAA2uN,KAGAqE,GAAAvE,IAAA,SAAAE,EAAAjvN,EAAAgvN,GAMA,IALA,IAAA1uN,EAAA0uN,EAAA,EACAA,EAAAhvN,EACAgvN,EAAAhvN,EACAA,EACAgvN,IACA1uN,GAAA,GACA2uN,EAAA9uN,KAAAG,GAEA,OAAA2uN,KAGAsE,GAAAxE,IAAA,SAAAE,EAAAjvN,EAAAgvN,GAEA,IADA,IAAA1uN,EAAA0uN,EAAA,EAAAA,EAAAhvN,EAAAgvN,IACA1uN,EAAAN,GACAivN,EAAA9uN,KAAAG,GAEA,OAAA2uN,QAKAzD,QAAA,IAAAzB,EAAAyB,QAAA,GAGA,CAAAgI,OAAA,EAAAC,UAAA,EAAA3qC,MAAA,EAAA4qC,UAAA,EAAApkK,OAAA,GACAy6J,EAAAyB,QAAAlrN,GAAAquN,GAAAruN,GAEA,IAAAA,IAAA,CAAAqzN,QAAA,EAAAvoG,OAAA,GACA2+F,EAAAyB,QAAAlrN,GAAAsuN,GAAAtuN,GAIA,SAAA65L,MA0EA,SAAA8zB,GAAA2F,GAIA,IAHA,IAAAtzN,EAAA,EACAmvC,EAAAmkL,EAAA5zN,OACA6yB,EAAA,GACAvyB,EAAAmvC,EAAAnvC,IACAuyB,GAAA+gM,EAAAtzN,GAAAb,MAEA,OAAAozB,EAGA,SAAA26L,GAAAoF,EAAAiB,EAAA1iN,GACA,IAAAo4C,EAAAsqK,EAAAtqK,IACAf,EAAAqrK,EAAAltN,KACA+b,EAAA8lC,GAAAe,EACAuqK,EAAA3iN,GAAA,eAAAuR,EACAqxM,EAAAlJ,IAEA,OAAAgJ,EAAAljM,MAGA,SAAA43L,EAAA3gL,EAAAsqL,GACA,KAAA3J,EAAAA,EAAAh/J,IACA,GAAA,IAAAg/J,EAAAlwM,UAAAy7M,EACA,OAAAlB,EAAArK,EAAA3gL,EAAAsqL,GAGA,OAAA,GAIA,SAAA3J,EAAA3gL,EAAAsqL,GACA,IAAA8B,EAAA7B,EAAAC,EACA1+J,EAAA,CAAAk3J,EAAAmJ,GAGA,GAAA7B,GACA,KAAA3J,EAAAA,EAAAh/J,IACA,IAAA,IAAAg/J,EAAAlwM,UAAAy7M,IACAlB,EAAArK,EAAA3gL,EAAAsqL,GACA,OAAA,OAKA,KAAA3J,EAAAA,EAAAh/J,IACA,GAAA,IAAAg/J,EAAAlwM,UAAAy7M,EAQA,GAHA3B,GAJAC,EAAA7J,EAAAQ,KAAAR,EAAAQ,GAAA,KAIAR,EAAAgK,YACAH,EAAA7J,EAAAgK,UAAA,IAEA/pK,GAAAA,IAAA+/J,EAAA5kL,SAAA7f,cACAykM,EAAAA,EAAAh/J,IAAAg/J,MACA,CAAA,IAAAyL,EAAA7B,EAAAzvM,KACAsxM,EAAA,KAAApJ,GAAAoJ,EAAA,KAAAD,EAGA,OAAArgK,EAAA,GAAAsgK,EAAA,GAOA,GAHA7B,EAAAzvM,GAAAgxC,EAGAA,EAAA,GAAAk/J,EAAArK,EAAA3gL,EAAAsqL,GACA,OAAA,EAMA,OAAA,GAIA,SAAA+B,GAAAC,GACA,OAAAA,EAAAl0N,OAAA,EACA,SAAAuoN,EAAA3gL,EAAAsqL,GAEA,IADA,IAAA5xN,EAAA4zN,EAAAl0N,OACAM,KACA,IAAA4zN,EAAA5zN,GAAAioN,EAAA3gL,EAAAsqL,GACA,OAAA,EAGA,OAAA,GAEAgC,EAAA,GAYA,SAAAC,GAAAtB,EAAAhzM,EAAA9f,EAAA6nC,EAAAsqL,GAOA,IANA,IAAA3J,EACA6L,EAAA,GACA9zN,EAAA,EACAmvC,EAAAojL,EAAA7yN,OACAq0N,EAAA,MAAAx0M,EAEAvf,EAAAmvC,EAAAnvC,KACAioN,EAAAsK,EAAAvyN,MACAP,IAAAA,EAAAwoN,EAAA3gL,EAAAsqL,KACAkC,EAAAj0N,KAAAooN,GACA8L,GACAx0M,EAAA1f,KAAAG,KAMA,OAAA8zN,EAGA,SAAAE,GAAA/C,EAAA1+L,EAAA+/L,EAAA2B,EAAAC,EAAAC,GAOA,OANAF,IAAAA,EAAAxL,KACAwL,EAAAD,GAAAC,IAEAC,IAAAA,EAAAzL,KACAyL,EAAAF,GAAAE,EAAAC,IAEArG,IAAA,SAAAV,EAAAxvB,EAAAt2J,EAAAsqL,GACA,IAAA59L,EAAAh0B,EAAAioN,EACAmM,EAAA,GACAC,EAAA,GACAC,EAAA12B,EAAAl+L,OAGAqoN,EAAAqF,GA5CA,SAAA76L,EAAAgiM,EAAA32B,GAGA,IAFA,IAAA59L,EAAA,EACAmvC,EAAAolL,EAAA70N,OACAM,EAAAmvC,EAAAnvC,IACAwpN,GAAAj3L,EAAAgiM,EAAAv0N,GAAA49L,GAEA,OAAAA,EAsCA42B,CACAjiM,GAAA,IACA+U,EAAAvvB,SAAA,CAAAuvB,GAAAA,EACA,IAIAmtL,GAAAxD,IAAA7D,GAAA76L,EAEAw1L,EADA8L,GAAA9L,EAAAqM,EAAAnD,EAAA3pL,EAAAsqL,GAGA8C,EAAApC,EAGA4B,IAAA9G,EAAA6D,EAAAqD,GAAAL,GAGA,GAGAr2B,EACA62B,EAQA,GALAnC,GACAA,EAAAmC,EAAAC,EAAAptL,EAAAsqL,GAIAqC,EAMA,IALAjgM,EAAA6/L,GAAAa,EAAAL,GACAJ,EAAAjgM,EAAA,GAAAsT,EAAAsqL,GAGA5xN,EAAAg0B,EAAAt0B,OACAM,MACAioN,EAAAj0L,EAAAh0B,MACA00N,EAAAL,EAAAr0N,MAAAy0N,EAAAJ,EAAAr0N,IAAAioN,IAKA,GAAAmF,GACA,GAAA8G,GAAAjD,EAAA,CACA,GAAAiD,EAAA,CAKA,IAFAlgM,EAAA,GACAh0B,EAAA00N,EAAAh1N,OACAM,MACAioN,EAAAyM,EAAA10N,KAGAg0B,EAAAn0B,KAAA40N,EAAAz0N,GAAAioN,GAGAiM,EAAA,KAAAQ,EAAA,GAAA1gM,EAAA49L,GAKA,IADA5xN,EAAA00N,EAAAh1N,OACAM,MACAioN,EAAAyM,EAAA10N,MACAg0B,EAAAkgM,EAAAhwN,EAAAkpN,EAAAnF,GAAAmM,EAAAp0N,KAAA,IAEAotN,EAAAp5L,KAAA4pK,EAAA5pK,GAAAi0L,UAOAyM,EAAAb,GACAa,IAAA92B,EACA82B,EAAA7lN,OAAAylN,EAAAI,EAAAh1N,QACAg1N,GAEAR,EACAA,EAAA,KAAAt2B,EAAA82B,EAAA9C,GAEA/xN,EAAAwY,MAAAulL,EAAA82B,MAMA,SAAAC,GAAArB,GAyBA,IAxBA,IAAAsB,EAAAtC,EAAAh5M,EACA61B,EAAAmkL,EAAA5zN,OACAm1N,EAAApL,EAAAztL,SAAAs3L,EAAA,GAAAl0N,MACA01N,EAAAD,GAAApL,EAAAztL,SAAA,KACAh8B,EAAA60N,EAAA,EAAA,EAGAE,EAAA7H,IAAA,SAAAjF,GACA,OAAAA,IAAA2M,IACAE,GAAA,GACAE,EAAA9H,IAAA,SAAAjF,GACA,OAAA/jN,EAAA0wN,EAAA3M,IAAA,IACA6M,GAAA,GACAlB,EAAA,CAAA,SAAA3L,EAAA3gL,EAAAsqL,GACA,IAAAv8B,GAAAw/B,IAAAjD,GAAAtqL,IAAAuiL,MACA+K,EAAAttL,GAAAvvB,SACAg9M,EAAA9M,EAAA3gL,EAAAsqL,GACAoD,EAAA/M,EAAA3gL,EAAAsqL,IAIA,OADAgD,EAAA,KACAv/B,IAGAr1L,EAAAmvC,EAAAnvC,IACA,GAAAsyN,EAAA7I,EAAAztL,SAAAs3L,EAAAtzN,GAAAZ,MACAw0N,EAAA,CAAA1G,GAAAyG,GAAAC,GAAAtB,QACA,CAIA,IAHAA,EAAA7I,EAAAhqN,OAAA6zN,EAAAtzN,GAAAZ,MAAAiZ,MAAA,KAAAi7M,EAAAtzN,GAAA4sC,UAGA67K,GAAA,CAIA,IADAnvM,IAAAtZ,EACAsZ,EAAA61B,IACAs6K,EAAAztL,SAAAs3L,EAAAh6M,GAAAla,MADAka,KAKA,OAAA06M,GACAh0N,EAAA,GAAA2zN,GAAAC,GACA5zN,EAAA,GAAA2tN,GAGA2F,EACAvjN,MAAA,EAAA/P,EAAA,GACAinC,OAAA,CAAA9nC,MAAA,MAAAm0N,EAAAtzN,EAAA,GAAAZ,KAAA,IAAA,MACAyX,QAAAu0M,EAAA,MACAkH,EACAtyN,EAAAsZ,GAAAq7M,GAAArB,EAAAvjN,MAAA/P,EAAAsZ,IACAA,EAAA61B,GAAAwlL,GAAArB,EAAAA,EAAAvjN,MAAAuJ,IACAA,EAAA61B,GAAAw+K,GAAA2F,IAGAM,EAAA/zN,KAAAyyN,GAIA,OAAAqB,GAAAC,GAoTA,OAtpBA/5B,GAAAzxL,UAAAqhN,EAAA3wB,QAAA2wB,EAAAyB,QACAzB,EAAA5vB,WAAA,IAAAA,GAEA+vB,EAAAJ,GAAAI,SAAA,SAAAr3L,EAAA0iM,GACA,IAAA7C,EAAA5hN,EAAA8iN,EAAAl0N,EACA81N,EAAAzrH,EAAA0rH,EACA/7G,EAAAsxG,EAAAn4L,EAAA,KAEA,GAAA6mF,EACA,OAAA67G,EAAA,EAAA77G,EAAArpG,MAAA,GAOA,IAJAmlN,EAAA3iM,EACAk3E,EAAA,GACA0rH,EAAA1L,EAAAwH,UAEAiE,GAAA,CA2BA,IAAA91N,KAxBAgzN,KAAA5hN,EAAA66M,EAAA3zM,KAAAw9M,MACA1kN,IAGA0kN,EAAAA,EAAAnlN,MAAAS,EAAA,GAAA9Q,SAAAw1N,GAEAzrH,EAAA5pG,KAAAyzN,EAAA,KAGAlB,GAAA,GAGA5hN,EAAA86M,EAAA5zM,KAAAw9M,MACA9C,EAAA5hN,EAAAyP,QACAqzM,EAAAzzN,KAAA,CACAV,MAAAizN,EAGAhzN,KAAAoR,EAAA,GAAAqG,QAAAu0M,EAAA,OAEA8J,EAAAA,EAAAnlN,MAAAqiN,EAAA1yN,SAIA+pN,EAAAhqN,SACA+Q,EAAAk7M,EAAAtsN,GAAAsY,KAAAw9M,KAAAC,EAAA/1N,MACAoR,EAAA2kN,EAAA/1N,GAAAoR,MACA4hN,EAAA5hN,EAAAyP,QACAqzM,EAAAzzN,KAAA,CACAV,MAAAizN,EACAhzN,KAAAA,EACAwtC,QAAAp8B,IAEA0kN,EAAAA,EAAAnlN,MAAAqiN,EAAA1yN,SAIA,IAAA0yN,EACA,MAOA,OAAA6C,EACAC,EAAAx1N,OACAw1N,EACA1L,GAAAtmN,MAAAqvB,GAGAm4L,EAAAn4L,EAAAk3E,GAAA15F,MAAA,IA4ZAqlH,EAAAo0F,GAAAp0F,QAAA,SAAA7iG,EAAA/hB,GACA,IAAAxQ,EACAo1N,EAAA,GACAC,EAAA,GACAj8G,EAAAuxG,EAAAp4L,EAAA,KAEA,IAAA6mF,EAAA,CAOA,IAJA5oG,IACAA,EAAAo5M,EAAAr3L,IAEAvyB,EAAAwQ,EAAA9Q,OACAM,MACAo5G,EAAAu7G,GAAAnkN,EAAAxQ,KACAyoN,GACA2M,EAAAv1N,KAAAu5G,GAEAi8G,EAAAx1N,KAAAu5G,IAKAA,EAAAuxG,EACAp4L,EArJA,SAAA8iM,EAAAD,GACA,IAAAE,EAAAF,EAAA11N,OAAA,EACA61N,EAAAF,EAAA31N,OAAA,EACA81N,EAAA,SAAApI,EAAA9lL,EAAAsqL,EAAAh0B,EAAA63B,GACA,IAAAxN,EAAA3uM,EAAAg5M,EACAoD,EAAA,EACA11N,EAAA,IACAuyN,EAAAnF,GAAA,GACAuI,EAAA,GACAC,EAAA/L,EAGA9B,EAAAqF,GAAAmI,GAAA9L,EAAAxqN,KAAA,IAAA,IAAAw2N,GAGAI,EAAAvL,GAAA,MAAAsL,EAAA,EAAArwN,KAAAkC,UAAA,GACA0nC,EAAA44K,EAAAroN,OAcA,IAZA+1N,IAMA5L,EAAAviL,GAAApmB,GAAAomB,GAAAmuL,GAMAz1N,IAAAmvC,GAAA,OAAA84K,EAAAF,EAAA/nN,IAAAA,IAAA,CACA,GAAAu1N,GAAAtN,EAAA,CAWA,IAVA3uM,EAAA,EAMAguB,GAAA2gL,EAAAuF,eAAAtsM,IACA8oM,EAAA/B,GACA2J,GAAA1H,GAEAoI,EAAA+C,EAAA/7M,MACA,GAAAg5M,EAAArK,EAAA3gL,GAAApmB,EAAA0wM,GAAA,CACAh0B,EAAA/9L,KAAAooN,GACA,MAGAwN,IACAnL,EAAAuL,GAKAP,KAGArN,GAAAqK,GAAArK,IACAyN,IAIAtI,GACAmF,EAAA1yN,KAAAooN,IAgBA,GATAyN,GAAA11N,EASAs1N,GAAAt1N,IAAA01N,EAAA,CAEA,IADAp8M,EAAA,EACAg5M,EAAA8C,EAAA97M,MACAg5M,EAAAC,EAAAoD,EAAAruL,EAAAsqL,GAGA,GAAAxE,EAAA,CAGA,GAAAsI,EAAA,EACA,KAAA11N,KACAuyN,EAAAvyN,IAAA21N,EAAA31N,KACA21N,EAAA31N,GAAAi7C,EAAA1iC,KAAAqlL,IAMA+3B,EAAA9B,GAAA8B,GAIA91N,EAAAwY,MAAAulL,EAAA+3B,GAGAF,IAAArI,GAAAuI,EAAAj2N,OAAA,GACAg2N,EAAAN,EAAA11N,OAAA,GAEA8pN,GAAA8G,WAAA1yB,GAUA,OALA63B,IACAnL,EAAAuL,EACAhM,EAAA+L,GAGArD,GAGA,OAAA+C,EACAxH,GAAA0H,GACAA,EA4BAM,CAAAT,EAAAD,KAIA7iM,SAAAA,EAEA,OAAA6mF,GAYAt4G,EAAA0oN,GAAA1oN,OAAA,SAAAyxB,EAAA+U,EAAAs2J,EAAAwvB,GACA,IAAAptN,EAAAszN,EAAAyC,EAAA32N,EAAAH,EACA+2N,EAAA,mBAAAzjM,GAAAA,EACA/hB,GAAA48M,GAAAxD,EAAAr3L,EAAAyjM,EAAAzjM,UAAAA,GAMA,GAJAqrK,EAAAA,GAAA,GAIA,IAAAptL,EAAA9Q,OAAA,CAIA,IADA4zN,EAAA9iN,EAAA,GAAAA,EAAA,GAAAT,MAAA,IACArQ,OAAA,GAAA,QAAAq2N,EAAAzC,EAAA,IAAAl0N,MACA,IAAAkoC,EAAAvvB,UAAAmyM,GAAAT,EAAAztL,SAAAs3L,EAAA,GAAAl0N,MAAA,CAIA,KAFAkoC,GAAAmiL,EAAAxqN,KAAA,GAAA82N,EAAAnpL,QAAA,GACA/1B,QAAA41M,GAAAC,IAAAplL,IAAA,IAAA,IAEA,OAAAs2J,EAGAo4B,IACA1uL,EAAAA,EAAA1O,YAGArG,EAAAA,EAAAxiB,MAAAujN,EAAArzM,QAAA9gB,MAAAO,QAKA,IADAM,EAAA0rN,EAAA,aAAAnrM,KAAAgS,GAAA,EAAA+gM,EAAA5zN,OACAM,MACA+1N,EAAAzC,EAAAtzN,IAGAypN,EAAAztL,SAAA58B,EAAA22N,EAAA32N,QAGA,IAAAH,EAAAwqN,EAAAxqN,KAAAG,MAGAguN,EAAAnuN,EACA82N,EAAAnpL,QAAA,GAAA/1B,QAAA41M,GAAAC,IACAF,GAAAjsM,KAAA+yM,EAAA,GAAAl0N,OAAAsuN,GAAApmL,EAAA1O,aACA0O,IACA,CAKA,GAFAgsL,EAAAzkN,OAAA7O,EAAA,KACAuyB,EAAA66L,EAAA1tN,QAAAiuN,GAAA2F,IAGA,OADAzzN,EAAAwY,MAAAulL,EAAAwvB,GACAxvB,EAGA,OAeA,OAPAo4B,GAAA5gG,EAAA7iG,EAAA/hB,IACA48M,EACA9lL,GACA4iL,EACAtsB,GACAt2J,GAAAklL,GAAAjsM,KAAAgS,IAAAm7L,GAAApmL,EAAA1O,aAAA0O,GAEAs2J,GAMA91J,EAAA2oL,WAAAhI,EAAAr5M,MAAA,IAAA1H,KAAAmjN,GAAA9qN,KAAA,MAAA0oN,EAIA3gL,EAAA0oL,mBAAAzG,EAGAC,IAIAliL,EAAAkoL,aAAAjC,IAAA,SAAAv7L,GAGA,OAAA,EAAAA,EAAAo9L,wBAAA1uM,EAAAyR,cAAA,gBAMAo7L,IAAA,SAAAv7L,GAEA,OADAA,EAAAkV,UAAA,mBACA,MAAAlV,EAAA4a,WAAAn+B,aAAA,YAEA++M,GAAA,0BAAA,SAAA/F,EAAA1oN,EAAAoqN,GACA,IAAAA,EACA,OAAA1B,EAAAh5M,aAAA1P,EAAA,SAAAA,EAAAikB,cAAA,EAAA,MAOAskB,EAAAiM,YAAAg6K,IAAA,SAAAv7L,GAGA,OAFAA,EAAAkV,UAAA,WACAlV,EAAA4a,WAAAvd,aAAA,QAAA,IACA,KAAA2C,EAAA4a,WAAAn+B,aAAA,aAEA++M,GAAA,SAAA,SAAA/F,EAAAgO,EAAAtM,GACA,IAAAA,GAAA,UAAA1B,EAAA5kL,SAAA7f,cACA,OAAAykM,EAAAhkN,gBAOA8pN,IAAA,SAAAv7L,GACA,OAAA,MAAAA,EAAAvjB,aAAA,gBAEA++M,GAAAjD,GAAA,SAAA9C,EAAA1oN,EAAAoqN,GACA,IAAA7pN,EACA,IAAA6pN,EACA,OAAA,IAAA1B,EAAA1oN,GAAAA,EAAAikB,eACA1jB,EAAAmoN,EAAAoH,iBAAA9vN,KAAAO,EAAAswN,UACAtwN,EAAAX,MACA,QAKAqqN,GA14EA,CA44EA7lN,GAIArD,EAAArB,KAAAuqN,EACAlpN,EAAA6vN,KAAA3G,EAAAmH,UAGArwN,EAAA6vN,KAAA,KAAA7vN,EAAA6vN,KAAAjF,QACA5qN,EAAAgwN,WAAAhwN,EAAA41N,OAAA1M,EAAA8G,WACAhwN,EAAAwB,KAAA0nN,EAAAE,QACAppN,EAAA61N,SAAA3M,EAAAG,MACArpN,EAAAuoC,SAAA2gL,EAAA3gL,SACAvoC,EAAA81N,eAAA5M,EAAA34B,OAKA,IAAA5nI,EAAA,SAAAg/J,EAAAh/J,EAAAotK,GAIA,IAHA,IAAAjE,EAAA,GACAkE,OAAA7vL,IAAA4vL,GAEApO,EAAAA,EAAAh/J,KAAA,IAAAg/J,EAAAlwM,UACA,GAAA,IAAAkwM,EAAAlwM,SAAA,CACA,GAAAu+M,GAAAh2N,EAAA2nN,GAAAtoN,GAAA02N,GACA,MAEAjE,EAAAvyN,KAAAooN,GAGA,OAAAmK,GAIAmE,EAAA,SAAArsN,EAAA+9M,GAGA,IAFA,IAAAmK,EAAA,GAEAloN,EAAAA,EAAAA,EAAA4uB,YACA,IAAA5uB,EAAA6N,UAAA7N,IAAA+9M,GACAmK,EAAAvyN,KAAAqK,GAIA,OAAAkoN,GAIAoE,EAAAl2N,EAAA6vN,KAAA3/M,MAAA07M,aAIA,SAAA7oL,EAAA4kL,EAAA1oN,GAEA,OAAA0oN,EAAA5kL,UAAA4kL,EAAA5kL,SAAA7f,gBAAAjkB,EAAAikB,cAGA,IAAAizM,EAAA,kEAKA,SAAAC,EAAAhhJ,EAAAihJ,EAAAtE,GACA,OAAAlL,EAAAwP,GACAr2N,EAAA6nN,KAAAzyI,GAAA,SAAAuyI,EAAAjoN,GACA,QAAA22N,EAAAp+M,KAAA0vM,EAAAjoN,EAAAioN,KAAAoK,KAKAsE,EAAA5+M,SACAzX,EAAA6nN,KAAAzyI,GAAA,SAAAuyI,GACA,OAAAA,IAAA0O,IAAAtE,KAKA,iBAAAsE,EACAr2N,EAAA6nN,KAAAzyI,GAAA,SAAAuyI,GACA,OAAA/jN,EAAAqU,KAAAo+M,EAAA1O,IAAA,IAAAoK,KAKA/xN,EAAAb,OAAAk3N,EAAAjhJ,EAAA28I,GAGA/xN,EAAAb,OAAA,SAAA0wN,EAAApI,EAAAsK,GACA,IAAApK,EAAAF,EAAA,GAMA,OAJAsK,IACAlC,EAAA,QAAAA,EAAA,KAGA,IAAApI,EAAAroN,QAAA,IAAAuoN,EAAAlwM,SACAzX,EAAArB,KAAAuwN,gBAAAvH,EAAAkI,GAAA,CAAAlI,GAAA,GAGA3nN,EAAArB,KAAA2tC,QAAAujL,EAAA7vN,EAAA6nN,KAAAJ,GAAA,SAAAE,GACA,OAAA,IAAAA,EAAAlwM,cAIAzX,EAAA4B,GAAA2gC,OAAA,CACA5jC,KAAA,SAAAszB,GACA,IAAAvyB,EAAAq1L,EACAlmJ,EAAA9vC,KAAAK,OACAgE,EAAArE,KAEA,GAAA,iBAAAkzB,EACA,OAAAlzB,KAAAyoN,UAAAxnN,EAAAiyB,GAAA9yB,QAAA,WACA,IAAAO,EAAA,EAAAA,EAAAmvC,EAAAnvC,IACA,GAAAM,EAAAuoC,SAAAnlC,EAAA1D,GAAAX,MACA,OAAA,MAQA,IAFAg2L,EAAAh2L,KAAAyoN,UAAA,IAEA9nN,EAAA,EAAAA,EAAAmvC,EAAAnvC,IACAM,EAAArB,KAAAszB,EAAA7uB,EAAA1D,GAAAq1L,GAGA,OAAAlmJ,EAAA,EAAA7uC,EAAAgwN,WAAAj7B,GAAAA,GAEA51L,OAAA,SAAA8yB,GACA,OAAAlzB,KAAAyoN,UAAA4O,EAAAr3N,KAAAkzB,GAAA,IAAA,KAEA8/L,IAAA,SAAA9/L,GACA,OAAAlzB,KAAAyoN,UAAA4O,EAAAr3N,KAAAkzB,GAAA,IAAA,KAEA5yB,GAAA,SAAA4yB,GACA,QAAAmkM,EACAr3N,KAIA,iBAAAkzB,GAAAikM,EAAAj2M,KAAAgS,GACAjyB,EAAAiyB,GACAA,GAAA,IACA,GACA7yB,UASA,IAAAk3N,EAMArK,EAAA,uCAEAjsN,EAAA4B,GAAAqa,KAAA,SAAAgW,EAAA+U,EAAAggC,GACA,IAAA92D,EAAAy3M,EAGA,IAAA11L,EACA,OAAAlzB,KAQA,GAHAioE,EAAAA,GAAAsvJ,EAGA,iBAAArkM,EAAA,CAaA,KAPA/hB,EALA,MAAA+hB,EAAA,IACA,MAAAA,EAAAA,EAAA7yB,OAAA,IACA6yB,EAAA7yB,QAAA,EAGA,CAAA,KAAA6yB,EAAA,MAGAg6L,EAAA70M,KAAA6a,MAIA/hB,EAAA,IAAA82B,EA6CA,OAAAA,GAAAA,EAAAugL,QACAvgL,GAAAggC,GAAAroE,KAAAszB,GAKAlzB,KAAAiJ,YAAAg/B,GAAAroC,KAAAszB,GAhDA,GAAA/hB,EAAA,GAAA,CAYA,GAXA82B,EAAAA,aAAAhnC,EAAAgnC,EAAA,GAAAA,EAIAhnC,EAAAsxG,MAAAvyG,KAAAiB,EAAAu2N,UACArmN,EAAA,GACA82B,GAAAA,EAAAvvB,SAAAuvB,EAAAkmL,eAAAlmL,EAAApmB,GACA,IAIAu1M,EAAAl2M,KAAA/P,EAAA,KAAAlQ,EAAAkoN,cAAAlhL,GACA,IAAA92B,KAAA82B,EAGA6/K,EAAA9nN,KAAAmR,IACAnR,KAAAmR,GAAA82B,EAAA92B,IAIAnR,KAAAC,KAAAkR,EAAA82B,EAAA92B,IAKA,OAAAnR,KAYA,OARA4oN,EAAA/mM,EAAAqiB,eAAA/yB,EAAA,OAKAnR,KAAA,GAAA4oN,EACA5oN,KAAAK,OAAA,GAEAL,KAcA,OAAAkzB,EAAAxa,UACA1Y,KAAA,GAAAkzB,EACAlzB,KAAAK,OAAA,EACAL,MAIA8nN,EAAA50L,QACAkU,IAAA6gC,EAAAwvJ,MACAxvJ,EAAAwvJ,MAAAvkM,GAGAA,EAAAjyB,GAGAA,EAAA0oN,UAAAz2L,EAAAlzB,QAIA+I,UAAA9H,EAAA4B,GAGA00N,EAAAt2N,EAAA4gB,GAGA,IAAA61M,EAAA,iCAGAC,EAAA,CACAltM,UAAA,EACAmtM,UAAA,EACA5wN,MAAA,EACAE,MAAA,GAoFA,SAAA2wN,EAAA/I,EAAAllK,GACA,MAAAklK,EAAAA,EAAAllK,KAAA,IAAAklK,EAAAp2M,WACA,OAAAo2M,EAnFA7tN,EAAA4B,GAAA2gC,OAAA,CACA8D,IAAA,SAAAn4B,GACA,IAAAF,EAAAhO,EAAAkO,EAAAnP,MACAuQ,EAAAtB,EAAA5O,OAEA,OAAAL,KAAAI,QAAA,WAEA,IADA,IAAAO,EAAA,EACAA,EAAA4P,EAAA5P,IACA,GAAAM,EAAAuoC,SAAAxpC,KAAAiP,EAAAtO,IACA,OAAA,MAMAwa,QAAA,SAAAm2M,EAAArpL,GACA,IAAA6mL,EACAnuN,EAAA,EACA4P,EAAAvQ,KAAAK,OACA0yN,EAAA,GACA9jN,EAAA,iBAAAqiN,GAAArwN,EAAAqwN,GAGA,IAAA6F,EAAAj2M,KAAAowM,GACA,KAAA3wN,EAAA4P,EAAA5P,IACA,IAAAmuN,EAAA9uN,KAAAW,GAAAmuN,GAAAA,IAAA7mL,EAAA6mL,EAAAA,EAAAv1L,WAGA,GAAAu1L,EAAAp2M,SAAA,KAAAzJ,EACAA,EAAAqJ,MAAAw2M,IAAA,EAGA,IAAAA,EAAAp2M,UACAzX,EAAArB,KAAAuwN,gBAAArB,EAAAwC,IAAA,CAEAyB,EAAAvyN,KAAAsuN,GACA,MAMA,OAAA9uN,KAAAyoN,UAAAsK,EAAA1yN,OAAA,EAAAY,EAAAgwN,WAAA8B,GAAAA,IAIAz6M,MAAA,SAAAswM,GAGA,OAAAA,EAKA,iBAAAA,EACA/jN,EAAAqU,KAAAjY,EAAA2nN,GAAA5oN,KAAA,IAIA6E,EAAAqU,KAAAlZ,KAGA4oN,EAAAJ,OAAAI,EAAA,GAAAA,GAZA5oN,KAAA,IAAAA,KAAA,GAAAu5B,WAAAv5B,KAAAgxB,QAAAqd,UAAAhuC,QAAA,GAgBAid,IAAA,SAAA4V,EAAA+U,GACA,OAAAjoC,KAAAyoN,UACAxnN,EAAAgwN,WACAhwN,EAAAsxG,MAAAvyG,KAAA6d,MAAA5c,EAAAiyB,EAAA+U,OAKA6vL,QAAA,SAAA5kM,GACA,OAAAlzB,KAAAsd,IAAA,MAAA4V,EACAlzB,KAAA2oN,WAAA3oN,KAAA2oN,WAAAvoN,OAAA8yB,OAUAjyB,EAAApB,KAAA,CACAkS,OAAA,SAAA62M,GACA,IAAA72M,EAAA62M,EAAArvL,WACA,OAAAxnB,GAAA,KAAAA,EAAA2G,SAAA3G,EAAA,MAEA84B,QAAA,SAAA+9K,GACA,OAAAh/J,EAAAg/J,EAAA,eAEAmP,aAAA,SAAAnP,EAAAz+M,EAAA6sN,GACA,OAAAptK,EAAAg/J,EAAA,aAAAoO,IAEAhwN,KAAA,SAAA4hN,GACA,OAAAiP,EAAAjP,EAAA,gBAEA1hN,KAAA,SAAA0hN,GACA,OAAAiP,EAAAjP,EAAA,oBAEA16K,QAAA,SAAA06K,GACA,OAAAh/J,EAAAg/J,EAAA,gBAEAv6K,QAAA,SAAAu6K,GACA,OAAAh/J,EAAAg/J,EAAA,oBAEAoP,UAAA,SAAApP,EAAAz+M,EAAA6sN,GACA,OAAAptK,EAAAg/J,EAAA,cAAAoO,IAEAiB,UAAA,SAAArP,EAAAz+M,EAAA6sN,GACA,OAAAptK,EAAAg/J,EAAA,kBAAAoO,IAEAE,SAAA,SAAAtO,GACA,OAAAsO,GAAAtO,EAAArvL,YAAA,IAAAwU,WAAA66K,IAEAn+L,SAAA,SAAAm+L,GACA,OAAAsO,EAAAtO,EAAA76K,aAEA6pL,SAAA,SAAAhP,GACA,OAAA,MAAAA,EAAAsP,iBAKA1Q,EAAAoB,EAAAsP,iBAEAtP,EAAAsP,iBAMAl0L,EAAA4kL,EAAA,cACAA,EAAAA,EAAAuP,SAAAvP,GAGA3nN,EAAAsxG,MAAA,GAAAq2G,EAAAvkL,gBAEA,SAAAnkC,EAAA2C,GACA5B,EAAA4B,GAAA3C,GAAA,SAAA82N,EAAA9jM,GACA,IAAA6/L,EAAA9xN,EAAAif,IAAAlgB,KAAA6C,EAAAm0N,GAuBA,MArBA,UAAA92N,EAAAwQ,OAAA,KACAwiB,EAAA8jM,GAGA9jM,GAAA,iBAAAA,IACA6/L,EAAA9xN,EAAAb,OAAA8yB,EAAA6/L,IAGA/yN,KAAAK,OAAA,IAGAs3N,EAAAz3N,IACAe,EAAAgwN,WAAA8B,GAIA2E,EAAAx2M,KAAAhhB,IACA6yN,EAAAxsM,WAIAvmB,KAAAyoN,UAAAsK,OAGA,IAAAqF,EAAA,oBAsOA,SAAAC,EAAAh2N,GACA,OAAAA,EAEA,SAAAi2N,EAAAh3N,GACA,MAAAA,EAGA,SAAAi3N,EAAAz4N,EAAAonB,EAAA2jK,EAAA2tC,GACA,IAAAh2K,EAEA,IAGA1iD,GAAAgoN,EAAAtlK,EAAA1iD,EAAA24N,SACAj2K,EAAAtpC,KAAApZ,GAAAorN,KAAAhkM,GAAAwxM,KAAA7tC,GAGA/qL,GAAAgoN,EAAAtlK,EAAA1iD,EAAAinB,MACAy7B,EAAAtpC,KAAApZ,EAAAonB,EAAA2jK,GAQA3jK,EAAAlO,WAAAouB,EAAA,CAAAtnC,GAAA4Q,MAAA8nN,IAMA,MAAA14N,GAIA+qL,EAAA7xK,WAAAouB,EAAA,CAAAtnC,KAvOAmB,EAAA03N,UAAA,SAAAtkL,GAIAA,EAAA,iBAAAA,EAlCA,SAAAA,GACA,IAAA4d,EAAA,GAIA,OAHAhxD,EAAApB,KAAAw0C,EAAAljC,MAAAinN,IAAA,IAAA,SAAAvxK,EAAA+xK,GACA3mK,EAAA2mK,IAAA,KAEA3mK,EA8BA4mK,CAAAxkL,GACApzC,EAAAuiC,OAAA,GAAA6Q,GAEA,IACAykL,EAGA//F,EAGAggG,EAGAnjF,EAGAz1I,EAAA,GAGAuvK,EAAA,GAGAspD,GAAA,EAGAC,EAAA,WAQA,IALArjF,EAAAA,GAAAvhG,EAAAyI,KAIAi8K,EAAAD,GAAA,EACAppD,EAAArvK,OAAA24N,GAAA,EAEA,IADAjgG,EAAA22C,EAAA9uJ,UACAo4M,EAAA74N,EAAAE,SAGA,IAAAF,EAAA64N,GAAAhgN,MAAA+/G,EAAA,GAAAA,EAAA,KACA1kF,EAAA6kL,cAGAF,EAAA74N,EAAAE,OACA04H,GAAA,GAMA1kF,EAAA0kF,SACAA,GAAA,GAGA+/F,GAAA,EAGAljF,IAIAz1I,EADA44H,EACA,GAIA,KAMA10H,EAAA,CAGAiZ,IAAA,WA2BA,OA1BAnd,IAGA44H,IAAA+/F,IACAE,EAAA74N,EAAAE,OAAA,EACAqvK,EAAAlvK,KAAAu4H,IAGA,SAAAz7G,EAAAoU,GACAzwB,EAAApB,KAAA6xB,GAAA,SAAAm1B,EAAAkjK,GACAjC,EAAAiC,GACA11K,EAAAwiL,QAAAxyN,EAAAijC,IAAAyiL,IACA5pN,EAAAK,KAAAupN,GAEAA,GAAAA,EAAA1pN,QAAA,WAAAioN,EAAAyB,IAGAzsM,EAAAysM,MATA,CAYAvkM,WAEAuzG,IAAA+/F,GACAG,KAGAj5N,MAIAmC,OAAA,WAYA,OAXAlB,EAAApB,KAAA2lB,WAAA,SAAAqhC,EAAAkjK,GAEA,IADA,IAAAzxM,GACAA,EAAArX,EAAA2oN,QAAAG,EAAA5pN,EAAAmY,KAAA,GACAnY,EAAAqP,OAAA8I,EAAA,GAGAA,GAAA0gN,GACAA,OAIAh5N,MAKAsnC,IAAA,SAAAzkC,GACA,OAAAA,EACA5B,EAAA2oN,QAAA/mN,EAAA1C,IAAA,EACAA,EAAAE,OAAA,GAIAmuM,MAAA,WAIA,OAHAruM,IACAA,EAAA,IAEAH,MAMA+tD,QAAA,WAGA,OAFA6nF,EAAA85B,EAAA,GACAvvK,EAAA44H,EAAA,GACA/4H,MAEAo5D,SAAA,WACA,OAAAj5D,GAMA+1I,KAAA,WAKA,OAJAN,EAAA85B,EAAA,GACA32C,GAAA+/F,IACA34N,EAAA44H,EAAA,IAEA/4H,MAEA41I,OAAA,WACA,QAAAA,GAIAujF,SAAA,SAAAlxL,EAAAvW,GASA,OARAkkH,IAEAlkH,EAAA,CAAAuW,GADAvW,EAAAA,GAAA,IACAhhB,MAAAghB,EAAAhhB,QAAAghB,GACAg+I,EAAAlvK,KAAAkxB,GACAonM,GACAG,KAGAj5N,MAIAi5N,KAAA,WAEA,OADA50N,EAAA80N,SAAAn5N,KAAAwlB,WACAxlB,MAIA+4N,MAAA,WACA,QAAAA,IAIA,OAAA10N,GA4CApD,EAAAuiC,OAAA,CAEA41L,SAAA,SAAAt3N,GACA,IAAAu3N,EAAA,CAIA,CAAA,SAAA,WAAAp4N,EAAA03N,UAAA,UACA13N,EAAA03N,UAAA,UAAA,GACA,CAAA,UAAA,OAAA13N,EAAA03N,UAAA,eACA13N,EAAA03N,UAAA,eAAA,EAAA,YACA,CAAA,SAAA,OAAA13N,EAAA03N,UAAA,eACA13N,EAAA03N,UAAA,eAAA,EAAA,aAEAvwJ,EAAA,UACAqwJ,EAAA,CACArwJ,MAAA,WACA,OAAAA,GAEAkxJ,OAAA,WAEA,OADAC,EAAArO,KAAA1lM,WAAAkzM,KAAAlzM,WACAxlB,MAEAgzL,MAAA,SAAAnwL,GACA,OAAA41N,EAAA1xM,KAAA,KAAAlkB,IAIA0wB,KAAA,WACA,IAAAimM,EAAAh0M,UAEA,OAAAvkB,EAAAm4N,UAAA,SAAAK,GACAx4N,EAAApB,KAAAw5N,GAAA,SAAAlvN,EAAAuvN,GAGA,IAAA72N,EAAAilN,EAAA0R,EAAAE,EAAA,MAAAF,EAAAE,EAAA,IAKAH,EAAAG,EAAA,KAAA,WACA,IAAAC,EAAA92N,GAAAA,EAAAmW,MAAAhZ,KAAAwlB,WACAm0M,GAAA7R,EAAA6R,EAAAlB,SACAkB,EAAAlB,UACA37M,SAAA28M,EAAAzzJ,QACAklJ,KAAAuO,EAAAvyM,SACAwxM,KAAAe,EAAA5uC,QAEA4uC,EAAAC,EAAA,GAAA,QACA15N,KACA6C,EAAA,CAAA82N,GAAAn0M,iBAKAg0M,EAAA,QACAf,WAEA1xM,KAAA,SAAAC,EAAA4yM,EAAAtwC,GACA,IAAAuwC,EAAA,EACA,SAAA3yM,EAAAykD,EAAA4tJ,EAAA9tL,EAAAquL,GACA,OAAA,WACA,IAAAC,EAAA/5N,KACA0xB,EAAAlM,UACAw0M,EAAA,WACA,IAAAL,EAAA5yM,EAKA,KAAA4kD,EAAAkuJ,GAAA,CAQA,IAJAF,EAAAluL,EAAAzyB,MAAA+gN,EAAAroM,MAIA6nM,EAAAd,UACA,MAAA,IAAApxL,UAAA,4BAOAtgB,EAAA4yM,IAKA,iBAAAA,GACA,mBAAAA,IACAA,EAAA5yM,KAGA+gM,EAAA/gM,GAGA+yM,EACA/yM,EAAA7N,KACAygN,EACAzyM,EAAA2yM,EAAAN,EAAAlB,EAAAyB,GACA5yM,EAAA2yM,EAAAN,EAAAjB,EAAAwB,KAOAD,IAEA9yM,EAAA7N,KACAygN,EACAzyM,EAAA2yM,EAAAN,EAAAlB,EAAAyB,GACA5yM,EAAA2yM,EAAAN,EAAAjB,EAAAwB,GACA5yM,EAAA2yM,EAAAN,EAAAlB,EACAkB,EAAAU,eASAxuL,IAAA4sL,IACA0B,OAAA3yL,EACA1V,EAAA,CAAAioM,KAKAG,GAAAP,EAAAW,aAAAH,EAAAroM,MAKAyoM,EAAAL,EACAE,EACA,WACA,IACAA,IACA,MAAAntM,GAEA5rB,EAAAm4N,SAAAgB,eACAn5N,EAAAm4N,SAAAgB,cAAAvtM,EACAstM,EAAAE,YAMA1uJ,EAAA,GAAAkuJ,IAIApuL,IAAA6sL,IACAyB,OAAA3yL,EACA1V,EAAA,CAAA7E,IAGA0sM,EAAAe,WAAAP,EAAAroM,MASAi6C,EACAwuJ,KAKAl5N,EAAAm4N,SAAAmB,eACAJ,EAAAE,WAAAp5N,EAAAm4N,SAAAmB,gBAEAj2N,EAAA6d,WAAAg4M,KAKA,OAAAl5N,EAAAm4N,UAAA,SAAAK,GAGAJ,EAAA,GAAA,GAAA/7M,IACA4J,EACA,EACAuyM,EACA3R,EAAAx+B,GACAA,EACA+uC,EACAoB,EAAAQ,aAKAZ,EAAA,GAAA,GAAA/7M,IACA4J,EACA,EACAuyM,EACA3R,EAAA9gM,GACAA,EACAqxM,IAKAgB,EAAA,GAAA,GAAA/7M,IACA4J,EACA,EACAuyM,EACA3R,EAAA8R,GACAA,EACAtB,OAGAG,WAKAA,QAAA,SAAA13N,GACA,OAAA,MAAAA,EAAAE,EAAAuiC,OAAAziC,EAAA03N,GAAAA,IAGAc,EAAA,GAkEA,OA/DAt4N,EAAApB,KAAAw5N,GAAA,SAAA14N,EAAA+4N,GACA,IAAAv5N,EAAAu5N,EAAA,GACAc,EAAAd,EAAA,GAKAjB,EAAAiB,EAAA,IAAAv5N,EAAAmd,IAGAk9M,GACAr6N,EAAAmd,KACA,WAIA8qD,EAAAoyJ,IAKAnB,EAAA,EAAA14N,GAAA,GAAAotD,QAIAsrK,EAAA,EAAA14N,GAAA,GAAAotD,QAGAsrK,EAAA,GAAA,GAAAnjF,KAGAmjF,EAAA,GAAA,GAAAnjF,MAOA/1I,EAAAmd,IAAAo8M,EAAA,GAAAT,MAKAM,EAAAG,EAAA,IAAA,WAEA,OADAH,EAAAG,EAAA,GAAA,QAAA15N,OAAAu5N,OAAAnyL,EAAApnC,KAAAwlB,WACAxlB,MAMAu5N,EAAAG,EAAA,GAAA,QAAAv5N,EAAAg5N,YAIAV,EAAAA,QAAAc,GAGAz3N,GACAA,EAAAoX,KAAAqgN,EAAAA,GAIAA,GAIAkB,KAAA,SAAAC,GACA,IAGAC,EAAAn1M,UAAAnlB,OAGAM,EAAAg6N,EAGAC,EAAA1tN,MAAAvM,GACAk6N,EAAAnqN,EAAAwI,KAAAsM,WAGAs1M,EAAA75N,EAAAm4N,WAGA2B,EAAA,SAAAp6N,GACA,OAAA,SAAAb,GACA86N,EAAAj6N,GAAAX,KACA66N,EAAAl6N,GAAA6kB,UAAAnlB,OAAA,EAAAqQ,EAAAwI,KAAAsM,WAAA1lB,IACA66N,GACAG,EAAAZ,YAAAU,EAAAC,KAMA,GAAAF,GAAA,IACApC,EAAAmC,EAAAI,EAAA5P,KAAA6P,EAAAp6N,IAAAumB,QAAA4zM,EAAAjwC,QACA8vC,GAGA,YAAAG,EAAA1yJ,SACA0/I,EAAA+S,EAAAl6N,IAAAk6N,EAAAl6N,GAAAomB,OAEA,OAAA+zM,EAAA/zM,OAKA,KAAApmB,KACA43N,EAAAsC,EAAAl6N,GAAAo6N,EAAAp6N,GAAAm6N,EAAAjwC,QAGA,OAAAiwC,EAAArC,aAOA,IAAAuC,EAAA,yDAEA/5N,EAAAm4N,SAAAgB,cAAA,SAAAv2N,EAAAo3N,GAIA32N,EAAA2J,SAAA3J,EAAA2J,QAAAC,MAAArK,GAAAm3N,EAAA95M,KAAArd,EAAA3D,OACAoE,EAAA2J,QAAAC,KAAA,8BAAArK,EAAAuK,QAAAvK,EAAAo3N,MAAAA,IAOAh6N,EAAAi6N,eAAA,SAAAr3N,GACAS,EAAA6d,YAAA,WACA,MAAAte,MAQA,IAAAs3N,EAAAl6N,EAAAm4N,WAkDA,SAAAgC,IACAv5M,EAAAgiB,oBAAA,mBAAAu3L,GACA92N,EAAAu/B,oBAAA,OAAAu3L,GACAn6N,EAAAw2N,QAnDAx2N,EAAA4B,GAAA40N,MAAA,SAAA50N,GAYA,OAVAs4N,EACAp0M,KAAAlkB,GAKAmwL,OAAA,SAAAnvL,GACA5C,EAAAi6N,eAAAr3N,MAGA7D,MAGAiB,EAAAuiC,OAAA,CAGA6lL,SAAA,EAIAgS,UAAA,EAGA5D,MAAA,SAAA6D,KAGA,IAAAA,IAAAr6N,EAAAo6N,UAAAp6N,EAAAooN,WAKApoN,EAAAooN,SAAA,GAGA,IAAAiS,KAAAr6N,EAAAo6N,UAAA,GAKAF,EAAAjB,YAAAr4M,EAAA,CAAA5gB,QAIAA,EAAAw2N,MAAA1wM,KAAAo0M,EAAAp0M,KAaA,aAAAlF,EAAA8jJ,YACA,YAAA9jJ,EAAA8jJ,aAAA9jJ,EAAAkX,gBAAAwiM,SAGAj3N,EAAA6d,WAAAlhB,EAAAw2N,QAKA51M,EAAA+hB,iBAAA,mBAAAw3L,GAGA92N,EAAAs/B,iBAAA,OAAAw3L,IAQA,IAAAI,EAAA,SAAA9S,EAAA7lN,EAAAkgB,EAAAjjB,EAAA27N,EAAAC,EAAA/gN,GACA,IAAAha,EAAA,EACAmvC,EAAA44K,EAAAroN,OACAs7N,EAAA,MAAA54M,EAGA,GAAA,WAAAulM,EAAAvlM,GAEA,IAAApiB,KADA86N,GAAA,EACA14M,EACAy4M,EAAA9S,EAAA7lN,EAAAlC,EAAAoiB,EAAApiB,IAAA,EAAA+6N,EAAA/gN,QAIA,QAAAysB,IAAAtnC,IACA27N,GAAA,EAEA3T,EAAAhoN,KACA6a,GAAA,GAGAghN,IAGAhhN,GACA9X,EAAAqW,KAAAwvM,EAAA5oN,GACA+C,EAAA,OAIA84N,EAAA94N,EACAA,EAAA,SAAA+lN,EAAAl1L,EAAA5zB,GACA,OAAA67N,EAAAziN,KAAAjY,EAAA2nN,GAAA9oN,MAKA+C,GACA,KAAAlC,EAAAmvC,EAAAnvC,IACAkC,EACA6lN,EAAA/nN,GAAAoiB,EAAApI,EACA7a,EACAA,EAAAoZ,KAAAwvM,EAAA/nN,GAAAA,EAAAkC,EAAA6lN,EAAA/nN,GAAAoiB,KAMA,OAAA04M,EACA/S,EAIAiT,EACA94N,EAAAqW,KAAAwvM,GAGA54K,EAAAjtC,EAAA6lN,EAAA,GAAA3lM,GAAA24M,GAKAE,EAAA,QACAC,EAAA,YAGA,SAAAC,EAAAC,EAAAC,GACA,OAAAA,EAAA/9M,cAMA,SAAAg+M,EAAAj2H,GACA,OAAAA,EAAAxuF,QAAAokN,EAAA,OAAApkN,QAAAqkN,EAAAC,GAEA,IAAAI,EAAA,SAAAC,GAQA,OAAA,IAAAA,EAAAzjN,UAAA,IAAAyjN,EAAAzjN,YAAAyjN,EAAAzjN,UAMA,SAAA0jN,IACAp8N,KAAAopN,QAAAnoN,EAAAmoN,QAAAgT,EAAAC,MAGAD,EAAAC,IAAA,EAEAD,EAAArzN,UAAA,CAEAzF,MAAA,SAAA64N,GAGA,IAAAr8N,EAAAq8N,EAAAn8N,KAAAopN,SA4BA,OAzBAtpN,IACAA,EAAA,GAKAo8N,EAAAC,KAIAA,EAAAzjN,SACAyjN,EAAAn8N,KAAAopN,SAAAtpN,EAMA4I,OAAAC,eAAAwzN,EAAAn8N,KAAAopN,QAAA,CACAtpN,MAAAA,EACAojC,cAAA,MAMApjC,GAEAmlB,IAAA,SAAAk3M,EAAAn6N,EAAAlC,GACA,IAAAyC,EACAe,EAAAtD,KAAAsD,MAAA64N,GAIA,GAAA,iBAAAn6N,EACAsB,EAAA24N,EAAAj6N,IAAAlC,OAMA,IAAAyC,KAAAP,EACAsB,EAAA24N,EAAA15N,IAAAP,EAAAO,GAGA,OAAAe,GAEAua,IAAA,SAAAs+M,EAAAp5M,GACA,YAAAqkB,IAAArkB,EACA/iB,KAAAsD,MAAA64N,GAGAA,EAAAn8N,KAAAopN,UAAA+S,EAAAn8N,KAAAopN,SAAA6S,EAAAl5M,KAEAy4M,OAAA,SAAAW,EAAAp5M,EAAAjjB,GAaA,YAAAsnC,IAAArkB,GACAA,GAAA,iBAAAA,QAAAqkB,IAAAtnC,EAEAE,KAAA6d,IAAAs+M,EAAAp5M,IASA/iB,KAAAilB,IAAAk3M,EAAAp5M,EAAAjjB,QAIAsnC,IAAAtnC,EAAAA,EAAAijB,IAEA5gB,OAAA,SAAAg6N,EAAAp5M,GACA,IAAApiB,EACA2C,EAAA64N,EAAAn8N,KAAAopN,SAEA,QAAAhiL,IAAA9jC,EAAA,CAIA,QAAA8jC,IAAArkB,EAAA,CAkBApiB,GAXAoiB,EAJA7V,MAAAhM,QAAA6hB,GAIAA,EAAA7C,IAAA+7M,IAEAl5M,EAAAk5M,EAAAl5M,MAIAzf,EACA,CAAAyf,GACAA,EAAA5R,MAAAinN,IAAA,IAGA/3N,OAEA,KAAAM,YACA2C,EAAAyf,EAAApiB,UAKAymC,IAAArkB,GAAA9hB,EAAAwoN,cAAAnmN,MAMA64N,EAAAzjN,SACAyjN,EAAAn8N,KAAAopN,cAAAhiL,SAEA+0L,EAAAn8N,KAAAopN,YAIAkT,QAAA,SAAAH,GACA,IAAA74N,EAAA64N,EAAAn8N,KAAAopN,SACA,YAAAhiL,IAAA9jC,IAAArC,EAAAwoN,cAAAnmN,KAGA,IAAAi5N,EAAA,IAAAH,EAEAI,EAAA,IAAAJ,EAcAK,EAAA,gCACAC,EAAA,SA2BA,SAAAC,EAAA/T,EAAA7lM,EAAA/gB,GACA,IAAA9B,EAIA,QAAAknC,IAAAplC,GAAA,IAAA4mN,EAAAlwM,SAIA,GAHAxY,EAAA,QAAA6iB,EAAAvL,QAAAklN,EAAA,OAAAv4M,cAGA,iBAFAniB,EAAA4mN,EAAAh5M,aAAA1P,IAEA,CACA,IACA8B,EApCA,SAAAA,GACA,MAAA,SAAAA,GAIA,UAAAA,IAIA,SAAAA,EACA,KAIAA,KAAAA,EAAA,IACAA,EAGAy6N,EAAAv7M,KAAAlf,GACAwB,KAAAgxF,MAAAxyF,GAGAA,GAcAozM,CAAApzM,GACA,MAAA6qB,IAGA2vM,EAAAv3M,IAAA2jM,EAAA7lM,EAAA/gB,QAEAA,OAAAolC,EAGA,OAAAplC,EAGAf,EAAAuiC,OAAA,CACA84L,QAAA,SAAA1T,GACA,OAAA4T,EAAAF,QAAA1T,IAAA2T,EAAAD,QAAA1T,IAGA5mN,KAAA,SAAA4mN,EAAA1oN,EAAA8B,GACA,OAAAw6N,EAAAhB,OAAA5S,EAAA1oN,EAAA8B,IAGA46N,WAAA,SAAAhU,EAAA1oN,GACAs8N,EAAAr6N,OAAAymN,EAAA1oN,IAKA28N,MAAA,SAAAjU,EAAA1oN,EAAA8B,GACA,OAAAu6N,EAAAf,OAAA5S,EAAA1oN,EAAA8B,IAGA86N,YAAA,SAAAlU,EAAA1oN,GACAq8N,EAAAp6N,OAAAymN,EAAA1oN,MAIAe,EAAA4B,GAAA2gC,OAAA,CACAxhC,KAAA,SAAA+gB,EAAAjjB,GACA,IAAAa,EAAAT,EAAA8B,EACA4mN,EAAA5oN,KAAA,GACA6pC,EAAA++K,GAAAA,EAAAl0K,WAGA,QAAAtN,IAAArkB,EAAA,CACA,GAAA/iB,KAAAK,SACA2B,EAAAw6N,EAAA3+M,IAAA+qM,GAEA,IAAAA,EAAAlwM,WAAA6jN,EAAA1+M,IAAA+qM,EAAA,iBAAA,CAEA,IADAjoN,EAAAkpC,EAAAxpC,OACAM,KAIAkpC,EAAAlpC,IAEA,KADAT,EAAA2pC,EAAAlpC,GAAAT,MACA2E,QAAA,WACA3E,EAAA+7N,EAAA/7N,EAAAwQ,MAAA,IACAisN,EAAA/T,EAAA1oN,EAAA8B,EAAA9B,KAIAq8N,EAAAt3M,IAAA2jM,EAAA,gBAAA,GAIA,OAAA5mN,EAIA,MAAA,iBAAA+gB,EACA/iB,KAAAH,MAAA,WACA28N,EAAAv3M,IAAAjlB,KAAA+iB,MAIAy4M,EAAAx7N,MAAA,SAAAF,GACA,IAAAkC,EAOA,GAAA4mN,QAAAxhL,IAAAtnC,EAKA,YAAAsnC,KADAplC,EAAAw6N,EAAA3+M,IAAA+qM,EAAA7lM,UAQAqkB,KADAplC,EAAA26N,EAAA/T,EAAA7lM,IALA/gB,OAWA,EAIAhC,KAAAH,MAAA,WAGA28N,EAAAv3M,IAAAjlB,KAAA+iB,EAAAjjB,QAEA,KAAAA,EAAA0lB,UAAAnlB,OAAA,EAAA,MAAA,IAGAu8N,WAAA,SAAA75M,GACA,OAAA/iB,KAAAH,MAAA,WACA28N,EAAAr6N,OAAAnC,KAAA+iB,SAMA9hB,EAAAuiC,OAAA,CACAksI,MAAA,SAAAk5C,EAAA7oN,EAAAiC,GACA,IAAA0tK,EAEA,GAAAk5C,EAYA,OAXA7oN,GAAAA,GAAA,MAAA,QACA2vK,EAAA6sD,EAAA1+M,IAAA+qM,EAAA7oN,GAGAiC,KACA0tK,GAAAxiK,MAAAhM,QAAAc,GACA0tK,EAAA6sD,EAAAf,OAAA5S,EAAA7oN,EAAAkB,EAAA0oN,UAAA3nN,IAEA0tK,EAAAlvK,KAAAwB,IAGA0tK,GAAA,IAIAqtD,QAAA,SAAAnU,EAAA7oN,GACAA,EAAAA,GAAA,KAEA,IAAA2vK,EAAAzuK,EAAAyuK,MAAAk5C,EAAA7oN,GACAi9N,EAAAttD,EAAArvK,OACAwC,EAAA6sK,EAAA9uJ,QACAq8M,EAAAh8N,EAAAi8N,YAAAtU,EAAA7oN,GAMA,eAAA8C,IACAA,EAAA6sK,EAAA9uJ,QACAo8M,KAGAn6N,IAIA,OAAA9C,GACA2vK,EAAA/kI,QAAA,qBAIAsyL,EAAArkK,KACA/1D,EAAAqW,KAAA0vM,GApBA,WACA3nN,EAAA87N,QAAAnU,EAAA7oN,KAmBAk9N,KAGAD,GAAAC,GACAA,EAAAzuB,MAAAyqB,QAKAiE,YAAA,SAAAtU,EAAA7oN,GACA,IAAAgjB,EAAAhjB,EAAA,aACA,OAAAw8N,EAAA1+M,IAAA+qM,EAAA7lM,IAAAw5M,EAAAf,OAAA5S,EAAA7lM,EAAA,CACAyrL,MAAAvtM,EAAA03N,UAAA,eAAAr7M,KAAA,WACAi/M,EAAAp6N,OAAAymN,EAAA,CAAA7oN,EAAA,QAAAgjB,YAMA9hB,EAAA4B,GAAA2gC,OAAA,CACAksI,MAAA,SAAA3vK,EAAAiC,GACA,IAAAkqB,EAAA,EAQA,MANA,iBAAAnsB,IACAiC,EAAAjC,EACAA,EAAA,KACAmsB,KAGA1G,UAAAnlB,OAAA6rB,EACAjrB,EAAAyuK,MAAA1vK,KAAA,GAAAD,QAGAqnC,IAAAplC,EACAhC,KACAA,KAAAH,MAAA,WACA,IAAA6vK,EAAAzuK,EAAAyuK,MAAA1vK,KAAAD,EAAAiC,GAGAf,EAAAi8N,YAAAl9N,KAAAD,GAEA,OAAAA,GAAA,eAAA2vK,EAAA,IACAzuK,EAAA87N,QAAA/8N,KAAAD,OAIAg9N,QAAA,SAAAh9N,GACA,OAAAC,KAAAH,MAAA,WACAoB,EAAA87N,QAAA/8N,KAAAD,OAGAo9N,WAAA,SAAAp9N,GACA,OAAAC,KAAA0vK,MAAA3vK,GAAA,KAAA,KAKA04N,QAAA,SAAA14N,EAAAgB,GACA,IAAAm4E,EACA2F,EAAA,EACAu+I,EAAAn8N,EAAAm4N,WACA/iJ,EAAAr2E,KACAW,EAAAX,KAAAK,OACA6mB,EAAA,aACA23D,GACAu+I,EAAAlD,YAAA7jJ,EAAA,CAAAA,KAUA,IANA,iBAAAt2E,IACAgB,EAAAhB,EACAA,OAAAqnC,GAEArnC,EAAAA,GAAA,KAEAY,MACAu4E,EAAAqjJ,EAAA1+M,IAAAw4D,EAAA11E,GAAAZ,EAAA,gBACAm5E,EAAAs1H,QACA3vH,IACA3F,EAAAs1H,MAAAlxL,IAAA4J,IAIA,OADAA,IACAk2M,EAAA3E,QAAA13N,MAGA,IAAAs8N,GAAA,sCAAAz7L,OAEA07L,GAAA,IAAAz8M,OAAA,iBAAAw8M,GAAA,cAAA,KAGAE,GAAA,CAAA,MAAA,QAAA,SAAA,QAEAxkM,GAAAlX,EAAAkX,gBAIAykM,GAAA,SAAA5U,GACA,OAAA3nN,EAAAuoC,SAAAo/K,EAAAuF,cAAAvF,IAEA6U,GAAA,CAAAA,UAAA,GAOA1kM,GAAA2kM,cACAF,GAAA,SAAA5U,GACA,OAAA3nN,EAAAuoC,SAAAo/K,EAAAuF,cAAAvF,IACAA,EAAA8U,YAAAD,MAAA7U,EAAAuF,gBAGA,IAAAwP,GAAA,SAAA/U,EAAAz1L,GAOA,MAAA,UAHAy1L,EAAAz1L,GAAAy1L,GAGAj7L,MAAAiM,SACA,KAAAgvL,EAAAj7L,MAAAiM,SAMA4jM,GAAA5U,IAEA,SAAA3nN,EAAAksC,IAAAy7K,EAAA,YAKA,SAAAgV,GAAAhV,EAAArmN,EAAAs7N,EAAAptN,GACA,IAAAqtN,EAAA/mM,EACAgnM,EAAA,GACA/wM,EAAAvc,EACA,WACA,OAAAA,EAAAq+M,OAEA,WACA,OAAA7tN,EAAAksC,IAAAy7K,EAAArmN,EAAA,KAEAsnD,EAAA78B,IACA6E,EAAAgsM,GAAAA,EAAA,KAAA58N,EAAA+8N,UAAAz7N,GAAA,GAAA,MAGA07N,EAAArV,EAAAlwM,WACAzX,EAAA+8N,UAAAz7N,IAAA,OAAAsvB,IAAAg4B,IACAyzK,GAAAjlN,KAAApX,EAAAksC,IAAAy7K,EAAArmN,IAEA,GAAA07N,GAAAA,EAAA,KAAApsM,EAAA,CAYA,IARAg4B,GAAA,EAGAh4B,EAAAA,GAAAosM,EAAA,GAGAA,GAAAp0K,GAAA,EAEAk0K,KAIA98N,EAAA0sB,MAAAi7L,EAAArmN,EAAA07N,EAAApsM,IACA,EAAAkF,IAAA,GAAAA,EAAA/J,IAAA68B,GAAA,MAAA,IACAk0K,EAAA,GAEAE,GAAAlnM,EAIAknM,GAAA,EACAh9N,EAAA0sB,MAAAi7L,EAAArmN,EAAA07N,EAAApsM,GAGAgsM,EAAAA,GAAA,GAgBA,OAbAA,IACAI,GAAAA,IAAAp0K,GAAA,EAGAi0K,EAAAD,EAAA,GACAI,GAAAJ,EAAA,GAAA,GAAAA,EAAA,IACAA,EAAA,GACAptN,IACAA,EAAAohB,KAAAA,EACAphB,EAAAhK,MAAAw3N,EACAxtN,EAAA/J,IAAAo3N,IAGAA,EAIA,IAAAI,GAAA,GAEA,SAAAC,GAAAvV,GACA,IAAAj0L,EACAsQ,EAAA2jL,EAAAuF,cACAnqL,EAAA4kL,EAAA5kL,SACApK,EAAAskM,GAAAl6L,GAEA,OAAApK,IAIAjF,EAAAsQ,EAAAnJ,KAAAnC,YAAAsL,EAAA3R,cAAA0Q,IACApK,EAAA34B,EAAAksC,IAAAxY,EAAA,WAEAA,EAAA4E,WAAAS,YAAArF,GAEA,SAAAiF,IACAA,EAAA,SAEAskM,GAAAl6L,GAAApK,EAEAA,GAGA,SAAAwkM,GAAA/nJ,EAAA1zE,GAOA,IANA,IAAAi3B,EAAAgvL,EACAroN,EAAA,GACA+X,EAAA,EACAjY,EAAAg2E,EAAAh2E,OAGAiY,EAAAjY,EAAAiY,KACAswM,EAAAvyI,EAAA/9D,IACAqV,QAIAiM,EAAAgvL,EAAAj7L,MAAAiM,QACAj3B,GAKA,SAAAi3B,IACAr5B,EAAA+X,GAAAikN,EAAA1+M,IAAA+qM,EAAA,YAAA,KACAroN,EAAA+X,KACAswM,EAAAj7L,MAAAiM,QAAA,KAGA,KAAAgvL,EAAAj7L,MAAAiM,SAAA+jM,GAAA/U,KACAroN,EAAA+X,GAAA6lN,GAAAvV,KAGA,SAAAhvL,IACAr5B,EAAA+X,GAAA,OAGAikN,EAAAt3M,IAAA2jM,EAAA,UAAAhvL,KAMA,IAAAthB,EAAA,EAAAA,EAAAjY,EAAAiY,IACA,MAAA/X,EAAA+X,KACA+9D,EAAA/9D,GAAAqV,MAAAiM,QAAAr5B,EAAA+X,IAIA,OAAA+9D,EAGAp1E,EAAA4B,GAAA2gC,OAAA,CACA7gC,KAAA,WACA,OAAAy7N,GAAAp+N,MAAA,IAEAmD,KAAA,WACA,OAAAi7N,GAAAp+N,OAEA4pC,OAAA,SAAAw+B,GACA,MAAA,kBAAAA,EACAA,EAAApoE,KAAA2C,OAAA3C,KAAAmD,OAGAnD,KAAAH,MAAA,WACA89N,GAAA39N,MACAiB,EAAAjB,MAAA2C,OAEA1B,EAAAjB,MAAAmD,aAKA,IAUAk7N,GACAnO,GAXAoO,GAAA,wBAEAC,GAAA,iCAEAC,GAAA,qCAMAH,GADAx8M,EAAA48M,yBACA9kM,YAAA9X,EAAAyR,cAAA,SACA48L,GAAAruM,EAAAyR,cAAA,UAMA9C,aAAA,OAAA,SACA0/L,GAAA1/L,aAAA,UAAA,WACA0/L,GAAA1/L,aAAA,OAAA,KAEA6tM,GAAA1kM,YAAAu2L,IAIAznL,EAAAi2L,WAAAL,GAAA/yK,WAAA,GAAAA,WAAA,GAAAqnK,UAAAY,QAIA8K,GAAAh2L,UAAA,yBACAI,EAAAk2L,iBAAAN,GAAA/yK,WAAA,GAAAqnK,UAAA/tN,aAKAy5N,GAAAh2L,UAAA,oBACAI,EAAAm2L,SAAAP,GAAA1L,UAKA,IAAAkM,GAAA,CAKAC,MAAA,CAAA,EAAA,UAAA,YACAvoG,IAAA,CAAA,EAAA,oBAAA,uBACAwoG,GAAA,CAAA,EAAA,iBAAA,oBACAC,GAAA,CAAA,EAAA,qBAAA,yBAEAC,SAAA,CAAA,EAAA,GAAA,KAYA,SAAAC,GAAAj3L,EAAAgoL,GAIA,IAAAj6B,EAYA,OATAA,OADA,IAAA/tJ,EAAA3D,qBACA2D,EAAA3D,qBAAA2rL,GAAA,UAEA,IAAAhoL,EAAA9uB,iBACA8uB,EAAA9uB,iBAAA82M,GAAA,KAGA,QAGA7oL,IAAA6oL,GAAAA,GAAAjsL,EAAAiE,EAAAgoL,GACAhvN,EAAAsxG,MAAA,CAAAtqE,GAAA+tJ,GAGAA,EAKA,SAAAmpC,GAAAzW,EAAA0W,GAIA,IAHA,IAAAz+N,EAAA,EACA4P,EAAAm4M,EAAAroN,OAEAM,EAAA4P,EAAA5P,IACA47N,EAAAt3M,IACAyjM,EAAA/nN,GACA,cACAy+N,GAAA7C,EAAA1+M,IAAAuhN,EAAAz+N,GAAA,eA1CAk+N,GAAAQ,MAAAR,GAAAS,MAAAT,GAAAU,SAAAV,GAAAW,QAAAX,GAAAC,MACAD,GAAAY,GAAAZ,GAAAG,GAGAv2L,EAAAm2L,SACAC,GAAAa,SAAAb,GAAAD,OAAA,CAAA,EAAA,+BAAA,cA2CA,IAAA9R,GAAA,YAEA,SAAA6S,GAAAjX,EAAAzgL,EAAA23L,EAAAC,EAAAC,GAOA,IANA,IAAAlX,EAAA1vI,EAAA+2I,EAAAp9L,EAAAktM,EAAA9lN,EACA+lN,EAAA/3L,EAAAw2L,yBACAwB,EAAA,GACAt/N,EAAA,EACA4P,EAAAm4M,EAAAroN,OAEAM,EAAA4P,EAAA5P,IAGA,IAFAioN,EAAAF,EAAA/nN,KAEA,IAAAioN,EAGA,GAAA,WAAAN,EAAAM,GAIA3nN,EAAAsxG,MAAA0tH,EAAArX,EAAAlwM,SAAA,CAAAkwM,GAAAA,QAGA,GAAAkE,GAAA5rM,KAAA0nM,GAIA,CAUA,IATA1vI,EAAAA,GAAA8mJ,EAAArmM,YAAAsO,EAAA3U,cAAA,QAGA28L,GAAAsO,GAAAlmN,KAAAuwM,IAAA,CAAA,GAAA,KAAA,GAAAzkM,cACA0O,EAAAgsM,GAAA5O,IAAA4O,GAAAI,SACA/lJ,EAAA7wC,UAAAxV,EAAA,GAAA5xB,EAAAi/N,cAAAtX,GAAA/1L,EAAA,GAGA5Y,EAAA4Y,EAAA,GACA5Y,KACAi/D,EAAAA,EAAAy5I,UAKA1xN,EAAAsxG,MAAA0tH,EAAA/mJ,EAAA70C,aAGA60C,EAAA8mJ,EAAAjyL,YAGAV,YAAA,QAzBA4yL,EAAAz/N,KAAAynC,EAAAk4L,eAAAvX,IAkCA,IAHAoX,EAAA3yL,YAAA,GAEA1sC,EAAA,EACAioN,EAAAqX,EAAAt/N,MAGA,GAAAk/N,GAAA5+N,EAAA2oN,QAAAhB,EAAAiX,IAAA,EACAC,GACAA,EAAAt/N,KAAAooN,QAgBA,GAXAmX,EAAAvC,GAAA5U,GAGA1vI,EAAAgmJ,GAAAc,EAAArmM,YAAAivL,GAAA,UAGAmX,GACAZ,GAAAjmJ,GAIA0mJ,EAEA,IADA3lN,EAAA,EACA2uM,EAAA1vI,EAAAj/D,MACAukN,GAAAt9M,KAAA0nM,EAAA7oN,MAAA,KACA6/N,EAAAp/N,KAAAooN,GAMA,OAAAoX,EAIA,IAAAI,GAAA,sBAEA,SAAAC,KACA,OAAA,EAGA,SAAAC,KACA,OAAA,EASA,SAAAC,GAAA3X,EAAA7oN,GACA,OAAA6oN,IAMA,WACA,IACA,OAAA/mM,EAAAiiB,cACA,MAAA4K,KATA8xL,KAAA,UAAAzgO,GAYA,SAAAmD,GAAA0lN,EAAA6X,EAAAvtM,EAAAlxB,EAAAa,EAAA69N,GACA,IAAAC,EAAA5gO,EAGA,GAAA,iBAAA0gO,EAAA,CASA,IAAA1gO,IANA,iBAAAmzB,IAGAlxB,EAAAA,GAAAkxB,EACAA,OAAAkU,GAEAq5L,EACAv9N,GAAA0lN,EAAA7oN,EAAAmzB,EAAAlxB,EAAAy+N,EAAA1gO,GAAA2gO,GAEA,OAAA9X,EAsBA,GAnBA,MAAA5mN,GAAA,MAAAa,GAGAA,EAAAqwB,EACAlxB,EAAAkxB,OAAAkU,GACA,MAAAvkC,IACA,iBAAAqwB,GAGArwB,EAAAb,EACAA,OAAAolC,IAIAvkC,EAAAb,EACAA,EAAAkxB,EACAA,OAAAkU,KAGA,IAAAvkC,EACAA,EAAAy9N,QACA,IAAAz9N,EACA,OAAA+lN,EAeA,OAZA,IAAA8X,IACAC,EAAA99N,GACAA,EAAA,SAAAxB,GAIA,OADAJ,IAAAoqC,IAAAhqC,GACAs/N,EAAA3nN,MAAAhZ,KAAAwlB,aAIAwkM,KAAA2W,EAAA3W,OAAA2W,EAAA3W,KAAA/oN,EAAA+oN,SAEApB,EAAA/oN,MAAA,WACAoB,EAAAI,MAAAic,IAAAtd,KAAAygO,EAAA59N,EAAAb,EAAAkxB,MA+aA,SAAA0tM,GAAAztM,EAAApzB,EAAAwgO,GAGAA,GAQAhE,EAAAt3M,IAAAkO,EAAApzB,GAAA,GACAkB,EAAAI,MAAAic,IAAA6V,EAAApzB,EAAA,CACAwvN,WAAA,EACA9jL,QAAA,SAAApqC,GACA,IAAAw/N,EAAApgN,EACAqgN,EAAAvE,EAAA1+M,IAAA7d,KAAAD,GAEA,GAAA,EAAAsB,EAAA0/N,WAAA/gO,KAAAD,IAKA,GAAA+gO,EAAAzgO,QAuCAY,EAAAI,MAAAy4N,QAAA/5N,IAAA,IAAAihO,cACA3/N,EAAAk4C,uBArBA,GAdAunL,EAAApwN,EAAAwI,KAAAsM,WACA+2M,EAAAt3M,IAAAjlB,KAAAD,EAAA+gO,GAKAD,EAAAN,EAAAvgO,KAAAD,GACAC,KAAAD,KAEA+gO,KADArgN,EAAA87M,EAAA1+M,IAAA7d,KAAAD,KACA8gO,EACAtE,EAAAt3M,IAAAjlB,KAAAD,GAAA,GAEA0gB,EAAA,GAEAqgN,IAAArgN,EAWA,OARApf,EAAA09C,2BACA19C,EAAAk2C,iBAOA92B,GAAAA,EAAA3gB,WAeAghO,EAAAzgO,SAGAk8N,EAAAt3M,IAAAjlB,KAAAD,EAAA,CACAD,MAAAmB,EAAAI,MAAAuB,QAIA3B,EAAAuiC,OAAAs9L,EAAA,GAAA7/N,EAAAggO,MAAAl4N,WACA+3N,EAAApwN,MAAA,GACA1Q,QAKAqB,EAAA09C,qCA/EA3X,IAAAm1L,EAAA1+M,IAAAsV,EAAApzB,IACAkB,EAAAI,MAAAic,IAAA6V,EAAApzB,EAAAsgO,IA5aAp/N,EAAAI,MAAA,CAEA0C,OAAA,GAEAuZ,IAAA,SAAAsrM,EAAA6X,EAAAh1L,EAAAzpC,EAAAkxB,GAEA,IAAAguM,EAAAC,EAAAjoJ,EACAluC,EAAA/jC,EAAAm6N,EACAtH,EAAAtuL,EAAAzrC,EAAAshO,EAAAC,EACAC,EAAAhF,EAAA1+M,IAAA+qM,GAGA,GAAAsT,EAAAtT,GAuCA,IAlCAn9K,EAAAA,UAEAA,GADAy1L,EAAAz1L,GACAA,QACAvY,EAAAguM,EAAAhuM,UAKAA,GACAjyB,EAAArB,KAAAuwN,gBAAAp3L,GAAA7F,GAIAuY,EAAAu+K,OACAv+K,EAAAu+K,KAAA/oN,EAAA+oN,SAIAh/K,EAAAu2L,EAAAv2L,UACAA,EAAAu2L,EAAAv2L,OAAAtiC,OAAAM,OAAA,QAEAm4N,EAAAI,EAAAhtK,UACA4sK,EAAAI,EAAAhtK,OAAA,SAAA1nC,GAIA,YAAA,IAAA5rB,GAAAA,EAAAI,MAAAmgO,YAAA30M,EAAA9sB,KACAkB,EAAAI,MAAAigB,SAAAtI,MAAA4vM,EAAApjM,gBAAA4hB,IAMAngC,GADAw5N,GAAAA,GAAA,IAAAtvN,MAAAinN,IAAA,CAAA,KACA/3N,OACA4G,KAEAlH,EAAAuhO,GADApoJ,EAAAknJ,GAAA/nN,KAAAooN,EAAAx5N,KAAA,IACA,GACAo6N,GAAAnoJ,EAAA,IAAA,IAAAnpE,MAAA,KAAA1H,OAGAtI,IAKA+5N,EAAA74N,EAAAI,MAAAy4N,QAAA/5N,IAAA,GAGAA,GAAAmzB,EAAA4mM,EAAAkH,aAAAlH,EAAA2H,WAAA1hO,EAGA+5N,EAAA74N,EAAAI,MAAAy4N,QAAA/5N,IAAA,GAGAqhO,EAAAngO,EAAAuiC,OAAA,CACAzjC,KAAAA,EACAuhO,SAAAA,EACAt/N,KAAAA,EACAypC,QAAAA,EACAu+K,KAAAv+K,EAAAu+K,KACA92L,SAAAA,EACA25L,aAAA35L,GAAAjyB,EAAA6vN,KAAA3/M,MAAA07M,aAAA3rM,KAAAgS,GACAq8L,UAAA8R,EAAA3gO,KAAA,MACAwgO,IAGA11L,EAAAR,EAAAjrC,OACAyrC,EAAAR,EAAAjrC,GAAA,IACA2hO,cAAA,EAGA5H,EAAAnuG,QACA,IAAAmuG,EAAAnuG,MAAAzyG,KAAA0vM,EAAA5mN,EAAAq/N,EAAAF,IAEAvY,EAAAhlL,kBACAglL,EAAAhlL,iBAAA7jC,EAAAohO,IAKArH,EAAAx8M,MACAw8M,EAAAx8M,IAAApE,KAAA0vM,EAAAwY,GAEAA,EAAA31L,QAAAu+K,OACAoX,EAAA31L,QAAAu+K,KAAAv+K,EAAAu+K,OAKA92L,EACAsY,EAAAh8B,OAAAg8B,EAAAk2L,gBAAA,EAAAN,GAEA51L,EAAAhrC,KAAA4gO,GAIAngO,EAAAI,MAAA0C,OAAAhE,IAAA,IAMAoC,OAAA,SAAAymN,EAAA6X,EAAAh1L,EAAAvY,EAAAyuM,GAEA,IAAA1nN,EAAA2nN,EAAA1oJ,EACAluC,EAAA/jC,EAAAm6N,EACAtH,EAAAtuL,EAAAzrC,EAAAshO,EAAAC,EACAC,EAAAhF,EAAAD,QAAA1T,IAAA2T,EAAA1+M,IAAA+qM,GAEA,GAAA2Y,IAAAv2L,EAAAu2L,EAAAv2L,QAAA,CAOA,IADA/jC,GADAw5N,GAAAA,GAAA,IAAAtvN,MAAAinN,IAAA,CAAA,KACA/3N,OACA4G,KAMA,GAJAlH,EAAAuhO,GADApoJ,EAAAknJ,GAAA/nN,KAAAooN,EAAAx5N,KAAA,IACA,GACAo6N,GAAAnoJ,EAAA,IAAA,IAAAnpE,MAAA,KAAA1H,OAGAtI,EAAA,CAeA,IARA+5N,EAAA74N,EAAAI,MAAAy4N,QAAA/5N,IAAA,GAEAyrC,EAAAR,EADAjrC,GAAAmzB,EAAA4mM,EAAAkH,aAAAlH,EAAA2H,WAAA1hO,IACA,GACAm5E,EAAAA,EAAA,IACA,IAAAr4D,OAAA,UAAAwgN,EAAA3gO,KAAA,iBAAA,WAGAkhO,EAAA3nN,EAAAuxB,EAAAnrC,OACA4Z,KACAmnN,EAAA51L,EAAAvxB,IAEA0nN,GAAAL,IAAAF,EAAAE,UACA71L,GAAAA,EAAAu+K,OAAAoX,EAAApX,MACA9wI,IAAAA,EAAAh4D,KAAAkgN,EAAA7R,YACAr8L,GAAAA,IAAAkuM,EAAAluM,WACA,OAAAA,IAAAkuM,EAAAluM,YACAsY,EAAAh8B,OAAAyK,EAAA,GAEAmnN,EAAAluM,UACAsY,EAAAk2L,gBAEA5H,EAAA33N,QACA23N,EAAA33N,OAAA+W,KAAA0vM,EAAAwY,IAOAQ,IAAAp2L,EAAAnrC,SACAy5N,EAAA+H,WACA,IAAA/H,EAAA+H,SAAA3oN,KAAA0vM,EAAAyY,EAAAE,EAAAhtK,SAEAtzD,EAAA6gO,YAAAlZ,EAAA7oN,EAAAwhO,EAAAhtK,eAGAvpB,EAAAjrC,SA1CA,IAAAA,KAAAirC,EACA/pC,EAAAI,MAAAc,OAAAymN,EAAA7oN,EAAA0gO,EAAAx5N,GAAAwkC,EAAAvY,GAAA,GA8CAjyB,EAAAwoN,cAAAz+K,IACAuxL,EAAAp6N,OAAAymN,EAAA,mBAIAtnM,SAAA,SAAAygN,GAEA,IAAAphO,EAAAsZ,EAAA+7K,EAAA+8B,EAAAqO,EAAAY,EACAtwM,EAAA,IAAAxkB,MAAAsY,UAAAnlB,QAGAgB,EAAAJ,EAAAI,MAAA4gO,IAAAF,GAEAv2L,GACA+wL,EAAA1+M,IAAA7d,KAAA,WAAA0I,OAAAM,OAAA,OACA3H,EAAAtB,OAAA,GACA+5N,EAAA74N,EAAAI,MAAAy4N,QAAAz4N,EAAAtB,OAAA,GAKA,IAFA2xB,EAAA,GAAArwB,EAEAV,EAAA,EAAAA,EAAA6kB,UAAAnlB,OAAAM,IACA+wB,EAAA/wB,GAAA6kB,UAAA7kB,GAMA,GAHAU,EAAA6gO,eAAAliO,MAGA85N,EAAAqI,cAAA,IAAArI,EAAAqI,YAAAjpN,KAAAlZ,KAAAqB,GAAA,CASA,IAJA2gO,EAAA/gO,EAAAI,MAAAmqC,SAAAtyB,KAAAlZ,KAAAqB,EAAAmqC,GAGA7qC,EAAA,GACAoyN,EAAAiP,EAAArhO,QAAAU,EAAA+gO,wBAIA,IAHA/gO,EAAAghO,cAAAtP,EAAAnK,KAEA3uM,EAAA,GACAmnN,EAAArO,EAAAvnL,SAAAvxB,QACA5Y,EAAAihO,iCAIAjhO,EAAAkhO,aAAA,IAAAnB,EAAA7R,YACAluN,EAAAkhO,WAAArhN,KAAAkgN,EAAA7R,aAEAluN,EAAA+/N,UAAAA,EACA//N,EAAAW,KAAAo/N,EAAAp/N,UAKAolC,KAHA4uJ,IAAA/0L,EAAAI,MAAAy4N,QAAAsH,EAAAE,WAAA,IAAA/sK,QACA6sK,EAAA31L,SAAAzyB,MAAA+5M,EAAAnK,KAAAl3L,MAGA,KAAArwB,EAAAof,OAAAu1K,KACA30L,EAAAk2C,iBACAl2C,EAAAk4C,oBAYA,OAJAugL,EAAA0I,cACA1I,EAAA0I,aAAAtpN,KAAAlZ,KAAAqB,GAGAA,EAAAof,SAGA+qB,SAAA,SAAAnqC,EAAAmqC,GACA,IAAA7qC,EAAAygO,EAAApQ,EAAAyR,EAAAC,EACAV,EAAA,GACAN,EAAAl2L,EAAAk2L,cACA5S,EAAAztN,EAAA8N,OAGA,GAAAuyN,GAIA5S,EAAAp2M,YAOA,UAAArX,EAAAtB,MAAAsB,EAAA40C,QAAA,GAEA,KAAA64K,IAAA9uN,KAAA8uN,EAAAA,EAAAv1L,YAAAv5B,KAIA,GAAA,IAAA8uN,EAAAp2M,WAAA,UAAArX,EAAAtB,OAAA,IAAA+uN,EAAA11J,UAAA,CAGA,IAFAqpK,EAAA,GACAC,EAAA,GACA/hO,EAAA,EAAAA,EAAA+gO,EAAA/gO,SAMAymC,IAAAs7L,EAFA1R,GAHAoQ,EAAA51L,EAAA7qC,IAGAuyB,SAAA,OAGAwvM,EAAA1R,GAAAoQ,EAAAvU,aACA5rN,EAAA+vN,EAAAhxN,MAAAsY,MAAAw2M,IAAA,EACA7tN,EAAArB,KAAAoxN,EAAAhxN,KAAA,KAAA,CAAA8uN,IAAAzuN,QAEAqiO,EAAA1R,IACAyR,EAAAjiO,KAAA4gO,GAGAqB,EAAApiO,QACA2hO,EAAAxhO,KAAA,CAAAooN,KAAAkG,EAAAtjL,SAAAi3L,IAYA,OALA3T,EAAA9uN,KACA0hO,EAAAl2L,EAAAnrC,QACA2hO,EAAAxhO,KAAA,CAAAooN,KAAAkG,EAAAtjL,SAAAA,EAAA96B,MAAAgxN,KAGAM,GAGAW,QAAA,SAAAziO,EAAA0iO,GACAl6N,OAAAC,eAAA1H,EAAAggO,MAAAl4N,UAAA7I,EAAA,CACA+iC,YAAA,EACAC,cAAA,EAEArlB,IAAAiqM,EAAA8a,GACA,WACA,GAAA5iO,KAAA21C,cACA,OAAAitL,EAAA5iO,KAAA21C,gBAGA,WACA,GAAA31C,KAAA21C,cACA,OAAA31C,KAAA21C,cAAAz1C,IAIA+kB,IAAA,SAAAnlB,GACA4I,OAAAC,eAAA3I,KAAAE,EAAA,CACA+iC,YAAA,EACAC,cAAA,EACAC,UAAA,EACArjC,MAAAA,QAMAmiO,IAAA,SAAAtsL,GACA,OAAAA,EAAA10C,EAAAmoN,SACAzzK,EACA,IAAA10C,EAAAggO,MAAAtrL,IAGAmkL,QAAA,CACAvmK,KAAA,CAGAsvK,UAAA,GAEAx8J,MAAA,CAGAslD,MAAA,SAAA3pH,GAIA,IAAAmxB,EAAAnzB,MAAAgC,EAWA,OARAs8N,GAAAp9M,KAAAiS,EAAApzB,OACAozB,EAAAkzC,OAAAriC,EAAA7Q,EAAA,UAGAytM,GAAAztM,EAAA,QAAAktM,KAIA,GAEAz9N,QAAA,SAAAZ,GAIA,IAAAmxB,EAAAnzB,MAAAgC,EAUA,OAPAs8N,GAAAp9M,KAAAiS,EAAApzB,OACAozB,EAAAkzC,OAAAriC,EAAA7Q,EAAA,UAEAytM,GAAAztM,EAAA,UAIA,GAKA8rM,SAAA,SAAA59N,GACA,IAAA8N,EAAA9N,EAAA8N,OACA,OAAAmvN,GAAAp9M,KAAA/R,EAAApP,OACAoP,EAAAk3D,OAAAriC,EAAA70B,EAAA,UACAotN,EAAA1+M,IAAA1O,EAAA,UACA60B,EAAA70B,EAAA,OAIA2zN,aAAA,CACAN,aAAA,SAAAnhO,QAIA+lC,IAAA/lC,EAAAof,QAAApf,EAAAs0C,gBACAt0C,EAAAs0C,cAAAogB,YAAA10D,EAAAof,YAoGAxf,EAAA6gO,YAAA,SAAAlZ,EAAA7oN,EAAAw0D,GAGAq0J,EAAA/kL,qBACA+kL,EAAA/kL,oBAAA9jC,EAAAw0D,IAIAtzD,EAAAggO,MAAA,SAAAx9L,EAAApZ,GAGA,KAAArqB,gBAAAiB,EAAAggO,OACA,OAAA,IAAAhgO,EAAAggO,MAAAx9L,EAAApZ,GAIAoZ,GAAAA,EAAA1jC,MACAC,KAAA21C,cAAAlS,EACAzjC,KAAAD,KAAA0jC,EAAA1jC,KAIAC,KAAA+iO,mBAAAt/L,EAAAu/L,uBACA57L,IAAA3D,EAAAu/L,mBAGA,IAAAv/L,EAAAsyB,YACAsqK,GACAC,GAKAtgO,KAAAmP,OAAAs0B,EAAAt0B,QAAA,IAAAs0B,EAAAt0B,OAAAuJ,SACA+qB,EAAAt0B,OAAAoqB,WACAkK,EAAAt0B,OAEAnP,KAAAqiO,cAAA5+L,EAAA4+L,cACAriO,KAAAijO,cAAAx/L,EAAAw/L,eAIAjjO,KAAAD,KAAA0jC,EAIApZ,GACAppB,EAAAuiC,OAAAxjC,KAAAqqB,GAIArqB,KAAAkjO,UAAAz/L,GAAAA,EAAAy/L,WAAA/hN,KAAAC,MAGAphB,KAAAiB,EAAAmoN,UAAA,GAKAnoN,EAAAggO,MAAAl4N,UAAA,CACAE,YAAAhI,EAAAggO,MACA8B,mBAAAzC,GACA8B,qBAAA9B,GACAgC,8BAAAhC,GACA6C,aAAA,EAEA5rL,eAAA,WACA,IAAA1qB,EAAA7sB,KAAA21C,cAEA31C,KAAA+iO,mBAAA1C,GAEAxzM,IAAA7sB,KAAAmjO,aACAt2M,EAAA0qB,kBAGAgC,gBAAA,WACA,IAAA1sB,EAAA7sB,KAAA21C,cAEA31C,KAAAoiO,qBAAA/B,GAEAxzM,IAAA7sB,KAAAmjO,aACAt2M,EAAA0sB,mBAGAwF,yBAAA,WACA,IAAAlyB,EAAA7sB,KAAA21C,cAEA31C,KAAAsiO,8BAAAjC,GAEAxzM,IAAA7sB,KAAAmjO,aACAt2M,EAAAkyB,2BAGA/+C,KAAAu5C,oBAKAt4C,EAAApB,KAAA,CACAu1D,QAAA,EACArpB,SAAA,EACAC,YAAA,EACAyM,gBAAA,EACA4c,SAAA,EACAvpB,QAAA,EACAs3L,YAAA,EACA9tK,SAAA,EACAze,OAAA,EACAE,OAAA,EACAoe,UAAA,EACA0+C,MAAA,EACAkiF,MAAA,EACAoyB,MAAA,EACAzzJ,UAAA,EACA3xC,KAAA,EACA0xC,SAAA,EACAxe,QAAA,EACAotL,SAAA,EACAvmK,SAAA,EACAC,SAAA,EACAw3C,SAAA,EACAC,SAAA,EACA8uH,WAAA,EACAC,aAAA,EACAC,SAAA,EACAC,SAAA,EACA7sL,eAAA,EACA8sL,WAAA,EACAnuL,SAAA,EACAS,OAAA,GACA/0C,EAAAI,MAAAshO,SAEA1hO,EAAApB,KAAA,CAAA+zG,MAAA,UAAA7vE,KAAA,aAAA,SAAAhkC,EAAAihO,GACA//N,EAAAI,MAAAy4N,QAAA/5N,GAAA,CAGA4rH,MAAA,WAQA,OAHAi1G,GAAA5gO,KAAAD,EAAAwgO,KAGA,GAEA39N,QAAA,WAMA,OAHAg+N,GAAA5gO,KAAAD,IAGA,GAKAk/N,SAAA,WACA,OAAA,GAGA+B,aAAAA,MAYA//N,EAAApB,KAAA,CACA8jO,WAAA,YACAC,WAAA,WACAC,aAAA,cACAC,aAAA,eACA,SAAAC,EAAA9B,GACAhhO,EAAAI,MAAAy4N,QAAAiK,GAAA,CACA/C,aAAAiB,EACAR,SAAAQ,EAEA1tK,OAAA,SAAAlzD,GACA,IAAA20L,EACA7mL,EAAAnP,KACAgkO,EAAA3iO,EAAA4hO,cACA7B,EAAA//N,EAAA+/N,UASA,OALA4C,IAAAA,IAAA70N,GAAAlO,EAAAuoC,SAAAr6B,EAAA60N,MACA3iO,EAAAtB,KAAAqhO,EAAAE,SACAtrC,EAAAorC,EAAA31L,QAAAzyB,MAAAhZ,KAAAwlB,WACAnkB,EAAAtB,KAAAkiO,GAEAjsC,OAKA/0L,EAAA4B,GAAA2gC,OAAA,CAEAtgC,GAAA,SAAAu9N,EAAAvtM,EAAAlxB,EAAAa,GACA,OAAAK,GAAAlD,KAAAygO,EAAAvtM,EAAAlxB,EAAAa,IAEA69N,IAAA,SAAAD,EAAAvtM,EAAAlxB,EAAAa,GACA,OAAAK,GAAAlD,KAAAygO,EAAAvtM,EAAAlxB,EAAAa,EAAA,IAEAwoC,IAAA,SAAAo1L,EAAAvtM,EAAArwB,GACA,IAAAu+N,EAAArhO,EACA,GAAA0gO,GAAAA,EAAAlpL,gBAAAkpL,EAAAW,UAWA,OARAA,EAAAX,EAAAW,UACAngO,EAAAw/N,EAAAyB,gBAAA72L,IACA+1L,EAAA7R,UACA6R,EAAAE,SAAA,IAAAF,EAAA7R,UACA6R,EAAAE,SACAF,EAAAluM,SACAkuM,EAAA31L,SAEAzrC,KAEA,GAAA,iBAAAygO,EAAA,CAGA,IAAA1gO,KAAA0gO,EACAzgO,KAAAqrC,IAAAtrC,EAAAmzB,EAAAutM,EAAA1gO,IAEA,OAAAC,KAWA,OATA,IAAAkzB,GAAA,mBAAAA,IAGArwB,EAAAqwB,EACAA,OAAAkU,IAEA,IAAAvkC,IACAA,EAAAy9N,IAEAtgO,KAAAH,MAAA,WACAoB,EAAAI,MAAAc,OAAAnC,KAAAygO,EAAA59N,EAAAqwB,SAMA,IAKA+wM,GAAA,wBAGAC,GAAA,oCACAC,GAAA,2CAGA,SAAAC,GAAAxb,EAAAuP,GACA,OAAAn0L,EAAA4kL,EAAA,UACA5kL,EAAA,KAAAm0L,EAAAz/M,SAAAy/M,EAAAA,EAAApqL,WAAA,OAEA9sC,EAAA2nN,GAAAn+L,SAAA,SAAA,IAGAm+L,EAIA,SAAAyb,GAAAzb,GAEA,OADAA,EAAA7oN,MAAA,OAAA6oN,EAAAh5M,aAAA,SAAA,IAAAg5M,EAAA7oN,KACA6oN,EAEA,SAAA0b,GAAA1b,GAOA,MANA,WAAAA,EAAA7oN,MAAA,IAAA2Q,MAAA,EAAA,GACAk4M,EAAA7oN,KAAA6oN,EAAA7oN,KAAA2Q,MAAA,GAEAk4M,EAAAjuL,gBAAA,QAGAiuL,EAGA,SAAA2b,GAAA9gM,EAAAy7J,GACA,IAAAv+L,EAAA4P,EAAAxQ,EAAAykO,EAAAC,EAAAz5L,EAEA,GAAA,IAAAk0J,EAAAxmL,SAAA,CAKA,GAAA6jN,EAAAD,QAAA74L,KAEAuH,EADAuxL,EAAA1+M,IAAA4lB,GACAuH,QAKA,IAAAjrC,KAFAw8N,EAAAp6N,OAAA+8L,EAAA,iBAEAl0J,EACA,IAAArqC,EAAA,EAAA4P,EAAAy6B,EAAAjrC,GAAAM,OAAAM,EAAA4P,EAAA5P,IACAM,EAAAI,MAAAic,IAAA4hL,EAAAn/L,EAAAirC,EAAAjrC,GAAAY,IAOA67N,EAAAF,QAAA74L,KACA+gM,EAAAhI,EAAAhB,OAAA/3L,GACAghM,EAAAxjO,EAAAuiC,OAAA,GAAAghM,GAEAhI,EAAAv3M,IAAAi6K,EAAAulC,KAKA,SAAAC,GAAAjhM,EAAAy7J,GACA,IAAAl7J,EAAAk7J,EAAAl7J,SAAA7f,cAGA,UAAA6f,GAAAs6L,GAAAp9M,KAAAuiB,EAAA1jC,MACAm/L,EAAAq0B,QAAA9vL,EAAA8vL,QAGA,UAAAvvL,GAAA,aAAAA,IACAk7J,EAAAt6L,aAAA6+B,EAAA7+B,cAIA,SAAA+/N,GAAAC,EAAAlzM,EAAAjV,EAAAqjN,GAGApuM,EAAA+1L,EAAA/1L,GAEA,IAAAsuM,EAAAhvM,EAAA4uM,EAAAiF,EAAA/gL,EAAA7e,EACAtkC,EAAA,EACA4P,EAAAq0N,EAAAvkO,OACAykO,EAAAv0N,EAAA,EACAzQ,EAAA4xB,EAAA,GACAqzM,EAAAjd,EAAAhoN,GAGA,GAAAilO,GACAx0N,EAAA,GAAA,iBAAAzQ,IACA2oC,EAAAi2L,YAAAwF,GAAAhjN,KAAAphB,GACA,OAAA8kO,EAAA/kO,MAAA,SAAAyY,GACA,IAAAjU,EAAAugO,EAAAj3L,GAAAr1B,GACAysN,IACArzM,EAAA,GAAA5xB,EAAAoZ,KAAAlZ,KAAAsY,EAAAjU,EAAA6jC,SAEAy8L,GAAAtgO,EAAAqtB,EAAAjV,EAAAqjN,MAIA,GAAAvvN,IAEAygB,GADAgvM,EAAAL,GAAAjuM,EAAAkzM,EAAA,GAAAzW,eAAA,EAAAyW,EAAA9E,IACA/xL,WAEA,IAAAiyL,EAAA37L,WAAAhkC,SACA2/N,EAAAhvM,GAIAA,GAAA8uM,GAAA,CAOA,IALA+E,GADAjF,EAAA3+N,EAAAif,IAAAg/M,GAAAc,EAAA,UAAAqE,KACAhkO,OAKAM,EAAA4P,EAAA5P,IACAmjD,EAAAk8K,EAEAr/N,IAAAmkO,IACAhhL,EAAA7iD,EAAAy9E,MAAA56B,GAAA,GAAA,GAGA+gL,GAIA5jO,EAAAsxG,MAAAqtH,EAAAV,GAAAp7K,EAAA,YAIArnC,EAAAvD,KAAA0rN,EAAAjkO,GAAAmjD,EAAAnjD,GAGA,GAAAkkO,EAOA,IANA5/L,EAAA26L,EAAAA,EAAAv/N,OAAA,GAAA8tN,cAGAltN,EAAAif,IAAA0/M,EAAA0E,IAGA3jO,EAAA,EAAAA,EAAAkkO,EAAAlkO,IACAmjD,EAAA87K,EAAAj/N,GACA69N,GAAAt9M,KAAA4iC,EAAA/jD,MAAA,MACAw8N,EAAAf,OAAA13K,EAAA,eACA7iD,EAAAuoC,SAAAvE,EAAA6e,KAEAA,EAAArgB,KAAA,YAAAqgB,EAAA/jD,MAAA,IAAAokB,cAGAljB,EAAA+jO,WAAAlhL,EAAAmkK,UACAhnN,EAAA+jO,SAAAlhL,EAAArgB,IAAA,CACAukL,MAAAlkK,EAAAkkK,OAAAlkK,EAAAl0C,aAAA,UACAq1B,GAGAijL,EAAApkK,EAAAzW,YAAA71B,QAAA2sN,GAAA,IAAArgL,EAAA7e,IAQA,OAAA2/L,EAGA,SAAAziO,GAAAymN,EAAA11L,EAAA+xM,GAKA,IAJA,IAAAnhL,EACAm8K,EAAA/sM,EAAAjyB,EAAAb,OAAA8yB,EAAA01L,GAAAA,EACAjoN,EAAA,EAEA,OAAAmjD,EAAAm8K,EAAAt/N,IAAAA,IACAskO,GAAA,IAAAnhL,EAAAprC,UACAzX,EAAAikO,UAAAhG,GAAAp7K,IAGAA,EAAAvqB,aACA0rM,GAAAzH,GAAA15K,IACAq7K,GAAAD,GAAAp7K,EAAA,WAEAA,EAAAvqB,WAAAS,YAAA8pB,IAIA,OAAA8kK,EAGA3nN,EAAAuiC,OAAA,CACA08L,cAAA,SAAAh4L,GACA,OAAAA,GAGAw2C,MAAA,SAAAkqI,EAAAuc,EAAAC,GACA,IAAAzkO,EAAA4P,EAAA80N,EAAAC,EACA5mJ,EAAAkqI,EAAAt9J,WAAA,GACAi6K,EAAA/H,GAAA5U,GAGA,KAAAngL,EAAAk2L,gBAAA,IAAA/V,EAAAlwM,UAAA,KAAAkwM,EAAAlwM,UACAzX,EAAA61N,SAAAlO,IAMA,IAHA0c,EAAApG,GAAAxgJ,GAGA/9E,EAAA,EAAA4P,GAFA80N,EAAAnG,GAAAtW,IAEAvoN,OAAAM,EAAA4P,EAAA5P,IACA+jO,GAAAW,EAAA1kO,GAAA2kO,EAAA3kO,IAKA,GAAAwkO,EACA,GAAAC,EAIA,IAHAC,EAAAA,GAAAnG,GAAAtW,GACA0c,EAAAA,GAAApG,GAAAxgJ,GAEA/9E,EAAA,EAAA4P,EAAA80N,EAAAhlO,OAAAM,EAAA4P,EAAA5P,IACA4jO,GAAAc,EAAA1kO,GAAA2kO,EAAA3kO,SAGA4jO,GAAA3b,EAAAlqI,GAWA,OANA4mJ,EAAApG,GAAAxgJ,EAAA,WACAr+E,OAAA,GACA8+N,GAAAmG,GAAAC,GAAArG,GAAAtW,EAAA,WAIAlqI,GAGAwmJ,UAAA,SAAAxc,GAKA,IAJA,IAAA1mN,EAAA4mN,EAAA7oN,EACA+5N,EAAA74N,EAAAI,MAAAy4N,QACAn5N,EAAA,OAEAymC,KAAAwhL,EAAAF,EAAA/nN,IAAAA,IACA,GAAAu7N,EAAAtT,GAAA,CACA,GAAA5mN,EAAA4mN,EAAA2T,EAAAnT,SAAA,CACA,GAAApnN,EAAAgpC,OACA,IAAAjrC,KAAAiC,EAAAgpC,OACA8uL,EAAA/5N,GACAkB,EAAAI,MAAAc,OAAAymN,EAAA7oN,GAIAkB,EAAA6gO,YAAAlZ,EAAA7oN,EAAAiC,EAAAuyD,QAOAq0J,EAAA2T,EAAAnT,cAAAhiL,EAEAwhL,EAAA4T,EAAApT,WAIAR,EAAA4T,EAAApT,cAAAhiL,OAOAnmC,EAAA4B,GAAA2gC,OAAA,CACAmyK,OAAA,SAAAziL,GACA,OAAA/wB,GAAAnC,KAAAkzB,GAAA,IAGA/wB,OAAA,SAAA+wB,GACA,OAAA/wB,GAAAnC,KAAAkzB,IAGAzwB,KAAA,SAAA3C,GACA,OAAA07N,EAAAx7N,MAAA,SAAAF,GACA,YAAAsnC,IAAAtnC,EACAmB,EAAAwB,KAAAzC,MACAA,KAAAwuM,QAAA3uM,MAAA,WACA,IAAAG,KAAA0Y,UAAA,KAAA1Y,KAAA0Y,UAAA,IAAA1Y,KAAA0Y,WACA1Y,KAAAqtC,YAAAvtC,QAGA,KAAAA,EAAA0lB,UAAAnlB,SAGAiC,OAAA,WACA,OAAAqiO,GAAA3kO,KAAAwlB,WAAA,SAAAojM,GACA,IAAA5oN,KAAA0Y,UAAA,KAAA1Y,KAAA0Y,UAAA,IAAA1Y,KAAA0Y,UACA0rN,GAAApkO,KAAA4oN,GACAjvL,YAAAivL,OAKA56K,QAAA,WACA,OAAA22L,GAAA3kO,KAAAwlB,WAAA,SAAAojM,GACA,GAAA,IAAA5oN,KAAA0Y,UAAA,KAAA1Y,KAAA0Y,UAAA,IAAA1Y,KAAA0Y,SAAA,CACA,IAAAvJ,EAAAi1N,GAAApkO,KAAA4oN,GACAz5M,EAAA4qB,aAAA6uL,EAAAz5M,EAAA4+B,iBAKAy3L,OAAA,WACA,OAAAb,GAAA3kO,KAAAwlB,WAAA,SAAAojM,GACA5oN,KAAAu5B,YACAv5B,KAAAu5B,WAAAQ,aAAA6uL,EAAA5oN,UAKAylO,MAAA,WACA,OAAAd,GAAA3kO,KAAAwlB,WAAA,SAAAojM,GACA5oN,KAAAu5B,YACAv5B,KAAAu5B,WAAAQ,aAAA6uL,EAAA5oN,KAAAy5B,iBAKA+0K,MAAA,WAIA,IAHA,IAAAoa,EACAjoN,EAAA,EAEA,OAAAioN,EAAA5oN,KAAAW,IAAAA,IACA,IAAAioN,EAAAlwM,WAGAzX,EAAAikO,UAAAhG,GAAAtW,GAAA,IAGAA,EAAAv7K,YAAA,IAIA,OAAArtC,MAGA0+E,MAAA,SAAAymJ,EAAAC,GAIA,OAHAD,EAAA,MAAAA,GAAAA,EACAC,EAAA,MAAAA,EAAAD,EAAAC,EAEAplO,KAAAkgB,KAAA,WACA,OAAAjf,EAAAy9E,MAAA1+E,KAAAmlO,EAAAC,OAIAl9L,KAAA,SAAApoC,GACA,OAAA07N,EAAAx7N,MAAA,SAAAF,GACA,IAAA8oN,EAAA5oN,KAAA,IAAA,GACAW,EAAA,EACA4P,EAAAvQ,KAAAK,OAEA,QAAA+mC,IAAAtnC,GAAA,IAAA8oN,EAAAlwM,SACA,OAAAkwM,EAAAvgL,UAIA,GAAA,iBAAAvoC,IAAAmkO,GAAA/iN,KAAAphB,KACA++N,IAAAN,GAAAlmN,KAAAvY,IAAA,CAAA,GAAA,KAAA,GAAAqkB,eAAA,CAEArkB,EAAAmB,EAAAi/N,cAAApgO,GAEA,IACA,KAAAa,EAAA4P,EAAA5P,IAIA,KAHAioN,EAAA5oN,KAAAW,IAAA,IAGA+X,WACAzX,EAAAikO,UAAAhG,GAAAtW,GAAA,IACAA,EAAAvgL,UAAAvoC,GAIA8oN,EAAA,EAGA,MAAA/7L,KAGA+7L,GACA5oN,KAAAwuM,QAAAlsM,OAAAxC,KAEA,KAAAA,EAAA0lB,UAAAnlB,SAGAqlO,YAAA,WACA,IAAA5F,EAAA,GAGA,OAAA6E,GAAA3kO,KAAAwlB,WAAA,SAAAojM,GACA,IAAA72M,EAAA/R,KAAAu5B,WAEAt4B,EAAA2oN,QAAA5pN,KAAA8/N,GAAA,IACA7+N,EAAAikO,UAAAhG,GAAAl/N,OACA+R,GACAA,EAAA4zN,aAAA/c,EAAA5oN,SAKA8/N,MAIA7+N,EAAApB,KAAA,CACA+lO,SAAA,SACAC,UAAA,UACA9rM,aAAA,SACA+rM,YAAA,QACAC,WAAA,gBACA,SAAA7lO,EAAA8lO,GACA/kO,EAAA4B,GAAA3C,GAAA,SAAAgzB,GAOA,IANA,IAAAw1L,EACA1yB,EAAA,GACAiwC,EAAAhlO,EAAAiyB,GACAjC,EAAAg1M,EAAA5lO,OAAA,EACAM,EAAA,EAEAA,GAAAswB,EAAAtwB,IACA+nN,EAAA/nN,IAAAswB,EAAAjxB,KAAAA,KAAA0+E,OAAA,GACAz9E,EAAAglO,EAAAtlO,IAAAqlO,GAAAtd,GAIAloN,EAAAwY,MAAAg9K,EAAA0yB,EAAA7qM,OAGA,OAAA7d,KAAAyoN,UAAAzyB,OAGA,IAAAkwC,GAAA,IAAArlN,OAAA,KAAAw8M,GAAA,kBAAA,KAEA8I,GAAA,SAAAvd,GAKA,IAAA/0G,EAAA+0G,EAAAuF,cAAAwB,YAMA,OAJA97G,GAAAA,EAAAuyH,SACAvyH,EAAAvvG,GAGAuvG,EAAAp7E,iBAAAmwL,IAGAyd,GAAA,SAAAzd,EAAAv0K,EAAA53B,GACA,IAAAu5K,EAAA91L,EACAomO,EAAA,GAGA,IAAApmO,KAAAm0C,EACAiyL,EAAApmO,GAAA0oN,EAAAj7L,MAAAztB,GACA0oN,EAAAj7L,MAAAztB,GAAAm0C,EAAAn0C,GAMA,IAAAA,KAHA81L,EAAAv5K,EAAAvD,KAAA0vM,GAGAv0K,EACAu0K,EAAAj7L,MAAAztB,GAAAomO,EAAApmO,GAGA,OAAA81L,GAIAuwC,GAAA,IAAA1lN,OAAA08M,GAAA78N,KAAA,KAAA,KAiJA,SAAA8lO,GAAA5d,EAAA1oN,EAAAumO,GACA,IAAA1jO,EAAA2jO,EAAAC,EAAA3wC,EAMAroK,EAAAi7L,EAAAj7L,MAqCA,OAnCA84M,EAAAA,GAAAN,GAAAvd,MAQA,MAFA5yB,EAAAywC,EAAA/tM,iBAAAx4B,IAAAumO,EAAAvmO,KAEAs9N,GAAA5U,KACA5yB,EAAA/0L,EAAA0sB,MAAAi7L,EAAA1oN,KAQAuoC,EAAAm+L,kBAAAV,GAAAhlN,KAAA80K,IAAAuwC,GAAArlN,KAAAhhB,KAGA6C,EAAA4qB,EAAA5qB,MACA2jO,EAAA/4M,EAAA+4M,SACAC,EAAAh5M,EAAAg5M,SAGAh5M,EAAA+4M,SAAA/4M,EAAAg5M,SAAAh5M,EAAA5qB,MAAAizL,EACAA,EAAAywC,EAAA1jO,MAGA4qB,EAAA5qB,MAAAA,EACA4qB,EAAA+4M,SAAAA,EACA/4M,EAAAg5M,SAAAA,SAIAv/L,IAAA4uJ,EAIAA,EAAA,GACAA,EAIA,SAAA6wC,GAAAC,EAAAC,GAGA,MAAA,CACAlpN,IAAA,WACA,IAAAipN,IASA,OAAA9mO,KAAA6d,IAAAkpN,GAAA/tN,MAAAhZ,KAAAwlB,kBALAxlB,KAAA6d,OA3MA,WAIA,SAAAmpN,IAGA,GAAA3I,EAAA,CAIAj9F,EAAAzzG,MAAAqL,QAAA,+EAEAqlM,EAAA1wM,MAAAqL,QACA,4HAGAD,GAAAY,YAAAynG,GAAAznG,YAAA0kM,GAEA,IAAA4I,EAAA3iO,EAAAm0B,iBAAA4lM,GACA6I,EAAA,OAAAD,EAAApqM,IAGAsqM,EAAA,KAAAC,EAAAH,EAAAniL,YAIAu5K,EAAA1wM,MAAAoP,MAAA,MACAsqM,EAAA,KAAAD,EAAAH,EAAAlqM,OAIAuqM,EAAA,KAAAF,EAAAH,EAAAlkO,OAMAs7N,EAAA1wM,MAAA3Y,SAAA,WACAuyN,EAAA,KAAAH,EAAA/I,EAAA99L,YAAA,GAEAxH,GAAAiB,YAAAonG,GAIAi9F,EAAA,MAGA,SAAA+I,EAAAI,GACA,OAAAthO,KAAAgK,MAAAgB,WAAAs2N,IAGA,IAAAN,EAAAI,EAAAC,EAAAF,EACAI,EAAAN,EACA/lG,EAAAv/G,EAAAyR,cAAA,OACA+qM,EAAAx8M,EAAAyR,cAAA,OAGA+qM,EAAA1wM,QAMA0wM,EAAA1wM,MAAA+5M,eAAA,cACArJ,EAAA/yK,WAAA,GAAA39B,MAAA+5M,eAAA,GACAj/L,EAAAk/L,gBAAA,gBAAAtJ,EAAA1wM,MAAA+5M,eAEAzmO,EAAAuiC,OAAAiF,EAAA,CACAm/L,kBAAA,WAEA,OADAZ,IACAM,GAEAV,eAAA,WAEA,OADAI,IACAK,GAEAQ,cAAA,WAEA,OADAb,IACAE,GAEAY,mBAAA,WAEA,OADAd,IACAG,GAEAY,cAAA,WAEA,OADAf,IACAO,GAYAS,qBAAA,WACA,IAAAC,EAAAlJ,EAAAmJ,EAAAC,EAmCA,OAlCA,MAAAV,IACAQ,EAAApmN,EAAAyR,cAAA,SACAyrM,EAAAl9M,EAAAyR,cAAA,MACA40M,EAAArmN,EAAAyR,cAAA,OAEA20M,EAAAt6M,MAAAqL,QAAA,2DACA+lM,EAAApxM,MAAAqL,QAAA,mBAKA+lM,EAAApxM,MAAA2M,OAAA,MACA4tM,EAAAv6M,MAAA2M,OAAA,MAQA4tM,EAAAv6M,MAAAiM,QAAA,QAEAb,GACAY,YAAAsuM,GACAtuM,YAAAolM,GACAplM,YAAAuuM,GAEAC,EAAA7jO,EAAAm0B,iBAAAsmM,GACA0I,EAAAxnN,SAAAkoN,EAAA7tM,OAAA,IACAra,SAAAkoN,EAAAC,eAAA,IACAnoN,SAAAkoN,EAAAE,kBAAA,MAAAtJ,EAAAt+L,aAEA1H,GAAAiB,YAAAiuM,IAEAR,MAvIA,GAsNA,IAAAa,GAAA,CAAA,SAAA,MAAA,MACAC,GAAA1mN,EAAAyR,cAAA,OAAA3F,MACA66M,GAAA,GAkBA,SAAAC,GAAAvoO,GACA,IAAAwoO,EAAAznO,EAAA0nO,SAAAzoO,IAAAsoO,GAAAtoO,GAEA,OAAAwoO,IAGAxoO,KAAAqoO,GACAroO,EAEAsoO,GAAAtoO,GAxBA,SAAAA,GAMA,IAHA,IAAA0oO,EAAA1oO,EAAA,GAAA+d,cAAA/d,EAAAwQ,MAAA,GACA/P,EAAA2nO,GAAAjoO,OAEAM,KAEA,IADAT,EAAAooO,GAAA3nO,GAAAioO,KACAL,GACA,OAAAroO,EAeA2oO,CAAA3oO,IAAAA,GAIA,IAKA4oO,GAAA,4BACAC,GAAA,MACAC,GAAA,CAAAh0N,SAAA,WAAAi0N,WAAA,SAAArvM,QAAA,SACAsvM,GAAA,CACAC,cAAA,IACAC,WAAA,OAGA,SAAAC,GAAAtgB,EAAAjpN,EAAAwpO,GAIA,IAAA/7L,EAAA+vL,GAAAjlN,KAAAvY,GACA,OAAAytC,EAGArnC,KAAAiS,IAAA,EAAAo1B,EAAA,IAAA+7L,GAAA,KAAA/7L,EAAA,IAAA,MACAztC,EAGA,SAAAypO,GAAA3gB,EAAA4gB,EAAA58L,EAAA68L,EAAAh9L,EAAAi9L,GACA,IAAA/oO,EAAA,UAAA6oO,EAAA,EAAA,EACAG,EAAA,EACA7xK,EAAA,EAGA,GAAAlrB,KAAA68L,EAAA,SAAA,WACA,OAAA,EAGA,KAAA9oO,EAAA,EAAAA,GAAA,EAGA,WAAAisC,IACAkrB,GAAA72D,EAAAksC,IAAAy7K,EAAAh8K,EAAA2wL,GAAA58N,IAAA,EAAA8rC,IAIAg9L,GAmBA,YAAA78L,IACAkrB,GAAA72D,EAAAksC,IAAAy7K,EAAA,UAAA2U,GAAA58N,IAAA,EAAA8rC,IAIA,WAAAG,IACAkrB,GAAA72D,EAAAksC,IAAAy7K,EAAA,SAAA2U,GAAA58N,GAAA,SAAA,EAAA8rC,MAtBAqrB,GAAA72D,EAAAksC,IAAAy7K,EAAA,UAAA2U,GAAA58N,IAAA,EAAA8rC,GAGA,YAAAG,EACAkrB,GAAA72D,EAAAksC,IAAAy7K,EAAA,SAAA2U,GAAA58N,GAAA,SAAA,EAAA8rC,GAIAk9L,GAAA1oO,EAAAksC,IAAAy7K,EAAA,SAAA2U,GAAA58N,GAAA,SAAA,EAAA8rC,IAoCA,OAhBAg9L,GAAAC,GAAA,IAIA5xK,GAAA5xD,KAAAiS,IAAA,EAAAjS,KAAA++C,KACA2jK,EAAA,SAAA4gB,EAAA,GAAAvrN,cAAAurN,EAAA94N,MAAA,IACAg5N,EACA5xK,EACA6xK,EACA,MAIA,GAGA7xK,EAGA,SAAA8xK,GAAAhhB,EAAA4gB,EAAAG,GAGA,IAAAl9L,EAAA05L,GAAAvd,GAKA6gB,IADAhhM,EAAAm/L,qBAAA+B,IAEA,eAAA1oO,EAAAksC,IAAAy7K,EAAA,aAAA,EAAAn8K,GACAo9L,EAAAJ,EAEAhpO,EAAA+lO,GAAA5d,EAAA4gB,EAAA/8L,GACA0mB,EAAA,SAAAq2K,EAAA,GAAAvrN,cAAAurN,EAAA94N,MAAA,GAIA,GAAAw1N,GAAAhlN,KAAAzgB,GAAA,CACA,IAAAkpO,EACA,OAAAlpO,EAEAA,EAAA,OAyCA,QAlCAgoC,EAAAm/L,qBAAA6B,IAMAhhM,EAAAu/L,wBAAAhkM,EAAA4kL,EAAA,OAIA,SAAAnoN,IAIAyQ,WAAAzQ,IAAA,WAAAQ,EAAAksC,IAAAy7K,EAAA,WAAA,EAAAn8K,KAGAm8K,EAAAkhB,iBAAAzpO,SAEAopO,EAAA,eAAAxoO,EAAAksC,IAAAy7K,EAAA,aAAA,EAAAn8K,IAKAo9L,EAAA12K,KAAAy1J,KAEAnoN,EAAAmoN,EAAAz1J,MAKA1yD,EAAAyQ,WAAAzQ,IAAA,GAIA8oO,GACA3gB,EACA4gB,EACAG,IAAAF,EAAA,SAAA,WACAI,EACAp9L,EAGAhsC,GAEA,KA+SA,SAAAwX,GAAA2wM,EAAAv0K,EAAA9xC,EAAAmE,EAAAqjO,GACA,OAAA,IAAA9xN,GAAAlP,UAAAmU,KAAA0rM,EAAAv0K,EAAA9xC,EAAAmE,EAAAqjO,GA7SA9oO,EAAAuiC,OAAA,CAIAwmM,SAAA,CACAttK,QAAA,CACA7+C,IAAA,SAAA+qM,EAAA6d,GACA,GAAAA,EAAA,CAGA,IAAAzwC,EAAAwwC,GAAA5d,EAAA,WACA,MAAA,KAAA5yB,EAAA,IAAAA,MAOAgoC,UAAA,CACAiM,yBAAA,EACAC,aAAA,EACAC,aAAA,EACAC,UAAA,EACAC,YAAA,EACAjB,YAAA,EACAkB,UAAA,EACAC,YAAA,EACAC,eAAA,EACAC,iBAAA,EACAC,SAAA,EACAC,YAAA,EACAC,cAAA,EACAv/N,YAAA,EACAqxD,SAAA,EACAxW,OAAA,EACA2kL,SAAA,EACAC,QAAA,EACAv/J,QAAA,EACAzM,MAAA,GAKA6pK,SAAA,GAGAh7M,MAAA,SAAAi7L,EAAA1oN,EAAAJ,EAAA6pO,GAGA,GAAA/gB,GAAA,IAAAA,EAAAlwM,UAAA,IAAAkwM,EAAAlwM,UAAAkwM,EAAAj7L,MAAA,CAKA,IAAAqoK,EAAAj2L,EAAAk9N,EACA8N,EAAA9O,EAAA/7N,GACA8qO,EAAAjC,GAAA7nN,KAAAhhB,GACAytB,EAAAi7L,EAAAj7L,MAaA,GARAq9M,IACA9qO,EAAAuoO,GAAAsC,IAIA9N,EAAAh8N,EAAA+oO,SAAA9pO,IAAAe,EAAA+oO,SAAAe,QAGA3jM,IAAAtnC,EA0CA,OAAAm9N,GAAA,QAAAA,QACA71L,KAAA4uJ,EAAAinC,EAAAp/M,IAAA+qM,GAAA,EAAA+gB,IAEA3zC,EAIAroK,EAAAztB,GA7CA,YAHAH,SAAAD,KAGAk2L,EAAAsnC,GAAAjlN,KAAAvY,KAAAk2L,EAAA,KACAl2L,EAAA89N,GAAAhV,EAAA1oN,EAAA81L,GAGAj2L,EAAA,UAIA,MAAAD,GAAAA,GAAAA,IAOA,WAAAC,GAAAirO,IACAlrO,GAAAk2L,GAAAA,EAAA,KAAA/0L,EAAA+8N,UAAA+M,GAAA,GAAA,OAIAtiM,EAAAk/L,iBAAA,KAAA7nO,GAAA,IAAAI,EAAA2E,QAAA,gBACA8oB,EAAAztB,GAAA,WAIA+8N,GAAA,QAAAA,QACA71L,KAAAtnC,EAAAm9N,EAAAh4M,IAAA2jM,EAAA9oN,EAAA6pO,MAEAqB,EACAr9M,EAAA8J,YAAAv3B,EAAAJ,GAEA6tB,EAAAztB,GAAAJ,MAkBAqtC,IAAA,SAAAy7K,EAAA1oN,EAAAypO,EAAAl9L,GACA,IAAAhsC,EAAA0yK,EAAA8pD,EACA8N,EAAA9O,EAAA/7N,GA6BA,OA5BA6oO,GAAA7nN,KAAAhhB,KAMAA,EAAAuoO,GAAAsC,KAIA9N,EAAAh8N,EAAA+oO,SAAA9pO,IAAAe,EAAA+oO,SAAAe,KAGA,QAAA9N,IACAx8N,EAAAw8N,EAAAp/M,IAAA+qM,GAAA,EAAA+gB,SAIAviM,IAAA3mC,IACAA,EAAA+lO,GAAA5d,EAAA1oN,EAAAusC,IAIA,WAAAhsC,GAAAP,KAAAgpO,KACAzoO,EAAAyoO,GAAAhpO,IAIA,KAAAypO,GAAAA,GACAx2D,EAAAjiK,WAAAzQ,IACA,IAAAkpO,GAAA3/K,SAAAmpH,GAAAA,GAAA,EAAA1yK,GAGAA,KAIAQ,EAAApB,KAAA,CAAA,SAAA,UAAA,SAAAsK,EAAAq/N,GACAvoO,EAAA+oO,SAAAR,GAAA,CACA3rN,IAAA,SAAA+qM,EAAA6d,EAAAkD,GACA,GAAAlD,EAIA,OAAAqC,GAAA5nN,KAAAjgB,EAAAksC,IAAAy7K,EAAA,aAQAA,EAAAkhB,iBAAAzpO,QAAAuoN,EAAAvuM,wBAAAtX,MAIA6mO,GAAAhhB,EAAA4gB,EAAAG,GAHAtD,GAAAzd,EAAAogB,IAAA,WACA,OAAAY,GAAAhhB,EAAA4gB,EAAAG,OAMA1kN,IAAA,SAAA2jM,EAAA9oN,EAAA6pO,GACA,IAAAp8L,EACAd,EAAA05L,GAAAvd,GAIAqiB,GAAAxiM,EAAAs/L,iBACA,aAAAt7L,EAAAz3B,SAIAy0N,GADAwB,GAAAtB,IAEA,eAAA1oO,EAAAksC,IAAAy7K,EAAA,aAAA,EAAAn8K,GACA68L,EAAAK,EACAJ,GACA3gB,EACA4gB,EACAG,EACAF,EACAh9L,GAEA,EAqBA,OAjBAg9L,GAAAwB,IACA3B,GAAApjO,KAAA++C,KACA2jK,EAAA,SAAA4gB,EAAA,GAAAvrN,cAAAurN,EAAA94N,MAAA,IACAQ,WAAAu7B,EAAA+8L,IACAD,GAAA3gB,EAAA4gB,EAAA,UAAA,EAAA/8L,GACA,KAKA68L,IAAA/7L,EAAA+vL,GAAAjlN,KAAAvY,KACA,QAAAytC,EAAA,IAAA,QAEAq7K,EAAAj7L,MAAA67M,GAAA1pO,EACAA,EAAAmB,EAAAksC,IAAAy7K,EAAA4gB,IAGAH,GAAAzgB,EAAA9oN,EAAAwpO,QAKAroO,EAAA+oO,SAAAllL,WAAA+hL,GAAAp+L,EAAAq/L,oBACA,SAAAlf,EAAA6d,GACA,GAAAA,EACA,OAAAv1N,WAAAs1N,GAAA5d,EAAA,gBACAA,EAAAvuM,wBAAAC,KACA+rN,GAAAzd,EAAA,CAAA9jK,WAAA,IAAA,WACA,OAAA8jK,EAAAvuM,wBAAAC,SAEA,QAMArZ,EAAApB,KAAA,CACAqrO,OAAA,GACAC,QAAA,GACAC,OAAA,UACA,SAAA18K,EAAA28K,GACApqO,EAAA+oO,SAAAt7K,EAAA28K,GAAA,CACAC,OAAA,SAAAxrO,GAOA,IANA,IAAAa,EAAA,EACA4qO,EAAA,GAGAzjD,EAAA,iBAAAhoL,EAAAA,EAAAiQ,MAAA,KAAA,CAAAjQ,GAEAa,EAAA,EAAAA,IACA4qO,EAAA78K,EAAA6uK,GAAA58N,GAAA0qO,GACAvjD,EAAAnnL,IAAAmnL,EAAAnnL,EAAA,IAAAmnL,EAAA,GAGA,OAAAyjD,IAIA,WAAA78K,IACAztD,EAAA+oO,SAAAt7K,EAAA28K,GAAApmN,IAAAokN,OAIApoO,EAAA4B,GAAA2gC,OAAA,CACA2J,IAAA,SAAAjtC,EAAAJ,GACA,OAAA07N,EAAAx7N,MAAA,SAAA4oN,EAAA1oN,EAAAJ,GACA,IAAA2sC,EAAAqD,EACA5vB,EAAA,GACAvf,EAAA,EAEA,GAAAuM,MAAAhM,QAAAhB,GAAA,CAIA,IAHAusC,EAAA05L,GAAAvd,GACA94K,EAAA5vC,EAAAG,OAEAM,EAAAmvC,EAAAnvC,IACAuf,EAAAhgB,EAAAS,IAAAM,EAAAksC,IAAAy7K,EAAA1oN,EAAAS,IAAA,EAAA8rC,GAGA,OAAAvsB,EAGA,YAAAknB,IAAAtnC,EACAmB,EAAA0sB,MAAAi7L,EAAA1oN,EAAAJ,GACAmB,EAAAksC,IAAAy7K,EAAA1oN,KACAA,EAAAJ,EAAA0lB,UAAAnlB,OAAA,MAQAY,EAAAgX,MAAAA,GAEAA,GAAAlP,UAAA,CACAE,YAAAgP,GACAiF,KAAA,SAAA0rM,EAAAv0K,EAAA9xC,EAAAmE,EAAAqjO,EAAAl4M,GACA7xB,KAAA4oN,KAAAA,EACA5oN,KAAAuC,KAAAA,EACAvC,KAAA+pO,OAAAA,GAAA9oO,EAAA8oO,OAAA9K,SACAj/N,KAAAq0C,QAAAA,EACAr0C,KAAAyG,MAAAzG,KAAAohB,IAAAphB,KAAA8uN,MACA9uN,KAAA0G,IAAAA,EACA1G,KAAA6xB,KAAAA,IAAA5wB,EAAA+8N,UAAAz7N,GAAA,GAAA,OAEAusN,IAAA,WACA,IAAAmO,EAAAhlN,GAAAuzN,UAAAxrO,KAAAuC,MAEA,OAAA06N,GAAAA,EAAAp/M,IACAo/M,EAAAp/M,IAAA7d,MACAiY,GAAAuzN,UAAAvM,SAAAphN,IAAA7d,OAEAy+C,IAAA,SAAAgtL,GACA,IAAAC,EACAzO,EAAAhlN,GAAAuzN,UAAAxrO,KAAAuC,MAoBA,OAlBAvC,KAAAq0C,QAAA9oC,SACAvL,KAAA2rO,IAAAD,EAAAzqO,EAAA8oO,OAAA/pO,KAAA+pO,QACA0B,EAAAzrO,KAAAq0C,QAAA9oC,SAAAkgO,EAAA,EAAA,EAAAzrO,KAAAq0C,QAAA9oC,UAGAvL,KAAA2rO,IAAAD,EAAAD,EAEAzrO,KAAAohB,KAAAphB,KAAA0G,IAAA1G,KAAAyG,OAAAilO,EAAA1rO,KAAAyG,MAEAzG,KAAAq0C,QAAAmtC,MACAxhF,KAAAq0C,QAAAmtC,KAAAtoE,KAAAlZ,KAAA4oN,KAAA5oN,KAAAohB,IAAAphB,MAGAi9N,GAAAA,EAAAh4M,IACAg4M,EAAAh4M,IAAAjlB,MAEAiY,GAAAuzN,UAAAvM,SAAAh6M,IAAAjlB,MAEAA,OAIAiY,GAAAlP,UAAAmU,KAAAnU,UAAAkP,GAAAlP,UAEAkP,GAAAuzN,UAAA,CACAvM,SAAA,CACAphN,IAAA,SAAApN,GACA,IAAAgQ,EAIA,OAAA,IAAAhQ,EAAAm4M,KAAAlwM,UACA,MAAAjI,EAAAm4M,KAAAn4M,EAAAlO,OAAA,MAAAkO,EAAAm4M,KAAAj7L,MAAAld,EAAAlO,MACAkO,EAAAm4M,KAAAn4M,EAAAlO,OAOAke,EAAAxf,EAAAksC,IAAA18B,EAAAm4M,KAAAn4M,EAAAlO,KAAA,MAGA,SAAAke,EAAAA,EAAA,GAEAwE,IAAA,SAAAxU,GAKAxP,EAAA2qO,GAAApqJ,KAAA/wE,EAAAlO,MACAtB,EAAA2qO,GAAApqJ,KAAA/wE,EAAAlO,MAAAkO,GACA,IAAAA,EAAAm4M,KAAAlwM,WACAzX,EAAA+oO,SAAAv5N,EAAAlO,OACA,MAAAkO,EAAAm4M,KAAAj7L,MAAA86M,GAAAh4N,EAAAlO,OAGAkO,EAAAm4M,KAAAn4M,EAAAlO,MAAAkO,EAAA2Q,IAFAngB,EAAA0sB,MAAAld,EAAAm4M,KAAAn4M,EAAAlO,KAAAkO,EAAA2Q,IAAA3Q,EAAAohB,SAUA5Z,GAAAuzN,UAAAz+L,UAAA90B,GAAAuzN,UAAAv+L,WAAA,CACAhoB,IAAA,SAAAxU,GACAA,EAAAm4M,KAAAlwM,UAAAjI,EAAAm4M,KAAArvL,aACA9oB,EAAAm4M,KAAAn4M,EAAAlO,MAAAkO,EAAA2Q,OAKAngB,EAAA8oO,OAAA,CACA8B,OAAA,SAAAzpO,GACA,OAAAA,GAEA0pO,MAAA,SAAA1pO,GACA,MAAA,GAAA8D,KAAAiG,IAAA/J,EAAA8D,KAAA2F,IAAA,GAEAozN,SAAA,SAGAh+N,EAAA2qO,GAAA3zN,GAAAlP,UAAAmU,KAGAjc,EAAA2qO,GAAApqJ,KAAA,GAKA,IACAuqJ,GAAAC,GACAC,GAAA,yBACAC,GAAA,cAEA,SAAAC,KACAH,MACA,IAAAnqN,EAAAuqN,QAAA9nO,EAAA0d,sBACA1d,EAAA0d,sBAAAmqN,IAEA7nO,EAAA6d,WAAAgqN,GAAAlrO,EAAA2qO,GAAAS,UAGAprO,EAAA2qO,GAAAnqN,QAKA,SAAA6qN,KAIA,OAHAhoO,EAAA6d,YAAA,WACA4pN,QAAA3kM,KAEA2kM,GAAA5qN,KAAAC,MAIA,SAAAmrN,GAAAxsO,EAAAysO,GACA,IAAAx2L,EACAr1C,EAAA,EACAkpC,EAAA,CAAAvP,OAAAv6B,GAKA,IADAysO,EAAAA,EAAA,EAAA,EACA7rO,EAAA,EAAAA,GAAA,EAAA6rO,EAEA3iM,EAAA,UADAmM,EAAAunL,GAAA58N,KACAkpC,EAAA,UAAAmM,GAAAj2C,EAOA,OAJAysO,IACA3iM,EAAA6yB,QAAA7yB,EAAA9mC,MAAAhD,GAGA8pC,EAGA,SAAA4iM,GAAA3sO,EAAAyC,EAAAuO,GAKA,IAJA,IAAAL,EACAm0N,GAAA1/M,GAAAwnN,SAAAnqO,IAAA,IAAAqlC,OAAA1iB,GAAAwnN,SAAA,MACAp0N,EAAA,EACAjY,EAAAukO,EAAAvkO,OACAiY,EAAAjY,EAAAiY,IACA,GAAA7H,EAAAm0N,EAAAtsN,GAAAY,KAAApI,EAAAvO,EAAAzC,GAGA,OAAA2Q,EAsNA,SAAAyU,GAAA0jM,EAAAtjG,EAAAjxE,GACA,IAAA5zB,EACAksN,EACAr0N,EAAA,EACAjY,EAAA6kB,GAAA0nN,WAAAvsO,OACAk5N,EAAAt4N,EAAAm4N,WAAAE,QAAA,kBAGA73M,EAAAmnM,QAEAnnM,EAAA,WACA,GAAAkrN,EACA,OAAA,EAYA,IAVA,IAAA5yC,EAAAgyC,IAAAO,KACA3R,EAAAz0N,KAAAiS,IAAA,EAAArH,EAAAyU,UAAAzU,EAAAvF,SAAAwuL,GAKA0xC,EAAA,GADA9Q,EAAA7pN,EAAAvF,UAAA,GAEA+M,EAAA,EACAjY,EAAAyQ,EAAA6Y,OAAAtpB,OAEAiY,EAAAjY,EAAAiY,IACAxH,EAAA6Y,OAAArR,GAAAmmC,IAAAgtL,GAMA,OAHAlS,EAAAU,WAAArR,EAAA,CAAA93M,EAAA26N,EAAA9Q,IAGA8Q,EAAA,GAAAprO,EACAs6N,GAIAt6N,GACAk5N,EAAAU,WAAArR,EAAA,CAAA93M,EAAA,EAAA,IAIAyoN,EAAAW,YAAAtR,EAAA,CAAA93M,KACA,IAEAA,EAAAyoN,EAAAd,QAAA,CACA7P,KAAAA,EACAv+L,MAAAppB,EAAAuiC,OAAA,GAAA8hF,GACAl0E,KAAAnwC,EAAAuiC,QAAA,EAAA,CACAqpM,cAAA,GACA9C,OAAA9oO,EAAA8oO,OAAA9K,UACA5qL,GACAy4L,mBAAAxnH,EACAynH,gBAAA14L,EACA9uB,UAAAwmN,IAAAO,KACA/gO,SAAA8oC,EAAA9oC,SACAoe,OAAA,GACA8iN,YAAA,SAAAlqO,EAAAmE,GACA,IAAA+J,EAAAxP,EAAAgX,MAAA2wM,EAAA93M,EAAAsgC,KAAA7uC,EAAAmE,EACAoK,EAAAsgC,KAAAy7L,cAAAtqO,IAAAuO,EAAAsgC,KAAA24L,QAEA,OADAj5N,EAAA6Y,OAAAnpB,KAAAiQ,GACAA,GAEAmoD,KAAA,SAAAo0K,GACA,IAAA10N,EAAA,EAIAjY,EAAA2sO,EAAAl8N,EAAA6Y,OAAAtpB,OAAA,EACA,GAAAssO,EACA,OAAA3sO,KAGA,IADA2sO,GAAA,EACAr0N,EAAAjY,EAAAiY,IACAxH,EAAA6Y,OAAArR,GAAAmmC,IAAA,GAUA,OANAuuL,GACAzT,EAAAU,WAAArR,EAAA,CAAA93M,EAAA,EAAA,IACAyoN,EAAAW,YAAAtR,EAAA,CAAA93M,EAAAk8N,KAEAzT,EAAAe,WAAA1R,EAAA,CAAA93M,EAAAk8N,IAEAhtO,QAGAqqB,EAAAvZ,EAAAuZ,MAIA,KA/HA,SAAAA,EAAAwiN,GACA,IAAAv0N,EAAApY,EAAA6pO,EAAAjqO,EAAAm9N,EAGA,IAAA3kN,KAAA+R,EAeA,GAbA0/M,EAAA8C,EADA3sO,EAAA+7N,EAAA3jN,IAEAxY,EAAAuqB,EAAA/R,GACApL,MAAAhM,QAAApB,KACAiqO,EAAAjqO,EAAA,GACAA,EAAAuqB,EAAA/R,GAAAxY,EAAA,IAGAwY,IAAApY,IACAmqB,EAAAnqB,GAAAJ,SACAuqB,EAAA/R,KAGA2kN,EAAAh8N,EAAA+oO,SAAA9pO,KACA,WAAA+8N,EAMA,IAAA3kN,KALAxY,EAAAm9N,EAAAqO,OAAAxrO,UACAuqB,EAAAnqB,GAIAJ,EACAwY,KAAA+R,IACAA,EAAA/R,GAAAxY,EAAAwY,GACAu0N,EAAAv0N,GAAAyxN,QAIA8C,EAAA3sO,GAAA6pO,EA6FAkD,CAAA5iN,EAAAvZ,EAAAsgC,KAAAy7L,eAEAv0N,EAAAjY,EAAAiY,IAEA,GADAmI,EAAAyE,GAAA0nN,WAAAt0N,GAAAY,KAAApI,EAAA83M,EAAAv+L,EAAAvZ,EAAAsgC,MAMA,OAJA02K,EAAArnM,EAAAm4C,QACA33D,EAAAi8N,YAAApsN,EAAA83M,KAAA93M,EAAAsgC,KAAAs+H,OAAA92G,KACAn4C,EAAAm4C,KAAA5xB,KAAAvmB,IAEAA,EAyBA,OArBAxf,EAAAif,IAAAmK,EAAAoiN,GAAA37N,GAEAg3M,EAAAh3M,EAAAsgC,KAAA3qC,QACAqK,EAAAsgC,KAAA3qC,MAAAyS,KAAA0vM,EAAA93M,GAIAA,EACAgM,SAAAhM,EAAAsgC,KAAAt0B,UACAouM,KAAAp6M,EAAAsgC,KAAA85K,KAAAp6M,EAAAsgC,KAAAye,UACA6oK,KAAA5nN,EAAAsgC,KAAAsnL,MACAY,OAAAxoN,EAAAsgC,KAAAkoL,QAEAr4N,EAAA2qO,GAAAsB,MACAjsO,EAAAuiC,OAAA/hB,EAAA,CACAmnM,KAAAA,EACAukB,KAAAr8N,EACA4+J,MAAA5+J,EAAAsgC,KAAAs+H,SAIA5+J,EAGA7P,EAAAikB,UAAAjkB,EAAAuiC,OAAAte,GAAA,CAEAwnN,SAAA,CACAU,IAAA,CAAA,SAAA7qO,EAAAzC,GACA,IAAA2Q,EAAAzQ,KAAAysO,YAAAlqO,EAAAzC,GAEA,OADA89N,GAAAntN,EAAAm4M,KAAArmN,EAAA+6N,GAAAjlN,KAAAvY,GAAA2Q,GACAA,KAIA48N,QAAA,SAAAhjN,EAAA5N,GACAqrM,EAAAz9L,IACA5N,EAAA4N,EACAA,EAAA,CAAA,MAEAA,EAAAA,EAAAlZ,MAAAinN,GAOA,IAJA,IAAA71N,EACA+V,EAAA,EACAjY,EAAAgqB,EAAAhqB,OAEAiY,EAAAjY,EAAAiY,IACA/V,EAAA8nB,EAAA/R,GACA4M,GAAAwnN,SAAAnqO,GAAA2iB,GAAAwnN,SAAAnqO,IAAA,GACA2iB,GAAAwnN,SAAAnqO,GAAAooC,QAAAluB,IAIAmwN,WAAA,CA3WA,SAAAhkB,EAAAv+L,EAAA+mB,GACA,IAAA7uC,EAAAzC,EAAA8pC,EAAAqzL,EAAAqQ,EAAAC,EAAAC,EAAA5zM,EACA6zM,EAAA,UAAApjN,GAAA,WAAAA,EACA8iN,EAAAntO,KACA+jO,EAAA,GACAp2M,EAAAi7L,EAAAj7L,MACAy+M,EAAAxjB,EAAAlwM,UAAAilN,GAAA/U,GACA8kB,EAAAnR,EAAA1+M,IAAA+qM,EAAA,UA6BA,IAAArmN,KA1BA6uC,EAAAs+H,QAEA,OADAutD,EAAAh8N,EAAAi8N,YAAAtU,EAAA,OACA+kB,WACA1Q,EAAA0Q,SAAA,EACAL,EAAArQ,EAAAzuB,MAAAyqB,KACAgE,EAAAzuB,MAAAyqB,KAAA,WACAgE,EAAA0Q,UACAL,MAIArQ,EAAA0Q,WAEAR,EAAA7T,QAAA,WAGA6T,EAAA7T,QAAA,WACA2D,EAAA0Q,WACA1sO,EAAAyuK,MAAAk5C,EAAA,MAAAvoN,QACA48N,EAAAzuB,MAAAyqB,cAOA5uM,EAEA,GADAvqB,EAAAuqB,EAAA9nB,GACA0pO,GAAA/qN,KAAAphB,GAAA,CAGA,UAFAuqB,EAAA9nB,GACAqnC,EAAAA,GAAA,WAAA9pC,EACAA,KAAAssO,EAAA,OAAA,QAAA,CAIA,GAAA,SAAAtsO,IAAA4tO,QAAAtmM,IAAAsmM,EAAAnrO,GAKA,SAJA6pO,GAAA,EAOArI,EAAAxhO,GAAAmrO,GAAAA,EAAAnrO,IAAAtB,EAAA0sB,MAAAi7L,EAAArmN,GAMA,IADAgrO,GAAAtsO,EAAAwoN,cAAAp/L,MACAppB,EAAAwoN,cAAAsa,GA8DA,IAAAxhO,KAzDAkrO,GAAA,IAAA7kB,EAAAlwM,WAMA04B,EAAAw8L,SAAA,CAAAjgN,EAAAigN,SAAAjgN,EAAAkgN,UAAAlgN,EAAAmgN,WAIA,OADAN,EAAAE,GAAAA,EAAA9zM,WAEA4zM,EAAAjR,EAAA1+M,IAAA+qM,EAAA,YAGA,UADAhvL,EAAA34B,EAAAksC,IAAAy7K,EAAA,cAEA4kB,EACA5zM,EAAA4zM,GAIApP,GAAA,CAAAxV,IAAA,GACA4kB,EAAA5kB,EAAAj7L,MAAAiM,SAAA4zM,EACA5zM,EAAA34B,EAAAksC,IAAAy7K,EAAA,WACAwV,GAAA,CAAAxV,OAKA,WAAAhvL,GAAA,iBAAAA,GAAA,MAAA4zM,IACA,SAAAvsO,EAAAksC,IAAAy7K,EAAA,WAGA2kB,IACAJ,EAAAjiB,MAAA,WACAv9L,EAAAiM,QAAA4zM,KAEA,MAAAA,IACA5zM,EAAAjM,EAAAiM,QACA4zM,EAAA,SAAA5zM,EAAA,GAAAA,IAGAjM,EAAAiM,QAAA,iBAKAwX,EAAAw8L,WACAjgN,EAAAigN,SAAA,SACAT,EAAA7T,QAAA,WACA3rM,EAAAigN,SAAAx8L,EAAAw8L,SAAA,GACAjgN,EAAAkgN,UAAAz8L,EAAAw8L,SAAA,GACAjgN,EAAAmgN,UAAA18L,EAAAw8L,SAAA,OAKAL,GAAA,EACAxJ,EAGAwJ,IACAG,EACA,WAAAA,IACAtB,EAAAsB,EAAAtB,QAGAsB,EAAAnR,EAAAf,OAAA5S,EAAA,SAAA,CAAAhvL,QAAA4zM,IAIA5jM,IACA8jM,EAAAtB,QAAAA,GAIAA,GACAhO,GAAA,CAAAxV,IAAA,GAKAukB,EAAAjiB,MAAA,WASA,IAAA3oN,KAJA6pO,GACAhO,GAAA,CAAAxV,IAEA2T,EAAAp6N,OAAAymN,EAAA,UACAmb,EACA9iO,EAAA0sB,MAAAi7L,EAAArmN,EAAAwhO,EAAAxhO,QAMAgrO,EAAAd,GAAAL,EAAAsB,EAAAnrO,GAAA,EAAAA,EAAA4qO,GACA5qO,KAAAmrO,IACAA,EAAAnrO,GAAAgrO,EAAA9mO,MACA2lO,IACAmB,EAAA7mO,IAAA6mO,EAAA9mO,MACA8mO,EAAA9mO,MAAA,MAuMAsnO,UAAA,SAAAtxN,EAAAuxB,GACAA,EACA9oB,GAAA0nN,WAAAjiM,QAAAluB,GAEAyI,GAAA0nN,WAAApsO,KAAAic,MAKAxb,EAAAi8C,MAAA,SAAAA,EAAA6sL,EAAAlnO,GACA,IAAAmrO,EAAA9wL,GAAA,iBAAAA,EAAAj8C,EAAAuiC,OAAA,GAAA0Z,GAAA,CACA2S,SAAAhtD,IAAAA,GAAAknO,GACAjiB,EAAA5qK,IAAAA,EACA3xC,SAAA2xC,EACA6sL,OAAAlnO,GAAAknO,GAAAA,IAAAjiB,EAAAiiB,IAAAA,GAoCA,OAhCA9oO,EAAA2qO,GAAAvgM,IACA2iM,EAAAziO,SAAA,EAGA,iBAAAyiO,EAAAziO,WACAyiO,EAAAziO,YAAAtK,EAAA2qO,GAAAqC,OACAD,EAAAziO,SAAAtK,EAAA2qO,GAAAqC,OAAAD,EAAAziO,UAGAyiO,EAAAziO,SAAAtK,EAAA2qO,GAAAqC,OAAAhP,UAMA,MAAA+O,EAAAt+D,QAAA,IAAAs+D,EAAAt+D,QACAs+D,EAAAt+D,MAAA,MAIAs+D,EAAA1H,IAAA0H,EAAAn+K,SAEAm+K,EAAAn+K,SAAA,WACAi4J,EAAAkmB,EAAA1H,MACA0H,EAAA1H,IAAAptN,KAAAlZ,MAGAguO,EAAAt+D,OACAzuK,EAAA87N,QAAA/8N,KAAAguO,EAAAt+D,QAIAs+D,GAGA/sO,EAAA4B,GAAA2gC,OAAA,CACA0qM,OAAA,SAAAhxL,EAAAx1B,EAAAqiN,EAAAttN,GAGA,OAAAzc,KAAAI,OAAAu9N,IAAAxwL,IAAA,UAAA,GAAAxqC,OAGA+D,MAAA8sM,QAAA,CAAA92I,QAAAh1C,GAAAw1B,EAAA6sL,EAAAttN,IAEA+2L,QAAA,SAAAjxM,EAAA26C,EAAA6sL,EAAAttN,GACA,IAAA+xL,EAAAvtM,EAAAwoN,cAAAlnN,GACA4rO,EAAAltO,EAAAi8C,MAAAA,EAAA6sL,EAAAttN,GACA2xN,EAAA,WAGA,IAAAjB,EAAAjoN,GAAAllB,KAAAiB,EAAAuiC,OAAA,GAAAjhC,GAAA4rO,IAGA3/B,GAAA+tB,EAAA1+M,IAAA7d,KAAA,YACAmtO,EAAAv0K,MAAA,IAMA,OAFAw1K,EAAAxgG,OAAAwgG,EAEA5/B,IAAA,IAAA2/B,EAAAz+D,MACA1vK,KAAAH,KAAAuuO,GACApuO,KAAA0vK,MAAAy+D,EAAAz+D,MAAA0+D,IAEAx1K,KAAA,SAAA74D,EAAAo9N,EAAA6P,GACA,IAAAqB,EAAA,SAAApR,GACA,IAAArkK,EAAAqkK,EAAArkK,YACAqkK,EAAArkK,KACAA,EAAAo0K,IAYA,MATA,iBAAAjtO,IACAitO,EAAA7P,EACAA,EAAAp9N,EACAA,OAAAqnC,GAEA+1L,GACAn9N,KAAA0vK,MAAA3vK,GAAA,KAAA,IAGAC,KAAAH,MAAA,WACA,IAAAk9N,GAAA,EACAzkN,EAAA,MAAAvY,GAAAA,EAAA,aACAuuO,EAAArtO,EAAAqtO,OACAtsO,EAAAu6N,EAAA1+M,IAAA7d,MAEA,GAAAsY,EACAtW,EAAAsW,IAAAtW,EAAAsW,GAAAsgD,MACAy1K,EAAArsO,EAAAsW,SAGA,IAAAA,KAAAtW,EACAA,EAAAsW,IAAAtW,EAAAsW,GAAAsgD,MAAAszK,GAAAhrN,KAAA5I,IACA+1N,EAAArsO,EAAAsW,IAKA,IAAAA,EAAAg2N,EAAAjuO,OAAAiY,KACAg2N,EAAAh2N,GAAAswM,OAAA5oN,MACA,MAAAD,GAAAuuO,EAAAh2N,GAAAo3J,QAAA3vK,IAEAuuO,EAAAh2N,GAAA60N,KAAAv0K,KAAAo0K,GACAjQ,GAAA,EACAuR,EAAA9+N,OAAA8I,EAAA,KAOAykN,GAAAiQ,GACA/rO,EAAA87N,QAAA/8N,KAAAD,OAIA6tI,OAAA,SAAA7tI,GAIA,OAHA,IAAAA,IACAA,EAAAA,GAAA,MAEAC,KAAAH,MAAA,WACA,IAAAyY,EACAtW,EAAAu6N,EAAA1+M,IAAA7d,MACA0vK,EAAA1tK,EAAAjC,EAAA,SACAk9N,EAAAj7N,EAAAjC,EAAA,cACAuuO,EAAArtO,EAAAqtO,OACAjuO,EAAAqvK,EAAAA,EAAArvK,OAAA,EAaA,IAVA2B,EAAA4rI,QAAA,EAGA3sI,EAAAyuK,MAAA1vK,KAAAD,EAAA,IAEAk9N,GAAAA,EAAArkK,MACAqkK,EAAArkK,KAAA1/C,KAAAlZ,MAAA,GAIAsY,EAAAg2N,EAAAjuO,OAAAiY,KACAg2N,EAAAh2N,GAAAswM,OAAA5oN,MAAAsuO,EAAAh2N,GAAAo3J,QAAA3vK,IACAuuO,EAAAh2N,GAAA60N,KAAAv0K,MAAA,GACA01K,EAAA9+N,OAAA8I,EAAA,IAKA,IAAAA,EAAA,EAAAA,EAAAjY,EAAAiY,IACAo3J,EAAAp3J,IAAAo3J,EAAAp3J,GAAAs1H,QACA8hC,EAAAp3J,GAAAs1H,OAAA10H,KAAAlZ,aAKAgC,EAAA4rI,aAKA3sI,EAAApB,KAAA,CAAA,SAAA,OAAA,SAAA,SAAAsK,EAAAjK,GACA,IAAAquO,EAAAttO,EAAA4B,GAAA3C,GACAe,EAAA4B,GAAA3C,GAAA,SAAAg9C,EAAA6sL,EAAAttN,GACA,OAAA,MAAAygC,GAAA,kBAAAA,EACAqxL,EAAAv1N,MAAAhZ,KAAAwlB,WACAxlB,KAAAwzM,QAAA+4B,GAAArsO,GAAA,GAAAg9C,EAAA6sL,EAAAttN,OAKAxb,EAAApB,KAAA,CACA2uO,UAAAjC,GAAA,QACAkC,QAAAlC,GAAA,QACAmC,YAAAnC,GAAA,UACAhnC,OAAA,CAAA7oI,QAAA,QACA4oI,QAAA,CAAA5oI,QAAA,QACAiyK,WAAA,CAAAjyK,QAAA,YACA,SAAAx8D,EAAAmqB,GACAppB,EAAA4B,GAAA3C,GAAA,SAAAg9C,EAAA6sL,EAAAttN,GACA,OAAAzc,KAAAwzM,QAAAnpL,EAAA6yB,EAAA6sL,EAAAttN,OAIAxb,EAAAqtO,OAAA,GACArtO,EAAA2qO,GAAAnqN,KAAA,WACA,IAAAyrN,EACAvsO,EAAA,EACA2tO,EAAArtO,EAAAqtO,OAIA,IAFAvC,GAAA5qN,KAAAC,MAEAzgB,EAAA2tO,EAAAjuO,OAAAM,KACAusO,EAAAoB,EAAA3tO,OAGA2tO,EAAA3tO,KAAAusO,GACAoB,EAAA9+N,OAAA7O,IAAA,GAIA2tO,EAAAjuO,QACAY,EAAA2qO,GAAAhzK,OAEAmzK,QAAA3kM,GAGAnmC,EAAA2qO,GAAAsB,MAAA,SAAAA,GACAjsO,EAAAqtO,OAAA9tO,KAAA0sO,GACAjsO,EAAA2qO,GAAAnlO,SAGAxF,EAAA2qO,GAAAS,SAAA,GACAprO,EAAA2qO,GAAAnlO,MAAA,WACAulO,KAIAA,IAAA,EACAG,OAGAlrO,EAAA2qO,GAAAhzK,KAAA,WACAozK,GAAA,MAGA/qO,EAAA2qO,GAAAqC,OAAA,CACAW,KAAA,IACAC,KAAA,IAGA5P,SAAA,KAMAh+N,EAAA4B,GAAA4I,MAAA,SAAA1E,EAAAhH,GAIA,OAHAgH,EAAA9F,EAAA2qO,IAAA3qO,EAAA2qO,GAAAqC,OAAAlnO,IAAAA,EACAhH,EAAAA,GAAA,KAEAC,KAAA0vK,MAAA3vK,GAAA,SAAAiH,EAAAi2N,GACA,IAAA1kK,EAAAj0D,EAAA6d,WAAAnb,EAAAD,GACAk2N,EAAArkK,KAAA,WACAt0D,EAAA+d,aAAAk2C,QAMA,WACA,IAAA23J,EAAAruM,EAAAyR,cAAA,SAEA06M,EADAnsN,EAAAyR,cAAA,UACAqG,YAAA9X,EAAAyR,cAAA,WAEA48L,EAAAnwN,KAAA,WAIA0oC,EAAAqmM,QAAA,KAAA5e,EAAApwN,MAIA2oC,EAAAsmM,YAAAf,EAAAxa,UAIAtD,EAAAruM,EAAAyR,cAAA,UACAxzB,MAAA,IACAowN,EAAAnwN,KAAA,QACA0oC,EAAAumM,WAAA,MAAA9e,EAAApwN,MApBA,GAwBA,IAAAmvO,GACArgB,GAAA3tN,EAAA6vN,KAAAlC,WAEA3tN,EAAA4B,GAAA2gC,OAAA,CACAvjC,KAAA,SAAAC,EAAAJ,GACA,OAAA07N,EAAAx7N,KAAAiB,EAAAhB,KAAAC,EAAAJ,EAAA0lB,UAAAnlB,OAAA,IAGA0pC,WAAA,SAAA7pC,GACA,OAAAF,KAAAH,MAAA,WACAoB,EAAA8oC,WAAA/pC,KAAAE,SAKAe,EAAAuiC,OAAA,CACAvjC,KAAA,SAAA2oN,EAAA1oN,EAAAJ,GACA,IAAAk2L,EAAAinC,EACAiS,EAAAtmB,EAAAlwM,SAGA,GAAA,IAAAw2N,GAAA,IAAAA,GAAA,IAAAA,EAKA,YAAA,IAAAtmB,EAAAh5M,aACA3O,EAAAsB,KAAAqmN,EAAA1oN,EAAAJ,IAKA,IAAAovO,GAAAjuO,EAAA61N,SAAAlO,KACAqU,EAAAh8N,EAAAkuO,UAAAjvO,EAAAikB,iBACAljB,EAAA6vN,KAAA3/M,MAAAy7M,KAAA1rM,KAAAhhB,GAAA+uO,QAAA7nM,SAGAA,IAAAtnC,EACA,OAAAA,OACAmB,EAAA8oC,WAAA6+K,EAAA1oN,GAIA+8N,GAAA,QAAAA,QACA71L,KAAA4uJ,EAAAinC,EAAAh4M,IAAA2jM,EAAA9oN,EAAAI,IACA81L,GAGA4yB,EAAAp4L,aAAAtwB,EAAAJ,EAAA,IACAA,GAGAm9N,GAAA,QAAAA,GAAA,QAAAjnC,EAAAinC,EAAAp/M,IAAA+qM,EAAA1oN,IACA81L,EAMA,OAHAA,EAAA/0L,EAAArB,KAAAK,KAAA2oN,EAAA1oN,SAGAknC,EAAA4uJ,IAGAm5C,UAAA,CACApvO,KAAA,CACAklB,IAAA,SAAA2jM,EAAA9oN,GACA,IAAA2oC,EAAAumM,YAAA,UAAAlvO,GACAkkC,EAAA4kL,EAAA,SAAA,CACA,IAAAnoN,EAAAmoN,EAAA9oN,MAKA,OAJA8oN,EAAAp4L,aAAA,OAAA1wB,GACAW,IACAmoN,EAAA9oN,MAAAW,GAEAX,MAMAiqC,WAAA,SAAA6+K,EAAA9oN,GACA,IAAAI,EACAS,EAAA,EAIAyuO,EAAAtvO,GAAAA,EAAAqR,MAAAinN,GAEA,GAAAgX,GAAA,IAAAxmB,EAAAlwM,SACA,KAAAxY,EAAAkvO,EAAAzuO,MACAioN,EAAAjuL,gBAAAz6B,MAOA+uO,GAAA,CACAhqN,IAAA,SAAA2jM,EAAA9oN,EAAAI,GAQA,OAPA,IAAAJ,EAGAmB,EAAA8oC,WAAA6+K,EAAA1oN,GAEA0oN,EAAAp4L,aAAAtwB,EAAAA,GAEAA,IAIAe,EAAApB,KAAAoB,EAAA6vN,KAAA3/M,MAAAy7M,KAAAhrL,OAAAzwB,MAAA,SAAA,SAAAhH,EAAAjK,GACA,IAAA6xB,EAAA68L,GAAA1uN,IAAAe,EAAArB,KAAAK,KAEA2uN,GAAA1uN,GAAA,SAAA0oN,EAAA1oN,EAAAoqN,GACA,IAAAt0B,EAAAzhI,EACArwC,EAAAhkB,EAAAikB,cAYA,OAVAmmM,IAGA/1J,EAAAq6J,GAAA1qM,GACA0qM,GAAA1qM,GAAA8xK,EACAA,EAAA,MAAAjkK,EAAA62L,EAAA1oN,EAAAoqN,GACApmM,EACA,KACA0qM,GAAA1qM,GAAAqwC,GAEAyhI,MAOA,IAAAq5C,GAAA,sCACAC,GAAA,gBAyIA,SAAAC,GAAAzvO,GAEA,OADAA,EAAAqR,MAAAinN,IAAA,IACA13N,KAAA,KAIA,SAAA8uO,GAAA5mB,GACA,OAAAA,EAAAh5M,cAAAg5M,EAAAh5M,aAAA,UAAA,GAGA,SAAA6/N,GAAA3vO,GACA,OAAAoN,MAAAhM,QAAApB,GACAA,EAEA,iBAAAA,GACAA,EAAAqR,MAAAinN,IAEA,GAxJAn3N,EAAA4B,GAAA2gC,OAAA,CACAjhC,KAAA,SAAArC,EAAAJ,GACA,OAAA07N,EAAAx7N,KAAAiB,EAAAsB,KAAArC,EAAAJ,EAAA0lB,UAAAnlB,OAAA,IAGAqvO,WAAA,SAAAxvO,GACA,OAAAF,KAAAH,MAAA,kBACAG,KAAAiB,EAAA0uO,QAAAzvO,IAAAA,SAKAe,EAAAuiC,OAAA,CACAjhC,KAAA,SAAAqmN,EAAA1oN,EAAAJ,GACA,IAAAk2L,EAAAinC,EACAiS,EAAAtmB,EAAAlwM,SAGA,GAAA,IAAAw2N,GAAA,IAAAA,GAAA,IAAAA,EAWA,OAPA,IAAAA,GAAAjuO,EAAA61N,SAAAlO,KAGA1oN,EAAAe,EAAA0uO,QAAAzvO,IAAAA,EACA+8N,EAAAh8N,EAAAuqO,UAAAtrO,SAGAknC,IAAAtnC,EACAm9N,GAAA,QAAAA,QACA71L,KAAA4uJ,EAAAinC,EAAAh4M,IAAA2jM,EAAA9oN,EAAAI,IACA81L,EAGA4yB,EAAA1oN,GAAAJ,EAGAm9N,GAAA,QAAAA,GAAA,QAAAjnC,EAAAinC,EAAAp/M,IAAA+qM,EAAA1oN,IACA81L,EAGA4yB,EAAA1oN,IAGAsrO,UAAA,CACAlY,SAAA,CACAz1M,IAAA,SAAA+qM,GAOA,IAAAgnB,EAAA3uO,EAAArB,KAAAK,KAAA2oN,EAAA,YAEA,OAAAgnB,EACA3vN,SAAA2vN,EAAA,IAIAP,GAAAnuN,KAAA0nM,EAAA5kL,WACAsrM,GAAApuN,KAAA0nM,EAAA5kL,WACA4kL,EAAAhkL,KAEA,GAGA,KAKA+qM,QAAA,CACAE,IAAA,UACAC,MAAA,eAYArnM,EAAAsmM,cACA9tO,EAAAuqO,UAAAhY,SAAA,CACA31M,IAAA,SAAA+qM,GAIA,IAAA72M,EAAA62M,EAAArvL,WAIA,OAHAxnB,GAAAA,EAAAwnB,YACAxnB,EAAAwnB,WAAAk6L,cAEA,MAEAxuM,IAAA,SAAA2jM,GAIA,IAAA72M,EAAA62M,EAAArvL,WACAxnB,IACAA,EAAA0hN,cAEA1hN,EAAAwnB,YACAxnB,EAAAwnB,WAAAk6L,kBAOAxyN,EAAApB,KAAA,CACA,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACA,WACAoB,EAAA0uO,QAAA3vO,KAAAmkB,eAAAnkB,QA4BAiB,EAAA4B,GAAA2gC,OAAA,CACAqF,SAAA,SAAA/oC,GACA,IAAAgpC,EAAA8/K,EAAAkG,EAAAxzL,EAAAy0M,EAAA91N,EAAAynB,EACA/gC,EAAA,EAEA,GAAAmnN,EAAAhoN,GACA,OAAAE,KAAAH,MAAA,SAAAoa,GACAhZ,EAAAjB,MAAA6oC,SAAA/oC,EAAAoZ,KAAAlZ,KAAAia,EAAAu1N,GAAAxvO,WAMA,IAFA8oC,EAAA2mM,GAAA3vO,IAEAO,OACA,KAAAuoN,EAAA5oN,KAAAW,MAIA,GAHA26B,EAAAk0M,GAAA5mB,GACAkG,EAAA,IAAAlG,EAAAlwM,UAAA,IAAA62N,GAAAj0M,GAAA,IAEA,CAEA,IADArhB,EAAA,EACA81N,EAAAjnM,EAAA7uB,MACA60M,EAAAjqN,QAAA,IAAAkrO,EAAA,KAAA,IACAjhB,GAAAihB,EAAA,KAMAz0M,KADAoG,EAAA6tM,GAAAzgB,KAEAlG,EAAAp4L,aAAA,QAAAkR,GAMA,OAAA1hC,MAGAkpC,YAAA,SAAAppC,GACA,IAAAgpC,EAAA8/K,EAAAkG,EAAAxzL,EAAAy0M,EAAA91N,EAAAynB,EACA/gC,EAAA,EAEA,GAAAmnN,EAAAhoN,GACA,OAAAE,KAAAH,MAAA,SAAAoa,GACAhZ,EAAAjB,MAAAkpC,YAAAppC,EAAAoZ,KAAAlZ,KAAAia,EAAAu1N,GAAAxvO,WAIA,IAAAwlB,UAAAnlB,OACA,OAAAL,KAAAC,KAAA,QAAA,IAKA,IAFA6oC,EAAA2mM,GAAA3vO,IAEAO,OACA,KAAAuoN,EAAA5oN,KAAAW,MAMA,GALA26B,EAAAk0M,GAAA5mB,GAGAkG,EAAA,IAAAlG,EAAAlwM,UAAA,IAAA62N,GAAAj0M,GAAA,IAEA,CAEA,IADArhB,EAAA,EACA81N,EAAAjnM,EAAA7uB,MAGA,KAAA60M,EAAAjqN,QAAA,IAAAkrO,EAAA,MAAA,GACAjhB,EAAAA,EAAAt3M,QAAA,IAAAu4N,EAAA,IAAA,KAMAz0M,KADAoG,EAAA6tM,GAAAzgB,KAEAlG,EAAAp4L,aAAA,QAAAkR,GAMA,OAAA1hC,MAGAypC,YAAA,SAAA3pC,EAAAkwO,GACA,IAAAjwO,SAAAD,EACAmwO,EAAA,WAAAlwO,GAAAmN,MAAAhM,QAAApB,GAEA,MAAA,kBAAAkwO,GAAAC,EACAD,EAAAhwO,KAAA6oC,SAAA/oC,GAAAE,KAAAkpC,YAAAppC,GAGAgoN,EAAAhoN,GACAE,KAAAH,MAAA,SAAAc,GACAM,EAAAjB,MAAAypC,YACA3pC,EAAAoZ,KAAAlZ,KAAAW,EAAA6uO,GAAAxvO,MAAAgwO,GACAA,MAKAhwO,KAAAH,MAAA,WACA,IAAA0pC,EAAA5oC,EAAA0D,EAAA0kC,EAEA,GAAAknM,EAOA,IAJAtvO,EAAA,EACA0D,EAAApD,EAAAjB,MACA+oC,EAAA0mM,GAAA3vO,GAEAypC,EAAAR,EAAApoC,MAGA0D,EAAA+kC,SAAAG,GACAllC,EAAA6kC,YAAAK,GAEAllC,EAAAwkC,SAAAU,aAKAnC,IAAAtnC,GAAA,YAAAC,KACAwpC,EAAAimM,GAAAxvO,QAIAu8N,EAAAt3M,IAAAjlB,KAAA,gBAAAupC,GAOAvpC,KAAAwwB,cACAxwB,KAAAwwB,aAAA,QACA+Y,IAAA,IAAAzpC,EACA,GACAy8N,EAAA1+M,IAAA7d,KAAA,kBAAA,SAOAopC,SAAA,SAAAlW,GACA,IAAAqW,EAAAq/K,EACAjoN,EAAA,EAGA,IADA4oC,EAAA,IAAArW,EAAA,IACA01L,EAAA5oN,KAAAW,MACA,GAAA,IAAAioN,EAAAlwM,WACA,IAAA62N,GAAAC,GAAA5mB,IAAA,KAAA/jN,QAAA0kC,IAAA,EACA,OAAA,EAIA,OAAA,KAOA,IAAA2mM,GAAA,MAEAjvO,EAAA4B,GAAA2gC,OAAA,CACA/iC,IAAA,SAAAX,GACA,IAAAm9N,EAAAjnC,EAAA+uC,EACAnc,EAAA5oN,KAAA,GAEA,OAAAwlB,UAAAnlB,QA0BA0kO,EAAAjd,EAAAhoN,GAEAE,KAAAH,MAAA,SAAAc,GACA,IAAAF,EAEA,IAAAT,KAAA0Y,WAWA,OANAjY,EADAskO,EACAjlO,EAAAoZ,KAAAlZ,KAAAW,EAAAM,EAAAjB,MAAAS,OAEAX,GAKAW,EAAA,GAEA,iBAAAA,EACAA,GAAA,GAEAyM,MAAAhM,QAAAT,KACAA,EAAAQ,EAAAif,IAAAzf,GAAA,SAAAX,GACA,OAAA,MAAAA,EAAA,GAAAA,EAAA,QAIAm9N,EAAAh8N,EAAAkvO,SAAAnwO,KAAAD,OAAAkB,EAAAkvO,SAAAnwO,KAAAgkC,SAAA7f,iBAGA,QAAA84M,QAAA71L,IAAA61L,EAAAh4M,IAAAjlB,KAAAS,EAAA,WACAT,KAAAF,MAAAW,QAzDAmoN,GACAqU,EAAAh8N,EAAAkvO,SAAAvnB,EAAA7oN,OACAkB,EAAAkvO,SAAAvnB,EAAA5kL,SAAA7f,iBAGA,QAAA84M,QACA71L,KAAA4uJ,EAAAinC,EAAAp/M,IAAA+qM,EAAA,UAEA5yB,EAMA,iBAHAA,EAAA4yB,EAAA9oN,OAIAk2L,EAAAx+K,QAAA04N,GAAA,IAIA,MAAAl6C,EAAA,GAAAA,OAGA,KAyCA/0L,EAAAuiC,OAAA,CACA2sM,SAAA,CACAvR,OAAA,CACA/gN,IAAA,SAAA+qM,GAEA,IAAAnoN,EAAAQ,EAAArB,KAAAK,KAAA2oN,EAAA,SACA,OAAA,MAAAnoN,EACAA,EAMA8uO,GAAAtuO,EAAAwB,KAAAmmN,MAGAnnN,OAAA,CACAoc,IAAA,SAAA+qM,GACA,IAAA9oN,EAAA8+N,EAAAj+N,EACA0zC,EAAAu0K,EAAAv0K,QACA/7B,EAAAswM,EAAA6K,cACAiN,EAAA,eAAA9X,EAAA7oN,KACAQ,EAAAmgO,EAAA,KAAA,GACAvoN,EAAAuoN,EAAApoN,EAAA,EAAA+7B,EAAAh0C,OAUA,IAPAM,EADA2X,EAAA,EACAH,EAGAuoN,EAAApoN,EAAA,EAIA3X,EAAAwX,EAAAxX,IAKA,KAJAi+N,EAAAvqL,EAAA1zC,IAIA6yN,UAAA7yN,IAAA2X,KAGAsmN,EAAAxlK,YACAwlK,EAAArlM,WAAA6/B,WACAp1B,EAAA46L,EAAArlM,WAAA,aAAA,CAMA,GAHAz5B,EAAAmB,EAAA29N,GAAAn+N,MAGAigO,EACA,OAAA5gO,EAIAS,EAAAC,KAAAV,GAIA,OAAAS,GAGA0kB,IAAA,SAAA2jM,EAAA9oN,GAMA,IALA,IAAAswO,EAAAxR,EACAvqL,EAAAu0K,EAAAv0K,QACA9zC,EAAAU,EAAA0oN,UAAA7pN,GACAa,EAAA0zC,EAAAh0C,OAEAM,OACAi+N,EAAAvqL,EAAA1zC,IAIA6yN,SACAvyN,EAAA2oN,QAAA3oN,EAAAkvO,SAAAvR,OAAA/gN,IAAA+gN,GAAAr+N,IAAA,KAEA6vO,GAAA,GAUA,OAHAA,IACAxnB,EAAA6K,eAAA,GAEAlzN,OAOAU,EAAApB,KAAA,CAAA,QAAA,aAAA,WACAoB,EAAAkvO,SAAAnwO,MAAA,CACAilB,IAAA,SAAA2jM,EAAA9oN,GACA,GAAAoN,MAAAhM,QAAApB,GACA,OAAA8oN,EAAA2K,QAAAtyN,EAAA2oN,QAAA3oN,EAAA2nN,GAAAnoN,MAAAX,IAAA,IAIA2oC,EAAAqmM,UACA7tO,EAAAkvO,SAAAnwO,MAAA6d,IAAA,SAAA+qM,GACA,OAAA,OAAAA,EAAAh5M,aAAA,SAAA,KAAAg5M,EAAA9oN,WAWA2oC,EAAA4nM,QAAA,cAAA/rO,EAGA,IAAAgsO,GAAA,kCACAC,GAAA,SAAA1jN,GACAA,EAAA0sB,mBAGAt4C,EAAAuiC,OAAAviC,EAAAI,MAAA,CAEAuB,QAAA,SAAAvB,EAAAW,EAAA4mN,EAAA4nB,GAEA,IAAA7vO,EAAAmuN,EAAA51I,EAAAu3J,EAAAC,EAAAn8K,EAAAulK,EAAA6W,EACAC,EAAA,CAAAhoB,GAAA/mM,GACA9hB,EAAA4nN,EAAAzuM,KAAA7X,EAAA,QAAAA,EAAAtB,KAAAsB,EACAggO,EAAA1Z,EAAAzuM,KAAA7X,EAAA,aAAAA,EAAAkuN,UAAAx/M,MAAA,KAAA,GAKA,GAHA++M,EAAA6hB,EAAAz3J,EAAA0vI,EAAAA,GAAA/mM,EAGA,IAAA+mM,EAAAlwM,UAAA,IAAAkwM,EAAAlwM,WAKA43N,GAAApvN,KAAAnhB,EAAAkB,EAAAI,MAAAmgO,aAIAzhO,EAAA8E,QAAA,MAAA,IAGAw8N,EAAAthO,EAAAgQ,MAAA,KACAhQ,EAAAshO,EAAAzgN,QACAygN,EAAAh5N,QAEAqoO,EAAA3wO,EAAA8E,QAAA,KAAA,GAAA,KAAA9E,GAGAsB,EAAAA,EAAAJ,EAAAmoN,SACA/nN,EACA,IAAAJ,EAAAggO,MAAAlhO,EAAA,iBAAAsB,GAAAA,IAGA0/N,UAAAyP,EAAA,EAAA,EACAnvO,EAAAkuN,UAAA8R,EAAA3gO,KAAA,KACAW,EAAAkhO,WAAAlhO,EAAAkuN,UACA,IAAA1uM,OAAA,UAAAwgN,EAAA3gO,KAAA,iBAAA,WACA,KAGAW,EAAAof,YAAA2mB,EACA/lC,EAAA8N,SACA9N,EAAA8N,OAAAy5M,GAIA5mN,EAAA,MAAAA,EACA,CAAAX,GACAJ,EAAA0oN,UAAA3nN,EAAA,CAAAX,IAGAy4N,EAAA74N,EAAAI,MAAAy4N,QAAA/5N,IAAA,GACAywO,IAAA1W,EAAAl3N,UAAA,IAAAk3N,EAAAl3N,QAAAoW,MAAA4vM,EAAA5mN,IAAA,CAMA,IAAAwuO,IAAA1W,EAAA+I,WAAAp/J,EAAAmlJ,GAAA,CAMA,IAJA6nB,EAAA3W,EAAAkH,cAAAjhO,EACAuwO,GAAApvN,KAAAuvN,EAAA1wO,KACA+uN,EAAAA,EAAAv1L,YAEAu1L,EAAAA,EAAAA,EAAAv1L,WACAq3M,EAAApwO,KAAAsuN,GACA51I,EAAA41I,EAIA51I,KAAA0vI,EAAAuF,eAAAtsM,IACA+uN,EAAApwO,KAAA04E,EAAAy2I,aAAAz2I,EAAA23J,cAAAvsO,GAMA,IADA3D,EAAA,GACAmuN,EAAA8hB,EAAAjwO,QAAAU,EAAA+gO,wBACAuO,EAAA7hB,EACAztN,EAAAtB,KAAAY,EAAA,EACA8vO,EACA3W,EAAA2H,UAAA1hO,GAGAw0D,GAAAgoK,EAAA1+M,IAAAixM,EAAA,WAAApmN,OAAAM,OAAA,OAAA3H,EAAAtB,OACAw8N,EAAA1+M,IAAAixM,EAAA,YAEAv6J,EAAAv7C,MAAA81M,EAAA9sN,IAIAuyD,EAAAm8K,GAAA5hB,EAAA4hB,KACAn8K,EAAAv7C,OAAAkjN,EAAApN,KACAztN,EAAAof,OAAA8zC,EAAAv7C,MAAA81M,EAAA9sN,IACA,IAAAX,EAAAof,QACApf,EAAAk2C,kBA8CA,OA1CAl2C,EAAAtB,KAAAA,EAGAywO,GAAAnvO,EAAA0hO,sBAEAjJ,EAAAmF,WACA,IAAAnF,EAAAmF,SAAAjmN,MAAA43N,EAAAh1L,MAAA55C,KACAk6N,EAAAtT,IAIA8nB,GAAA5oB,EAAAc,EAAA7oN,MAAA0jE,EAAAmlJ,MAGA1vI,EAAA0vI,EAAA8nB,MAGA9nB,EAAA8nB,GAAA,MAIAzvO,EAAAI,MAAAmgO,UAAAzhO,EAEAsB,EAAA+gO,wBACAuO,EAAA/sM,iBAAA7jC,EAAAwwO,IAGA3nB,EAAA7oN,KAEAsB,EAAA+gO,wBACAuO,EAAA9sM,oBAAA9jC,EAAAwwO,IAGAtvO,EAAAI,MAAAmgO,eAAAp6L,EAEA8xC,IACA0vI,EAAA8nB,GAAAx3J,IAMA73E,EAAAof,SAKAqwN,SAAA,SAAA/wO,EAAA6oN,EAAAvnN,GACA,IAAAwrB,EAAA5rB,EAAAuiC,OACA,IAAAviC,EAAAggO,MACA5/N,EACA,CACAtB,KAAAA,EACAojO,aAAA,IAIAliO,EAAAI,MAAAuB,QAAAiqB,EAAA,KAAA+7L,MAKA3nN,EAAA4B,GAAA2gC,OAAA,CAEA5gC,QAAA,SAAA7C,EAAAiC,GACA,OAAAhC,KAAAH,MAAA,WACAoB,EAAAI,MAAAuB,QAAA7C,EAAAiC,EAAAhC,UAGA+wO,eAAA,SAAAhxO,EAAAiC,GACA,IAAA4mN,EAAA5oN,KAAA,GACA,GAAA4oN,EACA,OAAA3nN,EAAAI,MAAAuB,QAAA7C,EAAAiC,EAAA4mN,GAAA,MAcAngL,EAAA4nM,SACApvO,EAAApB,KAAA,CAAA+zG,MAAA,UAAA7vE,KAAA,aAAA,SAAAggM,EAAA9B,GAGA,IAAAx2L,EAAA,SAAApqC,GACAJ,EAAAI,MAAAyvO,SAAA7O,EAAA5gO,EAAA8N,OAAAlO,EAAAI,MAAA4gO,IAAA5gO,KAGAJ,EAAAI,MAAAy4N,QAAAmI,GAAA,CACAt2G,MAAA,WAIA,IAAA1mF,EAAAjlC,KAAAmuN,eAAAnuN,KAAA6hB,UAAA7hB,KACAgxO,EAAAzU,EAAAf,OAAAv2L,EAAAg9L,GAEA+O,GACA/rM,EAAArB,iBAAAmgM,EAAAt4L,GAAA,GAEA8wL,EAAAf,OAAAv2L,EAAAg9L,GAAA+O,GAAA,GAAA,IAEAnP,SAAA,WACA,IAAA58L,EAAAjlC,KAAAmuN,eAAAnuN,KAAA6hB,UAAA7hB,KACAgxO,EAAAzU,EAAAf,OAAAv2L,EAAAg9L,GAAA,EAEA+O,EAKAzU,EAAAf,OAAAv2L,EAAAg9L,EAAA+O,IAJA/rM,EAAApB,oBAAAkgM,EAAAt4L,GAAA,GACA8wL,EAAAp6N,OAAA8iC,EAAAg9L,SASA,IAAAz9L,GAAAlgC,EAAAkgC,SAEAwjL,GAAA,CAAAgC,KAAA7oM,KAAAC,OAEA6vN,GAAA,KAKAhwO,EAAAiwO,SAAA,SAAAlvO,GACA,IAAAuwN,EAAA4e,EACA,IAAAnvO,GAAA,iBAAAA,EACA,OAAA,KAKA,IACAuwN,GAAA,IAAAjuN,EAAAqnL,WAAAC,gBAAA5pL,EAAA,YACA,MAAA6qB,IAYA,OAVAskN,EAAA5e,GAAAA,EAAAjuL,qBAAA,eAAA,GACAiuL,IAAA4e,GACAlwO,EAAA4C,MAAA,iBACAstO,EACAlwO,EAAAif,IAAAixN,EAAA9sM,YAAA,SAAAlR,GACA,OAAAA,EAAAka,eACA3sC,KAAA,MACAsB,IAGAuwN,GAIA,IACA6e,GAAA,QACAC,GAAA,SACAC,GAAA,wCACAC,GAAA,qCAEA,SAAAC,GAAA9iL,EAAA3tD,EAAA0wO,EAAAn0N,GACA,IAAApd,EAEA,GAAAgN,MAAAhM,QAAAH,GAGAE,EAAApB,KAAAkB,GAAA,SAAAJ,EAAA0B,GACAovO,GAAAL,GAAAlwN,KAAAwtC,GAGApxC,EAAAoxC,EAAArsD,GAKAmvO,GACA9iL,EAAA,KAAA,iBAAArsD,GAAA,MAAAA,EAAA1B,EAAA,IAAA,IACA0B,EACAovO,EACAn0N,WAKA,GAAAm0N,GAAA,WAAAnpB,EAAAvnN,GAUAuc,EAAAoxC,EAAA3tD,QAPA,IAAAb,KAAAa,EACAywO,GAAA9iL,EAAA,IAAAxuD,EAAA,IAAAa,EAAAb,GAAAuxO,EAAAn0N,GAYArc,EAAAksD,MAAA,SAAArlD,EAAA2pO,GACA,IAAA/iL,EACAhzC,EAAA,GACA4B,EAAA,SAAAyF,EAAA2uN,GAGA,IAAA5xO,EAAAgoN,EAAA4pB,GACAA,IACAA,EAEAh2N,EAAAA,EAAArb,QAAAsxO,mBAAA5uN,GAAA,IACA4uN,mBAAA,MAAA7xO,EAAA,GAAAA,IAGA,GAAA,MAAAgI,EACA,MAAA,GAIA,GAAAoF,MAAAhM,QAAA4G,IAAAA,EAAA0gN,SAAAvnN,EAAAkoN,cAAArhN,GAGA7G,EAAApB,KAAAiI,GAAA,WACAwV,EAAAtd,KAAAE,KAAAF,KAAAF,eAOA,IAAA4uD,KAAA5mD,EACA0pO,GAAA9iL,EAAA5mD,EAAA4mD,GAAA+iL,EAAAn0N,GAKA,OAAA5B,EAAAhb,KAAA,MAGAO,EAAA4B,GAAA2gC,OAAA,CACA0vD,UAAA,WACA,OAAAjyF,EAAAksD,MAAAntD,KAAA4xO,mBAEAA,eAAA,WACA,OAAA5xO,KAAAkgB,KAAA,WAGA,IAAAm2D,EAAAp1E,EAAAsB,KAAAvC,KAAA,YACA,OAAAq2E,EAAAp1E,EAAA0oN,UAAAtzI,GAAAr2E,QACAI,QAAA,WACA,IAAAL,EAAAC,KAAAD,KAGA,OAAAC,KAAAE,OAAAe,EAAAjB,MAAAM,GAAA,cACAixO,GAAArwN,KAAAlhB,KAAAgkC,YAAAstM,GAAApwN,KAAAnhB,KACAC,KAAAuzN,UAAA+K,GAAAp9M,KAAAnhB,OACAmgB,KAAA,SAAA/V,EAAAy+M,GACA,IAAAnoN,EAAAQ,EAAAjB,MAAAS,MAEA,OAAA,MAAAA,EACA,KAGAyM,MAAAhM,QAAAT,GACAQ,EAAAif,IAAAzf,GAAA,SAAAA,GACA,MAAA,CAAAP,KAAA0oN,EAAA1oN,KAAAJ,MAAAW,EAAA+W,QAAA65N,GAAA,YAIA,CAAAnxO,KAAA0oN,EAAA1oN,KAAAJ,MAAAW,EAAA+W,QAAA65N,GAAA,YACAxzN,SAKA,IACAg0N,GAAA,OACAC,GAAA,OACAC,GAAA,gBACAC,GAAA,6BAIAC,GAAA,iBACAC,GAAA,QAWAtF,GAAA,GAOAuF,GAAA,GAGAC,GAAA,KAAAxqM,OAAA,KAGAyqM,GAAAxwN,EAAAyR,cAAA,KAKA,SAAAg/M,GAAAC,GAGA,OAAA,SAAAC,EAAA1wO,GAEA,iBAAA0wO,IACA1wO,EAAA0wO,EACAA,EAAA,KAGA,IAAA7uO,EACAhD,EAAA,EACA8xO,EAAAD,EAAAruN,cAAAhT,MAAAinN,IAAA,GAEA,GAAAtQ,EAAAhmN,GAGA,KAAA6B,EAAA8uO,EAAA9xO,MAGA,MAAAgD,EAAA,IACAA,EAAAA,EAAA+M,MAAA,IAAA,KACA6hO,EAAA5uO,GAAA4uO,EAAA5uO,IAAA,IAAAgnC,QAAA7oC,KAIAywO,EAAA5uO,GAAA4uO,EAAA5uO,IAAA,IAAAnD,KAAAsB,IAQA,SAAA4wO,GAAAH,EAAAl+L,EAAA04L,EAAA4F,GAEA,IAAAC,EAAA,GACAC,EAAAN,IAAAJ,GAEA,SAAAW,EAAAnvO,GACA,IAAA6vN,EAcA,OAbAof,EAAAjvO,IAAA,EACA1C,EAAApB,KAAA0yO,EAAA5uO,IAAA,IAAA,SAAAkjD,EAAAksL,GACA,IAAAC,EAAAD,EAAA1+L,EAAA04L,EAAA4F,GACA,MAAA,iBAAAK,GACAH,GAAAD,EAAAI,GAKAH,IACArf,EAAAwf,QADA,GAHA3+L,EAAAo+L,UAAA9nM,QAAAqoM,GACAF,EAAAE,IACA,MAKAxf,EAGA,OAAAsf,EAAAz+L,EAAAo+L,UAAA,MAAAG,EAAA,MAAAE,EAAA,KAMA,SAAAG,GAAA9jO,EAAAs0B,GACA,IAAA1gB,EAAAmmM,EACAgqB,EAAAjyO,EAAAkyO,aAAAD,aAAA,GAEA,IAAAnwN,KAAA0gB,OACA2D,IAAA3D,EAAA1gB,MACAmwN,EAAAnwN,GAAA5T,EAAA+5M,IAAAA,EAAA,KAAAnmM,GAAA0gB,EAAA1gB,IAOA,OAJAmmM,GACAjoN,EAAAuiC,QAAA,EAAAr0B,EAAA+5M,GAGA/5M,EA/EAkjO,GAAAztM,KAAAJ,GAAAI,KAgPA3jC,EAAAuiC,OAAA,CAGA4vM,OAAA,EAGAC,aAAA,GACAC,KAAA,GAEAH,aAAA,CACA9vO,IAAAmhC,GAAAI,KACA7kC,KAAA,MACAwzO,QAxRA,4DAwRAryN,KAAAsjB,GAAAM,UACA/gC,QAAA,EACAyvO,aAAA,EACAplF,OAAA,EACA7qJ,YAAA,mDAcAkwO,QAAA,CACArG,IAAAgF,GACA3vO,KAAA,aACAylC,KAAA,YACAqqL,IAAA,4BACAvvD,KAAA,qCAGA40D,SAAA,CACArF,IAAA,UACArqL,KAAA,SACA86H,KAAA,YAGA0wE,eAAA,CACAnhB,IAAA,cACA9vN,KAAA,eACAugK,KAAA,gBAKA2wE,WAAA,CAGAC,SAAAjkI,OAGAkkI,aAAA,EAGAC,YAAAtwO,KAAAgxF,MAGAu/I,WAAA9yO,EAAAiwO,UAOAgC,YAAA,CACA7vO,KAAA,EACA4kC,SAAA,IAOA+rM,UAAA,SAAA7kO,EAAAqzK,GACA,OAAAA,EAGAywD,GAAAA,GAAA9jO,EAAAlO,EAAAkyO,cAAA3wD,GAGAywD,GAAAhyO,EAAAkyO,aAAAhkO,IAGA8kO,cAAA3B,GAAA1F,IACAsH,cAAA5B,GAAAH,IAGA/uO,KAAA,SAAAC,EAAAgxC,GAGA,iBAAAhxC,IACAgxC,EAAAhxC,EACAA,OAAA+jC,GAIAiN,EAAAA,GAAA,GAEA,IAAA8/L,EAGAC,EAGAC,EACAC,EAGAC,EAGAC,EAGApZ,EAGAqZ,EAGA9zO,EAGA+zO,EAGAh5N,EAAAza,EAAA+yO,UAAA,GAAA3/L,GAGAsgM,EAAAj5N,EAAAusB,SAAAvsB,EAGAk5N,EAAAl5N,EAAAusB,UACA0sM,EAAAj8N,UAAAi8N,EAAAnsB,QACAvnN,EAAA0zO,GACA1zO,EAAAI,MAGAk4N,EAAAt4N,EAAAm4N,WACAyb,EAAA5zO,EAAA03N,UAAA,eAGAmc,EAAAp5N,EAAAo5N,YAAA,GAGAC,EAAA,GACAC,EAAA,GAGAC,EAAA,WAGAtC,EAAA,CACAhtE,WAAA,EAGAuvE,kBAAA,SAAAnyN,GACA,IAAA5R,EACA,GAAAiqN,EAAA,CACA,IAAAkZ,EAEA,IADAA,EAAA,GACAnjO,EAAA6gO,GAAA35N,KAAAg8N,IACAC,EAAAnjO,EAAA,GAAAgT,cAAA,MACAmwN,EAAAnjO,EAAA,GAAAgT,cAAA,MAAA,IACAyjB,OAAAz2B,EAAA,IAGAA,EAAAmjO,EAAAvxN,EAAAoB,cAAA,KAEA,OAAA,MAAAhT,EAAA,KAAAA,EAAAzQ,KAAA,OAIAy0O,sBAAA,WACA,OAAA/Z,EAAAiZ,EAAA,MAIApoD,iBAAA,SAAA/rL,EAAAJ,GAMA,OALA,MAAAs7N,IACAl7N,EAAA80O,EAAA90O,EAAAikB,eACA6wN,EAAA90O,EAAAikB,gBAAAjkB,EACA60O,EAAA70O,GAAAJ,GAEAE,MAIA+rL,iBAAA,SAAAhsL,GAIA,OAHA,MAAAq7N,IACA1/M,EAAAwvK,SAAAnrL,GAEAC,MAIA80O,WAAA,SAAA50N,GACA,IAAAioM,EACA,GAAAjoM,EACA,GAAAk7M,EAGAuX,EAAArZ,OAAAp5M,EAAAyyN,EAAAjwG,cAIA,IAAAylF,KAAAjoM,EACA40N,EAAA3sB,GAAA,CAAA2sB,EAAA3sB,GAAAjoM,EAAAioM,IAIA,OAAAnoN,MAIAo1O,MAAA,SAAAC,GACA,IAAAC,EAAAD,GAAAJ,EAKA,OAJAd,GACAA,EAAAiB,MAAAE,GAEApqB,EAAA,EAAAoqB,GACAt1O,OAoBA,GAfAu5N,EAAAd,QAAAka,GAKAj3N,EAAArY,MAAAA,GAAAqY,EAAArY,KAAAmhC,GAAAI,MAAA,IACAptB,QAAA06N,GAAA1tM,GAAAM,SAAA,MAGAppB,EAAA3b,KAAAs0C,EAAAmO,QAAAnO,EAAAt0C,MAAA2b,EAAA8mC,QAAA9mC,EAAA3b,KAGA2b,EAAA+2N,WAAA/2N,EAAA/X,UAAA,KAAAwgB,cAAAhT,MAAAinN,IAAA,CAAA,IAGA,MAAA18M,EAAA65N,YAAA,CACAf,EAAA3yN,EAAAyR,cAAA,KAKA,IACAkhN,EAAA5vM,KAAAlpB,EAAArY,IAIAmxO,EAAA5vM,KAAA4vM,EAAA5vM,KACAlpB,EAAA65N,YAAAlD,GAAAvtM,SAAA,KAAAutM,GAAA3tM,MACA8vM,EAAA1vM,SAAA,KAAA0vM,EAAA9vM,KACA,MAAA7X,GAIAnR,EAAA65N,aAAA,GAaA,GARA75N,EAAA1Z,MAAA0Z,EAAA83N,aAAA,iBAAA93N,EAAA1Z,OACA0Z,EAAA1Z,KAAAf,EAAAksD,MAAAzxC,EAAA1Z,KAAA0Z,EAAA+1N,cAIAiB,GAAA9F,GAAAlxN,EAAA24B,EAAAs+L,GAGAvX,EACA,OAAAuX,EA8EA,IAAAhyO,KAzEA8zO,EAAAxzO,EAAAI,OAAAqa,EAAA3X,SAGA,GAAA9C,EAAAmyO,UACAnyO,EAAAI,MAAAuB,QAAA,aAIA8Y,EAAA3b,KAAA2b,EAAA3b,KAAAke,cAGAvC,EAAA85N,YAAAvD,GAAA/wN,KAAAxF,EAAA3b,MAKAq0O,EAAA14N,EAAArY,IAAAmU,QAAAs6N,GAAA,IAGAp2N,EAAA85N,WAwBA95N,EAAA1Z,MAAA0Z,EAAA83N,aACA,KAAA93N,EAAAnY,aAAA,IAAAsB,QAAA,uCACA6W,EAAA1Z,KAAA0Z,EAAA1Z,KAAAwV,QAAAq6N,GAAA,OAvBA6C,EAAAh5N,EAAArY,IAAAqN,MAAA0jO,EAAA/zO,QAGAqb,EAAA1Z,OAAA0Z,EAAA83N,aAAA,iBAAA93N,EAAA1Z,QACAoyO,IAAAnD,GAAA/vN,KAAAkzN,GAAA,IAAA,KAAA14N,EAAA1Z,YAGA0Z,EAAA1Z,OAIA,IAAA0Z,EAAApY,QACA8wO,EAAAA,EAAA58N,QAAAu6N,GAAA,MACA2C,GAAAzD,GAAA/vN,KAAAkzN,GAAA,IAAA,KAAA,KAAApsB,GAAAgC,OACA0qB,GAIAh5N,EAAArY,IAAA+wO,EAAAM,GASAh5N,EAAA+5N,aACAx0O,EAAAoyO,aAAAe,IACAzB,EAAA1mD,iBAAA,oBAAAhrL,EAAAoyO,aAAAe,IAEAnzO,EAAAqyO,KAAAc,IACAzB,EAAA1mD,iBAAA,gBAAAhrL,EAAAqyO,KAAAc,MAKA14N,EAAA1Z,MAAA0Z,EAAA85N,aAAA,IAAA95N,EAAAnY,aAAA8wC,EAAA9wC,cACAovO,EAAA1mD,iBAAA,eAAAvwK,EAAAnY,aAIAovO,EAAA1mD,iBACA,SACAvwK,EAAA+2N,UAAA,IAAA/2N,EAAA+3N,QAAA/3N,EAAA+2N,UAAA,IACA/2N,EAAA+3N,QAAA/3N,EAAA+2N,UAAA,KACA,MAAA/2N,EAAA+2N,UAAA,GAAA,KAAAL,GAAA,WAAA,IACA12N,EAAA+3N,QAAA,MAIA/3N,EAAAk3K,QACA+/C,EAAA1mD,iBAAAtrL,EAAA+a,EAAAk3K,QAAAjyL,IAIA,GAAA+a,EAAAg6N,cACA,IAAAh6N,EAAAg6N,WAAAx8N,KAAAy7N,EAAAhC,EAAAj3N,IAAA0/M,GAGA,OAAAuX,EAAAyC,QAeA,GAXAH,EAAA,QAGAJ,EAAAv3N,IAAA5B,EAAAm0C,UACA8iL,EAAAznB,KAAAxvM,EAAA9X,SACA+uO,EAAAja,KAAAh9M,EAAA7X,OAGAswO,EAAAzB,GAAAP,GAAAz2N,EAAA24B,EAAAs+L,GAKA,CASA,GARAA,EAAAhtE,WAAA,EAGA8uE,GACAG,EAAAhyO,QAAA,WAAA,CAAA+vO,EAAAj3N,IAIA0/M,EACA,OAAAuX,EAIAj3N,EAAA0yI,OAAA1yI,EAAA68C,QAAA,IACAg8K,EAAAjwO,EAAA6d,YAAA,WACAwwN,EAAAyC,MAAA,aACA15N,EAAA68C,UAGA,IACA6iK,GAAA,EACA+Y,EAAAjoD,KAAA6oD,EAAA7pB,GACA,MAAAr+L,GAGA,GAAAuuM,EACA,MAAAvuM,EAIAq+L,GAAA,EAAAr+L,SAhCAq+L,GAAA,EAAA,gBAqCA,SAAAA,EAAAxoF,EAAAizG,EAAAC,EAAAhjD,GACA,IAAAijD,EAAAjyO,EAAAC,EAAAynL,EAAAwqD,EACAT,EAAAM,EAGAva,IAIAA,GAAA,EAGAmZ,GACAjwO,EAAA+d,aAAAkyN,GAKAJ,OAAA/sM,EAGAitM,EAAAzhD,GAAA,GAGA+/C,EAAAhtE,WAAAjjC,EAAA,EAAA,EAAA,EAGAmzG,EAAAnzG,GAAA,KAAAA,EAAA,KAAA,MAAAA,EAGAkzG,IACAtqD,EA7lBA,SAAA5vK,EAAAi3N,EAAAiD,GAOA,IALA,IAAAG,EAAAh2O,EAAAi2O,EAAAC,EACAre,EAAAl8M,EAAAk8M,SACA6a,EAAA/2N,EAAA+2N,UAGA,MAAAA,EAAA,IACAA,EAAA7xN,aACAwmB,IAAA2uM,IACAA,EAAAr6N,EAAAwvK,UAAAynD,EAAAuC,kBAAA,iBAKA,GAAAa,EACA,IAAAh2O,KAAA63N,EACA,GAAAA,EAAA73N,IAAA63N,EAAA73N,GAAAmhB,KAAA60N,GAAA,CACAtD,EAAA9nM,QAAA5qC,GACA,MAMA,GAAA0yO,EAAA,KAAAmD,EACAI,EAAAvD,EAAA,OACA,CAGA,IAAA1yO,KAAA61O,EAAA,CACA,IAAAnD,EAAA,IAAA/2N,EAAAi4N,WAAA5zO,EAAA,IAAA0yO,EAAA,IAAA,CACAuD,EAAAj2O,EACA,MAEAk2O,IACAA,EAAAl2O,GAKAi2O,EAAAA,GAAAC,EAMA,GAAAD,EAIA,OAHAA,IAAAvD,EAAA,IACAA,EAAA9nM,QAAAqrM,GAEAJ,EAAAI,GA0iBAE,CAAAx6N,EAAAi3N,EAAAiD,KAIAC,GACA50O,EAAA2oN,QAAA,SAAAluM,EAAA+2N,YAAA,GACAxxO,EAAA2oN,QAAA,OAAAluM,EAAA+2N,WAAA,IACA/2N,EAAAi4N,WAAA,eAAA,cAIAroD,EA9iBA,SAAA5vK,EAAA4vK,EAAAqnD,EAAAkD,GACA,IAAAM,EAAA/iN,EAAAgjN,EAAAl9J,EAAAhyE,EACAysO,EAAA,GAGAlB,EAAA/2N,EAAA+2N,UAAA/hO,QAGA,GAAA+hO,EAAA,GACA,IAAA2D,KAAA16N,EAAAi4N,WACAA,EAAAyC,EAAAjyN,eAAAzI,EAAAi4N,WAAAyC,GAOA,IAHAhjN,EAAAq/M,EAAA7xN,QAGAwS,GAcA,GAZA1X,EAAAg4N,eAAAtgN,KACAu/M,EAAAj3N,EAAAg4N,eAAAtgN,IAAAk4J,IAIApkL,GAAA2uO,GAAAn6N,EAAA26N,aACA/qD,EAAA5vK,EAAA26N,WAAA/qD,EAAA5vK,EAAA/X,WAGAuD,EAAAksB,EACAA,EAAAq/M,EAAA7xN,QAKA,GAAA,MAAAwS,EAEAA,EAAAlsB,OAGA,GAAA,MAAAA,GAAAA,IAAAksB,EAAA,CAMA,KAHAgjN,EAAAzC,EAAAzsO,EAAA,IAAAksB,IAAAugN,EAAA,KAAAvgN,IAIA,IAAA+iN,KAAAxC,EAIA,IADAz6J,EAAAi9J,EAAApmO,MAAA,MACA,KAAAqjB,IAGAgjN,EAAAzC,EAAAzsO,EAAA,IAAAgyE,EAAA,KACAy6J,EAAA,KAAAz6J,EAAA,KACA,EAGA,IAAAk9J,EACAA,EAAAzC,EAAAwC,IAGA,IAAAxC,EAAAwC,KACA/iN,EAAA8lD,EAAA,GACAu5J,EAAA9nM,QAAAuuC,EAAA,KAEA,MAOA,IAAA,IAAAk9J,EAGA,GAAAA,GAAA16N,EAAA46N,OACAhrD,EAAA8qD,EAAA9qD,QAEA,IACAA,EAAA8qD,EAAA9qD,GACA,MAAAz+J,GACA,MAAA,CACAu7C,MAAA,cACAvkE,MAAAuyO,EAAAvpN,EAAA,sBAAA3lB,EAAA,OAAAksB,IASA,MAAA,CAAAg1C,MAAA,UAAApmE,KAAAspL,GAidAirD,CAAA76N,EAAA4vK,EAAAqnD,EAAAkD,GAGAA,GAGAn6N,EAAA+5N,cACAK,EAAAnD,EAAAuC,kBAAA,oBAEAj0O,EAAAoyO,aAAAe,GAAA0B,IAEAA,EAAAnD,EAAAuC,kBAAA,WAEAj0O,EAAAqyO,KAAAc,GAAA0B,IAKA,MAAApzG,GAAA,SAAAhnH,EAAA3b,KACAs1O,EAAA,YAGA,MAAA3yG,EACA2yG,EAAA,eAIAA,EAAA/pD,EAAAljH,MACAxkE,EAAA0nL,EAAAtpL,KAEA6zO,IADAhyO,EAAAynL,EAAAznL,UAMAA,EAAAwxO,GACA3yG,GAAA2yG,IACAA,EAAA,QACA3yG,EAAA,IACAA,EAAA,KAMAiwG,EAAAjwG,OAAAA,EACAiwG,EAAA0C,YAAAM,GAAAN,GAAA,GAGAQ,EACAtc,EAAAW,YAAAya,EAAA,CAAA/wO,EAAAyxO,EAAA1C,IAEApZ,EAAAe,WAAAqa,EAAA,CAAAhC,EAAA0C,EAAAxxO,IAIA8uO,EAAAmC,WAAAA,GACAA,OAAA1tM,EAEAqtM,GACAG,EAAAhyO,QAAAizO,EAAA,cAAA,YACA,CAAAlD,EAAAj3N,EAAAm6N,EAAAjyO,EAAAC,IAIAgxO,EAAA1b,SAAAwb,EAAA,CAAAhC,EAAA0C,IAEAZ,IACAG,EAAAhyO,QAAA,eAAA,CAAA+vO,EAAAj3N,MAGAza,EAAAmyO,QACAnyO,EAAAI,MAAAuB,QAAA,cAKA,OAAA+vO,GAGA6D,QAAA,SAAAnzO,EAAArB,EAAAya,GACA,OAAAxb,EAAA4c,IAAAxa,EAAArB,EAAAya,EAAA,SAGAg6N,UAAA,SAAApzO,EAAAoZ,GACA,OAAAxb,EAAA4c,IAAAxa,OAAA+jC,EAAA3qB,EAAA,aAIAxb,EAAApB,KAAA,CAAA,MAAA,SAAA,SAAAsK,EAAAq4C,GACAvhD,EAAAuhD,GAAA,SAAAn/C,EAAArB,EAAAya,EAAA1c,GAUA,OAPA+nN,EAAA9lN,KACAjC,EAAAA,GAAA0c,EACAA,EAAAza,EACAA,OAAAolC,GAIAnmC,EAAAmC,KAAAnC,EAAAuiC,OAAA,CACAngC,IAAAA,EACAtD,KAAAyiD,EACA7+C,SAAA5D,EACAiC,KAAAA,EACA4B,QAAA6Y,GACAxb,EAAAkoN,cAAA9lN,IAAAA,QAIApC,EAAAgzO,eAAA,SAAAv4N,GACA,IAAA/a,EACA,IAAAA,KAAA+a,EAAAk3K,QACA,iBAAAjyL,EAAAwjB,gBACAzI,EAAAnY,YAAAmY,EAAAk3K,QAAAjyL,IAAA,OAMAM,EAAA+jO,SAAA,SAAA3hO,EAAAgxC,EAAApP,GACA,OAAAhkC,EAAAmC,KAAA,CACAC,IAAAA,EAGAtD,KAAA,MACA4D,SAAA,SACAL,OAAA,EACA8qJ,OAAA,EACArqJ,QAAA,EAKA4vO,WAAA,CACA+C,cAAA,cAEAL,WAAA,SAAA/qD,GACArqL,EAAAyoN,WAAAp+B,EAAAj3I,EAAApP,OAMAhkC,EAAA4B,GAAA2gC,OAAA,CACAmzM,QAAA,SAAAzuM,GACA,IAAArV,EAyBA,OAvBA7yB,KAAA,KACA8nN,EAAA5/K,KACAA,EAAAA,EAAAhvB,KAAAlZ,KAAA,KAIA6yB,EAAA5xB,EAAAinC,EAAAloC,KAAA,GAAAmuN,eAAAxgL,GAAA,GAAA+wC,OAAA,GAEA1+E,KAAA,GAAAu5B,YACA1G,EAAAkH,aAAA/5B,KAAA,IAGA6yB,EAAA3S,KAAA,WAGA,IAFA,IAAA0oM,EAAA5oN,KAEA4oN,EAAAguB,mBACAhuB,EAAAA,EAAAguB,kBAGA,OAAAhuB,KACAtmN,OAAAtC,OAGAA,MAGA62O,UAAA,SAAA3uM,GACA,OAAA4/K,EAAA5/K,GACAloC,KAAAH,MAAA,SAAAc,GACAM,EAAAjB,MAAA62O,UAAA3uM,EAAAhvB,KAAAlZ,KAAAW,OAIAX,KAAAH,MAAA,WACA,IAAAwE,EAAApD,EAAAjB,MACA43N,EAAAvzN,EAAAuzN,WAEAA,EAAAv3N,OACAu3N,EAAA+e,QAAAzuM,GAGA7jC,EAAA/B,OAAA4lC,OAKArV,KAAA,SAAAqV,GACA,IAAA4uM,EAAAhvB,EAAA5/K,GAEA,OAAAloC,KAAAH,MAAA,SAAAc,GACAM,EAAAjB,MAAA22O,QAAAG,EAAA5uM,EAAAhvB,KAAAlZ,KAAAW,GAAAunC,OAIA6uM,OAAA,SAAA7jN,GAIA,OAHAlzB,KAAA+R,OAAAmhB,GAAA8/L,IAAA,QAAAnzN,MAAA,WACAoB,EAAAjB,MAAA0lO,YAAA1lO,KAAAqkC,eAEArkC,QAKAiB,EAAA6vN,KAAAjF,QAAAugB,OAAA,SAAAxjB,GACA,OAAA3nN,EAAA6vN,KAAAjF,QAAAx6H,QAAAu3H,IAEA3nN,EAAA6vN,KAAAjF,QAAAx6H,QAAA,SAAAu3H,GACA,SAAAA,EAAAroL,aAAAqoL,EAAAnoL,cAAAmoL,EAAAkhB,iBAAAzpO,SAMAY,EAAAkyO,aAAA6D,IAAA,WACA,IACA,OAAA,IAAA1yO,EAAAunL,eACA,MAAAh/J,MAGA,IAAAoqN,GAAA,CAGArkG,EAAA,IAIAskG,KAAA,KAEAC,GAAAl2O,EAAAkyO,aAAA6D,MAEAvuM,EAAA2uM,OAAAD,IAAA,oBAAAA,GACA1uM,EAAArlC,KAAA+zO,KAAAA,GAEAl2O,EAAAizO,eAAA,SAAA7/L,GACA,IAAA53B,EAAA46N,EAGA,GAAA5uM,EAAA2uM,MAAAD,KAAA9iM,EAAAkhM,YACA,MAAA,CACArpD,KAAA,SAAA0G,EAAA/iI,GACA,IAAAlvD,EACAq2O,EAAA3iM,EAAA2iM,MAWA,GATAA,EAAAvzN,KACA4wB,EAAAt0C,KACAs0C,EAAAhxC,IACAgxC,EAAA+5G,MACA/5G,EAAAijM,SACAjjM,EAAA0/K,UAIA1/K,EAAAkjM,UACA,IAAA52O,KAAA0zC,EAAAkjM,UACAP,EAAAr2O,GAAA0zC,EAAAkjM,UAAA52O,GAmBA,IAAAA,KAdA0zC,EAAA62I,UAAA8rD,EAAAjrD,kBACAirD,EAAAjrD,iBAAA13I,EAAA62I,UAQA72I,EAAAkhM,aAAA3iD,EAAA,sBACAA,EAAA,oBAAA,kBAIAA,EACAokD,EAAA/qD,iBAAAtrL,EAAAiyL,EAAAjyL,IAIA8b,EAAA,SAAA1c,GACA,OAAA,WACA0c,IACAA,EAAA46N,EAAAL,EAAAlnL,OACAknL,EAAAjnL,QAAAinL,EAAAQ,QAAAR,EAAAS,UACAT,EAAAU,mBAAA,KAEA,UAAA33O,EACAi3O,EAAA5B,QACA,UAAAr1O,EAKA,iBAAAi3O,EAAAt0G,OACA7yE,EAAA,EAAA,SAEAA,EAGAmnL,EAAAt0G,OACAs0G,EAAA3B,YAIAxlL,EACAonL,GAAAD,EAAAt0G,SAAAs0G,EAAAt0G,OACAs0G,EAAA3B,WAKA,UAAA2B,EAAAzrD,cAAA,SACA,iBAAAyrD,EAAAW,aACA,CAAAC,OAAAZ,EAAA1rD,UACA,CAAA7oL,KAAAu0O,EAAAW,cACAX,EAAA7B,4BAQA6B,EAAAlnL,OAAArzC,IACA46N,EAAAL,EAAAjnL,QAAAinL,EAAAS,UAAAh7N,EAAA,cAKA2qB,IAAA4vM,EAAAQ,QACAR,EAAAQ,QAAAH,EAEAL,EAAAU,mBAAA,WAGA,IAAAV,EAAArxE,YAMArhK,EAAA6d,YAAA,WACA1F,GACA46N,QAQA56N,EAAAA,EAAA,SAEA,IAGAu6N,EAAA9qD,KAAA73I,EAAAmhM,YAAAnhM,EAAAryC,MAAA,MACA,MAAA6qB,GAGA,GAAApQ,EACA,MAAAoQ,IAKAuoN,MAAA,WACA34N,GACAA,SAWAxb,EAAAgzO,eAAA,SAAAv4N,GACAA,EAAA65N,cACA75N,EAAAk8M,SAAAxP,QAAA,MAKAnnN,EAAA+yO,UAAA,CACAP,QAAA,CACArrB,OAAA,6FAGAwP,SAAA,CACAxP,OAAA,2BAEAurB,WAAA,CACA+C,cAAA,SAAAj0O,GAEA,OADAxB,EAAAyoN,WAAAjnN,GACAA,MAMAxB,EAAAgzO,cAAA,UAAA,SAAAv4N,QACA0rB,IAAA1rB,EAAApY,QACAoY,EAAApY,OAAA,GAEAoY,EAAA65N,cACA75N,EAAA3b,KAAA,UAKAkB,EAAAizO,cAAA,UAAA,SAAAx4N,GAIA,IAAA0sM,EAAA3rM,EADA,GAAAf,EAAA65N,aAAA75N,EAAAm8N,YAEA,MAAA,CACA3rD,KAAA,SAAArlI,EAAAgJ,GACAu4J,EAAAnnN,EAAA,YACAhB,KAAAyb,EAAAm8N,aAAA,IACAt1O,KAAA,CAAAu1O,QAAAp8N,EAAAq8N,cAAAt0M,IAAA/nB,EAAArY,MACAH,GAAA,aAAAuZ,EAAA,SAAAovB,GACAu8K,EAAAjmN,SACAsa,EAAA,KACAovB,GACAgkB,EAAA,UAAAhkB,EAAA9rC,KAAA,IAAA,IAAA8rC,EAAA9rC,QAKA8hB,EAAAwmM,KAAA1uL,YAAAyuL,EAAA,KAEAgtB,MAAA,WACA34N,GACAA,SAUA,IAqGAqf,GArGAk8M,GAAA,GACAC,GAAA,oBAGAh3O,EAAA+yO,UAAA,CACAkE,MAAA,WACAC,cAAA,WACA,IAAA17N,EAAAu7N,GAAAp8L,OAAA36C,EAAAmoN,QAAA,IAAApB,GAAAgC,OAEA,OADAhqN,KAAAyc,IAAA,EACAA,KAKAxb,EAAAgzO,cAAA,cAAA,SAAAv4N,EAAA08N,EAAAzF,GAEA,IAAA0F,EAAAnqN,EAAAoqN,EACAC,GAAA,IAAA78N,EAAAw8N,QAAAD,GAAA/2N,KAAAxF,EAAArY,KACA,MACA,iBAAAqY,EAAA1Z,MAEA,KADA0Z,EAAAnY,aAAA,IACAsB,QAAA,sCACAozO,GAAA/2N,KAAAxF,EAAA1Z,OAAA,QAIA,GAAAu2O,GAAA,UAAA78N,EAAA+2N,UAAA,GA8DA,OA3DA4F,EAAA38N,EAAAy8N,cAAArwB,EAAApsM,EAAAy8N,eACAz8N,EAAAy8N,gBACAz8N,EAAAy8N,cAGAI,EACA78N,EAAA68N,GAAA78N,EAAA68N,GAAA/gO,QAAAygO,GAAA,KAAAI,IACA,IAAA38N,EAAAw8N,QACAx8N,EAAArY,MAAA4tO,GAAA/vN,KAAAxF,EAAArY,KAAA,IAAA,KAAAqY,EAAAw8N,MAAA,IAAAG,GAIA38N,EAAAi4N,WAAA,eAAA,WAIA,OAHA2E,GACAr3O,EAAA4C,MAAAw0O,EAAA,mBAEAC,EAAA,IAIA58N,EAAA+2N,UAAA,GAAA,OAGAvkN,EAAA5pB,EAAA+zO,GACA/zO,EAAA+zO,GAAA,WACAC,EAAA9yN,WAIAmtN,EAAArZ,QAAA,gBAGAlyL,IAAAlZ,EACAjtB,EAAAqD,GAAAorO,WAAA2I,GAIA/zO,EAAA+zO,GAAAnqN,EAIAxS,EAAA28N,KAGA38N,EAAAy8N,cAAAC,EAAAD,cAGAH,GAAAx3O,KAAA63O,IAIAC,GAAAxwB,EAAA55L,IACAA,EAAAoqN,EAAA,IAGAA,EAAApqN,OAAAkZ,KAIA,YAYAqB,EAAA+vM,qBACA18M,GAAAja,EAAAy0C,eAAAkiL,mBAAA,IAAA18M,MACAuM,UAAA,6BACA,IAAAvM,GAAAuI,WAAAhkC,QAQAY,EAAAu2N,UAAA,SAAAx1N,EAAAimC,EAAAwwM,GACA,MAAA,iBAAAz2O,EACA,IAEA,kBAAAimC,IACAwwM,EAAAxwM,EACAA,GAAA,GAKAA,IAIAQ,EAAA+vM,qBAMAhnO,GALAy2B,EAAApmB,EAAAy0C,eAAAkiL,mBAAA,KAKAllN,cAAA,SACAsR,KAAA/iB,EAAA2iB,SAAAI,KACAqD,EAAAogL,KAAA1uL,YAAAnoB,IAEAy2B,EAAApmB,GAKA+9M,GAAA6Y,GAAA,IADAC,EAAAthB,EAAA/+M,KAAArW,IAKA,CAAAimC,EAAA3U,cAAAolN,EAAA,MAGAA,EAAA/Y,GAAA,CAAA39N,GAAAimC,EAAA23L,GAEAA,GAAAA,EAAAv/N,QACAY,EAAA2+N,GAAAz9N,SAGAlB,EAAAsxG,MAAA,GAAAmmI,EAAAr0M,cAlCA,IAAA7yB,EAAAknO,EAAA9Y,GAyCA3+N,EAAA4B,GAAA0wD,KAAA,SAAAlwD,EAAAqU,EAAA+E,GACA,IAAAyW,EAAAnzB,EAAAurL,EACAjnL,EAAArE,KACAqrC,EAAAhoC,EAAAwB,QAAA,KAsDA,OApDAwmC,GAAA,IACAnY,EAAAq8M,GAAAlsO,EAAAqN,MAAA26B,IACAhoC,EAAAA,EAAAqN,MAAA,EAAA26B,IAIAy8K,EAAApwM,IAGA+E,EAAA/E,EACAA,OAAA0vB,GAGA1vB,GAAA,iBAAAA,IACA3X,EAAA,QAIAsE,EAAAhE,OAAA,GACAY,EAAAmC,KAAA,CACAC,IAAAA,EAKAtD,KAAAA,GAAA,MACA4D,SAAA,OACA3B,KAAA0V,IACAwzM,MAAA,SAAAysB,GAGArsD,EAAA9lK,UAEAnhB,EAAA6jC,KAAAhV,EAIAjyB,EAAA,SAAAqB,OAAArB,EAAAu2N,UAAAmgB,IAAA/3O,KAAAszB,GAGAykN,MAKAre,OAAA78M,GAAA,SAAAk2N,EAAAjwG,GACAr+H,EAAAxE,MAAA,WACA4c,EAAAzD,MAAAhZ,KAAAsrL,GAAA,CAAAqnD,EAAAgF,aAAAj1G,EAAAiwG,SAKA3yO,MAMAiB,EAAA6vN,KAAAjF,QAAA8sB,SAAA,SAAA/vB,GACA,OAAA3nN,EAAA6nN,KAAA7nN,EAAAqtO,QAAA,SAAAzrO,GACA,OAAA+lN,IAAA/lN,EAAA+lN,QACAvoN,QAMAY,EAAAgW,OAAA,CACA2hO,UAAA,SAAAhwB,EAAAv0K,EAAA1zC,GACA,IAAAk4O,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAlkO,EAAA/T,EAAAksC,IAAAy7K,EAAA,YACAuwB,EAAAl4O,EAAA2nN,GACAv+L,EAAA,GAGA,WAAArV,IACA4zM,EAAAj7L,MAAA3Y,SAAA,YAGAikO,EAAAE,EAAAliO,SACA8hO,EAAA93O,EAAAksC,IAAAy7K,EAAA,OACAswB,EAAAj4O,EAAAksC,IAAAy7K,EAAA,SACA,aAAA5zM,GAAA,UAAAA,KACA+jO,EAAAG,GAAAr0O,QAAA,SAAA,GAMAm0O,GADAH,EAAAM,EAAAnkO,YACA6nB,IACAi8M,EAAAD,EAAAv+N,OAGA0+N,EAAA9nO,WAAA6nO,IAAA,EACAD,EAAA5nO,WAAAgoO,IAAA,GAGApxB,EAAAzzK,KAGAA,EAAAA,EAAAn7B,KAAA0vM,EAAAjoN,EAAAM,EAAAuiC,OAAA,GAAAy1M,KAGA,MAAA5kM,EAAAxX,MACAxS,EAAAwS,IAAAwX,EAAAxX,IAAAo8M,EAAAp8M,IAAAm8M,GAEA,MAAA3kM,EAAA/5B,OACA+P,EAAA/P,KAAA+5B,EAAA/5B,KAAA2+N,EAAA3+N,KAAAw+N,GAGA,UAAAzkM,EACAA,EAAA+kM,MAAAlgO,KAAA0vM,EAAAv+L,GAGA8uN,EAAAhsM,IAAA9iB,KAKAppB,EAAA4B,GAAA2gC,OAAA,CAGAvsB,OAAA,SAAAo9B,GAGA,GAAA7uB,UAAAnlB,OACA,YAAA+mC,IAAAiN,EACAr0C,KACAA,KAAAH,MAAA,SAAAc,GACAM,EAAAgW,OAAA2hO,UAAA54O,KAAAq0C,EAAA1zC,MAIA,IAAA04O,EAAAtzM,EACA6iL,EAAA5oN,KAAA,GAEA,OAAA4oN,EAQAA,EAAAkhB,iBAAAzpO,QAKAg5O,EAAAzwB,EAAAvuM,wBACA0rB,EAAA6iL,EAAAuF,cAAAwB,YACA,CACA9yL,IAAAw8M,EAAAx8M,IAAAkJ,EAAAuzM,YACAh/N,KAAA++N,EAAA/+N,KAAAyrB,EAAAwzM,cARA,CAAA18M,IAAA,EAAAviB,KAAA,QATA,GAuBAtF,SAAA,WACA,GAAAhV,KAAA,GAAA,CAIA,IAAA+9B,EAAA9mB,EAAAguB,EACA2jL,EAAA5oN,KAAA,GACAw5O,EAAA,CAAA38M,IAAA,EAAAviB,KAAA,GAGA,GAAA,UAAArZ,EAAAksC,IAAAy7K,EAAA,YAGA3xM,EAAA2xM,EAAAvuM,4BAEA,CAOA,IANApD,EAAAjX,KAAAiX,SAIAguB,EAAA2jL,EAAAuF,cACApwL,EAAA6qL,EAAA7qL,cAAAkH,EAAAlM,gBACAgF,IACAA,IAAAkH,EAAAnJ,MAAAiC,IAAAkH,EAAAlM,kBACA,WAAA93B,EAAAksC,IAAApP,EAAA,aAEAA,EAAAA,EAAAxE,WAEAwE,GAAAA,IAAA6qL,GAAA,IAAA7qL,EAAArlB,YAGA8gO,EAAAv4O,EAAA88B,GAAA9mB,UACA4lB,KAAA57B,EAAAksC,IAAApP,EAAA,kBAAA,GACAy7M,EAAAl/N,MAAArZ,EAAAksC,IAAApP,EAAA,mBAAA,IAKA,MAAA,CACAlB,IAAA5lB,EAAA4lB,IAAA28M,EAAA38M,IAAA57B,EAAAksC,IAAAy7K,EAAA,aAAA,GACAtuM,KAAArD,EAAAqD,KAAAk/N,EAAAl/N,KAAArZ,EAAAksC,IAAAy7K,EAAA,cAAA,MAcA7qL,aAAA,WACA,OAAA/9B,KAAAkgB,KAAA,WAGA,IAFA,IAAA6d,EAAA/9B,KAAA+9B,aAEAA,GAAA,WAAA98B,EAAAksC,IAAApP,EAAA,aACAA,EAAAA,EAAAA,aAGA,OAAAA,GAAAhF,SAMA93B,EAAApB,KAAA,CAAAotC,WAAA,cAAAF,UAAA,gBAAA,SAAAyV,EAAAjgD,GACA,IAAAs6B,EAAA,gBAAAt6B,EAEAtB,EAAA4B,GAAA2/C,GAAA,SAAA/hD,GACA,OAAA+6N,EAAAx7N,MAAA,SAAA4oN,EAAApmK,EAAA/hD,GAGA,IAAAslC,EAOA,GANA09B,EAAAmlJ,GACA7iL,EAAA6iL,EACA,IAAAA,EAAAlwM,WACAqtB,EAAA6iL,EAAA+G,kBAGAvoL,IAAA3mC,EACA,OAAAslC,EAAAA,EAAAxjC,GAAAqmN,EAAApmK,GAGAzc,EACAA,EAAA0jB,SACA5sB,EAAAkJ,EAAAwzM,YAAA94O,EACAo8B,EAAAp8B,EAAAslC,EAAAuzM,aAIA1wB,EAAApmK,GAAA/hD,IAEA+hD,EAAA/hD,EAAA+kB,UAAAnlB,YAUAY,EAAApB,KAAA,CAAA,MAAA,SAAA,SAAAsK,EAAA5H,GACAtB,EAAA+oO,SAAAznO,GAAAskO,GAAAp+L,EAAAo/L,eACA,SAAAjf,EAAA6d,GACA,GAAAA,EAIA,OAHAA,EAAAD,GAAA5d,EAAArmN,GAGA2jO,GAAAhlN,KAAAulN,GACAxlO,EAAA2nN,GAAA5zM,WAAAzS,GAAA,KACAkkO,QAQAxlO,EAAApB,KAAA,CAAA45O,OAAA,SAAAC,MAAA,UAAA,SAAAx5O,EAAAH,GACAkB,EAAApB,KAAA,CACAsrO,QAAA,QAAAjrO,EACAi4N,QAAAp4N,EACA45O,GAAA,QAAAz5O,IACA,SAAA05O,EAAAC,GAGA54O,EAAA4B,GAAAg3O,GAAA,SAAA3O,EAAAprO,GACA,IAAA27N,EAAAj2M,UAAAnlB,SAAAu5O,GAAA,kBAAA1O,GACAvB,EAAAiQ,KAAA,IAAA1O,IAAA,IAAAprO,EAAA,SAAA,UAEA,OAAA07N,EAAAx7N,MAAA,SAAA4oN,EAAA7oN,EAAAD,GACA,IAAAmlC,EAEA,OAAAw+B,EAAAmlJ,GAGA,IAAAixB,EAAAh1O,QAAA,SACA+jN,EAAA,QAAA1oN,GACA0oN,EAAA/mM,SAAAkX,gBAAA,SAAA74B,GAIA,IAAA0oN,EAAAlwM,UACAusB,EAAA2jL,EAAA7vL,gBAIA7yB,KAAAiS,IACAywM,EAAA9sL,KAAA,SAAA57B,GAAA+kC,EAAA,SAAA/kC,GACA0oN,EAAA9sL,KAAA,SAAA57B,GAAA+kC,EAAA,SAAA/kC,GACA+kC,EAAA,SAAA/kC,UAIAknC,IAAAtnC,EAGAmB,EAAAksC,IAAAy7K,EAAA7oN,EAAA4pO,GAGA1oO,EAAA0sB,MAAAi7L,EAAA7oN,EAAAD,EAAA6pO,KACA5pO,EAAA07N,EAAAyP,OAAA9jM,EAAAq0L,UAMAx6N,EAAApB,KAAA,CACA,YACA,WACA,eACA,YACA,cACA,aACA,SAAAsK,EAAApK,GACAkB,EAAA4B,GAAA9C,GAAA,SAAA8C,GACA,OAAA7C,KAAAkD,GAAAnD,EAAA8C,OAOA5B,EAAA4B,GAAA2gC,OAAA,CAEAwD,KAAA,SAAAy5L,EAAAz+N,EAAAa,GACA,OAAA7C,KAAAkD,GAAAu9N,EAAA,KAAAz+N,EAAAa,IAEAg+L,OAAA,SAAA4/B,EAAA59N,GACA,OAAA7C,KAAAqrC,IAAAo1L,EAAA,KAAA59N,IAGAi3O,SAAA,SAAA5mN,EAAAutM,EAAAz+N,EAAAa,GACA,OAAA7C,KAAAkD,GAAAu9N,EAAAvtM,EAAAlxB,EAAAa,IAEAk3O,WAAA,SAAA7mN,EAAAutM,EAAA59N,GAGA,OAAA,IAAA2iB,UAAAnlB,OACAL,KAAAqrC,IAAAnY,EAAA,MACAlzB,KAAAqrC,IAAAo1L,EAAAvtM,GAAA,KAAArwB,IAGAm3O,MAAA,SAAAC,EAAAC,GACA,OAAAl6O,KAAA2jO,WAAAsW,GAAArW,WAAAsW,GAAAD,MAIAh5O,EAAApB,KACA,wLAEAkQ,MAAA,MACA,SAAA5F,EAAAjK,GAGAe,EAAA4B,GAAA3C,GAAA,SAAA8B,EAAAa,GACA,OAAA2iB,UAAAnlB,OAAA,EACAL,KAAAkD,GAAAhD,EAAA,KAAA8B,EAAAa,GACA7C,KAAA4C,QAAA1C,OAUA,IAAA6rN,GAAA,qCAMA9qN,EAAAk5O,MAAA,SAAAt3O,EAAAolC,GACA,IAAAixC,EAAAxnD,EAAAyoN,EAUA,GARA,iBAAAlyM,IACAixC,EAAAr2E,EAAAolC,GACAA,EAAAplC,EACAA,EAAAq2E,GAKA4uI,EAAAjlN,GAaA,OARA6uB,EAAAhhB,EAAAwI,KAAAsM,UAAA,IACA20N,EAAA,WACA,OAAAt3O,EAAAmW,MAAAivB,GAAAjoC,KAAA0xB,EAAAkW,OAAAl3B,EAAAwI,KAAAsM,eAIAwkM,KAAAnnN,EAAAmnN,KAAAnnN,EAAAmnN,MAAA/oN,EAAA+oN,OAEAmwB,GAGAl5O,EAAAm5O,UAAA,SAAAC,GACAA,EACAp5O,EAAAo6N,YAEAp6N,EAAAw2N,OAAA,IAGAx2N,EAAAC,QAAAgM,MAAAhM,QACAD,EAAAq5O,UAAA92O,KAAAgxF,MACAvzF,EAAA+iC,SAAAA,EACA/iC,EAAA6mN,WAAAA,EACA7mN,EAAAwiE,SAAAA,EACAxiE,EAAAg7N,UAAAA,EACAh7N,EAAAlB,KAAAuoN,EAEArnN,EAAAmgB,IAAAD,KAAAC,IAEAngB,EAAAs5O,UAAA,SAAAx5O,GAKA,IAAAhB,EAAAkB,EAAAlB,KAAAgB,GACA,OAAA,WAAAhB,GAAA,WAAAA,KAKAsX,MAAAtW,EAAAmQ,WAAAnQ,KAGAE,EAAAJ,KAAA,SAAA4B,GACA,OAAA,MAAAA,EACA,IACAA,EAAA,IAAA+U,QAAAu0M,GAAA,KAkBA,mBAAA5nN,QAAAA,OAAAC,KACAD,OAAA,SAAA,IAAA,WACA,OAAAlD,KAOA,IAGAu5O,GAAAl2O,EAAArD,OAGAw5O,GAAAn2O,EAAA5E,EAwBA,OAtBAuB,EAAAy5O,WAAA,SAAAxxB,GASA,OARA5kN,EAAA5E,IAAAuB,IACAqD,EAAA5E,EAAA+6O,IAGAvxB,GAAA5kN,EAAArD,SAAAA,IACAqD,EAAArD,OAAAu5O,IAGAv5O,QAMA,IAAAsmN,IACAjjN,EAAArD,OAAAqD,EAAA5E,EAAAuB,GAMAA;;;;;;;;;ACvnVA,SAAA+C,GACA,mBAAAG,QAAAA,OAAAC,IACAD,OAAA,CAAA,UAAAH,GACA,iBAAAE,QAAAA,OAAAD,QACAC,OAAAD,QAAAD,EAAA22O,QAAA,WAEA32O,EAAA/C,QANA,EAQA,SAAAvB,GAEAA,EAAA8jC,OAAA9jC,EAAAmD,GAAA,CAGAimL,SAAA,SAAAz0I,GAGA,GAAAr0C,KAAAK,OAAA,CAQA,IAAAu6O,EAAAl7O,EAAAsC,KAAAhC,KAAA,GAAA,aACA,OAAA46O,IAKA56O,KAAAC,KAAA,aAAA,cAEA26O,EAAA,IAAAl7O,EAAAk7O,UAAAvmM,EAAAr0C,KAAA,IACAN,EAAAsC,KAAAhC,KAAA,GAAA,YAAA46O,GAEAA,EAAAp4D,SAAAq4D,WAEA76O,KAAAkD,GAAA,iBAAA,WAAA,SAAA7B,GAIAu5O,EAAAE,aAAAz5O,EAAAghO,cAGA3iO,EAAAM,MAAAopC,SAAA,YACAwxM,EAAAG,cAAA,QAIA3zM,IAAA1nC,EAAAM,MAAAC,KAAA,oBACA26O,EAAAG,cAAA,MAKA/6O,KAAAkD,GAAA,mBAAA,SAAA7B,GAOA,SAAAkzD,IACA,IAAA63K,EAAA3rN,EAcA,OAPAm6N,EAAAE,eAAAF,EAAAp4D,SAAAw4D,eAAAJ,EAAAK,iBACA7O,EAAA1sO,EAAA,0BACAO,KAAA,OAAA26O,EAAAE,aAAA56O,MACAO,IAAAf,EAAAk7O,EAAAE,cAAAr6O,OACAmlO,SAAAgV,EAAAM,gBAGAN,EAAAp4D,SAAAw4D,gBAAAJ,EAAAp4D,SAAAz5C,SACAtoH,EAAAm6N,EAAAp4D,SAAAw4D,cAAA9hO,KAAA0hO,EAAAA,EAAAM,YAAA75O,GACA+qO,GAGAA,EAAAjqO,cAEAilC,IAAA3mB,GACAA,GAQA,OArCAm6N,EAAAp4D,SAAAz5C,OAGA1nI,EAAAk2C,iBAkCAqjM,EAAAG,cACAH,EAAAG,cAAA,EACAxmL,KAEAqmL,EAAAn7O,OACAm7O,EAAAO,gBACAP,EAAAK,eAAA,GACA,GAEA1mL,KAEAqmL,EAAAQ,gBACA,OAKAR,GA7FAvmM,GAAAA,EAAA00F,OAAAzkI,OAAA2J,SACAA,QAAAC,KAAA,yDAgGA63K,MAAA,WACA,IAAAA,EAAA60D,EAAAS,EAgBA,OAdA37O,EAAAM,KAAA,IAAAM,GAAA,QACAylL,EAAA/lL,KAAA8oL,WAAArpL,QAEA47O,EAAA,GACAt1D,GAAA,EACA60D,EAAAl7O,EAAAM,KAAA,GAAAP,MAAAqpL,WACA9oL,KAAAH,MAAA,YACAkmL,EAAA60D,EAAA/hN,QAAA74B,OAAA+lL,KAEAs1D,EAAAA,EAAAzzM,OAAAgzM,EAAAS,eAGAT,EAAAS,UAAAA,GAEAt1D,GAIAu1D,MAAA,SAAAC,EAAAlsB,GACA,IAEA7sC,EAAAg5D,EAAAC,EAAAz5O,EAAAmrD,EAAAuuL,EAFA7iN,EAAA74B,KAAA,GACAo4C,OAAA,IAAAp4C,KAAAC,KAAA,oBAAA,UAAAD,KAAAC,KAAA,mBAIA,GAAA,MAAA44B,KAIAA,EAAAp5B,MAAA24C,IACAvf,EAAAp5B,KAAAO,KAAAmb,QAAA,QAAA,GACA0d,EAAA34B,KAAAF,KAAAC,KAAA,SAGA,MAAA44B,EAAAp5B,MAAA,CAIA,GAAA87O,EAIA,OAFAC,GADAh5D,EAAA9iL,EAAAsC,KAAA62B,EAAAp5B,KAAA,aAAA+iL,UACA84D,MACAG,EAAA/7O,EAAAk7O,UAAAY,YAAA3iN,GACA0iN,GACA,IAAA,MACA77O,EAAA8jC,OAAAi4M,EAAA/7O,EAAAk7O,UAAAe,cAAAtsB,WAGAosB,EAAAG,SACAJ,EAAA3iN,EAAA34B,MAAAu7O,EACApsB,EAAAusB,WACAp5D,EAAAo5D,SAAA/iN,EAAA34B,MAAAR,EAAA8jC,OAAAg/I,EAAAo5D,SAAA/iN,EAAA34B,MAAAmvN,EAAAusB,WAEA,MACA,IAAA,SACA,OAAAvsB,GAIAqsB,EAAA,GACAh8O,EAAAG,KAAAwvN,EAAAt/M,MAAA,OAAA,SAAAuI,EAAAkqC,GACAk5L,EAAAl5L,GAAAi5L,EAAAj5L,UACAi5L,EAAAj5L,MAEAk5L,WARAF,EAAA3iN,EAAA34B,MACAu7O,GAkCA,OAvBAz5O,EAAAtC,EAAAk7O,UAAAiB,eACAn8O,EAAA8jC,OACA,GACA9jC,EAAAk7O,UAAAkB,WAAAjjN,GACAn5B,EAAAk7O,UAAAmB,eAAAljN,GACAn5B,EAAAk7O,UAAAoB,UAAAnjN,GACAn5B,EAAAk7O,UAAAY,YAAA3iN,IACAA,IAGAojN,WACA9uL,EAAAnrD,EAAAi6O,gBACAj6O,EAAAi6O,SACAj6O,EAAAtC,EAAA8jC,OAAA,CAAAy4M,SAAA9uL,GAAAnrD,IAIAA,EAAAk6O,SACA/uL,EAAAnrD,EAAAk6O,cACAl6O,EAAAk6O,OACAl6O,EAAAtC,EAAA8jC,OAAAxhC,EAAA,CAAAk6O,OAAA/uL,KAGAnrD,MAKA,IAksCAm6O,EAlsCAt7O,EAAA,SAAAu7O,GAGA,OAAAA,EAAA5kO,QAAA,qCAAA,KAIA9X,EAAA8jC,OAAA9jC,EAAAoxN,KAAAjF,SAAAnsN,EAAAoxN,KAAA,KAAA,CAGAurB,MAAA,SAAAv0O,GACA,OAAAjH,EAAA,GAAAnB,EAAAoI,GAAArH,QAIA67O,OAAA,SAAAx0O,GACA,IAAArH,EAAAf,EAAAoI,GAAArH,MACA,OAAA,OAAAA,KAAAI,EAAA,GAAAJ,IAIA87O,UAAA,SAAAz0O,GACA,OAAApI,EAAAoI,GAAAvF,KAAA,cAKA7C,EAAAk7O,UAAA,SAAAvmM,EAAA50C,GACAO,KAAAwiL,SAAA9iL,EAAA8jC,QAAA,EAAA,GAAA9jC,EAAAk7O,UAAAtpO,SAAA+iC,GACAr0C,KAAAk7O,YAAAz7O,EACAO,KAAAkd,QAIAxd,EAAAk7O,UAAA5oN,OAAA,SAAA4P,EAAAlqB,GACA,OAAA,IAAA8N,UAAAnlB,OACA,WACA,IAAAqxB,EAAAhyB,EAAAiqN,UAAAnkM,WAEA,OADAkM,EAAAiZ,QAAA/I,GACAliC,EAAAk7O,UAAA5oN,OAAAhZ,MAAAhZ,KAAA0xB,UAGA0V,IAAA1vB,IAGA8N,UAAAnlB,OAAA,GAAAqX,EAAAzO,cAAAiE,QACAwK,EAAAhY,EAAAiqN,UAAAnkM,WAAA9U,MAAA,IAEAgH,EAAAzO,cAAAiE,QACAwK,EAAA,CAAAA,IAEAhY,EAAAG,KAAA6X,GAAA,SAAA/W,EAAAkK,GACA+2B,EAAAA,EAAApqB,QAAA,IAAAqJ,OAAA,MAAAlgB,EAAA,MAAA,MAAA,WACA,OAAAkK,SAVA+2B,IAgBAliC,EAAA8jC,OAAA9jC,EAAAk7O,UAAA,CAEAtpO,SAAA,CACAsqO,SAAA,GACAxxI,OAAA,GACAkxI,MAAA,GACAkB,WAAA,QACAC,aAAA,UACAC,WAAA,QACAC,aAAA,QACAC,cAAA,EACAxB,cAAA,EACAyB,eAAAn9O,EAAA,IACAo9O,oBAAAp9O,EAAA,IACAm7O,UAAA,EACAkC,OAAA,UACAC,aAAA,EACAC,UAAA,SAAApkN,GACA74B,KAAAk9O,WAAArkN,EAGA74B,KAAAwiL,SAAAo6D,eACA58O,KAAAwiL,SAAA26D,aACAn9O,KAAAwiL,SAAA26D,YAAAjkO,KAAAlZ,KAAA64B,EAAA74B,KAAAwiL,SAAAg6D,WAAAx8O,KAAAwiL,SAAAk6D,YAEA18O,KAAAo9O,UAAAp9O,KAAAq9O,UAAAxkN,MAGAykN,WAAA,SAAAzkN,GACA74B,KAAAu9O,UAAA1kN,MAAAA,EAAA34B,QAAAF,KAAAw9O,YAAAx9O,KAAAy9O,SAAA5kN,IACA74B,KAAA64B,QAAAA,IAGA6kN,QAAA,SAAA7kN,EAAAx3B,GAqBA,IAAAA,EAAA20C,OAAA,KAAAh2C,KAAA29O,aAAA9kN,KAAA,IAAAn5B,EAAAkqN,QAAAvoN,EAAAozD,QALA,CACA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,GAAA,GAAA,IAAA,QAKA57B,EAAA34B,QAAAF,KAAAw9O,WAAA3kN,EAAA34B,QAAAF,KAAA49O,UACA59O,KAAA64B,QAAAA,IAGAglN,QAAA,SAAAhlN,GAGAA,EAAA34B,QAAAF,KAAAw9O,UACAx9O,KAAA64B,QAAAA,GAGAA,EAAAU,WAAAr5B,QAAAF,KAAAw9O,WACAx9O,KAAA64B,QAAAA,EAAAU,aAGAukN,UAAA,SAAAjlN,EAAA2jN,EAAAE,GACA,UAAA7jN,EAAA94B,KACAC,KAAA6qM,WAAAhyK,EAAA34B,MAAA2oC,SAAA2zM,GAAAtzM,YAAAwzM,GAEAh9O,EAAAm5B,GAAAgQ,SAAA2zM,GAAAtzM,YAAAwzM,IAGAS,YAAA,SAAAtkN,EAAA2jN,EAAAE,GACA,UAAA7jN,EAAA94B,KACAC,KAAA6qM,WAAAhyK,EAAA34B,MAAAgpC,YAAAszM,GAAA3zM,SAAA6zM,GAEAh9O,EAAAm5B,GAAAqQ,YAAAszM,GAAA3zM,SAAA6zM,KAMAqB,YAAA,SAAAv7D,GACA9iL,EAAA8jC,OAAA9jC,EAAAk7O,UAAAtpO,SAAAkxK,IAGAo5D,SAAA,CACAK,SAAA,0BACAC,OAAA,yBACA8B,MAAA,sCACA36O,IAAA,4BACA46O,KAAA,6BACAC,QAAA,mCACApwK,OAAA,+BACAqwK,OAAA,4BACAC,QAAA,qCACAC,UAAA3+O,EAAAk7O,UAAA5oN,OAAA,6CACAssN,UAAA5+O,EAAAk7O,UAAA5oN,OAAA,yCACAusN,YAAA7+O,EAAAk7O,UAAA5oN,OAAA,6DACAc,MAAApzB,EAAAk7O,UAAA5oN,OAAA,6CACA7Z,IAAAzY,EAAAk7O,UAAA5oN,OAAA,mDACA7rB,IAAAzG,EAAAk7O,UAAA5oN,OAAA,sDACAwvD,KAAA9hF,EAAAk7O,UAAA5oN,OAAA,oCAGAwsN,kBAAA,EAEAz1O,UAAA,CAEAmU,KAAA,WACAld,KAAAy+O,eAAA/+O,EAAAM,KAAAwiL,SAAAs6D,qBACA98O,KAAA0+O,aAAA1+O,KAAAy+O,eAAAp+O,QAAAL,KAAAy+O,gBAAA/+O,EAAAM,KAAAk7O,aACAl7O,KAAA2+O,WAAAj/O,EAAAM,KAAAwiL,SAAAq6D,gBAAAv/N,IAAAtd,KAAAwiL,SAAAs6D,qBACA98O,KAAAw9O,UAAA,GACAx9O,KAAA4+O,WAAA,GACA5+O,KAAAm7O,eAAA,EACAn7O,KAAAsnM,QAAA,GACAtnM,KAAA49O,QAAA,GACA59O,KAAAyrH,QAEA,IAEA6vH,EAFAJ,EAAAl7O,KAAAk7O,YACA9wI,EAAApqG,KAAAoqG,OAAA,GAeA,SAAA0vI,EAAAz4O,GACA,IAAA+2C,OAAA,IAAA14C,EAAAM,MAAAC,KAAA,oBAAA,UAAAP,EAAAM,MAAAC,KAAA,mBAUA,IAPAD,KAAAP,MAAA24C,IACAp4C,KAAAP,KAAAC,EAAAM,MAAAmb,QAAA,QAAA,GACAnb,KAAAE,KAAAR,EAAAM,MAAAC,KAAA,SAKAi7O,IAAAl7O,KAAAP,KAAA,CAIA,IAAAm7O,EAAAl7O,EAAAsC,KAAAhC,KAAAP,KAAA,aACA2qC,EAAA,KAAA/oC,EAAAtB,KAAAyX,QAAA,YAAA,IACAgrK,EAAAo4D,EAAAp4D,SACAA,EAAAp4I,KAAA1qC,EAAAM,MAAAM,GAAAkiL,EAAAu6D,SACAv6D,EAAAp4I,GAAAlxB,KAAA0hO,EAAA56O,KAAAqB,IAhCA3B,EAAAG,KAAAG,KAAAwiL,SAAAp4E,QAAA,SAAArnF,EAAAjjB,GACA,iBAAAA,IACAA,EAAAA,EAAAiQ,MAAA,OAEArQ,EAAAG,KAAAC,GAAA,SAAAwY,EAAApY,GACAkqG,EAAAlqG,GAAA6iB,QAGAu4N,EAAAt7O,KAAAwiL,SAAA84D,MACA57O,EAAAG,KAAAy7O,GAAA,SAAAv4N,EAAAjjB,GACAw7O,EAAAv4N,GAAArjB,EAAAk7O,UAAAe,cAAA77O,MA0BAJ,EAAAM,KAAAk7O,aACAh4O,GAAA,oDACA,0VAGA42O,GAIA52O,GAAA,iBAAA,oDAAA42O,GAEA95O,KAAAwiL,SAAAq8D,gBACAn/O,EAAAM,KAAAk7O,aAAAh4O,GAAA,wBAAAlD,KAAAwiL,SAAAq8D,iBAKAp/O,KAAA,WAQA,OAPAO,KAAA8+O,YACAp/O,EAAA8jC,OAAAxjC,KAAAw9O,UAAAx9O,KAAA++O,UACA/+O,KAAA49O,QAAAl+O,EAAA8jC,OAAA,GAAAxjC,KAAA++O,UACA/+O,KAAA+lL,SACArmL,EAAAM,KAAAk7O,aAAAnK,eAAA,eAAA,CAAA/wO,OAEAA,KAAAg/O,aACAh/O,KAAA+lL,SAGA+4D,UAAA,WACA9+O,KAAAi/O,cACA,IAAA,IAAAt+O,EAAA,EAAA01E,EAAAr2E,KAAAk/O,gBAAAl/O,KAAAq2E,WAAAA,EAAA11E,GAAAA,IACAX,KAAAiyN,MAAA57I,EAAA11E,IAEA,OAAAX,KAAA+lL,SAIAltJ,QAAA,SAAAA,GACA,IAIAsmN,EAAA7yI,EAJA8yI,EAAAp/O,KAAAq/O,MAAAxmN,GACAymN,EAAAt/O,KAAAu/O,oBAAAH,GACA/8O,EAAArC,KACAygB,GAAA,EA2CA,YAxCA2mB,IAAAk4M,SACAt/O,KAAA49O,QAAAwB,EAAAl/O,OAEAF,KAAAw/O,eAAAF,GACAt/O,KAAAk/O,gBAAAx/O,EAAA4/O,IAIAhzI,EAAAtsG,KAAAoqG,OAAAk1I,EAAAp/O,QAEAR,EAAAG,KAAAG,KAAAoqG,QAAA,SAAAlqG,EAAAu/O,GACAA,IAAAnzI,GAAApsG,IAAAo/O,EAAAp/O,OACAk/O,EAAA/8O,EAAAk9O,oBAAAl9O,EAAAg9O,MAAAh9O,EAAAwoM,WAAA3qM,OACAk/O,EAAAl/O,QAAAmC,EAAAu7O,UACAv7O,EAAA68O,gBAAA1+O,KAAA4+O,GACA3+N,EAAApe,EAAA4vN,MAAAmtB,IAAA3+N,MAMA0+N,GAAA,IAAAn/O,KAAAiyN,MAAAqtB,GACA7+N,EAAAA,GAAA0+N,EAEAn/O,KAAA49O,QAAA0B,EAAAp/O,OADAi/O,EAMAn/O,KAAA0/O,qBAGA1/O,KAAA2/O,OAAA3/O,KAAA2/O,OAAAriO,IAAAtd,KAAA2+O,aAEA3+O,KAAAg/O,aAGAt/O,EAAAm5B,GAAA54B,KAAA,gBAAAk/O,IAGA1+N,GAIAu+N,WAAA,SAAAn8G,GACA,GAAAA,EAAA,CACA,IAAA+3G,EAAA56O,KAGAN,EAAA8jC,OAAAxjC,KAAA++O,SAAAl8G,GACA7iI,KAAAq7O,UAAA37O,EAAAwgB,IAAAlgB,KAAA++O,UAAA,SAAA3wO,EAAAlO,GACA,MAAA,CACAkO,QAAAA,EACAyqB,QAAA+hN,EAAA/vC,WAAA3qM,GAAA,OAKAF,KAAA4/O,YAAAlgP,EAAAopN,KAAA9oN,KAAA4/O,aAAA,SAAA/mN,GACA,QAAAA,EAAA34B,QAAA2iI,MAGA7iI,KAAAwiL,SAAAw8D,WACAh/O,KAAAwiL,SAAAw8D,WAAA9lO,KAAAlZ,KAAAA,KAAA++O,SAAA/+O,KAAAq7O,WAEAr7O,KAAA6/O,qBAKAC,UAAA,WACApgP,EAAAmD,GAAAi9O,WACApgP,EAAAM,KAAAk7O,aAAA4E,YAEA9/O,KAAA49O,QAAA,GACA59O,KAAAw9O,UAAA,GACAx9O,KAAAi/O,cACAj/O,KAAA+/O,aACA,IAAA1pK,EAAAr2E,KAAAq2E,WACAumJ,WAAA,iBACA7yL,WAAA,gBAEA/pC,KAAAggP,cAAA3pK,IAGA2pK,cAAA,SAAA3pK,GACA,IAAA11E,EAEA,GAAAX,KAAAwiL,SAAA26D,YACA,IAAAx8O,EAAA,EAAA01E,EAAA11E,GAAAA,IACAX,KAAAwiL,SAAA26D,YAAAjkO,KAAAlZ,KAAAq2E,EAAA11E,GACAX,KAAAwiL,SAAAg6D,WAAA,IACAx8O,KAAA6qM,WAAAx0H,EAAA11E,GAAAT,MAAAgpC,YAAAlpC,KAAAwiL,SAAAk6D,iBAGArmK,EACAntC,YAAAlpC,KAAAwiL,SAAAg6D,YACAtzM,YAAAlpC,KAAAwiL,SAAAk6D,aAIAgD,iBAAA,WACA,OAAA1/O,KAAAigP,aAAAjgP,KAAA49O,UAGAqC,aAAA,SAAAl/O,GAEA,IACAJ,EADAk+E,EAAA,EAEA,IAAAl+E,KAAAI,OAIAqmC,IAAArmC,EAAAJ,IAAA,OAAAI,EAAAJ,KAAA,IAAAI,EAAAJ,IACAk+E,IAGA,OAAAA,GAGAkhK,WAAA,WACA//O,KAAAo9O,UAAAp9O,KAAA2/O,SAGAvC,UAAA,SAAAv6G,GACAA,EAAAmwF,IAAAhzN,KAAA2+O,YAAAl8O,KAAA,IACAzC,KAAAkgP,WAAAr9G,GAAA1/H,QAGA4iL,MAAA,WACA,OAAA,IAAA/lL,KAAAojD,QAGAA,KAAA,WACA,OAAApjD,KAAAq7O,UAAAh7O,QAGA+6O,aAAA,WACA,GAAAp7O,KAAAwiL,SAAA44D,aACA,IACA17O,EAAAM,KAAAmgP,kBAAAngP,KAAAq7O,UAAAh7O,QAAAL,KAAAq7O,UAAA,GAAAxiN,SAAA,IACAz4B,OAAA,YACAwC,QAAA,SAGAA,QAAA,WACA,MAAAiqB,MAOAszN,eAAA,WACA,IAAAjD,EAAAl9O,KAAAk9O,WACA,OAAAA,GAEA,IAFAx9O,EAAAopN,KAAA9oN,KAAAq7O,WAAA,SAAAxwO,GACA,OAAAA,EAAAguB,QAAA34B,OAAAg9O,EAAAh9O,QACAG,QAAA68O,GAGA7mK,SAAA,WACA,IAAAukK,EAAA56O,KACAogP,EAAA,GAGA,OAAA1gP,EAAAM,KAAAk7O,aACAt7O,KAAA,8CACAozN,IAAA,sCACAA,IAAAhzN,KAAAwiL,SAAAu6D,QACA38O,QAAA,WACA,IAAAF,EAAAF,KAAAE,MAAAR,EAAAM,MAAAC,KAAA,QACAm4C,OAAA,IAAA14C,EAAAM,MAAAC,KAAA,oBAAA,UAAAP,EAAAM,MAAAC,KAAA,mBAaA,OAXAC,GAAA06O,EAAAp4D,SAAAz5C,OAAAzkI,OAAA2J,SACAA,QAAApK,MAAA,0BAAA7D,MAIAo4C,IACAp4C,KAAAP,KAAAC,EAAAM,MAAAmb,QAAA,QAAA,GACAnb,KAAAE,KAAAA,GAIAF,KAAAP,OAAAm7O,EAAAM,gBAKAh7O,KAAAkgP,IAAAxF,EAAAqF,aAAAvgP,EAAAM,MAAAs7O,YAIA8E,EAAAlgP,IAAA,GACA,QAIAm/O,MAAA,SAAAnsN,GACA,OAAAxzB,EAAAwzB,GAAA,IAGA2vG,OAAA,WACA,IAAA25G,EAAAx8O,KAAAwiL,SAAAg6D,WAAAzsO,MAAA,KAAArP,KAAA,KACA,OAAAhB,EAAAM,KAAAwiL,SAAAm6D,aAAA,IAAAH,EAAAx8O,KAAA0+O,eAGA2B,eAAA,WACArgP,KAAA4/O,YAAA,GACA5/O,KAAAq7O,UAAA,GACAr7O,KAAA++O,SAAA,GACA/+O,KAAAsgP,OAAA5gP,EAAA,IACAM,KAAA2/O,OAAAjgP,EAAA,KAGA+rH,MAAA,WACAzrH,KAAAqgP,iBACArgP,KAAAk/O,gBAAAx/O,EAAA,KAGAu/O,YAAA,WACAj/O,KAAAyrH,QACAzrH,KAAA2/O,OAAA3/O,KAAA6iI,SAAAvlH,IAAAtd,KAAA2+O,aAGAa,eAAA,SAAA3mN,GACA74B,KAAAyrH,QACAzrH,KAAA2/O,OAAA3/O,KAAAq9O,UAAAxkN,IAGA8kN,aAAA,SAAA9kN,GACA,IAGAp4B,EAAAqyN,EAHAytB,EAAA7gP,EAAAm5B,GACA94B,EAAA84B,EAAA94B,KACAq4C,OAAA,IAAAmoM,EAAAtgP,KAAA,oBAAA,UAAAsgP,EAAAtgP,KAAA,mBAGA,MAAA,UAAAF,GAAA,aAAAA,EACAC,KAAA6qM,WAAAhyK,EAAA34B,MAAAE,OAAA,YAAAK,MACA,WAAAV,QAAA,IAAA84B,EAAA2nN,SACA3nN,EAAA2nN,SAAAC,SAAA,MAAAF,EAAA9/O,OAIAA,EADA23C,EACAmoM,EAAA99O,OAEA89O,EAAA9/O,MAGA,SAAAV,EAGA,mBAAAU,EAAA8W,OAAA,EAAA,IACA9W,EAAA8W,OAAA,KAKAu7M,EAAAryN,EAAAuiB,YAAA,OACA,IAKA8vM,EAAAryN,EAAAuiB,YAAA,QACA,EALAviB,EAAA8W,OAAAu7M,EAAA,GAUAryN,EAGA,iBAAAA,EACAA,EAAA+W,QAAA,MAAA,IAEA/W,IAGAwxN,MAAA,SAAAp5L,GACAA,EAAA74B,KAAAu/O,oBAAAv/O,KAAAq/O,MAAAxmN,IAEA,IAMApY,EAAA+hC,EAAAk+L,EAAAC,EANArF,EAAA57O,EAAAm5B,GAAAyiN,QACAsF,EAAAlhP,EAAAwgB,IAAAo7N,GAAA,SAAAzwO,EAAAlK,GACA,OAAAA,KACAN,OACAwgP,GAAA,EACApgP,EAAAT,KAAA29O,aAAA9kN,GAqBA,IAAA2pB,IAhBA,mBAAA84L,EAAAqF,WACAA,EAAArF,EAAAqF,WACA,mBAAA3gP,KAAAwiL,SAAAm+D,aACAA,EAAA3gP,KAAAwiL,SAAAm+D,YAMAA,IACAlgP,EAAAkgP,EAAAznO,KAAA2f,EAAAp4B,UAGA66O,EAAAqF,YAGArF,EAAA,CACAoF,EAAA,CAAAl+L,OAAAA,EAAAsxC,WAAAwnJ,EAAA94L,IACA,IAKA,GAAA,yBAJA/hC,EAAA/gB,EAAAk7O,UAAAkG,QAAAt+L,GAAAtpC,KAAAlZ,KAAAS,EAAAo4B,EAAA6nN,EAAA5sJ,cAIA,IAAA8sJ,EAAA,CACAC,GAAA,EACA,SAIA,GAFAA,GAAA,EAEA,YAAApgO,EAEA,YADAzgB,KAAA2/O,OAAA3/O,KAAA2/O,OAAA3sB,IAAAhzN,KAAAq9O,UAAAxkN,KAIA,IAAApY,EAEA,OADAzgB,KAAA+gP,aAAAloN,EAAA6nN,IACA,EAEA,MAAA7zN,GAQA,MAPA7sB,KAAAwiL,SAAAz5C,OAAAzkI,OAAA2J,SACAA,QAAAtH,IAAA,4CAAAkyB,EAAA71B,GAAA,gBAAA09O,EAAAl+L,OAAA,YAAA31B,GAEAA,aAAAwa,YACAxa,EAAAze,SAAA,+CAAAyqB,EAAA71B,GAAA,gBAAA09O,EAAAl+L,OAAA,aAGA31B,GAGA,IAAAg0N,EAMA,OAHA7gP,KAAAigP,aAAA3E,IACAt7O,KAAA4/O,YAAAp/O,KAAAq4B,IAEA,GAMAmoN,kBAAA,SAAAnoN,EAAA2pB,GACA,OAAA9iD,EAAAm5B,GAAA72B,KAAA,MAAAwgD,EAAAlrC,OAAA,GAAA2G,cACAukC,EAAA5+B,UAAA,GAAAO,gBAAAzkB,EAAAm5B,GAAA72B,KAAA,QAIAi/O,cAAA,SAAA/gP,EAAAsiD,GACA,IAAA11B,EAAA9sB,KAAAwiL,SAAAo5D,SAAA17O,GACA,OAAA4sB,IAAAA,EAAA7jB,cAAA0mG,OAAA7iF,EAAAA,EAAA01B,KAIA0+L,YAAA,WACA,IAAA,IAAAvgP,EAAA,EAAAA,EAAA6kB,UAAAnlB,OAAAM,IACA,QAAAymC,IAAA5hB,UAAA7kB,GACA,OAAA6kB,UAAA7kB,IAeAwgP,eAAA,SAAAtoN,EAAA6nN,GACA,iBAAAA,IACAA,EAAA,CAAAl+L,OAAAk+L,IAGA,IAAAtyO,EAAApO,KAAAkhP,YACAlhP,KAAAihP,cAAApoN,EAAA34B,KAAAwgP,EAAAl+L,QACAxiD,KAAAghP,kBAAAnoN,EAAA6nN,EAAAl+L,SAGAxiD,KAAAwiL,SAAAw6D,aAAAnkN,EAAAuoN,YAAAh6M,EACA1nC,EAAAk7O,UAAAgB,SAAA8E,EAAAl+L,QACA,2CAAA3pB,EAAA34B,KAAA,aAEAmhP,EAAA,gBAOA,MANA,mBAAAjzO,EACAA,EAAAA,EAAA8K,KAAAlZ,KAAA0gP,EAAA5sJ,WAAAj7D,GACAwoN,EAAAngO,KAAA9S,KACAA,EAAA1O,EAAAk7O,UAAA5oN,OAAA5jB,EAAAoJ,QAAA6pO,EAAA,QAAAX,EAAA5sJ,aAGA1lF,GAGA2yO,aAAA,SAAAloN,EAAA6nN,GACA,IAAAtyO,EAAApO,KAAAmhP,eAAAtoN,EAAA6nN,GAEA1gP,KAAAq7O,UAAA76O,KAAA,CACA4N,QAAAA,EACAyqB,QAAAA,EACA2pB,OAAAk+L,EAAAl+L,SAGAxiD,KAAA++O,SAAAlmN,EAAA34B,MAAAkO,EACApO,KAAAw9O,UAAA3kN,EAAA34B,MAAAkO,GAGA8xO,WAAA,SAAAoB,GAIA,OAHAthP,KAAAwiL,SAAAjnK,UACA+lO,EAAAA,EAAAhkO,IAAAgkO,EAAAvvO,OAAA/R,KAAAwiL,SAAAjnK,WAEA+lO,GAGAzB,kBAAA,WACA,IAAAl/O,EAAA01E,EAAAxyE,EACA,IAAAlD,EAAA,EAAAX,KAAAq7O,UAAA16O,GAAAA,IACAkD,EAAA7D,KAAAq7O,UAAA16O,GACAX,KAAAwiL,SAAAs7D,WACA99O,KAAAwiL,SAAAs7D,UAAA5kO,KAAAlZ,KAAA6D,EAAAg1B,QAAA74B,KAAAwiL,SAAAg6D,WAAAx8O,KAAAwiL,SAAAk6D,YAEA18O,KAAAuhP,UAAA19O,EAAAg1B,QAAAh1B,EAAAuK,SAKA,GAHApO,KAAAq7O,UAAAh7O,SACAL,KAAAsgP,OAAAtgP,KAAAsgP,OAAAhjO,IAAAtd,KAAA2+O,aAEA3+O,KAAAwiL,SAAA5+K,QACA,IAAAjD,EAAA,EAAAX,KAAA4/O,YAAAj/O,GAAAA,IACAX,KAAAuhP,UAAAvhP,KAAA4/O,YAAAj/O,IAGA,GAAAX,KAAAwiL,SAAA26D,YACA,IAAAx8O,EAAA,EAAA01E,EAAAr2E,KAAAwhP,gBAAAnrK,EAAA11E,GAAAA,IACAX,KAAAwiL,SAAA26D,YAAAjkO,KAAAlZ,KAAAq2E,EAAA11E,GAAAX,KAAAwiL,SAAAg6D,WAAAx8O,KAAAwiL,SAAAk6D,YAGA18O,KAAA2/O,OAAA3/O,KAAA2/O,OAAA3sB,IAAAhzN,KAAAsgP,QACAtgP,KAAA+/O,aACA//O,KAAAkgP,WAAAlgP,KAAAsgP,QAAA39O,QAGA6+O,cAAA,WACA,OAAAxhP,KAAAk/O,gBAAAlsB,IAAAhzN,KAAAyhP,oBAGAA,gBAAA,WACA,OAAA/hP,EAAAM,KAAAq7O,WAAAn7N,KAAA,WACA,OAAAlgB,KAAA64B,YAIA0oN,UAAA,SAAA1oN,EAAAzqB,GACA,IAAAszO,EAAAp1I,EAAAq1I,EAAAt/O,EACAwB,EAAA7D,KAAAq9O,UAAAxkN,GACA+oN,EAAA5hP,KAAA6hP,SAAAhpN,GACAipN,EAAApiP,EAAAm5B,GAAA54B,KAAA,oBAEA4D,EAAAxD,QAGAwD,EAAAqlC,YAAAlpC,KAAAwiL,SAAAk6D,YAAA7zM,SAAA7oC,KAAAwiL,SAAAg6D,YAGA34O,EAAAqkC,KAAA95B,KAUAszO,EANA79O,EAAAnE,EAAA,IAAAM,KAAAwiL,SAAAm6D,aAAA,KACA18O,KAAA,KAAA2hP,EAAA,UACA/4M,SAAA7oC,KAAAwiL,SAAAg6D,YACAt0M,KAAA95B,GAAA,IAIApO,KAAAwiL,SAAAjnK,UAIAmmO,EAAA79O,EAAAV,OAAAR,OAAAkwB,KAAA,IAAA7yB,KAAAwiL,SAAAjnK,QAAA,MAAAxJ,UAEA/R,KAAAy+O,eAAAp+O,OACAL,KAAAy+O,eAAAn8O,OAAAo/O,GACA1hP,KAAAwiL,SAAAu/D,eACA/hP,KAAAwiL,SAAAu/D,eAAA7oO,KAAAlZ,KAAA0hP,EAAAhiP,EAAAm5B,IAEA6oN,EAAA5b,YAAAjtM,GAIAh1B,EAAAvD,GAAA,SAGAuD,EAAA5D,KAAA,MAAA2hP,GAIA,IAAA/9O,EAAAgnC,QAAA,cAAA7qC,KAAAgiP,cAAAJ,GAAA,MAAAvhP,SACAshP,EAAA99O,EAAA5D,KAAA,MAGA6hP,EAEAA,EAAA3wO,MAAA,IAAA0P,OAAA,MAAA7gB,KAAAgiP,cAAAL,GAAA,UAGAG,GAAA,IAAAH,GAJAG,EAAAH,EAMAjiP,EAAAm5B,GAAA54B,KAAA,mBAAA6hP,IAGAx1I,EAAAtsG,KAAAoqG,OAAAvxE,EAAA34B,SAEAmC,EAAArC,KACAN,EAAAG,KAAAwC,EAAA+nG,QAAA,SAAAlqG,EAAAu/O,GACAA,IAAAnzI,GACA5sG,EAAA,UAAA2C,EAAA2/O,cAAA9hP,GAAA,KAAAmC,EAAA64O,aACAj7O,KAAA,mBAAA4D,EAAA5D,KAAA,cAMAmO,GAAApO,KAAAwiL,SAAA5+K,UACAC,EAAApB,KAAA,IACA,iBAAAzC,KAAAwiL,SAAA5+K,QACAC,EAAAglC,SAAA7oC,KAAAwiL,SAAA5+K,SAEA5D,KAAAwiL,SAAA5+K,QAAAC,EAAAg1B,IAGA74B,KAAAsgP,OAAAtgP,KAAAsgP,OAAAhjO,IAAAzZ,IAGAw5O,UAAA,SAAAxkN,GACA,IAAA34B,EAAAF,KAAAgiP,cAAAhiP,KAAA6hP,SAAAhpN,IACAopN,EAAAviP,EAAAm5B,GAAA54B,KAAA,oBACAizB,EAAA,cAAAhzB,EAAA,kBAAAA,EAAA,OAQA,OALA+hP,IACA/uN,EAAAA,EAAA,MAAAlzB,KAAAgiP,cAAAC,GACAzqO,QAAA,OAAA,QAGAxX,KACA6iI,SACAziI,OAAA8yB,IAMA8uN,cAAA,SAAAh8I,GACA,OAAAA,EAAAxuF,QAAA,yCAAA,SAGAqqO,SAAA,SAAAhpN,GACA,OAAA74B,KAAAoqG,OAAAvxE,EAAA34B,QAAAF,KAAAu9O,UAAA1kN,GAAAA,EAAA34B,KAAA24B,EAAA71B,IAAA61B,EAAA34B,OAGAq/O,oBAAA,SAAA1mN,GAQA,OALA74B,KAAAu9O,UAAA1kN,KACAA,EAAA74B,KAAA6qM,WAAAhyK,EAAA34B,OAIAR,EAAAm5B,GAAAm6L,IAAAhzN,KAAAwiL,SAAAu6D,QAAA,IAGAQ,UAAA,SAAA1kN,GACA,MAAA,kBAAA3X,KAAA2X,EAAA94B,OAGA8qM,WAAA,SAAA3qM,GACA,OAAAR,EAAAM,KAAAk7O,aAAAt7O,KAAA,UAAAI,KAAAgiP,cAAA9hP,GAAA,OAGAutL,UAAA,SAAA3tL,EAAA+4B,GACA,OAAAA,EAAAmL,SAAA7f,eACA,IAAA,SACA,OAAAzkB,EAAA,kBAAAm5B,GAAAx4B,OACA,IAAA,QACA,GAAAL,KAAAu9O,UAAA1kN,GACA,OAAA74B,KAAA6qM,WAAAhyK,EAAA34B,MAAAE,OAAA,YAAAC,OAGA,OAAAP,EAAAO,QAGA6hP,OAAA,SAAA/0L,EAAAt0B,GACA,OAAA74B,KAAAmiP,mBAAAh1L,IAAAntD,KAAAmiP,mBAAAh1L,GAAAA,EAAAt0B,IAGAspN,YAAA,CACAxpF,QAAA,SAAAxrG,GACA,OAAAA,GAEA64C,OAAA,SAAA74C,EAAAt0B,GACA,QAAAn5B,EAAAytD,EAAAt0B,EAAAp5B,MAAAY,QAEA+hP,SAAA,SAAAj1L,EAAAt0B,GACA,OAAAs0B,EAAAt0B,KAIA4kN,SAAA,SAAA5kN,GACA,IAAAp4B,EAAAT,KAAA29O,aAAA9kN,GACA,OAAAn5B,EAAAk7O,UAAAkG,QAAA7E,SAAA/iO,KAAAlZ,KAAAS,EAAAo4B,IAAA,uBAGAwpN,aAAA,SAAAxpN,GACA74B,KAAAsnM,QAAAzuK,EAAA34B,QACAF,KAAAm7O,iBACAz7O,EAAAm5B,GAAAgQ,SAAA7oC,KAAAwiL,SAAAi6D,cACAz8O,KAAAsnM,QAAAzuK,EAAA34B,OAAA,IAIAoiP,YAAA,SAAAzpN,EAAAktJ,GACA/lL,KAAAm7O,iBAGAn7O,KAAAm7O,eAAA,IACAn7O,KAAAm7O,eAAA,UAEAn7O,KAAAsnM,QAAAzuK,EAAA34B,MACAR,EAAAm5B,GAAAqQ,YAAAlpC,KAAAwiL,SAAAi6D,cACA12D,GAAA,IAAA/lL,KAAAm7O,gBAAAn7O,KAAAi7O,eAAAj7O,KAAAP,QACAC,EAAAM,KAAAk7O,aAAAlnB,SAMAh0N,KAAA86O,cACAp7O,EAAA,sBAAAM,KAAA86O,aAAA56O,KAAA,KAAAF,KAAAk7O,aAAA/4O,SAGAnC,KAAAi7O,eAAA,IACAl1D,GAAA,IAAA/lL,KAAAm7O,gBAAAn7O,KAAAi7O,gBACAv7O,EAAAM,KAAAk7O,aAAAnK,eAAA,eAAA,CAAA/wO,OACAA,KAAAi7O,eAAA,IAIAsH,cAAA,SAAA1pN,EAAA2pB,GAGA,OAFAA,EAAA,iBAAAA,GAAAA,GAAA,SAEA9iD,EAAAsC,KAAA62B,EAAA,kBAAAn5B,EAAAsC,KAAA62B,EAAA,gBAAA,CACAytM,IAAA,KACAvgD,OAAA,EACA33K,QAAApO,KAAAmhP,eAAAtoN,EAAA,CAAA2pB,OAAAA,OAKAtO,QAAA,WACAl0C,KAAA8/O,YAEApgP,EAAAM,KAAAk7O,aACA7vM,IAAA,aACAuxL,WAAA,aACAh9N,KAAA,0BACAyrC,IAAA,qBACAnC,YAAA,yBACAtpC,KAAA,2BACAyrC,IAAA,sBACAnC,YAAA,0BACAtpC,KAAA,gCACAyrC,IAAA,2BACAnC,YAAA,+BACAtpC,KAAA,mCACAyrC,IAAA,8BACAnC,YAAA,kCACAtpC,KAAA,8BACAyrC,IAAA,yBACAnC,YAAA,+BAKAs5M,kBAAA,CACAvG,SAAA,CAAAA,UAAA,GACA+B,MAAA,CAAAA,OAAA,GACA36O,IAAA,CAAAA,KAAA,GACA46O,KAAA,CAAAA,MAAA,GACAC,QAAA,CAAAA,SAAA,GACApwK,OAAA,CAAAA,QAAA,GACAqwK,OAAA,CAAAA,QAAA,GACAsE,WAAA,CAAAA,YAAA,IAGAC,cAAA,SAAAn5M,EAAA+xM,GACA/xM,EAAAtgC,cAAA0mG,OACA3vG,KAAAwiP,kBAAAj5M,GAAA+xM,EAEA57O,EAAA8jC,OAAAxjC,KAAAwiP,kBAAAj5M,IAIAuyM,WAAA,SAAAjjN,GACA,IAAAyiN,EAAA,GACAxyM,EAAAppC,EAAAm5B,GAAA54B,KAAA,SASA,OAPA6oC,GACAppC,EAAAG,KAAAipC,EAAA/4B,MAAA,MAAA,WACA/P,QAAAN,EAAAk7O,UAAA4H,mBACA9iP,EAAA8jC,OAAA83M,EAAA57O,EAAAk7O,UAAA4H,kBAAAxiP,UAIAs7O,GAGAqH,uBAAA,SAAArH,EAAAv7O,EAAAyiD,EAAA1iD,GAIA,eAAAohB,KAAAshC,KAAA,OAAAziD,GAAA,oBAAAmhB,KAAAnhB,MACAD,EAAAqgB,OAAArgB,GAGAuX,MAAAvX,KACAA,OAAAsnC,IAIAtnC,GAAA,IAAAA,EACAw7O,EAAA94L,GAAA1iD,EACAC,IAAAyiD,GAAA,UAAAziD,IAIAu7O,EAAA94L,IAAA,IAIAu5L,eAAA,SAAAljN,GACA,IAGA2pB,EAAA1iD,EAHAw7O,EAAA,GACAiF,EAAA7gP,EAAAm5B,GACA94B,EAAA84B,EAAAjpB,aAAA,QAGA,IAAA4yC,KAAA9iD,EAAAk7O,UAAAkG,QAGA,aAAAt+L,GAKA,MAJA1iD,EAAA+4B,EAAAjpB,aAAA4yC,MAKA1iD,GAAA,GAIAA,IAAAA,GAEAA,EAAAygP,EAAAtgP,KAAAuiD,GAGAxiD,KAAA2iP,uBAAArH,EAAAv7O,EAAAyiD,EAAA1iD,GAQA,OAJAw7O,EAAA+C,WAAA,uBAAAn9N,KAAAo6N,EAAA+C,mBACA/C,EAAA+C,UAGA/C,GAGAU,UAAA,SAAAnjN,GACA,IAGA2pB,EAAA1iD,EAHAw7O,EAAA,GACAiF,EAAA7gP,EAAAm5B,GACA94B,EAAA84B,EAAAjpB,aAAA,QAGA,IAAA4yC,KAAA9iD,EAAAk7O,UAAAkG,QAIA,MAHAhhP,EAAAygP,EAAAv+O,KAAA,OAAAwgD,EAAAlrC,OAAA,GAAA2G,cAAAukC,EAAA5+B,UAAA,GAAAO,kBAIArkB,GAAA,GAGAE,KAAA2iP,uBAAArH,EAAAv7O,EAAAyiD,EAAA1iD,GAEA,OAAAw7O,GAGAE,YAAA,SAAA3iN,GACA,IAAAyiN,EAAA,GACAV,EAAAl7O,EAAAsC,KAAA62B,EAAAp5B,KAAA,aAKA,OAHAm7O,EAAAp4D,SAAA84D,QACAA,EAAA57O,EAAAk7O,UAAAe,cAAAf,EAAAp4D,SAAA84D,MAAAziN,EAAA34B,QAAA,IAEAo7O,GAGAO,eAAA,SAAAP,EAAAziN,GAmEA,OAhEAn5B,EAAAG,KAAAy7O,GAAA,SAAA/4O,EAAA9B,GAGA,IAAA,IAAAA,GAIA,GAAAA,EAAA0sD,OAAA1sD,EAAAmiP,QAAA,CACA,IAAAC,GAAA,EACA,cAAApiP,EAAAmiP,SACA,IAAA,SACAC,IAAAnjP,EAAAe,EAAAmiP,QAAA/pN,EAAAp5B,MAAAY,OACA,MACA,IAAA,WACAwiP,EAAApiP,EAAAmiP,QAAA1pO,KAAA2f,EAAAA,GAGAgqN,EACAvH,EAAA/4O,QAAA6kC,IAAA3mC,EAAA0sD,OAAA1sD,EAAA0sD,OAEAztD,EAAAsC,KAAA62B,EAAAp5B,KAAA,aAAAugP,cAAAtgP,EAAAm5B,WACAyiN,EAAA/4O,iBAjBA+4O,EAAA/4O,MAuBA7C,EAAAG,KAAAy7O,GAAA,SAAAoF,EAAAoC,GACAxH,EAAAoF,GAAA,mBAAAoC,GAAA,eAAApC,EAAAoC,EAAAjqN,GAAAiqN,KAIApjP,EAAAG,KAAA,CAAA,YAAA,cAAA,WACAy7O,EAAAt7O,QACAs7O,EAAAt7O,MAAAmgB,OAAAm7N,EAAAt7O,WAGAN,EAAAG,KAAA,CAAA,cAAA,UAAA,WACA,IAAAioL,EACAwzD,EAAAt7O,QACAkN,MAAAhM,QAAAo6O,EAAAt7O,OACAs7O,EAAAt7O,MAAA,CAAAmgB,OAAAm7N,EAAAt7O,MAAA,IAAAmgB,OAAAm7N,EAAAt7O,MAAA,KACA,iBAAAs7O,EAAAt7O,QACA8nL,EAAAwzD,EAAAt7O,MAAAwX,QAAA,UAAA,IAAAzH,MAAA,UACAurO,EAAAt7O,MAAA,CAAAmgB,OAAA2nK,EAAA,IAAA3nK,OAAA2nK,EAAA,UAKApoL,EAAAk7O,UAAA4D,mBAGA,MAAAlD,EAAAn1O,KAAA,MAAAm1O,EAAAnjO,MACAmjO,EAAAxoN,MAAA,CAAAwoN,EAAAn1O,IAAAm1O,EAAAnjO,YACAmjO,EAAAn1O,WACAm1O,EAAAnjO,KAEA,MAAAmjO,EAAAgD,WAAA,MAAAhD,EAAA+C,YACA/C,EAAAiD,YAAA,CAAAjD,EAAAgD,UAAAhD,EAAA+C,kBACA/C,EAAAgD,iBACAhD,EAAA+C,YAIA/C,GAIAK,cAAA,SAAA35O,GACA,GAAA,iBAAAA,EAAA,CACA,IAAA+gP,EAAA,GACArjP,EAAAG,KAAAmC,EAAA+N,MAAA,OAAA,WACAgzO,EAAA/iP,OAAA,KAEAgC,EAAA+gP,EAEA,OAAA/gP,GAIAghP,UAAA,SAAA9iP,EAAAsiD,EAAAp0C,GACA1O,EAAAk7O,UAAAkG,QAAA5gP,GAAAsiD,EACA9iD,EAAAk7O,UAAAgB,SAAA17O,QAAAknC,IAAAh5B,EAAAA,EAAA1O,EAAAk7O,UAAAgB,SAAA17O,GACAsiD,EAAAniD,OAAA,GACAX,EAAAk7O,UAAA8H,cAAAxiP,EAAAR,EAAAk7O,UAAAe,cAAAz7O,KAKA4gP,QAAA,CAGA7E,SAAA,SAAAn8O,EAAA+4B,EAAAs0B,GAGA,IAAAntD,KAAAkiP,OAAA/0L,EAAAt0B,GACA,MAAA,sBAEA,GAAA,WAAAA,EAAAmL,SAAA7f,cAAA,CAGA,IAAA1jB,EAAAf,EAAAm5B,GAAAp4B,MACA,OAAAA,GAAAA,EAAAJ,OAAA,EAEA,OAAAL,KAAAu9O,UAAA1kN,GACA74B,KAAAytL,UAAA3tL,EAAA+4B,GAAA,EAEA/4B,MAAAA,GAAAA,EAAAO,OAAA,GAIA29O,MAAA,SAAAl+O,EAAA+4B,GAMA,OAAA74B,KAAAy9O,SAAA5kN,IAAA,wIAAA3X,KAAAphB,IAIAuD,IAAA,SAAAvD,EAAA+4B,GAMA,OAAA74B,KAAAy9O,SAAA5kN,IAAA,0aAAA3X,KAAAphB,IAIAm+O,MACA9B,GAAA,EAEA,SAAAr8O,EAAA+4B,GAcA,OAbAsjN,IACAA,GAAA,EACAn8O,KAAAwiL,SAAAz5C,OAAAzkI,OAAA2J,SACAA,QAAAC,KACA,uTASAlO,KAAAy9O,SAAA5kN,KAAA,cAAA3X,KAAA,IAAAC,KAAArhB,GAAA4mC,cAKAw3M,QAAA,SAAAp+O,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAA,+DAAA3X,KAAAphB,IAIAguE,OAAA,SAAAhuE,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAA,8CAAA3X,KAAAphB,IAIAq+O,OAAA,SAAAr+O,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAA,QAAA3X,KAAAphB,IAIAw+O,UAAA,SAAAx+O,EAAA+4B,EAAAs0B,GACA,IAAA9sD,EAAA6M,MAAAhM,QAAApB,GAAAA,EAAAO,OAAAL,KAAAytL,UAAA3tL,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAAx4B,GAAA8sD,GAIAkxL,UAAA,SAAAv+O,EAAA+4B,EAAAs0B,GACA,IAAA9sD,EAAA6M,MAAAhM,QAAApB,GAAAA,EAAAO,OAAAL,KAAAytL,UAAA3tL,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAAx4B,GAAA8sD,GAIAoxL,YAAA,SAAAz+O,EAAA+4B,EAAAs0B,GACA,IAAA9sD,EAAA6M,MAAAhM,QAAApB,GAAAA,EAAAO,OAAAL,KAAAytL,UAAA3tL,EAAA+4B,GACA,OAAA74B,KAAAy9O,SAAA5kN,IAAAx4B,GAAA8sD,EAAA,IAAA9sD,GAAA8sD,EAAA,IAIAhnD,IAAA,SAAArG,EAAA+4B,EAAAs0B,GACA,OAAAntD,KAAAy9O,SAAA5kN,IAAA/4B,GAAAqtD,GAIAh1C,IAAA,SAAArY,EAAA+4B,EAAAs0B,GACA,OAAAntD,KAAAy9O,SAAA5kN,IAAA/4B,GAAAqtD,GAIAr6B,MAAA,SAAAhzB,EAAA+4B,EAAAs0B,GACA,OAAAntD,KAAAy9O,SAAA5kN,IAAA/4B,GAAAqtD,EAAA,IAAArtD,GAAAqtD,EAAA,IAIAq0B,KAAA,SAAA1hF,EAAA+4B,EAAAs0B,GACA,IAkBA81L,EAlBAljP,EAAAL,EAAAm5B,GAAA54B,KAAA,QACAijP,EAAA,gCAAAnjP,EAAA,qBAEAojP,EAAA,IAAAtiO,OAAA,MAAA9gB,EAAA,OAEAqjP,EAAA,SAAAjwE,GACA,IAAAhiK,GAAA,GAAAgiK,GAAAhiK,MAAA,iBACA,OAAAA,GAKAA,EAAA,GAAAA,EAAA,GAAA9Q,OAJA,GAMAgjP,EAAA,SAAAlwE,GACA,OAAAjtK,KAAAgK,MAAAijK,EAAAjtK,KAAAD,IAAA,GAAAg9O,KAEAl9D,GAAA,EAKA,GAlBAhmL,IAAAojP,EAAAjiO,KAFA,CAAA,OAAA,SAAA,SAEAxgB,QAmBA,MAAA,IAAAopD,MAAAo5L,GAUA,OAPAD,EAAAG,EAAAj2L,IAGAi2L,EAAAtjP,GAAAmjP,GAAAI,EAAAvjP,GAAAujP,EAAAl2L,IAAA,KACA44H,GAAA,GAGA/lL,KAAAy9O,SAAA5kN,IAAAktJ,GAIAq4D,QAAA,SAAAt+O,EAAA+4B,EAAAs0B,GAGA,IAAAh+C,EAAAzP,EAAAytD,GAMA,OALAntD,KAAAwiL,SAAA86D,YAAAnuO,EAAA6jN,IAAA,0BAAA3yN,QACA8O,EAAA05B,SAAA,yBAAA3lC,GAAA,yBAAA,WACAxD,EAAAm5B,GAAAktJ,WAGAjmL,IAAAqP,EAAA1O,OAIAy7O,OAAA,SAAAp8O,EAAA+4B,EAAAs0B,EAAA3K,GACA,GAAAxiD,KAAAy9O,SAAA5kN,GACA,MAAA,sBAGA2pB,EAAA,iBAAAA,GAAAA,GAAA,SAEA,IACAo4L,EAAA54O,EAAAshP,EADAC,EAAAvjP,KAAAuiP,cAAA1pN,EAAA2pB,GAWA,OARAxiD,KAAAwiL,SAAAo5D,SAAA/iN,EAAA34B,QACAF,KAAAwiL,SAAAo5D,SAAA/iN,EAAA34B,MAAA,IAEAqjP,EAAAC,gBAAAD,EAAAC,iBAAAxjP,KAAAwiL,SAAAo5D,SAAA/iN,EAAA34B,MAAAsiD,GACAxiD,KAAAwiL,SAAAo5D,SAAA/iN,EAAA34B,MAAAsiD,GAAA+gM,EAAAn1O,QAEA++C,EAAA,iBAAAA,GAAA,CAAA9pD,IAAA8pD,IAAAA,EACAm2L,EAAA5jP,EAAAytD,MAAAztD,EAAA8jC,OAAA,CAAAxhC,KAAAlC,GAAAqtD,EAAAnrD,OACAuhP,EAAAjd,MAAAgd,EACAC,EAAAx9D,OAGAw9D,EAAAjd,IAAAgd,EACA1I,EAAA56O,KACAA,KAAAqiP,aAAAxpN,IACA72B,EAAA,IACA62B,EAAA34B,MAAAJ,EACAJ,EAAA0D,KAAA1D,EAAA8jC,QAAA,EAAA,CACAsqF,KAAA,QACA21H,KAAA,WAAA5qN,EAAA34B,KACAyD,SAAA,OACA3B,KAAAA,EACAimC,QAAA2yM,EAAAM,YACAt3O,QAAA,SAAA0nL,GACA,IACAzoD,EAAAz0H,EAAAovO,EADAz3D,GAAA,IAAAuF,GAAA,SAAAA,EAGAsvD,EAAAp4D,SAAAo5D,SAAA/iN,EAAA34B,MAAAsiD,GAAA+gM,EAAAC,gBACAz9D,GACAy3D,EAAA5C,EAAAK,cACAL,EAAAyF,iBACAzF,EAAA+E,OAAA/E,EAAAyC,UAAAxkN,GACA+hN,EAAAK,cAAAuC,EACA5C,EAAAgF,YAAAp/O,KAAAq4B,GACA+hN,EAAAgD,QAAA/kN,EAAA34B,OAAA,EACA06O,EAAAoE,eAEAn8G,EAAA,GACAz0H,EAAAk9K,GAAAsvD,EAAAuG,eAAAtoN,EAAA,CAAA2pB,OAAAA,EAAAsxC,WAAAh0F,IACA+iI,EAAAhqG,EAAA34B,MAAAqjP,EAAAn1O,QAAAA,EACAwsO,EAAAgD,QAAA/kN,EAAA34B,OAAA,EACA06O,EAAAoE,WAAAn8G,IAEA0gH,EAAAx9D,MAAAA,EACA60D,EAAA0H,YAAAzpN,EAAAktJ,KAEA54H,IACA,eAUA,IACA/pD,EADAsgP,EAAA,GA+BA,OA3BAhkP,EAAAu0O,cACAv0O,EAAAu0O,eAAA,SAAAzxD,EAAA37H,EAAAmwL,GACA,IAAAyM,EAAAjhE,EAAAihE,KACA,UAAAjhE,EAAA10D,OACA41H,EAAAD,IACAC,EAAAD,GAAArO,QAEAsO,EAAAD,GAAAzM,OAMA5zO,EAAA1D,EAAA0D,KACA1D,EAAA0D,KAAA,SAAAo/K,GACA,IAAA10D,GAAA,SAAA00D,EAAAA,EAAA9iL,EAAAyzO,cAAArlH,KACA21H,GAAA,SAAAjhE,EAAAA,EAAA9iL,EAAAyzO,cAAAsQ,KACA,MAAA,UAAA31H,GACA41H,EAAAD,IACAC,EAAAD,GAAArO,QAEAsO,EAAAD,GAAArgP,EAAA4V,MAAAhZ,KAAAwlB,WACAk+N,EAAAD,IAEArgP,EAAA4V,MAAAhZ,KAAAwlB,aAGA9lB,KjGvnDAA,EAAAk7O,UAAAtpO,SAAAqyO,cAAA,SAAAlkP,GACA,MAAA,CAAAuC,KAAA1C,YAAAG,KAEAC,EAAAk7O,UAAAtpO,SAAAsyO,gBAAA,SAAA5hP,EAAAvC,GACAuC,EAAAxC,EAAAqkP,MAAAC,SACAt/M,SAAAI,KAAA5iC,EAAAxC,EAAAqkP,MAAAC,SAEA9hP,EAAAxC,EAAAukP,QACArkP,EAAAD,GAAAG,KAAA,iBAAAmS,SAAA5P,SACAzC,EAAAA,EAAAD,GAAAQ,KAAA,oBAAA0C,OACAjD,EAAAD,GAAA0C,WAGAzC,EAAAD,GAAAG,KAAA,iBAAAsoC,KAAAxoC,EAAAD,GAAAQ,KAAA,gBACAP,EAAAD,GAAAG,KAAA,iBAAAmqC,WAAA,YACArqC,EAAAA,EAAAD,GAAAQ,KAAA,oBAAA0C,SAIAjD,EAAAk7O,UAAAtpO,SAAAxQ,iBAAA,SAAAkB,EAAAvC,GACAuC,EAAAxC,EAAAukP,QAAA/hP,EAAAxC,EAAAwkP,SACAljP,iBAAAkB,EAAAxC,EAAAwkP,UAEAtkP,EAAAk7O,UAAAtpO,SAAAywO,eAAA,SAAAzlO,EAAAuc,KAEAn5B,EAAAk7O,UAAAtpO,SAAA0pO,cAAA,WACA,IAAAJ,EAAA56O,KACAP,EAAAm7O,EAAAM,YA+BA,OA7BAx7O,EAAAA,EAAAD,GAAAQ,KAAA,oBAAAkD,OACAzD,EAAAA,EAAAD,GAAAQ,KAAA,oBAAAkD,OACAzD,EAAAD,GAAAG,KAAA,iBAAAK,KAAA,WAAA,YACAP,EAAAD,GAAAQ,KAAA,gBACAP,EAAAD,GAAAQ,KAAA,cAAAP,EAAAD,GAAAG,KAAA,iBAAAsoC,QACAxoC,EAAAD,GAAAG,KAAA,qBAAAS,QACAX,EAAAD,GAAAG,KAAA,iBAAAsoC,KAAA,iDAEAxoC,EAAA0D,KAAA,CACArD,KAAA,OACAsD,IAAA3D,EAAAD,GAAAQ,KAAA,UACAqD,OAAA,EACAC,YAAA,kCACAvB,KAAAwB,KAAAC,UAAAm3O,EAAAp4D,SAAAmhE,cAAAlkP,IACAkE,SAAA,OACAC,QAAA,SAAA5B,GACA,IACA44O,EAAAp4D,SAAA1hL,iBAAAkB,EAAAvC,GACA,MAAA6B,IACAs5O,EAAAp4D,SAAAohE,gBAAA5hP,EAAAvC,IAEAoE,MAAA,SAAA7B,GACAtC,EAAAD,GAAAG,KAAA,iBAAAsoC,KAAAxoC,EAAAD,GAAAQ,KAAA,gBACAP,EAAAD,GAAAG,KAAA,iBAAAmqC,WAAA,YACArqC,EAAAD,GAAAG,KAAA,WAAAsoC,KAAA,IACApkC,MAAA,2BAIA,GAGApE,EAAAk7O,UAAAtpO,SAAAyrO,OAAA,sBACAr9O,EAAAk7O,UAAAtpO,SAAAkrO,WAAA,QAEA98O,EAAAk7O,UAAAtpO,SAAA2yO,eAAAvkP,EAAAk7O,UAAAtpO,SAAAwsO,UACAp+O,EAAAk7O,UAAAtpO,SAAAwsO,UAAA,SAAAjlN,EAAA2jN,EAAAE,GACA7jN,EAAAn5B,EAAAm5B,GAAA9mB,SACArS,EAAAk7O,UAAAtpO,SAAA2yO,eAAA/qO,KAAAlZ,KAAA64B,EAAA2jN,EAAAE,IAOAh9O,EAAAk7O,UAAAtpO,SAAA4yO,iBAAAxkP,EAAAk7O,UAAAtpO,SAAA6rO,YACAz9O,EAAAk7O,UAAAtpO,SAAA6rO,YAAA,SAAAtkN,EAAA2jN,EAAAE,GACA,IAAAj7O,EAAA/B,EAAAm5B,GAAAz4B,OAAA,UACAqB,EAAApB,SACAw4B,EAAAn5B,EAAA+B,GAAAsQ,UACArS,EAAAk7O,UAAAtpO,SAAA4yO,iBAAAhrO,KAAAlZ,KAAA64B,EAAA2jN,EAAAE,IAuLAh9O,EAAA,QAAAG,MAAA,WACA0B,SACA7B,EAAA,iBAAAM,MACAN,EAAA,mBAAAM,MACAN,EAAA,kBAAAM","file":"dist\\js\\vendors.min.js","sourcesContent":["$.validator.defaults.getDataToSend = function (form) {\r\n\treturn { data: GetJsonData(form) };\r\n};\r\n$.validator.defaults.callbackHandler = function (data, form) {\r\n\tif (data.d.Props.Redirect)\r\n\t\tlocation.href = data.d.Props.Redirect;\r\n\telse {\r\n\t\tif (data.d.Status) {\r\n\t\t\t$(form).find(\"[type=submit]\").parent().remove();\r\n\t\t\t$($(form).attr(\"data-selectorok\")).show();\r\n\t\t\t$(form).remove();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$(form).find(\"[type=submit]\").html($(form).attr(\"submit-text\"));\r\n\t\t\t$(form).find(\"[type=submit]\").removeAttr(\"disabled\");\r\n\t\t\t$($(form).attr(\"data-selectorko\")).show();\r\n\t\t}\r\n\t}\r\n}\r\n$.validator.defaults.sendActionsToGTM = function (data, form) {\r\n\tif (data.d.Status && data.d.Actions)\r\n\t\tsendActionsToGTM(data.d.Actions);\r\n}\r\n$.validator.defaults.errorPlacement = function (label, element) { }\r\n\r\n$.validator.defaults.submitHandler = function () {\r\n\tvar validator = this,\r\n\t\tform = validator.currentForm;\r\n\r\n\t$($(form).attr(\"data-selectorok\")).hide();\r\n\t$($(form).attr(\"data-selectorko\")).hide();\r\n\t$(form).find(\"[type=submit]\").attr(\"disabled\", \"disabled\");\r\n\tif (!$(form).attr(\"submit-text\"))\r\n\t\t$(form).attr(\"submit-text\", $(form).find(\"[type=submit]\").html());\r\n\tif (!$(form).find(\"[type=submit] img\").length)\r\n\t\t$(form).find(\"[type=submit]\").html('');\r\n\r\n\t$.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: $(form).attr('action'),\r\n\t\tcache: false,\r\n\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\tdata: JSON.stringify(validator.settings.getDataToSend(form)),\r\n\t\tdataType: \"json\",\r\n\t\tsuccess: function (data) {\r\n\t\t\ttry {\r\n\t\t\t\tvalidator.settings.sendActionsToGTM(data, form);\r\n\t\t\t} catch (ex) { }\r\n\t\t\tvalidator.settings.callbackHandler(data, form);\r\n\t\t},\r\n\t\terror: function (data) {\r\n\t\t\t$(form).find(\"[type=submit]\").html($(form).attr(\"submit-text\"));\r\n\t\t\t$(form).find(\"[type=submit]\").removeAttr(\"disabled\");\r\n\t\t\t$(form).find(\".result\").html('');\r\n\t\t\talert(\"Web-Service Error!!\");\r\n\t\t}\r\n\t});\r\n\r\n\treturn false;\r\n}\r\n\r\n$.validator.defaults.ignore = ':hidden:not(select)';\r\n$.validator.defaults.errorClass = \"error\";\r\n\r\n$.validator.defaults.highlight_base = $.validator.defaults.highlight;\r\n$.validator.defaults.highlight = function (element, errorClass, validClass) {\r\n\telement = $(element).parent()\r\n\t$.validator.defaults.highlight_base.call(this, element, errorClass, validClass);\r\n\r\n\t// var select = $(element).filter('select');\r\n\t// if (select.length && select.data('selectpicker'))\r\n\t// select.data('selectpicker').button.removeClass(validClass).addClass(errorClass);\r\n};\r\n\r\n$.validator.defaults.unhighlight_base = $.validator.defaults.unhighlight;\r\n$.validator.defaults.unhighlight = function (element, errorClass, validClass) {\r\n\tvar select = $(element).filter('select');\r\n\tif (select.length)\r\n\t\telement = $(select).parent()\r\n\t$.validator.defaults.unhighlight_base.call(this, element, errorClass, validClass);\r\n\r\n\t//var select = $(element).filter('select');\r\n\t//if (select.length && select.data('selectpicker'))\r\n\t// select.data('selectpicker').button.removeClass(errorClass).addClass(validClass);\r\n};\r\n\r\nfunction GetJsonData(formObj) {\r\n\tvar d = {};\r\n\tvar form = $(formObj);\r\n\tvar fields = form.find(\"input[name!=''][type!=submit][type!=reset]\")/*.filter(\"[type=email], [type=text], [type=password], [type=checkbox], [type=radio], [type=hidden]\")*/;\r\n\r\n\tfields.each(function () {\r\n\t\tvar\r\n\t\t\ttype = $(this).attr(\"type\"),\r\n\t\t\tname = $(this).attr(\"name\"),\r\n\t\t\tvalue;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"checkbox\":\r\n\t\t\tcase \"radio\":\r\n\t\t\t\tvar list = fields.filter('[name=' + name + '][type=' + type + ']');\r\n\t\t\t\tif (list.length == 1)\r\n\t\t\t\t\tvalue = $(this).is(':checked');\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (d[name]) return;\r\n\r\n\t\t\t\t\tvar values = [];\r\n\t\t\t\t\tlist.each(function () { if ($(this).is(':checked')) values.push($(this).val()); });\r\n\t\t\t\t\tvalue = values.join(',');\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"file\":\r\n\t\t\t\tvalue = [];\r\n\t\t\t\tfor (var i = 0; i < this.files.length; i++) { value.push(this.files[i].name); }\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tvalue = $(this).val();\r\n\t\t\t\tvalue = $.trim(value);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\td[name] = value;\r\n\t});\r\n\r\n\tform.find(\"select[name!=''], textarea[name!='']\").each(function () {\r\n\t\tvar name = $(this).attr(\"name\");\r\n\t\td[name] = $(this).val();\r\n\r\n\t});\r\n\r\n\treturn d;\r\n}\r\n\r\n/*\r\n$(function () {\r\n\t$('.selectpicker')\r\n\t .on('change', function () { $(this).trigger('click'); })\r\n\t .selectpicker({});\r\n});\r\n\r\n$(function () {\r\n\t$('.selectpicker')\r\n\t\t.on('change', function () { $(this).trigger('click'); })\r\n\t\t.selectpicker({});\r\n});\r\n*/\r\n\r\nfunction sendActionsToGTM(obj) {\r\n\tif (obj == null) return;\r\n\r\n\ttry {\r\n\t\tvar actions;\r\n\t\tif (!jQuery.isArray(obj))\r\n\t\t\tactions = [obj];\r\n\t\telse\r\n\t\t\tactions = obj;\r\n\r\n\t\tfor (var i = 0; i < actions.length; i++) {\r\n\t\t\tdataLayer.push({ \"wsActionComplete\": actions[i] });\r\n\t\t\tdataLayer.push({ \"event\": \"Action Complete\" });\r\n\t\t}\r\n\t} catch (ex) { }\r\n}\r\n\r\nfunction province(selectNazione, select, textbox) {\r\n\tvar $selectNazione = $(selectNazione);\r\n\tif ($selectNazione.length === 0) return;\r\n\r\n\tvar $select = $(select);\r\n\tif ($select.length === 0) return;\r\n\r\n\tvar $textbox = $(textbox);\r\n\tif ($textbox.length === 0) return;\r\n\r\n\tvar func = function (prov) {\r\n\t\t$select.val('');\r\n\r\n\t\tif ($select.data('select2'))\r\n\t\t\t$select.select2('destroy');\r\n\r\n\r\n\t\tvar trovato = false;\r\n\r\n\t\t$select.find('option:gt(0)').remove();\r\n\t\tfor (var i = 0; i < prov.length; i++) {\r\n\t\t\tvar p = prov[i],\r\n\t\t\t\tv = $textbox.val();\r\n\t\t\t$select.append($('').prop('value', p.Sigla).text(p.Nome));\r\n\r\n\t\t\tif (v) {\r\n\t\t\t\tif (v == p.Sigla) {\r\n\t\t\t\t\t$select.val(prov[i].Sigla);\r\n\t\t\t\t\ttrovato = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!trovato && prov.length !== 0) {\r\n\t\t\t$textbox.val('');\r\n\t\t}\r\n\r\n\t\tif (prov.length > 0) {\r\n\t\t\t$selectNazione;\r\n\r\n\t\t\t$select.show().trigger(\"blur\");\r\n\r\n\t\t\tif (jQuery.fn.select2) {\r\n\t\t\t\t$select.select2(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcloseOnSelect: false,\r\n\t\t\t\t\t\twidth: 'style',\r\n\t\t\t\t\t\tid: -1,\r\n\t\t\t\t\t\tdropdownPosition: 'below'\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.on('select2:select', function () {\r\n\t\t\t\t\t\t$textbox.val($(this).val());\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t$textbox.hide();\r\n\t\t} else {\r\n\t\t\t$selectNazione;\r\n\t\t\t$select.hide();\r\n\t\t\t$textbox.show();\r\n\t\t}\r\n\t}\r\n\r\n\tif (!jQuery.fn.select2) {\r\n\t\t$select.on('change', function () {\r\n\t\t\t$textbox.val($(this).val());\r\n\t\t})\r\n\t}\r\n\r\n\t$selectNazione\r\n\t\t.on('change select2:select', function () {\r\n\t\t\tif ($(this).val()) {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\turl: \"/WS/wsUsers.asmx/Province\",\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\t\tdata: JSON.stringify({ nazId: $selectNazione.val() }),\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\t\tfunc(data.d);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function (data) {\r\n\t\t\t\t\t\talert(\"Web-Service Error!!\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfunc([]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\tif (jQuery.fn.select2)\r\n\t\t$selectNazione.trigger('select2:select');\r\n\telse\r\n\t\t$selectNazione.trigger('change');\r\n\r\n}\r\n\r\n$('form').each(function () {\r\n\tprovince(\r\n\t\t$('select.nazione', this),\r\n\t\t$('select.provincia', this),\r\n\t\t$('input.provincia', this)\r\n\t);\r\n});\r\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n\t/*!\n\t * EasePack 3.8.0\n\t * https://greensock.com\n\t *\n\t * @license Copyright 2008-2021, GreenSock. All rights reserved.\n\t * Subject to the terms at https://greensock.com/standard-license or for\n\t * Club GreenSock members, the agreement issued with that membership.\n\t * @author: Jack Doyle, jack@greensock.com\n\t*/\n\tvar gsap,\n\t _registerEase,\n\t _getGSAP = function _getGSAP() {\n\t return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n\t},\n\t _boolean = function _boolean(value, defaultValue) {\n\t return !!(typeof value === \"undefined\" ? defaultValue : value && !~(value + \"\").indexOf(\"false\"));\n\t},\n\t _initCore = function _initCore(core) {\n\t gsap = core || _getGSAP();\n\n\t if (gsap) {\n\t _registerEase = gsap.registerEase;\n\n\t var eases = gsap.parseEase(),\n\t createConfig = function createConfig(ease) {\n\t return function (ratio) {\n\t var y = 0.5 + ratio / 2;\n\n\t ease.config = function (p) {\n\t return ease(2 * (1 - p) * p * y + p * p);\n\t };\n\t };\n\t },\n\t p;\n\n\t for (p in eases) {\n\t if (!eases[p].config) {\n\t createConfig(eases[p]);\n\t }\n\t }\n\n\t _registerEase(\"slow\", SlowMo);\n\n\t _registerEase(\"expoScale\", ExpoScaleEase);\n\n\t _registerEase(\"rough\", RoughEase);\n\n\t for (p in EasePack) {\n\t p !== \"version\" && gsap.core.globals(p, EasePack[p]);\n\t }\n\t }\n\t},\n\t _createSlowMo = function _createSlowMo(linearRatio, power, yoyoMode) {\n\t linearRatio = Math.min(1, linearRatio || 0.7);\n\n\t var pow = linearRatio < 1 ? power || power === 0 ? power : 0.7 : 0,\n\t p1 = (1 - linearRatio) / 2,\n\t p3 = p1 + linearRatio,\n\t calcEnd = _boolean(yoyoMode);\n\n\t return function (p) {\n\t var r = p + (0.5 - p) * pow;\n\t return p < p1 ? calcEnd ? 1 - (p = 1 - p / p1) * p : r - (p = 1 - p / p1) * p * p * p * r : p > p3 ? calcEnd ? p === 1 ? 0 : 1 - (p = (p - p3) / p1) * p : r + (p - r) * (p = (p - p3) / p1) * p * p * p : calcEnd ? 1 : r;\n\t };\n\t},\n\t _createExpoScale = function _createExpoScale(start, end, ease) {\n\t var p1 = Math.log(end / start),\n\t p2 = end - start;\n\t ease && (ease = gsap.parseEase(ease));\n\t return function (p) {\n\t return (start * Math.exp(p1 * (ease ? ease(p) : p)) - start) / p2;\n\t };\n\t},\n\t EasePoint = function EasePoint(time, value, next) {\n\t this.t = time;\n\t this.v = value;\n\n\t if (next) {\n\t this.next = next;\n\t next.prev = this;\n\t this.c = next.v - value;\n\t this.gap = next.t - time;\n\t }\n\t},\n\t _createRoughEase = function _createRoughEase(vars) {\n\t if (typeof vars !== \"object\") {\n\t vars = {\n\t points: +vars || 20\n\t };\n\t }\n\n\t var taper = vars.taper || \"none\",\n\t a = [],\n\t cnt = 0,\n\t points = (+vars.points || 20) | 0,\n\t i = points,\n\t randomize = _boolean(vars.randomize, true),\n\t clamp = _boolean(vars.clamp),\n\t template = gsap ? gsap.parseEase(vars.template) : 0,\n\t strength = (+vars.strength || 1) * 0.4,\n\t x,\n\t y,\n\t bump,\n\t invX,\n\t obj,\n\t pnt,\n\t recent;\n\n\t while (--i > -1) {\n\t x = randomize ? Math.random() : 1 / points * i;\n\t y = template ? template(x) : x;\n\n\t if (taper === \"none\") {\n\t bump = strength;\n\t } else if (taper === \"out\") {\n\t invX = 1 - x;\n\t bump = invX * invX * strength;\n\t } else if (taper === \"in\") {\n\t bump = x * x * strength;\n\t } else if (x < 0.5) {\n\t invX = x * 2;\n\t bump = invX * invX * 0.5 * strength;\n\t } else {\n\t invX = (1 - x) * 2;\n\t bump = invX * invX * 0.5 * strength;\n\t }\n\n\t if (randomize) {\n\t y += Math.random() * bump - bump * 0.5;\n\t } else if (i % 2) {\n\t y += bump * 0.5;\n\t } else {\n\t y -= bump * 0.5;\n\t }\n\n\t if (clamp) {\n\t if (y > 1) {\n\t y = 1;\n\t } else if (y < 0) {\n\t y = 0;\n\t }\n\t }\n\n\t a[cnt++] = {\n\t x: x,\n\t y: y\n\t };\n\t }\n\n\t a.sort(function (a, b) {\n\t return a.x - b.x;\n\t });\n\t pnt = new EasePoint(1, 1, null);\n\t i = points;\n\n\t while (i--) {\n\t obj = a[i];\n\t pnt = new EasePoint(obj.x, obj.y, pnt);\n\t }\n\n\t recent = new EasePoint(0, 0, pnt.t ? pnt : pnt.next);\n\t return function (p) {\n\t var pnt = recent;\n\n\t if (p > pnt.t) {\n\t while (pnt.next && p >= pnt.t) {\n\t pnt = pnt.next;\n\t }\n\n\t pnt = pnt.prev;\n\t } else {\n\t while (pnt.prev && p <= pnt.t) {\n\t pnt = pnt.prev;\n\t }\n\t }\n\n\t recent = pnt;\n\t return pnt.v + (p - pnt.t) / pnt.gap * pnt.c;\n\t };\n\t};\n\n\tvar SlowMo = _createSlowMo(0.7);\n\tSlowMo.ease = SlowMo;\n\tSlowMo.config = _createSlowMo;\n\tvar ExpoScaleEase = _createExpoScale(1, 2);\n\tExpoScaleEase.config = _createExpoScale;\n\tvar RoughEase = _createRoughEase();\n\tRoughEase.ease = RoughEase;\n\tRoughEase.config = _createRoughEase;\n\tvar EasePack = {\n\t SlowMo: SlowMo,\n\t RoughEase: RoughEase,\n\t ExpoScaleEase: ExpoScaleEase\n\t};\n\n\tfor (var p in EasePack) {\n\t EasePack[p].register = _initCore;\n\t EasePack[p].version = \"3.8.0\";\n\t}\n\n\t_getGSAP() && gsap.registerPlugin(SlowMo);\n\n\texports.EasePack = EasePack;\n\texports.ExpoScaleEase = ExpoScaleEase;\n\texports.RoughEase = RoughEase;\n\texports.SlowMo = SlowMo;\n\texports.default = EasePack;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n /*!\n * GSAP 3.8.0\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n */\n var _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n },\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n },\n _suppressOverwrites,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n },\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n },\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n },\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n },\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n },\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n },\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n },\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n },\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n _isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n _numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n _numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n _relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n _unitExp = /[\\d.+\\-=]+(?:e[-+]\\d*)*/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n },\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n },\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n },\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n },\n _emptyFunc = function _emptyFunc() {\n return 0;\n },\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n },\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n },\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n },\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n },\n _round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n },\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n },\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n },\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n },\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && _lazyRender();\n animation.render(time, suppressEvents, force);\n _lazyTweens.length && _lazyRender();\n },\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n },\n _passThrough = function _passThrough(p) {\n return p;\n },\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n },\n _setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" || p === \"ease\" || (obj[p] = defaults[p]);\n }\n },\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n },\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n },\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n },\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n },\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n },\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n },\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null;\n },\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n child._act = 0;\n },\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n },\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n },\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n },\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n },\n _animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n },\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n },\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n },\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation);\n }\n\n return animation;\n },\n _postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || child._initted && !child._dur) {\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n }\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime);\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum;\n }\n },\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n return timeline;\n },\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n },\n _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {\n _initTween(tween, totalTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [totalTime, suppressEvents];\n return 1;\n }\n },\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n },\n _isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n },\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n prevIteration = _animationCycle(tween._tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== prevIteration) {\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0);\n suppressEvents || (suppressEvents = totalTime && !prevIteration);\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n },\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (!child._dur && child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (!child._dur && child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n },\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n },\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n },\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n },\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n },\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1];\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n },\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n },\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n },\n getUnit = function getUnit(value) {\n if (typeof value !== \"string\") {\n return \"\";\n }\n\n var v = _unitExp.exec(value);\n\n return v ? value.substr(v.index + v[0].length) : \"\";\n },\n clamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n },\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n },\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n },\n toArray = function toArray(value, scope, leaveStrings) {\n return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n },\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n },\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n },\n distribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0;\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u;\n };\n },\n _roundModifier = function _roundModifier(v) {\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length);\n return function (raw) {\n var n = Math.round(parseFloat(raw) / v) * v * p;\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw));\n };\n },\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius;\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n },\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n },\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n },\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n },\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n },\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n },\n wrap = function wrap(min, max, value) {\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n },\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n },\n _replaceRandom = function _replaceRandom(value) {\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n },\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n },\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i]));\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n },\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n },\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n params,\n scope;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender();\n return params ? callback.apply(scope, params) : callback.call(scope);\n },\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(false);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n },\n _quickTween,\n _createPlugin = function _createPlugin(config) {\n config = !config.name && config[\"default\"] || config;\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics));\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics)));\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\";\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n },\n _255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n },\n _hue = function _hue(h, m1, m2) {\n h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n },\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1);\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n },\n _colorOrderData = function _colorOrderData(v) {\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n },\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n },\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n }(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1]));\n return true;\n }\n },\n _tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick));\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _raf = _win.requestAnimationFrame;\n }\n\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || 1 / _tinyNum;\n _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback) {\n _listeners.indexOf(callback) < 0 && _listeners.push(callback);\n\n _wake();\n },\n remove: function remove(callback) {\n var i;\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n }(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n },\n _easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n },\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n },\n _configEaseFromString = function _configEaseFromString(name) {\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n },\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n },\n _propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n },\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n },\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n },\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n },\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2;\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n },\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n };\n\n _forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n });\n\n _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n _insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n (function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n })(7.5625, 2.75);\n\n _insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n });\n\n _insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n });\n\n _insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n });\n\n _insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n };\n _defaults.ease = _easeMap[\"quad.out\"];\n\n _forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n });\n\n var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n };\n var Animation = function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this);\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n this._ts || (this._pTime = _totalTime);\n\n _lazySafeRender(this, _totalTime, suppressEvents);\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time;\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n };\n\n _proto.timeScale = function timeScale(value) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts;\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime;\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts;\n\n _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\n\n _setEnd(this);\n\n return this;\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime());\n this._ts = this._act = 0;\n } else {\n _wake();\n\n this._ts = this._rts;\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum));\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp;\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (animation._ts || 1);\n animation = animation._dp;\n }\n\n return time;\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0));\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null;\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n }();\n\n _setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n });\n\n var Timeline = function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n };\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime);\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration);\n\n if (tTime === tDur) {\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration);\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : dur;\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime;\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n return this;\n }\n\n dur = this._dur;\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n }\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale;\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0;\n }\n\n if (!prevTime && time && !suppressEvents) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum);\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time;\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum);\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n this._start = prevStart;\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this;\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []);\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate() {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate();\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev;\n child._dirty && child.totalDuration();\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n self._lock = 1;\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n }(Animation);\n\n _setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n });\n\n var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\";\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop);\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0;\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\";\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0;\n }\n\n this._pt = pt;\n return pt;\n },\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n end = pt;\n }\n }\n }\n\n if (parsedStart !== end) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n },\n _processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n },\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)];\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n },\n _overwritingTween,\n _initTween = function _initTween(tween, time) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n onUpdateParams = vars.onUpdateParams,\n callbackScope = vars.callbackScope,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.parent._targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards;\n\n if (!tl) {\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop];\n cleanVars = _copyExcluding(vars, _reservedProps);\n prevStartAt && prevStartAt.render(-1, true).kill();\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate,\n onUpdateParams: onUpdateParams,\n callbackScope: callbackScope,\n stagger: 0\n }, startAt)));\n\n time < 0 && !immediateRender && !autoRevert && tween._startAt.render(-1, true);\n\n if (immediateRender) {\n time > 0 && !autoRevert && (tween._startAt = 0);\n\n if (dur && time <= 0) {\n time && (tween._zTime = time);\n return;\n }\n } else if (autoRevert === false) {\n tween._startAt = 0;\n }\n } else if (runBackwards && dur) {\n if (prevStartAt) {\n !autoRevert && (tween._startAt = 0);\n } else {\n time && (immediateRender = false);\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n lazy: immediateRender && _isNotFalse(lazy),\n immediateRender: immediateRender,\n stagger: 0,\n parent: parent\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars);\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n time < 0 && tween._startAt.render(-1, true);\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum);\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender();\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time));\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween);\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten;\n },\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n },\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n },\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase\",\n _staggerPropsToSkip = (_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\").split(\",\");\n\n var Tween = function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = [];\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {}\n });\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n stagger ? parsedTargets.forEach(function (t, i) {\n return keyframes.forEach(function (frame, j) {\n return tl.to(t, frame, j ? \">\" : i * stagger);\n });\n }) : keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n } else {\n l = parsedTargets.length;\n staggerFunc = stagger ? distribute(stagger) : _emptyFunc;\n\n if (_isObject(stagger)) {\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = {};\n\n for (p in vars) {\n if (_staggerPropsToSkip.indexOf(p) < 0) {\n copy[p] = vars[p];\n }\n }\n\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i];\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0;\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0;\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum;\n\n _this3.render(Math.max(0, -delay));\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) {\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration);\n\n if (tTime === tDur) {\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted) {\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n this._lock = force = 1;\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\n this._tTime = 0;\n return this;\n }\n\n if (dur !== this._dur) {\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1;\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force);\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate() {\n this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate();\n return _Animation2.prototype.invalidate.call(this);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this);\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1);\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this);\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n });\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n }(Animation);\n\n _setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n });\n\n _forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n });\n\n var _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n },\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n },\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n },\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n },\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n },\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n },\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n },\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n s = data.b;\n } else if (ratio === 1 && data.e) {\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s;\n pt = pt._next;\n }\n\n s += data.c;\n }\n\n data.set(data.t, data.p, s, data);\n },\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n },\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n },\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n },\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n },\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last;\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n };\n\n var PropTween = function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set;\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target;\n this.tween = tween;\n };\n\n return PropTween;\n }();\n\n _forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n });\n\n _globals.TweenMax = _globals.TweenLite = Tween;\n _globals.TimelineLite = _globals.TimelineMax = Timeline;\n _globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n });\n _config.stringFilter = _colorStringFilter;\n var _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]);\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0;\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n };\n\n _forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n });\n\n _ticker.add(Timeline.updateRoot);\n\n _quickTween = _gsap.to({}, {\n duration: 0\n });\n\n var _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n },\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n },\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n });\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n };\n\n var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt;\n\n for (p in vars) {\n pt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt && (pt.op = p);\n\n this._props.push(p);\n }\n }\n }, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i]);\n }\n }\n }, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap;\n Tween.version = Timeline.version = gsap.version = \"3.8.0\";\n _coreReady = 1;\n _windowExists() && _wake();\n var Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\n\n var _win$1,\n _doc$1,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _windowExists$1 = function _windowExists() {\n return typeof window !== \"undefined\";\n },\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum$1 = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(?:left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n },\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n },\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n },\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n },\n _renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n },\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n },\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n },\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n },\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n },\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n },\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n },\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n },\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n },\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc$1.createElementNS ? _doc$1.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc$1.createElement(type);\n return e.style ? e : _doc$1.createElement(type);\n },\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\";\n },\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n },\n _initCore = function _initCore() {\n if (_windowExists$1() && window.document) {\n _win$1 = window;\n _doc$1 = _win$1.document;\n _docElement = _doc$1.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\";\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _pluginInitted = 1;\n }\n },\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox;\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n },\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n },\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox();\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n },\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n },\n _removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n if (property.substr(0, 2) === \"ms\" || property.substr(0, 6) === \"webkit\") {\n property = \"-\" + property;\n }\n\n style.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n style.removeAttribute(property);\n }\n }\n },\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n },\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n },\n _convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc$1 || !parent.appendChild) {\n parent = _doc$1.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {\n return _round(curValue / cache.width * amount);\n } else {\n (toPercent || curUnit === \"%\") && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\");\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n },\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0);\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n },\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n if (!start || start === \"none\") {\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\");\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n relative,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\";\n end += \"\";\n\n if (end === \"auto\") {\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n target.style[prop] = start;\n }\n\n a = [start, end];\n\n _colorStringFilter(a);\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n relative = endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n if (relative) {\n endValue = endValue.substr(2);\n }\n\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n }\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n s: startNum,\n c: relative ? relative * endNum : endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\";\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0);\n this._pt = pt;\n return pt;\n },\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n },\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n },\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1);\n\n cache.uncache = 1;\n }\n }\n }\n },\n _specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n },\n _identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n },\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n },\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix;\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n addedToDOM = 1;\n nextSibling = target.nextSibling;\n\n _docElement.appendChild(target);\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n },\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin);\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y;\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\";\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n },\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n t1 = (!cache.uncache || origin === \"0px 0px\") && !uncache && target.getAttribute(\"data-svg-origin\");\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0];\n b = matrix[1];\n c = matrix[2];\n d = matrix[3];\n x = a12 = matrix[4];\n y = a22 = matrix[5];\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0;\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n }\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n }\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n }\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n cache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n },\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n },\n _addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n },\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n },\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true;\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n },\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp);\n },\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = relative ? endNum * relative : endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum$1) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum$1) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n },\n _assign = function _assign(target, source) {\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n },\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n };\n\n _forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n });\n\n var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority;\n _pluginInitted || _initCore();\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n p in _config.units && !getUnit(startValue) && (startValue += _config.units[p]);\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p));\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n startNum = 0;\n }\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps;\n\n if (isTransformRelated) {\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform);\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1);\n transformPropTween.dep = 1;\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? relative * endNum : endNum - cache.scaleY) || 0);\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n endValue = _convertKeywordsToPercentages(endValue);\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0;\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, endValue, relative);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0);\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n this.add(target, p, startValue || target[p], endValue, index, targets);\n } else {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, endValue);\n }\n\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n };\n gsap.utils.checkPrefix = _checkPropPrefix;\n\n (function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n })(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n _forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n });\n\n gsap.registerPlugin(CSSPlugin);\n\n var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n TweenMaxWithCSS = gsapWithCSS.core.Tween;\n\n exports.Back = Back;\n exports.Bounce = Bounce;\n exports.CSSPlugin = CSSPlugin;\n exports.Circ = Circ;\n exports.Cubic = Cubic;\n exports.Elastic = Elastic;\n exports.Expo = Expo;\n exports.Linear = Linear;\n exports.Power0 = Power0;\n exports.Power1 = Power1;\n exports.Power2 = Power2;\n exports.Power3 = Power3;\n exports.Power4 = Power4;\n exports.Quad = Quad;\n exports.Quart = Quart;\n exports.Quint = Quint;\n exports.Sine = Sine;\n exports.SteppedEase = SteppedEase;\n exports.Strong = Strong;\n exports.TimelineLite = Timeline;\n exports.TimelineMax = Timeline;\n exports.TweenLite = Tween;\n exports.TweenMax = TweenMaxWithCSS;\n exports.default = gsapWithCSS;\n exports.gsap = gsapWithCSS;\n\n if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;}\n\n})));\n",null,"/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n try {\n var found = this[i].querySelectorAll(selector);\n } catch (err) {\n console.log(selector);\n }\n\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n })(),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\n\nlet device;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!device) {\n device = calcDevice(overrides);\n }\n return device;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getDocument, getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n // eslint-disable-next-line\n const HTMLElement = typeof window !== 'undefined' ? window.HTMLElement : undefined;\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (\n nextSource !== undefined &&\n nextSource !== null &&\n !(HTMLElement && nextSource instanceof HTMLElement)\n ) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n const document = getDocument();\n if (createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n const element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n return params;\n}\n\nexport {\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n bindModuleMethods,\n getComputedStyle,\n classesToSelector,\n createElementIfNotDefined,\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nconst supportsResizeObserver = () => {\n const window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init(swiper) {\n const window = getWindow();\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n }\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy(swiper) {\n const window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Observer = {\n attach(target, options = {}) {\n const window = getWindow();\n const swiper = this;\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n observer: {\n ...Observer,\n observers: [],\n },\n });\n },\n on: {\n init(swiper) {\n swiper.observer.init();\n },\n destroy(swiper) {\n swiper.observer.destroy();\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root componenet\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n if (\n params.noSwiping &&\n $targetEl.closest(\n params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`,\n )[0]\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../../utils/utils';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if (\n (params.simulateTouch && !device.ios && !device.android) ||\n (params.simulateTouch && !support.touch && device.ios)\n ) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on(\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n const document = getDocument();\n\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n const passiveListener =\n touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if (\n (params.simulateTouch && !device.ios && !device.android) ||\n (params.simulateTouch && !support.touch && device.ios)\n ) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off(\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n );\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","function checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition =\n swiper.slides.length > 0 &&\n params.slidesOffsetBefore +\n params.spaceBetween * (swiper.slides.length - 1) +\n swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\n\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\n\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n modular,\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object' &&\n !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n extend(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n // Install Modules\n swiper.useModules();\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const classes = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper-container') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', classes.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const { params, slides, slidesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n const name = module.name || `${Object.keys(Swiper.prototype.modules).length}_${now()}`;\n Swiper.prototype.modules[name] = module;\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import { extend } from '../../utils/utils';\n\nexport default {\n useParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n },\n};\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { extend } from '../../../utils/utils';\n\nexport default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { extend } from '../../../utils/utils';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (\n Math.floor(slidesLength / params.slidesPerColumn) ===\n slidesLength / swiper.params.slidesPerColumn\n ) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows =\n Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(\n slidesNumberEvenToRows,\n params.slidesPerView * params.slidesPerColumn,\n );\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(\n Math.ceil(\n (slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) /\n slidesPerColumn,\n ),\n params.slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? params.spaceBetween && `${params.spaceBetween}px` : '',\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize =\n Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress =\n (offsetCenter +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slide.swiperSlideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import { extend } from '../../../utils/utils';\n\nexport default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (\n params.watchSlidesProgress ||\n params.watchSlidesVisibility ||\n (params.centeredSlides && params.autoHeight)\n )\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","import { extend } from '../../../utils/utils';\n\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import { getTranslate } from '../../../utils/utils';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","export default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","export default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGird = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGird &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGird &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, enabled } = swiper;\n if (!enabled) return swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper.el.style.cursor = '';\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import { extend } from '../../../utils/utils';\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n [\n 'slidesPerView',\n 'spaceBetween',\n 'slidesPerGroup',\n 'slidesPerGroupSkip',\n 'slidesPerColumn',\n ].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': support.pointerEvents && !support.touch },\n { 'free-mode': params.freeMode },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'multirow': params.slidesPerColumn > 1 },\n { 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n virtual: {\n ...Virtual,\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n if (!swiper.enabled) return;\n const window = getWindow();\n const document = getDocument();\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n const document = getDocument();\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n const document = getDocument();\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n keyboard: {\n enabled: false,\n ...Keyboard,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy(swiper) {\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { now, nextTick, bindModuleMethods } from '../../utils/utils';\n\nfunction isEventSupported() {\n const document = getDocument();\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (\n !isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n const window = getWindow();\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n let disableParentSwiper = true;\n const swiper = this;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n const window = getWindow();\n\n if (\n this.params.mousewheel.thresholdDelta &&\n newEvent.delta < this.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n this.params.mousewheel.thresholdTime &&\n now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n mousewheel: {\n enabled: false,\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n\n enable: Mousewheel.enable,\n disable: Mousewheel.disable,\n handle: Mousewheel.handle,\n handleMouseEnter: Mousewheel.handleMouseEnter,\n handleMouseLeave: Mousewheel.handleMouseLeave,\n animateSlider: Mousewheel.animateSlider,\n releaseScroll: Mousewheel.releaseScroll,\n },\n });\n },\n on: {\n init(swiper) {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy(swiper) {\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\n\nconst Navigation = {\n toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n const toggleEl = swiper.navigation.toggleEl;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper.$el,\n swiper.params.navigation,\n swiper.params.createElements,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.nextEl === 'string' &&\n $nextEl.length > 1 &&\n swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.prevEl === 'string' &&\n $prevEl.length > 1 &&\n swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n navigation: {\n ...Navigation,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': (swiper) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click(swiper, e) {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport {\n extend,\n bindModuleMethods,\n classesToSelector,\n createElementIfNotDefined,\n} from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets\n .eq(0)\n [swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n `${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`,\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 -\n midIndex * swiper.pagination.bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n swiper.params.pagination = createElementIfNotDefined(\n swiper.$el,\n swiper.params.pagination,\n swiper.params.createElements,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n pagination: {\n dynamicBulletIndex: 0,\n ...Pagination,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy(swiper) {\n swiper.pagination.destroy();\n },\n 'enable disable': (swiper) => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n },\n click(swiper, e) {\n const targetEl = e.target;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n swiper.pagination.$el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, nextTick, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { dragSize, trackSize, $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el, dragSize, trackSize, dragStartPos } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (scrollbar.getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? scrollbar.getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const document = getDocument();\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n if (!support.touch) {\n target.addEventListener(\n touchEventsDesktop.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n document.addEventListener(\n touchEventsDesktop.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n document.addEventListener(\n touchEventsDesktop.end,\n swiper.scrollbar.onDragEnd,\n passiveListener,\n );\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const document = getDocument();\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n if (!support.touch) {\n target.removeEventListener(\n touchEventsDesktop.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n document.removeEventListener(\n touchEventsDesktop.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n document.removeEventListener(\n touchEventsDesktop.end,\n swiper.scrollbar.onDragEnd,\n passiveListener,\n );\n } else {\n target.removeEventListener(\n touchEventsTouch.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n target.removeEventListener(\n touchEventsTouch.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n $swiperEl,\n swiper.params.scrollbar,\n swiper.params.createElements,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n scrollbar: {\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n ...Scrollbar,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update(swiper) {\n swiper.scrollbar.updateSize();\n },\n resize(swiper) {\n swiper.scrollbar.updateSize();\n },\n observerUpdate(swiper) {\n swiper.scrollbar.updateSize();\n },\n setTranslate(swiper) {\n swiper.scrollbar.setTranslate();\n },\n setTransition(swiper, duration) {\n swiper.scrollbar.setTransition(duration);\n },\n 'enable disable': (swiper) => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy(swiper) {\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n parallax: {\n ...Parallax,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(swiper, duration) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods, getTranslate } from '../../utils/utils';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const gesture = zoom.gesture;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const device = swiper.device;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n const window = getWindow();\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n\n toggleGestures(method) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { slideSelector: selector, passiveListener: passive } = zoom;\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n },\n enableGestures() {\n if (this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = true;\n this.zoom.toggleGestures('on');\n },\n disableGestures() {\n if (!this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = false;\n this.zoom.toggleGestures('off');\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const support = swiper.support;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n swiper.zoom.passiveListener = passiveListener;\n swiper.zoom.slideSelector = slideSelector;\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n zoom.onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n zoom.onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.end,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n zoom.onTouchMove,\n activeListenerWithCapture,\n );\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n\n swiper.zoom.enabled = false;\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n zoom.onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n zoom.onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.end,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n zoom.onTouchMove,\n activeListenerWithCapture,\n );\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n\n bindModuleMethods(swiper, {\n zoom: {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n ...Zoom,\n },\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl\n ? swiper.zoom.gesture.$imageEl[0]\n : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl\n ? swiper.zoom.gesture.$slideEl[0]\n : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy(swiper) {\n swiper.zoom.disable();\n },\n touchStart(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(swiper, e) {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n checkInViewOnLoad() {\n const window = getWindow();\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n swiper.lazy.load();\n $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n } else if (!swiper.lazy.scrollHandlerAttached) {\n swiper.lazy.scrollHandlerAttached = true;\n $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n lazy: {\n initialImageLoaded: false,\n ...Lazy,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n if (swiper.params.lazy.checkInView) {\n swiper.lazy.checkInViewOnLoad();\n } else {\n swiper.lazy.load();\n }\n }\n },\n scroll(swiper) {\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n 'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart(swiper) {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)\n ) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange(swiper) {\n const {\n lazy,\n cssMode,\n watchSlidesVisibility,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio,\n } = swiper.params;\n if (\n lazy.enabled &&\n (cssMode ||\n ((watchSlidesVisibility || watchSlidesProgress) &&\n (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n controller: {\n control: swiper.params.controller.control,\n ...Controller,\n },\n });\n },\n on: {\n update(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods, classesToSelector } from '../../utils/utils';\n\nconst A11y = {\n getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n },\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n return $el;\n },\n addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n addElId($el, id) {\n $el.attr('id', id);\n return $el;\n },\n addElLive($el, live) {\n $el.attr('aria-live', live);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const swiper = this;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.a11y;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${swiper.a11y.getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n swiper.a11y.addElId($wrapperEl, wrapperId);\n swiper.a11y.addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n swiper.a11y.addElRole($(swiper.slides), params.slideRole);\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, $slideEl.index() + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, swiper.slides.length);\n swiper.a11y.addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n swiper.a11y.makeElFocusable($nextEl);\n if ($nextEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($nextEl, 'button');\n $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n swiper.a11y.addElControls($nextEl, wrapperId);\n }\n if ($prevEl && $prevEl.length) {\n swiper.a11y.makeElFocusable($prevEl);\n if ($prevEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($prevEl, 'button');\n $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n swiper.a11y.addElControls($prevEl, wrapperId);\n }\n\n // Pagination\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n swiper.a11y.onEnterOrSpaceKey,\n );\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0)\n swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n // Pagination\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n swiper.a11y.onEnterOrSpaceKey,\n );\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n a11y: {\n ...A11y,\n liveRegion: $(\n ``,\n ),\n },\n });\n },\n on: {\n afterInit(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues(swiper.params.url);\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues(swiper.params.url);\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues(urlOverride) {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n const window = getWindow();\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n history: {\n ...History,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': (swiper) => {\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange(swiper) {\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const document = getDocument();\n swiper.emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n const window = getWindow();\n const document = getDocument();\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n swiper.emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n const window = getWindow();\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n hashNavigation: {\n initialized: false,\n ...HashNavigation,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': (swiper) => {\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange(swiper) {\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n }\n },\n onVisibilityChange() {\n const swiper = this;\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n const swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n onMouseEnter() {\n const swiper = this;\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n },\n onMouseLeave() {\n const swiper = this;\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n },\n attachMouseEvents() {\n const swiper = this;\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);\n }\n },\n detachMouseEvents() {\n const swiper = this;\n swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n autoplay: {\n ...Autoplay,\n running: false,\n paused: false,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n const document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n swiper.autoplay.attachMouseEvents();\n }\n },\n beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd(swiper) {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n swiper.autoplay.run();\n }\n },\n destroy(swiper) {\n swiper.autoplay.detachMouseEvents();\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: {\n ...Fade,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n cubeEffect: {\n ...Cube,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(swiper, duration) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl.transform(\n `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`,\n );\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n flipEffect: {\n ...Flip,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(swiper, duration) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(\n `
`,\n );\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(\n `
`,\n );\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n coverflowEffect: {\n ...Coverflow,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(swiper, duration) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(\n extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }),\n );\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n thumbs: {\n swiper: null,\n initialized: false,\n ...Thumbs,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(swiper, duration) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy(swiper) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n //INSTALL_COMPONENTS\n];\n\nSwiper.use(components);\n\n//EXPORT\n","/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.THREE = {}));\n}(this, (function (exports) { 'use strict';\n\n\tconst REVISION = '132';\n\tconst MOUSE = {\n\t\tLEFT: 0,\n\t\tMIDDLE: 1,\n\t\tRIGHT: 2,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2\n\t};\n\tconst TOUCH = {\n\t\tROTATE: 0,\n\t\tPAN: 1,\n\t\tDOLLY_PAN: 2,\n\t\tDOLLY_ROTATE: 3\n\t};\n\tconst CullFaceNone = 0;\n\tconst CullFaceBack = 1;\n\tconst CullFaceFront = 2;\n\tconst CullFaceFrontBack = 3;\n\tconst BasicShadowMap = 0;\n\tconst PCFShadowMap = 1;\n\tconst PCFSoftShadowMap = 2;\n\tconst VSMShadowMap = 3;\n\tconst FrontSide = 0;\n\tconst BackSide = 1;\n\tconst DoubleSide = 2;\n\tconst FlatShading = 1;\n\tconst SmoothShading = 2;\n\tconst NoBlending = 0;\n\tconst NormalBlending = 1;\n\tconst AdditiveBlending = 2;\n\tconst SubtractiveBlending = 3;\n\tconst MultiplyBlending = 4;\n\tconst CustomBlending = 5;\n\tconst AddEquation = 100;\n\tconst SubtractEquation = 101;\n\tconst ReverseSubtractEquation = 102;\n\tconst MinEquation = 103;\n\tconst MaxEquation = 104;\n\tconst ZeroFactor = 200;\n\tconst OneFactor = 201;\n\tconst SrcColorFactor = 202;\n\tconst OneMinusSrcColorFactor = 203;\n\tconst SrcAlphaFactor = 204;\n\tconst OneMinusSrcAlphaFactor = 205;\n\tconst DstAlphaFactor = 206;\n\tconst OneMinusDstAlphaFactor = 207;\n\tconst DstColorFactor = 208;\n\tconst OneMinusDstColorFactor = 209;\n\tconst SrcAlphaSaturateFactor = 210;\n\tconst NeverDepth = 0;\n\tconst AlwaysDepth = 1;\n\tconst LessDepth = 2;\n\tconst LessEqualDepth = 3;\n\tconst EqualDepth = 4;\n\tconst GreaterEqualDepth = 5;\n\tconst GreaterDepth = 6;\n\tconst NotEqualDepth = 7;\n\tconst MultiplyOperation = 0;\n\tconst MixOperation = 1;\n\tconst AddOperation = 2;\n\tconst NoToneMapping = 0;\n\tconst LinearToneMapping = 1;\n\tconst ReinhardToneMapping = 2;\n\tconst CineonToneMapping = 3;\n\tconst ACESFilmicToneMapping = 4;\n\tconst CustomToneMapping = 5;\n\tconst UVMapping = 300;\n\tconst CubeReflectionMapping = 301;\n\tconst CubeRefractionMapping = 302;\n\tconst EquirectangularReflectionMapping = 303;\n\tconst EquirectangularRefractionMapping = 304;\n\tconst CubeUVReflectionMapping = 306;\n\tconst CubeUVRefractionMapping = 307;\n\tconst RepeatWrapping = 1000;\n\tconst ClampToEdgeWrapping = 1001;\n\tconst MirroredRepeatWrapping = 1002;\n\tconst NearestFilter = 1003;\n\tconst NearestMipmapNearestFilter = 1004;\n\tconst NearestMipMapNearestFilter = 1004;\n\tconst NearestMipmapLinearFilter = 1005;\n\tconst NearestMipMapLinearFilter = 1005;\n\tconst LinearFilter = 1006;\n\tconst LinearMipmapNearestFilter = 1007;\n\tconst LinearMipMapNearestFilter = 1007;\n\tconst LinearMipmapLinearFilter = 1008;\n\tconst LinearMipMapLinearFilter = 1008;\n\tconst UnsignedByteType = 1009;\n\tconst ByteType = 1010;\n\tconst ShortType = 1011;\n\tconst UnsignedShortType = 1012;\n\tconst IntType = 1013;\n\tconst UnsignedIntType = 1014;\n\tconst FloatType = 1015;\n\tconst HalfFloatType = 1016;\n\tconst UnsignedShort4444Type = 1017;\n\tconst UnsignedShort5551Type = 1018;\n\tconst UnsignedShort565Type = 1019;\n\tconst UnsignedInt248Type = 1020;\n\tconst AlphaFormat = 1021;\n\tconst RGBFormat = 1022;\n\tconst RGBAFormat = 1023;\n\tconst LuminanceFormat = 1024;\n\tconst LuminanceAlphaFormat = 1025;\n\tconst RGBEFormat = RGBAFormat;\n\tconst DepthFormat = 1026;\n\tconst DepthStencilFormat = 1027;\n\tconst RedFormat = 1028;\n\tconst RedIntegerFormat = 1029;\n\tconst RGFormat = 1030;\n\tconst RGIntegerFormat = 1031;\n\tconst RGBIntegerFormat = 1032;\n\tconst RGBAIntegerFormat = 1033;\n\tconst RGB_S3TC_DXT1_Format = 33776;\n\tconst RGBA_S3TC_DXT1_Format = 33777;\n\tconst RGBA_S3TC_DXT3_Format = 33778;\n\tconst RGBA_S3TC_DXT5_Format = 33779;\n\tconst RGB_PVRTC_4BPPV1_Format = 35840;\n\tconst RGB_PVRTC_2BPPV1_Format = 35841;\n\tconst RGBA_PVRTC_4BPPV1_Format = 35842;\n\tconst RGBA_PVRTC_2BPPV1_Format = 35843;\n\tconst RGB_ETC1_Format = 36196;\n\tconst RGB_ETC2_Format = 37492;\n\tconst RGBA_ETC2_EAC_Format = 37496;\n\tconst RGBA_ASTC_4x4_Format = 37808;\n\tconst RGBA_ASTC_5x4_Format = 37809;\n\tconst RGBA_ASTC_5x5_Format = 37810;\n\tconst RGBA_ASTC_6x5_Format = 37811;\n\tconst RGBA_ASTC_6x6_Format = 37812;\n\tconst RGBA_ASTC_8x5_Format = 37813;\n\tconst RGBA_ASTC_8x6_Format = 37814;\n\tconst RGBA_ASTC_8x8_Format = 37815;\n\tconst RGBA_ASTC_10x5_Format = 37816;\n\tconst RGBA_ASTC_10x6_Format = 37817;\n\tconst RGBA_ASTC_10x8_Format = 37818;\n\tconst RGBA_ASTC_10x10_Format = 37819;\n\tconst RGBA_ASTC_12x10_Format = 37820;\n\tconst RGBA_ASTC_12x12_Format = 37821;\n\tconst RGBA_BPTC_Format = 36492;\n\tconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\n\tconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\n\tconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\n\tconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\n\tconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\n\tconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\n\tconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\n\tconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\n\tconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\n\tconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\n\tconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\n\tconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\n\tconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\n\tconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\n\tconst LoopOnce = 2200;\n\tconst LoopRepeat = 2201;\n\tconst LoopPingPong = 2202;\n\tconst InterpolateDiscrete = 2300;\n\tconst InterpolateLinear = 2301;\n\tconst InterpolateSmooth = 2302;\n\tconst ZeroCurvatureEnding = 2400;\n\tconst ZeroSlopeEnding = 2401;\n\tconst WrapAroundEnding = 2402;\n\tconst NormalAnimationBlendMode = 2500;\n\tconst AdditiveAnimationBlendMode = 2501;\n\tconst TrianglesDrawMode = 0;\n\tconst TriangleStripDrawMode = 1;\n\tconst TriangleFanDrawMode = 2;\n\tconst LinearEncoding = 3000;\n\tconst sRGBEncoding = 3001;\n\tconst GammaEncoding = 3007;\n\tconst RGBEEncoding = 3002;\n\tconst LogLuvEncoding = 3003;\n\tconst RGBM7Encoding = 3004;\n\tconst RGBM16Encoding = 3005;\n\tconst RGBDEncoding = 3006;\n\tconst BasicDepthPacking = 3200;\n\tconst RGBADepthPacking = 3201;\n\tconst TangentSpaceNormalMap = 0;\n\tconst ObjectSpaceNormalMap = 1;\n\tconst ZeroStencilOp = 0;\n\tconst KeepStencilOp = 7680;\n\tconst ReplaceStencilOp = 7681;\n\tconst IncrementStencilOp = 7682;\n\tconst DecrementStencilOp = 7683;\n\tconst IncrementWrapStencilOp = 34055;\n\tconst DecrementWrapStencilOp = 34056;\n\tconst InvertStencilOp = 5386;\n\tconst NeverStencilFunc = 512;\n\tconst LessStencilFunc = 513;\n\tconst EqualStencilFunc = 514;\n\tconst LessEqualStencilFunc = 515;\n\tconst GreaterStencilFunc = 516;\n\tconst NotEqualStencilFunc = 517;\n\tconst GreaterEqualStencilFunc = 518;\n\tconst AlwaysStencilFunc = 519;\n\tconst StaticDrawUsage = 35044;\n\tconst DynamicDrawUsage = 35048;\n\tconst StreamDrawUsage = 35040;\n\tconst StaticReadUsage = 35045;\n\tconst DynamicReadUsage = 35049;\n\tconst StreamReadUsage = 35041;\n\tconst StaticCopyUsage = 35046;\n\tconst DynamicCopyUsage = 35050;\n\tconst StreamCopyUsage = 35042;\n\tconst GLSL1 = '100';\n\tconst GLSL3 = '300 es';\n\n\t/**\n\t * https://github.com/mrdoob/eventdispatcher.js/\n\t */\n\tclass EventDispatcher {\n\t\taddEventListener(type, listener) {\n\t\t\tif (this._listeners === undefined) this._listeners = {};\n\t\t\tconst listeners = this._listeners;\n\n\t\t\tif (listeners[type] === undefined) {\n\t\t\t\tlisteners[type] = [];\n\t\t\t}\n\n\t\t\tif (listeners[type].indexOf(listener) === -1) {\n\t\t\t\tlisteners[type].push(listener);\n\t\t\t}\n\t\t}\n\n\t\thasEventListener(type, listener) {\n\t\t\tif (this._listeners === undefined) return false;\n\t\t\tconst listeners = this._listeners;\n\t\t\treturn listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1;\n\t\t}\n\n\t\tremoveEventListener(type, listener) {\n\t\t\tif (this._listeners === undefined) return;\n\t\t\tconst listeners = this._listeners;\n\t\t\tconst listenerArray = listeners[type];\n\n\t\t\tif (listenerArray !== undefined) {\n\t\t\t\tconst index = listenerArray.indexOf(listener);\n\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tlistenerArray.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdispatchEvent(event) {\n\t\t\tif (this._listeners === undefined) return;\n\t\t\tconst listeners = this._listeners;\n\t\t\tconst listenerArray = listeners[event.type];\n\n\t\t\tif (listenerArray !== undefined) {\n\t\t\t\tevent.target = this; // Make a copy, in case listeners are removed while iterating.\n\n\t\t\t\tconst array = listenerArray.slice(0);\n\n\t\t\t\tfor (let i = 0, l = array.length; i < l; i++) {\n\t\t\t\t\tarray[i].call(this, event);\n\t\t\t\t}\n\n\t\t\t\tevent.target = null;\n\t\t\t}\n\t\t}\n\n\t}\n\n\tconst _lut = [];\n\n\tfor (let i = 0; i < 256; i++) {\n\t\t_lut[i] = (i < 16 ? '0' : '') + i.toString(16);\n\t}\n\n\tlet _seed = 1234567;\n\tconst DEG2RAD = Math.PI / 180;\n\tconst RAD2DEG = 180 / Math.PI; // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\tfunction generateUUID() {\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[d0 & 0xff] + _lut[d0 >> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff] + '-' + _lut[d1 & 0xff] + _lut[d1 >> 8 & 0xff] + '-' + _lut[d1 >> 16 & 0x0f | 0x40] + _lut[d1 >> 24 & 0xff] + '-' + _lut[d2 & 0x3f | 0x80] + _lut[d2 >> 8 & 0xff] + '-' + _lut[d2 >> 16 & 0xff] + _lut[d2 >> 24 & 0xff] + _lut[d3 & 0xff] + _lut[d3 >> 8 & 0xff] + _lut[d3 >> 16 & 0xff] + _lut[d3 >> 24 & 0xff]; // .toUpperCase() here flattens concatenated strings to save heap memory space.\n\n\t\treturn uuid.toUpperCase();\n\t}\n\n\tfunction clamp(value, min, max) {\n\t\treturn Math.max(min, Math.min(max, value));\n\t} // compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\n\tfunction euclideanModulo(n, m) {\n\t\treturn (n % m + m) % m;\n\t} // Linear mapping from range to range \n\n\n\tfunction mapLinear(x, a1, a2, b1, b2) {\n\t\treturn b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n\t} // https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\n\n\n\tfunction inverseLerp(x, y, value) {\n\t\tif (x !== y) {\n\t\t\treturn (value - x) / (y - x);\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t} // https://en.wikipedia.org/wiki/Linear_interpolation\n\n\n\tfunction lerp(x, y, t) {\n\t\treturn (1 - t) * x + t * y;\n\t} // http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\n\n\n\tfunction damp(x, y, lambda, dt) {\n\t\treturn lerp(x, y, 1 - Math.exp(-lambda * dt));\n\t} // https://www.desmos.com/calculator/vcsjnyz7x4\n\n\n\tfunction pingpong(x, length = 1) {\n\t\treturn length - Math.abs(euclideanModulo(x, length * 2) - length);\n\t} // http://en.wikipedia.org/wiki/Smoothstep\n\n\n\tfunction smoothstep(x, min, max) {\n\t\tif (x <= min) return 0;\n\t\tif (x >= max) return 1;\n\t\tx = (x - min) / (max - min);\n\t\treturn x * x * (3 - 2 * x);\n\t}\n\n\tfunction smootherstep(x, min, max) {\n\t\tif (x <= min) return 0;\n\t\tif (x >= max) return 1;\n\t\tx = (x - min) / (max - min);\n\t\treturn x * x * x * (x * (x * 6 - 15) + 10);\n\t} // Random integer from interval\n\n\n\tfunction randInt(low, high) {\n\t\treturn low + Math.floor(Math.random() * (high - low + 1));\n\t} // Random float from interval\n\n\n\tfunction randFloat(low, high) {\n\t\treturn low + Math.random() * (high - low);\n\t} // Random float from <-range/2, range/2> interval\n\n\n\tfunction randFloatSpread(range) {\n\t\treturn range * (0.5 - Math.random());\n\t} // Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\n\tfunction seededRandom(s) {\n\t\tif (s !== undefined) _seed = s % 2147483647; // Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\t\treturn (_seed - 1) / 2147483646;\n\t}\n\n\tfunction degToRad(degrees) {\n\t\treturn degrees * DEG2RAD;\n\t}\n\n\tfunction radToDeg(radians) {\n\t\treturn radians * RAD2DEG;\n\t}\n\n\tfunction isPowerOfTwo(value) {\n\t\treturn (value & value - 1) === 0 && value !== 0;\n\t}\n\n\tfunction ceilPowerOfTwo(value) {\n\t\treturn Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n\t}\n\n\tfunction floorPowerOfTwo(value) {\n\t\treturn Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n\t}\n\n\tfunction setQuaternionFromProperEuler(q, a, b, c, order) {\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\t\tconst c2 = cos(b / 2);\n\t\tconst s2 = sin(b / 2);\n\t\tconst c13 = cos((a + c) / 2);\n\t\tconst s13 = sin((a + c) / 2);\n\t\tconst c1_3 = cos((a - c) / 2);\n\t\tconst s1_3 = sin((a - c) / 2);\n\t\tconst c3_1 = cos((c - a) / 2);\n\t\tconst s3_1 = sin((c - a) / 2);\n\n\t\tswitch (order) {\n\t\t\tcase 'XYX':\n\t\t\t\tq.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order);\n\t\t}\n\t}\n\n\tvar MathUtils = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tDEG2RAD: DEG2RAD,\n\t\tRAD2DEG: RAD2DEG,\n\t\tgenerateUUID: generateUUID,\n\t\tclamp: clamp,\n\t\teuclideanModulo: euclideanModulo,\n\t\tmapLinear: mapLinear,\n\t\tinverseLerp: inverseLerp,\n\t\tlerp: lerp,\n\t\tdamp: damp,\n\t\tpingpong: pingpong,\n\t\tsmoothstep: smoothstep,\n\t\tsmootherstep: smootherstep,\n\t\trandInt: randInt,\n\t\trandFloat: randFloat,\n\t\trandFloatSpread: randFloatSpread,\n\t\tseededRandom: seededRandom,\n\t\tdegToRad: degToRad,\n\t\tradToDeg: radToDeg,\n\t\tisPowerOfTwo: isPowerOfTwo,\n\t\tceilPowerOfTwo: ceilPowerOfTwo,\n\t\tfloorPowerOfTwo: floorPowerOfTwo,\n\t\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler\n\t});\n\n\tclass Vector2 {\n\t\tconstructor(x = 0, y = 0) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t}\n\n\t\tget width() {\n\t\t\treturn this.x;\n\t\t}\n\n\t\tset width(value) {\n\t\t\tthis.x = value;\n\t\t}\n\n\t\tget height() {\n\t\t\treturn this.y;\n\t\t}\n\n\t\tset height(value) {\n\t\t\tthis.y = value;\n\t\t}\n\n\t\tset(x, y) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetScalar(scalar) {\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetX(x) {\n\t\t\tthis.x = x;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetY(y) {\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetComponent(index, value) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\tthis.x = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\t\t\t\t\tthis.y = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetComponent(index) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn this.x;\n\n\t\t\t\tcase 1:\n\t\t\t\t\treturn this.y;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.x, this.y);\n\t\t}\n\n\t\tcopy(v) {\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tadd(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n\t\t\t\treturn this.addVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScalar(s) {\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\treturn this;\n\t\t}\n\n\t\taddVectors(a, b) {\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScaledVector(v, s) {\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsub(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n\t\t\t\treturn this.subVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubScalar(s) {\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubVectors(a, b) {\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(v) {\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(scalar) {\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tdivide(v) {\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tdivideScalar(scalar) {\n\t\t\treturn this.multiplyScalar(1 / scalar);\n\t\t}\n\n\t\tapplyMatrix3(m) {\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y;\n\t\t\tconst e = m.elements;\n\t\t\tthis.x = e[0] * x + e[3] * y + e[6];\n\t\t\tthis.y = e[1] * x + e[4] * y + e[7];\n\t\t\treturn this;\n\t\t}\n\n\t\tmin(v) {\n\t\t\tthis.x = Math.min(this.x, v.x);\n\t\t\tthis.y = Math.min(this.y, v.y);\n\t\t\treturn this;\n\t\t}\n\n\t\tmax(v) {\n\t\t\tthis.x = Math.max(this.x, v.x);\n\t\t\tthis.y = Math.max(this.y, v.y);\n\t\t\treturn this;\n\t\t}\n\n\t\tclamp(min, max) {\n\t\t\t// assumes min < max, componentwise\n\t\t\tthis.x = Math.max(min.x, Math.min(max.x, this.x));\n\t\t\tthis.y = Math.max(min.y, Math.min(max.y, this.y));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampScalar(minVal, maxVal) {\n\t\t\tthis.x = Math.max(minVal, Math.min(maxVal, this.x));\n\t\t\tthis.y = Math.max(minVal, Math.min(maxVal, this.y));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampLength(min, max) {\n\t\t\tconst length = this.length();\n\t\t\treturn this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n\t\t}\n\n\t\tfloor() {\n\t\t\tthis.x = Math.floor(this.x);\n\t\t\tthis.y = Math.floor(this.y);\n\t\t\treturn this;\n\t\t}\n\n\t\tceil() {\n\t\t\tthis.x = Math.ceil(this.x);\n\t\t\tthis.y = Math.ceil(this.y);\n\t\t\treturn this;\n\t\t}\n\n\t\tround() {\n\t\t\tthis.x = Math.round(this.x);\n\t\t\tthis.y = Math.round(this.y);\n\t\t\treturn this;\n\t\t}\n\n\t\troundToZero() {\n\t\t\tthis.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n\t\t\tthis.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n\t\t\treturn this;\n\t\t}\n\n\t\tnegate() {\n\t\t\tthis.x = -this.x;\n\t\t\tthis.y = -this.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tdot(v) {\n\t\t\treturn this.x * v.x + this.y * v.y;\n\t\t}\n\n\t\tcross(v) {\n\t\t\treturn this.x * v.y - this.y * v.x;\n\t\t}\n\n\t\tlengthSq() {\n\t\t\treturn this.x * this.x + this.y * this.y;\n\t\t}\n\n\t\tlength() {\n\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t\t}\n\n\t\tmanhattanLength() {\n\t\t\treturn Math.abs(this.x) + Math.abs(this.y);\n\t\t}\n\n\t\tnormalize() {\n\t\t\treturn this.divideScalar(this.length() || 1);\n\t\t}\n\n\t\tangle() {\n\t\t\t// computes the angle in radians with respect to the positive x-axis\n\t\t\tconst angle = Math.atan2(-this.y, -this.x) + Math.PI;\n\t\t\treturn angle;\n\t\t}\n\n\t\tdistanceTo(v) {\n\t\t\treturn Math.sqrt(this.distanceToSquared(v));\n\t\t}\n\n\t\tdistanceToSquared(v) {\n\t\t\tconst dx = this.x - v.x,\n\t\t\t\t\t\tdy = this.y - v.y;\n\t\t\treturn dx * dx + dy * dy;\n\t\t}\n\n\t\tmanhattanDistanceTo(v) {\n\t\t\treturn Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n\t\t}\n\n\t\tsetLength(length) {\n\t\t\treturn this.normalize().multiplyScalar(length);\n\t\t}\n\n\t\tlerp(v, alpha) {\n\t\t\tthis.x += (v.x - this.x) * alpha;\n\t\t\tthis.y += (v.y - this.y) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerpVectors(v1, v2, alpha) {\n\t\t\tthis.x = v1.x + (v2.x - v1.x) * alpha;\n\t\t\tthis.y = v1.y + (v2.y - v1.y) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(v) {\n\t\t\treturn v.x === this.x && v.y === this.y;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tthis.x = array[offset];\n\t\t\tthis.y = array[offset + 1];\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this.x;\n\t\t\tarray[offset + 1] = this.y;\n\t\t\treturn array;\n\t\t}\n\n\t\tfromBufferAttribute(attribute, index, offset) {\n\t\t\tif (offset !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector2: offset has been removed from .fromBufferAttribute().');\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX(index);\n\t\t\tthis.y = attribute.getY(index);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateAround(center, angle) {\n\t\t\tconst c = Math.cos(angle),\n\t\t\t\t\t\ts = Math.sin(angle);\n\t\t\tconst x = this.x - center.x;\n\t\t\tconst y = this.y - center.y;\n\t\t\tthis.x = x * c - y * s + center.x;\n\t\t\tthis.y = x * s + y * c + center.y;\n\t\t\treturn this;\n\t\t}\n\n\t\trandom() {\n\t\t\tthis.x = Math.random();\n\t\t\tthis.y = Math.random();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tVector2.prototype.isVector2 = true;\n\n\tclass Matrix3 {\n\t\tconstructor() {\n\t\t\tthis.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n\t\t\tif (arguments.length > 0) {\n\t\t\t\tconsole.error('THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.');\n\t\t\t}\n\t\t}\n\n\t\tset(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] = n11;\n\t\t\tte[1] = n21;\n\t\t\tte[2] = n31;\n\t\t\tte[3] = n12;\n\t\t\tte[4] = n22;\n\t\t\tte[5] = n32;\n\t\t\tte[6] = n13;\n\t\t\tte[7] = n23;\n\t\t\tte[8] = n33;\n\t\t\treturn this;\n\t\t}\n\n\t\tidentity() {\n\t\t\tthis.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(m) {\n\t\t\tconst te = this.elements;\n\t\t\tconst me = m.elements;\n\t\t\tte[0] = me[0];\n\t\t\tte[1] = me[1];\n\t\t\tte[2] = me[2];\n\t\t\tte[3] = me[3];\n\t\t\tte[4] = me[4];\n\t\t\tte[5] = me[5];\n\t\t\tte[6] = me[6];\n\t\t\tte[7] = me[7];\n\t\t\tte[8] = me[8];\n\t\t\treturn this;\n\t\t}\n\n\t\textractBasis(xAxis, yAxis, zAxis) {\n\t\t\txAxis.setFromMatrix3Column(this, 0);\n\t\t\tyAxis.setFromMatrix3Column(this, 1);\n\t\t\tzAxis.setFromMatrix3Column(this, 2);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromMatrix4(m) {\n\t\t\tconst me = m.elements;\n\t\t\tthis.set(me[0], me[4], me[8], me[1], me[5], me[9], me[2], me[6], me[10]);\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(m) {\n\t\t\treturn this.multiplyMatrices(this, m);\n\t\t}\n\n\t\tpremultiply(m) {\n\t\t\treturn this.multiplyMatrices(m, this);\n\t\t}\n\n\t\tmultiplyMatrices(a, b) {\n\t\t\tconst ae = a.elements;\n\t\t\tconst be = b.elements;\n\t\t\tconst te = this.elements;\n\t\t\tconst a11 = ae[0],\n\t\t\t\t\t\ta12 = ae[3],\n\t\t\t\t\t\ta13 = ae[6];\n\t\t\tconst a21 = ae[1],\n\t\t\t\t\t\ta22 = ae[4],\n\t\t\t\t\t\ta23 = ae[7];\n\t\t\tconst a31 = ae[2],\n\t\t\t\t\t\ta32 = ae[5],\n\t\t\t\t\t\ta33 = ae[8];\n\t\t\tconst b11 = be[0],\n\t\t\t\t\t\tb12 = be[3],\n\t\t\t\t\t\tb13 = be[6];\n\t\t\tconst b21 = be[1],\n\t\t\t\t\t\tb22 = be[4],\n\t\t\t\t\t\tb23 = be[7];\n\t\t\tconst b31 = be[2],\n\t\t\t\t\t\tb32 = be[5],\n\t\t\t\t\t\tb33 = be[8];\n\t\t\tte[0] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\t\tte[3] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\t\tte[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\t\t\tte[1] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\t\tte[4] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\t\tte[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\t\t\tte[2] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\t\tte[5] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\t\tte[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(s) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] *= s;\n\t\t\tte[3] *= s;\n\t\t\tte[6] *= s;\n\t\t\tte[1] *= s;\n\t\t\tte[4] *= s;\n\t\t\tte[7] *= s;\n\t\t\tte[2] *= s;\n\t\t\tte[5] *= s;\n\t\t\tte[8] *= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tdeterminant() {\n\t\t\tconst te = this.elements;\n\t\t\tconst a = te[0],\n\t\t\t\t\t\tb = te[1],\n\t\t\t\t\t\tc = te[2],\n\t\t\t\t\t\td = te[3],\n\t\t\t\t\t\te = te[4],\n\t\t\t\t\t\tf = te[5],\n\t\t\t\t\t\tg = te[6],\n\t\t\t\t\t\th = te[7],\n\t\t\t\t\t\ti = te[8];\n\t\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\t\t}\n\n\t\tinvert() {\n\t\t\tconst te = this.elements,\n\t\t\t\t\t\tn11 = te[0],\n\t\t\t\t\t\tn21 = te[1],\n\t\t\t\t\t\tn31 = te[2],\n\t\t\t\t\t\tn12 = te[3],\n\t\t\t\t\t\tn22 = te[4],\n\t\t\t\t\t\tn32 = te[5],\n\t\t\t\t\t\tn13 = te[6],\n\t\t\t\t\t\tn23 = te[7],\n\t\t\t\t\t\tn33 = te[8],\n\t\t\t\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\t\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\t\t\t\tt13 = n23 * n12 - n22 * n13,\n\t\t\t\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\t\t\tif (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n\t\t\tconst detInv = 1 / det;\n\t\t\tte[0] = t11 * detInv;\n\t\t\tte[1] = (n31 * n23 - n33 * n21) * detInv;\n\t\t\tte[2] = (n32 * n21 - n31 * n22) * detInv;\n\t\t\tte[3] = t12 * detInv;\n\t\t\tte[4] = (n33 * n11 - n31 * n13) * detInv;\n\t\t\tte[5] = (n31 * n12 - n32 * n11) * detInv;\n\t\t\tte[6] = t13 * detInv;\n\t\t\tte[7] = (n21 * n13 - n23 * n11) * detInv;\n\t\t\tte[8] = (n22 * n11 - n21 * n12) * detInv;\n\t\t\treturn this;\n\t\t}\n\n\t\ttranspose() {\n\t\t\tlet tmp;\n\t\t\tconst m = this.elements;\n\t\t\ttmp = m[1];\n\t\t\tm[1] = m[3];\n\t\t\tm[3] = tmp;\n\t\t\ttmp = m[2];\n\t\t\tm[2] = m[6];\n\t\t\tm[6] = tmp;\n\t\t\ttmp = m[5];\n\t\t\tm[5] = m[7];\n\t\t\tm[7] = tmp;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetNormalMatrix(matrix4) {\n\t\t\treturn this.setFromMatrix4(matrix4).invert().transpose();\n\t\t}\n\n\t\ttransposeIntoArray(r) {\n\t\t\tconst m = this.elements;\n\t\t\tr[0] = m[0];\n\t\t\tr[1] = m[3];\n\t\t\tr[2] = m[6];\n\t\t\tr[3] = m[1];\n\t\t\tr[4] = m[4];\n\t\t\tr[5] = m[7];\n\t\t\tr[6] = m[2];\n\t\t\tr[7] = m[5];\n\t\t\tr[8] = m[8];\n\t\t\treturn this;\n\t\t}\n\n\t\tsetUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n\t\t\tconst c = Math.cos(rotation);\n\t\t\tconst s = Math.sin(rotation);\n\t\t\tthis.set(sx * c, sx * s, -sx * (c * cx + s * cy) + cx + tx, -sy * s, sy * c, -sy * (-s * cx + c * cy) + cy + ty, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tscale(sx, sy) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] *= sx;\n\t\t\tte[3] *= sx;\n\t\t\tte[6] *= sx;\n\t\t\tte[1] *= sy;\n\t\t\tte[4] *= sy;\n\t\t\tte[7] *= sy;\n\t\t\treturn this;\n\t\t}\n\n\t\trotate(theta) {\n\t\t\tconst c = Math.cos(theta);\n\t\t\tconst s = Math.sin(theta);\n\t\t\tconst te = this.elements;\n\t\t\tconst a11 = te[0],\n\t\t\t\t\t\ta12 = te[3],\n\t\t\t\t\t\ta13 = te[6];\n\t\t\tconst a21 = te[1],\n\t\t\t\t\t\ta22 = te[4],\n\t\t\t\t\t\ta23 = te[7];\n\t\t\tte[0] = c * a11 + s * a21;\n\t\t\tte[3] = c * a12 + s * a22;\n\t\t\tte[6] = c * a13 + s * a23;\n\t\t\tte[1] = -s * a11 + c * a21;\n\t\t\tte[4] = -s * a12 + c * a22;\n\t\t\tte[7] = -s * a13 + c * a23;\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(tx, ty) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] += tx * te[2];\n\t\t\tte[3] += tx * te[5];\n\t\t\tte[6] += tx * te[8];\n\t\t\tte[1] += ty * te[2];\n\t\t\tte[4] += ty * te[5];\n\t\t\tte[7] += ty * te[8];\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(matrix) {\n\t\t\tconst te = this.elements;\n\t\t\tconst me = matrix.elements;\n\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tif (te[i] !== me[i]) return false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.elements[i] = array[i + offset];\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tconst te = this.elements;\n\t\t\tarray[offset] = te[0];\n\t\t\tarray[offset + 1] = te[1];\n\t\t\tarray[offset + 2] = te[2];\n\t\t\tarray[offset + 3] = te[3];\n\t\t\tarray[offset + 4] = te[4];\n\t\t\tarray[offset + 5] = te[5];\n\t\t\tarray[offset + 6] = te[6];\n\t\t\tarray[offset + 7] = te[7];\n\t\t\tarray[offset + 8] = te[8];\n\t\t\treturn array;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().fromArray(this.elements);\n\t\t}\n\n\t}\n\n\tMatrix3.prototype.isMatrix3 = true;\n\n\tlet _canvas;\n\n\tclass ImageUtils {\n\t\tstatic getDataURL(image) {\n\t\t\tif (/^data:/i.test(image.src)) {\n\t\t\t\treturn image.src;\n\t\t\t}\n\n\t\t\tif (typeof HTMLCanvasElement == 'undefined') {\n\t\t\t\treturn image.src;\n\t\t\t}\n\n\t\t\tlet canvas;\n\n\t\t\tif (image instanceof HTMLCanvasElement) {\n\t\t\t\tcanvas = image;\n\t\t\t} else {\n\t\t\t\tif (_canvas === undefined) _canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');\n\t\t\t\t_canvas.width = image.width;\n\t\t\t\t_canvas.height = image.height;\n\n\t\t\t\tconst context = _canvas.getContext('2d');\n\n\t\t\t\tif (image instanceof ImageData) {\n\t\t\t\t\tcontext.putImageData(image, 0, 0);\n\t\t\t\t} else {\n\t\t\t\t\tcontext.drawImage(image, 0, 0, image.width, image.height);\n\t\t\t\t}\n\n\t\t\t\tcanvas = _canvas;\n\t\t\t}\n\n\t\t\tif (canvas.width > 2048 || canvas.height > 2048) {\n\t\t\t\tconsole.warn('THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image);\n\t\t\t\treturn canvas.toDataURL('image/jpeg', 0.6);\n\t\t\t} else {\n\t\t\t\treturn canvas.toDataURL('image/png');\n\t\t\t}\n\t\t}\n\n\t}\n\n\tlet textureId = 0;\n\n\tclass Texture extends EventDispatcher {\n\t\tconstructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) {\n\t\t\tsuper();\n\t\t\tObject.defineProperty(this, 'id', {\n\t\t\t\tvalue: textureId++\n\t\t\t});\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.name = '';\n\t\t\tthis.image = image;\n\t\t\tthis.mipmaps = [];\n\t\t\tthis.mapping = mapping;\n\t\t\tthis.wrapS = wrapS;\n\t\t\tthis.wrapT = wrapT;\n\t\t\tthis.magFilter = magFilter;\n\t\t\tthis.minFilter = minFilter;\n\t\t\tthis.anisotropy = anisotropy;\n\t\t\tthis.format = format;\n\t\t\tthis.internalFormat = null;\n\t\t\tthis.type = type;\n\t\t\tthis.offset = new Vector2(0, 0);\n\t\t\tthis.repeat = new Vector2(1, 1);\n\t\t\tthis.center = new Vector2(0, 0);\n\t\t\tthis.rotation = 0;\n\t\t\tthis.matrixAutoUpdate = true;\n\t\t\tthis.matrix = new Matrix3();\n\t\t\tthis.generateMipmaps = true;\n\t\t\tthis.premultiplyAlpha = false;\n\t\t\tthis.flipY = true;\n\t\t\tthis.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\t\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t\t//\n\t\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\n\t\t\tthis.encoding = encoding;\n\t\t\tthis.version = 0;\n\t\t\tthis.onUpdate = null;\n\t\t\tthis.isRenderTargetTexture = false;\n\t\t}\n\n\t\tupdateMatrix() {\n\t\t\tthis.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.name = source.name;\n\t\t\tthis.image = source.image;\n\t\t\tthis.mipmaps = source.mipmaps.slice(0);\n\t\t\tthis.mapping = source.mapping;\n\t\t\tthis.wrapS = source.wrapS;\n\t\t\tthis.wrapT = source.wrapT;\n\t\t\tthis.magFilter = source.magFilter;\n\t\t\tthis.minFilter = source.minFilter;\n\t\t\tthis.anisotropy = source.anisotropy;\n\t\t\tthis.format = source.format;\n\t\t\tthis.internalFormat = source.internalFormat;\n\t\t\tthis.type = source.type;\n\t\t\tthis.offset.copy(source.offset);\n\t\t\tthis.repeat.copy(source.repeat);\n\t\t\tthis.center.copy(source.center);\n\t\t\tthis.rotation = source.rotation;\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\t\tthis.matrix.copy(source.matrix);\n\t\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\t\tthis.flipY = source.flipY;\n\t\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\t\tthis.encoding = source.encoding;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst isRootObject = meta === undefined || typeof meta === 'string';\n\n\t\t\tif (!isRootObject && meta.textures[this.uuid] !== undefined) {\n\t\t\t\treturn meta.textures[this.uuid];\n\t\t\t}\n\n\t\t\tconst output = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Texture',\n\t\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t\t},\n\t\t\t\tuuid: this.uuid,\n\t\t\t\tname: this.name,\n\t\t\t\tmapping: this.mapping,\n\t\t\t\trepeat: [this.repeat.x, this.repeat.y],\n\t\t\t\toffset: [this.offset.x, this.offset.y],\n\t\t\t\tcenter: [this.center.x, this.center.y],\n\t\t\t\trotation: this.rotation,\n\t\t\t\twrap: [this.wrapS, this.wrapT],\n\t\t\t\tformat: this.format,\n\t\t\t\ttype: this.type,\n\t\t\t\tencoding: this.encoding,\n\t\t\t\tminFilter: this.minFilter,\n\t\t\t\tmagFilter: this.magFilter,\n\t\t\t\tanisotropy: this.anisotropy,\n\t\t\t\tflipY: this.flipY,\n\t\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\t\tunpackAlignment: this.unpackAlignment\n\t\t\t};\n\n\t\t\tif (this.image !== undefined) {\n\t\t\t\t// TODO: Move to THREE.Image\n\t\t\t\tconst image = this.image;\n\n\t\t\t\tif (image.uuid === undefined) {\n\t\t\t\t\timage.uuid = generateUUID(); // UGH\n\t\t\t\t}\n\n\t\t\t\tif (!isRootObject && meta.images[image.uuid] === undefined) {\n\t\t\t\t\tlet url;\n\n\t\t\t\t\tif (Array.isArray(image)) {\n\t\t\t\t\t\t// process array of images e.g. CubeTexture\n\t\t\t\t\t\turl = [];\n\n\t\t\t\t\t\tfor (let i = 0, l = image.length; i < l; i++) {\n\t\t\t\t\t\t\t// check cube texture with data textures\n\t\t\t\t\t\t\tif (image[i].isDataTexture) {\n\t\t\t\t\t\t\t\turl.push(serializeImage(image[i].image));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\turl.push(serializeImage(image[i]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// process single image\n\t\t\t\t\t\turl = serializeImage(image);\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.images[image.uuid] = {\n\t\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\t\turl: url\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\toutput.image = image.uuid;\n\t\t\t}\n\n\t\t\tif (!isRootObject) {\n\t\t\t\tmeta.textures[this.uuid] = output;\n\t\t\t}\n\n\t\t\treturn output;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'dispose'\n\t\t\t});\n\t\t}\n\n\t\ttransformUv(uv) {\n\t\t\tif (this.mapping !== UVMapping) return uv;\n\t\t\tuv.applyMatrix3(this.matrix);\n\n\t\t\tif (uv.x < 0 || uv.x > 1) {\n\t\t\t\tswitch (this.wrapS) {\n\t\t\t\t\tcase RepeatWrapping:\n\t\t\t\t\t\tuv.x = uv.x - Math.floor(uv.x);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase ClampToEdgeWrapping:\n\t\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MirroredRepeatWrapping:\n\t\t\t\t\t\tif (Math.abs(Math.floor(uv.x) % 2) === 1) {\n\t\t\t\t\t\t\tuv.x = Math.ceil(uv.x) - uv.x;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv.x = uv.x - Math.floor(uv.x);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (uv.y < 0 || uv.y > 1) {\n\t\t\t\tswitch (this.wrapT) {\n\t\t\t\t\tcase RepeatWrapping:\n\t\t\t\t\t\tuv.y = uv.y - Math.floor(uv.y);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase ClampToEdgeWrapping:\n\t\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MirroredRepeatWrapping:\n\t\t\t\t\t\tif (Math.abs(Math.floor(uv.y) % 2) === 1) {\n\t\t\t\t\t\t\tuv.y = Math.ceil(uv.y) - uv.y;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv.y = uv.y - Math.floor(uv.y);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.flipY) {\n\t\t\t\tuv.y = 1 - uv.y;\n\t\t\t}\n\n\t\t\treturn uv;\n\t\t}\n\n\t\tset needsUpdate(value) {\n\t\t\tif (value === true) this.version++;\n\t\t}\n\n\t}\n\n\tTexture.DEFAULT_IMAGE = undefined;\n\tTexture.DEFAULT_MAPPING = UVMapping;\n\tTexture.prototype.isTexture = true;\n\n\tfunction serializeImage(image) {\n\t\tif (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n\t\t\t// default images\n\t\t\treturn ImageUtils.getDataURL(image);\n\t\t} else {\n\t\t\tif (image.data) {\n\t\t\t\t// images of DataTexture\n\t\t\t\treturn {\n\t\t\t\t\tdata: Array.prototype.slice.call(image.data),\n\t\t\t\t\twidth: image.width,\n\t\t\t\t\theight: image.height,\n\t\t\t\t\ttype: image.data.constructor.name\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconsole.warn('THREE.Texture: Unable to serialize Texture.');\n\t\t\t\treturn {};\n\t\t\t}\n\t\t}\n\t}\n\n\tclass Vector4 {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 1) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t}\n\n\t\tget width() {\n\t\t\treturn this.z;\n\t\t}\n\n\t\tset width(value) {\n\t\t\tthis.z = value;\n\t\t}\n\n\t\tget height() {\n\t\t\treturn this.w;\n\t\t}\n\n\t\tset height(value) {\n\t\t\tthis.w = value;\n\t\t}\n\n\t\tset(x, y, z, w) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetScalar(scalar) {\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\t\t\tthis.w = scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetX(x) {\n\t\t\tthis.x = x;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetY(y) {\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetZ(z) {\n\t\t\tthis.z = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetW(w) {\n\t\t\tthis.w = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetComponent(index, value) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\tthis.x = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\t\t\t\t\tthis.y = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.z = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.w = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetComponent(index) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn this.x;\n\n\t\t\t\tcase 1:\n\t\t\t\t\treturn this.y;\n\n\t\t\t\tcase 2:\n\t\t\t\t\treturn this.z;\n\n\t\t\t\tcase 3:\n\t\t\t\t\treturn this.w;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.x, this.y, this.z, this.w);\n\t\t}\n\n\t\tcopy(v) {\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\t\t\tthis.w = v.w !== undefined ? v.w : 1;\n\t\t\treturn this;\n\t\t}\n\n\t\tadd(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n\t\t\t\treturn this.addVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\t\t\tthis.w += v.w;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScalar(s) {\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\t\t\tthis.w += s;\n\t\t\treturn this;\n\t\t}\n\n\t\taddVectors(a, b) {\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\t\t\tthis.w = a.w + b.w;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScaledVector(v, s) {\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\t\t\tthis.w += v.w * s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsub(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n\t\t\t\treturn this.subVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\t\t\tthis.w -= v.w;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubScalar(s) {\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\t\t\tthis.w -= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubVectors(a, b) {\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\t\t\tthis.w = a.w - b.w;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(v) {\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\t\t\tthis.z *= v.z;\n\t\t\tthis.w *= v.w;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(scalar) {\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyMatrix4(m) {\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y,\n\t\t\t\t\t\tz = this.z,\n\t\t\t\t\t\tw = this.w;\n\t\t\tconst e = m.elements;\n\t\t\tthis.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n\t\t\tthis.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n\t\t\tthis.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n\t\t\tthis.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n\t\t\treturn this;\n\t\t}\n\n\t\tdivideScalar(scalar) {\n\t\t\treturn this.multiplyScalar(1 / scalar);\n\t\t}\n\n\t\tsetAxisAngleFromQuaternion(q) {\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\t\t\t// q is assumed to be normalized\n\t\t\tthis.w = 2 * Math.acos(q.w);\n\t\t\tconst s = Math.sqrt(1 - q.w * q.w);\n\n\t\t\tif (s < 0.0001) {\n\t\t\t\tthis.x = 1;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.z = 0;\n\t\t\t} else {\n\t\t\t\tthis.x = q.x / s;\n\t\t\t\tthis.y = q.y / s;\n\t\t\t\tthis.z = q.z / s;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetAxisAngleFromRotationMatrix(m) {\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\t\t\tlet angle, x, y, z; // variables for result\n\n\t\t\tconst epsilon = 0.01,\n\t\t\t\t\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\n\t\t\t\t\t\t// margin to distinguish between 0 and 180 degrees\n\t\t\tte = m.elements,\n\t\t\t\t\t\tm11 = te[0],\n\t\t\t\t\t\tm12 = te[4],\n\t\t\t\t\t\tm13 = te[8],\n\t\t\t\t\t\tm21 = te[1],\n\t\t\t\t\t\tm22 = te[5],\n\t\t\t\t\t\tm23 = te[9],\n\t\t\t\t\t\tm31 = te[2],\n\t\t\t\t\t\tm32 = te[6],\n\t\t\t\t\t\tm33 = te[10];\n\n\t\t\tif (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n\t\t\t\t// singularity found\n\t\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t\t// in leading diagonal and zero in other terms\n\t\t\t\tif (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n\t\t\t\t\t// this singularity is identity matrix so angle = 0\n\t\t\t\t\tthis.set(1, 0, 0, 0);\n\t\t\t\t\treturn this; // zero angle, arbitrary axis\n\t\t\t\t} // otherwise this singularity is angle = 180\n\n\n\t\t\t\tangle = Math.PI;\n\t\t\t\tconst xx = (m11 + 1) / 2;\n\t\t\t\tconst yy = (m22 + 1) / 2;\n\t\t\t\tconst zz = (m33 + 1) / 2;\n\t\t\t\tconst xy = (m12 + m21) / 4;\n\t\t\t\tconst xz = (m13 + m31) / 4;\n\t\t\t\tconst yz = (m23 + m32) / 4;\n\n\t\t\t\tif (xx > yy && xx > zz) {\n\t\t\t\t\t// m11 is the largest diagonal term\n\t\t\t\t\tif (xx < epsilon) {\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0.707106781;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx = Math.sqrt(xx);\n\t\t\t\t\t\ty = xy / x;\n\t\t\t\t\t\tz = xz / x;\n\t\t\t\t\t}\n\t\t\t\t} else if (yy > zz) {\n\t\t\t\t\t// m22 is the largest diagonal term\n\t\t\t\t\tif (yy < epsilon) {\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0;\n\t\t\t\t\t\tz = 0.707106781;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ty = Math.sqrt(yy);\n\t\t\t\t\t\tx = xy / y;\n\t\t\t\t\t\tz = yz / y;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// m33 is the largest diagonal term so base result on this\n\t\t\t\t\tif (zz < epsilon) {\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tz = Math.sqrt(zz);\n\t\t\t\t\t\tx = xz / z;\n\t\t\t\t\t\ty = yz / z;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.set(x, y, z, angle);\n\t\t\t\treturn this; // return 180 deg rotation\n\t\t\t} // as we have reached here there are no singularities so we can handle normally\n\n\n\t\t\tlet s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12)); // used to normalize\n\n\t\t\tif (Math.abs(s) < 0.001) s = 1; // prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\t\tthis.x = (m32 - m23) / s;\n\t\t\tthis.y = (m13 - m31) / s;\n\t\t\tthis.z = (m21 - m12) / s;\n\t\t\tthis.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n\t\t\treturn this;\n\t\t}\n\n\t\tmin(v) {\n\t\t\tthis.x = Math.min(this.x, v.x);\n\t\t\tthis.y = Math.min(this.y, v.y);\n\t\t\tthis.z = Math.min(this.z, v.z);\n\t\t\tthis.w = Math.min(this.w, v.w);\n\t\t\treturn this;\n\t\t}\n\n\t\tmax(v) {\n\t\t\tthis.x = Math.max(this.x, v.x);\n\t\t\tthis.y = Math.max(this.y, v.y);\n\t\t\tthis.z = Math.max(this.z, v.z);\n\t\t\tthis.w = Math.max(this.w, v.w);\n\t\t\treturn this;\n\t\t}\n\n\t\tclamp(min, max) {\n\t\t\t// assumes min < max, componentwise\n\t\t\tthis.x = Math.max(min.x, Math.min(max.x, this.x));\n\t\t\tthis.y = Math.max(min.y, Math.min(max.y, this.y));\n\t\t\tthis.z = Math.max(min.z, Math.min(max.z, this.z));\n\t\t\tthis.w = Math.max(min.w, Math.min(max.w, this.w));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampScalar(minVal, maxVal) {\n\t\t\tthis.x = Math.max(minVal, Math.min(maxVal, this.x));\n\t\t\tthis.y = Math.max(minVal, Math.min(maxVal, this.y));\n\t\t\tthis.z = Math.max(minVal, Math.min(maxVal, this.z));\n\t\t\tthis.w = Math.max(minVal, Math.min(maxVal, this.w));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampLength(min, max) {\n\t\t\tconst length = this.length();\n\t\t\treturn this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n\t\t}\n\n\t\tfloor() {\n\t\t\tthis.x = Math.floor(this.x);\n\t\t\tthis.y = Math.floor(this.y);\n\t\t\tthis.z = Math.floor(this.z);\n\t\t\tthis.w = Math.floor(this.w);\n\t\t\treturn this;\n\t\t}\n\n\t\tceil() {\n\t\t\tthis.x = Math.ceil(this.x);\n\t\t\tthis.y = Math.ceil(this.y);\n\t\t\tthis.z = Math.ceil(this.z);\n\t\t\tthis.w = Math.ceil(this.w);\n\t\t\treturn this;\n\t\t}\n\n\t\tround() {\n\t\t\tthis.x = Math.round(this.x);\n\t\t\tthis.y = Math.round(this.y);\n\t\t\tthis.z = Math.round(this.z);\n\t\t\tthis.w = Math.round(this.w);\n\t\t\treturn this;\n\t\t}\n\n\t\troundToZero() {\n\t\t\tthis.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n\t\t\tthis.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n\t\t\tthis.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n\t\t\tthis.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n\t\t\treturn this;\n\t\t}\n\n\t\tnegate() {\n\t\t\tthis.x = -this.x;\n\t\t\tthis.y = -this.y;\n\t\t\tthis.z = -this.z;\n\t\t\tthis.w = -this.w;\n\t\t\treturn this;\n\t\t}\n\n\t\tdot(v) {\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\t\t}\n\n\t\tlengthSq() {\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t\t}\n\n\t\tlength() {\n\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t\t}\n\n\t\tmanhattanLength() {\n\t\t\treturn Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n\t\t}\n\n\t\tnormalize() {\n\t\t\treturn this.divideScalar(this.length() || 1);\n\t\t}\n\n\t\tsetLength(length) {\n\t\t\treturn this.normalize().multiplyScalar(length);\n\t\t}\n\n\t\tlerp(v, alpha) {\n\t\t\tthis.x += (v.x - this.x) * alpha;\n\t\t\tthis.y += (v.y - this.y) * alpha;\n\t\t\tthis.z += (v.z - this.z) * alpha;\n\t\t\tthis.w += (v.w - this.w) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerpVectors(v1, v2, alpha) {\n\t\t\tthis.x = v1.x + (v2.x - v1.x) * alpha;\n\t\t\tthis.y = v1.y + (v2.y - v1.y) * alpha;\n\t\t\tthis.z = v1.z + (v2.z - v1.z) * alpha;\n\t\t\tthis.w = v1.w + (v2.w - v1.w) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(v) {\n\t\t\treturn v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tthis.x = array[offset];\n\t\t\tthis.y = array[offset + 1];\n\t\t\tthis.z = array[offset + 2];\n\t\t\tthis.w = array[offset + 3];\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this.x;\n\t\t\tarray[offset + 1] = this.y;\n\t\t\tarray[offset + 2] = this.z;\n\t\t\tarray[offset + 3] = this.w;\n\t\t\treturn array;\n\t\t}\n\n\t\tfromBufferAttribute(attribute, index, offset) {\n\t\t\tif (offset !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector4: offset has been removed from .fromBufferAttribute().');\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX(index);\n\t\t\tthis.y = attribute.getY(index);\n\t\t\tthis.z = attribute.getZ(index);\n\t\t\tthis.w = attribute.getW(index);\n\t\t\treturn this;\n\t\t}\n\n\t\trandom() {\n\t\t\tthis.x = Math.random();\n\t\t\tthis.y = Math.random();\n\t\t\tthis.z = Math.random();\n\t\t\tthis.w = Math.random();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tVector4.prototype.isVector4 = true;\n\n\t/*\n\t In options, we can specify:\n\t * Texture parameters for an auto-generated target texture\n\t * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n\t*/\n\n\tclass WebGLRenderTarget extends EventDispatcher {\n\t\tconstructor(width, height, options = {}) {\n\t\t\tsuper();\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = 1;\n\t\t\tthis.scissor = new Vector4(0, 0, width, height);\n\t\t\tthis.scissorTest = false;\n\t\t\tthis.viewport = new Vector4(0, 0, width, height);\n\t\t\tthis.texture = new Texture(undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n\t\t\tthis.texture.isRenderTargetTexture = true;\n\t\t\tthis.texture.image = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tdepth: 1\n\t\t\t};\n\t\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\t\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\t\t}\n\n\t\tsetTexture(texture) {\n\t\t\ttexture.image = {\n\t\t\t\twidth: this.width,\n\t\t\t\theight: this.height,\n\t\t\t\tdepth: this.depth\n\t\t\t};\n\t\t\tthis.texture = texture;\n\t\t}\n\n\t\tsetSize(width, height, depth = 1) {\n\t\t\tif (this.width !== width || this.height !== height || this.depth !== depth) {\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\t\t\t\tthis.depth = depth;\n\t\t\t\tthis.texture.image.width = width;\n\t\t\t\tthis.texture.image.height = height;\n\t\t\t\tthis.texture.image.depth = depth;\n\t\t\t\tthis.dispose();\n\t\t\t}\n\n\t\t\tthis.viewport.set(0, 0, width, height);\n\t\t\tthis.scissor.set(0, 0, width, height);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\t\t\tthis.depth = source.depth;\n\t\t\tthis.viewport.copy(source.viewport);\n\t\t\tthis.texture = source.texture.clone();\n\t\t\tthis.texture.image = { ...this.texture.image\n\t\t\t}; // See #20328.\n\n\t\t\tthis.depthBuffer = source.depthBuffer;\n\t\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\t\tthis.depthTexture = source.depthTexture;\n\t\t\treturn this;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'dispose'\n\t\t\t});\n\t\t}\n\n\t}\n\n\tWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\n\tclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\t\tconstructor(width, height, count) {\n\t\t\tsuper(width, height);\n\t\t\tconst texture = this.texture;\n\t\t\tthis.texture = [];\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tthis.texture[i] = texture.clone();\n\t\t\t}\n\t\t}\n\n\t\tsetSize(width, height, depth = 1) {\n\t\t\tif (this.width !== width || this.height !== height || this.depth !== depth) {\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\t\t\t\tthis.depth = depth;\n\n\t\t\t\tfor (let i = 0, il = this.texture.length; i < il; i++) {\n\t\t\t\t\tthis.texture[i].image.width = width;\n\t\t\t\t\tthis.texture[i].image.height = height;\n\t\t\t\t\tthis.texture[i].image.depth = depth;\n\t\t\t\t}\n\n\t\t\t\tthis.dispose();\n\t\t\t}\n\n\t\t\tthis.viewport.set(0, 0, width, height);\n\t\t\tthis.scissor.set(0, 0, width, height);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.dispose();\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\t\t\tthis.depth = source.depth;\n\t\t\tthis.viewport.set(0, 0, this.width, this.height);\n\t\t\tthis.scissor.set(0, 0, this.width, this.height);\n\t\t\tthis.depthBuffer = source.depthBuffer;\n\t\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\t\tthis.depthTexture = source.depthTexture;\n\t\t\tthis.texture.length = 0;\n\n\t\t\tfor (let i = 0, il = source.texture.length; i < il; i++) {\n\t\t\t\tthis.texture[i] = source.texture[i].clone();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\n\tclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\t\tconstructor(width, height, options) {\n\t\t\tsuper(width, height, options);\n\t\t\tthis.samples = 4;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy.call(this, source);\n\t\t\tthis.samples = source.samples;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\n\n\tclass Quaternion {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 1) {\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._w = w;\n\t\t}\n\n\t\tstatic slerp(qa, qb, qm, t) {\n\t\t\tconsole.warn('THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.');\n\t\t\treturn qm.slerpQuaternions(qa, qb, t);\n\t\t}\n\n\t\tstatic slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n\t\t\t// fuzz-free, array-based Quaternion SLERP operation\n\t\t\tlet x0 = src0[srcOffset0 + 0],\n\t\t\t\t\ty0 = src0[srcOffset0 + 1],\n\t\t\t\t\tz0 = src0[srcOffset0 + 2],\n\t\t\t\t\tw0 = src0[srcOffset0 + 3];\n\t\t\tconst x1 = src1[srcOffset1 + 0],\n\t\t\t\t\t\ty1 = src1[srcOffset1 + 1],\n\t\t\t\t\t\tz1 = src1[srcOffset1 + 2],\n\t\t\t\t\t\tw1 = src1[srcOffset1 + 3];\n\n\t\t\tif (t === 0) {\n\t\t\t\tdst[dstOffset + 0] = x0;\n\t\t\t\tdst[dstOffset + 1] = y0;\n\t\t\t\tdst[dstOffset + 2] = z0;\n\t\t\t\tdst[dstOffset + 3] = w0;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (t === 1) {\n\t\t\t\tdst[dstOffset + 0] = x1;\n\t\t\t\tdst[dstOffset + 1] = y1;\n\t\t\t\tdst[dstOffset + 2] = z1;\n\t\t\t\tdst[dstOffset + 3] = w1;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n\t\t\t\tlet s = 1 - t;\n\t\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\t\t\t\tdir = cos >= 0 ? 1 : -1,\n\t\t\t\t\t\t\tsqrSin = 1 - cos * cos; // Skip the Slerp for tiny steps to avoid numeric problems:\n\n\t\t\t\tif (sqrSin > Number.EPSILON) {\n\t\t\t\t\tconst sin = Math.sqrt(sqrSin),\n\t\t\t\t\t\t\t\tlen = Math.atan2(sin, cos * dir);\n\t\t\t\t\ts = Math.sin(s * len) / sin;\n\t\t\t\t\tt = Math.sin(t * len) / sin;\n\t\t\t\t}\n\n\t\t\t\tconst tDir = t * dir;\n\t\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\t\tw0 = w0 * s + w1 * tDir; // Normalize in case we just did a lerp:\n\n\t\t\t\tif (s === 1 - t) {\n\t\t\t\t\tconst f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n\t\t\t\t\tx0 *= f;\n\t\t\t\t\ty0 *= f;\n\t\t\t\t\tz0 *= f;\n\t\t\t\t\tw0 *= f;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdst[dstOffset] = x0;\n\t\t\tdst[dstOffset + 1] = y0;\n\t\t\tdst[dstOffset + 2] = z0;\n\t\t\tdst[dstOffset + 3] = w0;\n\t\t}\n\n\t\tstatic multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n\t\t\tconst x0 = src0[srcOffset0];\n\t\t\tconst y0 = src0[srcOffset0 + 1];\n\t\t\tconst z0 = src0[srcOffset0 + 2];\n\t\t\tconst w0 = src0[srcOffset0 + 3];\n\t\t\tconst x1 = src1[srcOffset1];\n\t\t\tconst y1 = src1[srcOffset1 + 1];\n\t\t\tconst z1 = src1[srcOffset1 + 2];\n\t\t\tconst w1 = src1[srcOffset1 + 3];\n\t\t\tdst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\t\tdst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\t\tdst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\t\tdst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\t\t\treturn dst;\n\t\t}\n\n\t\tget x() {\n\t\t\treturn this._x;\n\t\t}\n\n\t\tset x(value) {\n\t\t\tthis._x = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget y() {\n\t\t\treturn this._y;\n\t\t}\n\n\t\tset y(value) {\n\t\t\tthis._y = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget z() {\n\t\t\treturn this._z;\n\t\t}\n\n\t\tset z(value) {\n\t\t\tthis._z = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget w() {\n\t\t\treturn this._w;\n\t\t}\n\n\t\tset w(value) {\n\t\t\tthis._w = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tset(x, y, z, w) {\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._w = w;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this._x, this._y, this._z, this._w);\n\t\t}\n\n\t\tcopy(quaternion) {\n\t\t\tthis._x = quaternion.x;\n\t\t\tthis._y = quaternion.y;\n\t\t\tthis._z = quaternion.z;\n\t\t\tthis._w = quaternion.w;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromEuler(euler, update) {\n\t\t\tif (!(euler && euler.isEuler)) {\n\t\t\t\tthrow new Error('THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.');\n\t\t\t}\n\n\t\t\tconst x = euler._x,\n\t\t\t\t\t\ty = euler._y,\n\t\t\t\t\t\tz = euler._z,\n\t\t\t\t\t\torder = euler._order; // http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t\t//\tcontent/SpinCalc.m\n\n\t\t\tconst cos = Math.cos;\n\t\t\tconst sin = Math.sin;\n\t\t\tconst c1 = cos(x / 2);\n\t\t\tconst c2 = cos(y / 2);\n\t\t\tconst c3 = cos(z / 2);\n\t\t\tconst s1 = sin(x / 2);\n\t\t\tconst s2 = sin(y / 2);\n\t\t\tconst s3 = sin(z / 2);\n\n\t\t\tswitch (order) {\n\t\t\t\tcase 'XYZ':\n\t\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'YXZ':\n\t\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZXY':\n\t\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZYX':\n\t\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'YZX':\n\t\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'XZY':\n\t\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn('THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order);\n\t\t\t}\n\n\t\t\tif (update !== false) this._onChangeCallback();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromAxisAngle(axis, angle) {\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\t\t\t// assumes axis is normalized\n\t\t\tconst halfAngle = angle / 2,\n\t\t\t\t\t\ts = Math.sin(halfAngle);\n\t\t\tthis._x = axis.x * s;\n\t\t\tthis._y = axis.y * s;\n\t\t\tthis._z = axis.z * s;\n\t\t\tthis._w = Math.cos(halfAngle);\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromRotationMatrix(m) {\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\t\t\tconst te = m.elements,\n\t\t\t\t\t\tm11 = te[0],\n\t\t\t\t\t\tm12 = te[4],\n\t\t\t\t\t\tm13 = te[8],\n\t\t\t\t\t\tm21 = te[1],\n\t\t\t\t\t\tm22 = te[5],\n\t\t\t\t\t\tm23 = te[9],\n\t\t\t\t\t\tm31 = te[2],\n\t\t\t\t\t\tm32 = te[6],\n\t\t\t\t\t\tm33 = te[10],\n\t\t\t\t\t\ttrace = m11 + m22 + m33;\n\n\t\t\tif (trace > 0) {\n\t\t\t\tconst s = 0.5 / Math.sqrt(trace + 1.0);\n\t\t\t\tthis._w = 0.25 / s;\n\t\t\t\tthis._x = (m32 - m23) * s;\n\t\t\t\tthis._y = (m13 - m31) * s;\n\t\t\t\tthis._z = (m21 - m12) * s;\n\t\t\t} else if (m11 > m22 && m11 > m33) {\n\t\t\t\tconst s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\t\t\t\tthis._w = (m32 - m23) / s;\n\t\t\t\tthis._x = 0.25 * s;\n\t\t\t\tthis._y = (m12 + m21) / s;\n\t\t\t\tthis._z = (m13 + m31) / s;\n\t\t\t} else if (m22 > m33) {\n\t\t\t\tconst s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\t\t\t\tthis._w = (m13 - m31) / s;\n\t\t\t\tthis._x = (m12 + m21) / s;\n\t\t\t\tthis._y = 0.25 * s;\n\t\t\t\tthis._z = (m23 + m32) / s;\n\t\t\t} else {\n\t\t\t\tconst s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\t\t\t\tthis._w = (m21 - m12) / s;\n\t\t\t\tthis._x = (m13 + m31) / s;\n\t\t\t\tthis._y = (m23 + m32) / s;\n\t\t\t\tthis._z = 0.25 * s;\n\t\t\t}\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromUnitVectors(vFrom, vTo) {\n\t\t\t// assumes direction vectors vFrom and vTo are normalized\n\t\t\tlet r = vFrom.dot(vTo) + 1;\n\n\t\t\tif (r < Number.EPSILON) {\n\t\t\t\t// vFrom and vTo point in opposite directions\n\t\t\t\tr = 0;\n\n\t\t\t\tif (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n\t\t\t\t\tthis._x = -vFrom.y;\n\t\t\t\t\tthis._y = vFrom.x;\n\t\t\t\t\tthis._z = 0;\n\t\t\t\t\tthis._w = r;\n\t\t\t\t} else {\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = -vFrom.z;\n\t\t\t\t\tthis._z = vFrom.y;\n\t\t\t\t\tthis._w = r;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\t\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\t\tthis._w = r;\n\t\t\t}\n\n\t\t\treturn this.normalize();\n\t\t}\n\n\t\tangleTo(q) {\n\t\t\treturn 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n\t\t}\n\n\t\trotateTowards(q, step) {\n\t\t\tconst angle = this.angleTo(q);\n\t\t\tif (angle === 0) return this;\n\t\t\tconst t = Math.min(1, step / angle);\n\t\t\tthis.slerp(q, t);\n\t\t\treturn this;\n\t\t}\n\n\t\tidentity() {\n\t\t\treturn this.set(0, 0, 0, 1);\n\t\t}\n\n\t\tinvert() {\n\t\t\t// quaternion is assumed to have unit length\n\t\t\treturn this.conjugate();\n\t\t}\n\n\t\tconjugate() {\n\t\t\tthis._x *= -1;\n\t\t\tthis._y *= -1;\n\t\t\tthis._z *= -1;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tdot(v) {\n\t\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\t\t}\n\n\t\tlengthSq() {\n\t\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\t\t}\n\n\t\tlength() {\n\t\t\treturn Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n\t\t}\n\n\t\tnormalize() {\n\t\t\tlet l = this.length();\n\n\t\t\tif (l === 0) {\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = 1;\n\t\t\t} else {\n\t\t\t\tl = 1 / l;\n\t\t\t\tthis._x = this._x * l;\n\t\t\t\tthis._y = this._y * l;\n\t\t\t\tthis._z = this._z * l;\n\t\t\t\tthis._w = this._w * l;\n\t\t\t}\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(q, p) {\n\t\t\tif (p !== undefined) {\n\t\t\t\tconsole.warn('THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.');\n\t\t\t\treturn this.multiplyQuaternions(q, p);\n\t\t\t}\n\n\t\t\treturn this.multiplyQuaternions(this, q);\n\t\t}\n\n\t\tpremultiply(q) {\n\t\t\treturn this.multiplyQuaternions(q, this);\n\t\t}\n\n\t\tmultiplyQuaternions(a, b) {\n\t\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\t\t\tconst qax = a._x,\n\t\t\t\t\t\tqay = a._y,\n\t\t\t\t\t\tqaz = a._z,\n\t\t\t\t\t\tqaw = a._w;\n\t\t\tconst qbx = b._x,\n\t\t\t\t\t\tqby = b._y,\n\t\t\t\t\t\tqbz = b._z,\n\t\t\t\t\t\tqbw = b._w;\n\t\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tslerp(qb, t) {\n\t\t\tif (t === 0) return this;\n\t\t\tif (t === 1) return this.copy(qb);\n\t\t\tconst x = this._x,\n\t\t\t\t\t\ty = this._y,\n\t\t\t\t\t\tz = this._z,\n\t\t\t\t\t\tw = this._w; // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\t\tif (cosHalfTheta < 0) {\n\t\t\t\tthis._w = -qb._w;\n\t\t\t\tthis._x = -qb._x;\n\t\t\t\tthis._y = -qb._y;\n\t\t\t\tthis._z = -qb._z;\n\t\t\t\tcosHalfTheta = -cosHalfTheta;\n\t\t\t} else {\n\t\t\t\tthis.copy(qb);\n\t\t\t}\n\n\t\t\tif (cosHalfTheta >= 1.0) {\n\t\t\t\tthis._w = w;\n\t\t\t\tthis._x = x;\n\t\t\t\tthis._y = y;\n\t\t\t\tthis._z = z;\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\t\tif (sqrSinHalfTheta <= Number.EPSILON) {\n\t\t\t\tconst s = 1 - t;\n\t\t\t\tthis._w = s * w + t * this._w;\n\t\t\t\tthis._x = s * x + t * this._x;\n\t\t\t\tthis._y = s * y + t * this._y;\n\t\t\t\tthis._z = s * z + t * this._z;\n\t\t\t\tthis.normalize();\n\n\t\t\t\tthis._onChangeCallback();\n\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tconst sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n\t\t\tconst halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n\t\t\tconst ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta,\n\t\t\t\t\t\tratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n\t\t\tthis._w = w * ratioA + this._w * ratioB;\n\t\t\tthis._x = x * ratioA + this._x * ratioB;\n\t\t\tthis._y = y * ratioA + this._y * ratioB;\n\t\t\tthis._z = z * ratioA + this._z * ratioB;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tslerpQuaternions(qa, qb, t) {\n\t\t\tthis.copy(qa).slerp(qb, t);\n\t\t}\n\n\t\tequals(quaternion) {\n\t\t\treturn quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tthis._x = array[offset];\n\t\t\tthis._y = array[offset + 1];\n\t\t\tthis._z = array[offset + 2];\n\t\t\tthis._w = array[offset + 3];\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this._x;\n\t\t\tarray[offset + 1] = this._y;\n\t\t\tarray[offset + 2] = this._z;\n\t\t\tarray[offset + 3] = this._w;\n\t\t\treturn array;\n\t\t}\n\n\t\tfromBufferAttribute(attribute, index) {\n\t\t\tthis._x = attribute.getX(index);\n\t\t\tthis._y = attribute.getY(index);\n\t\t\tthis._z = attribute.getZ(index);\n\t\t\tthis._w = attribute.getW(index);\n\t\t\treturn this;\n\t\t}\n\n\t\t_onChange(callback) {\n\t\t\tthis._onChangeCallback = callback;\n\t\t\treturn this;\n\t\t}\n\n\t\t_onChangeCallback() {}\n\n\t}\n\n\tQuaternion.prototype.isQuaternion = true;\n\n\tclass Vector3 {\n\t\tconstructor(x = 0, y = 0, z = 0) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t}\n\n\t\tset(x, y, z) {\n\t\t\tif (z === undefined) z = this.z; // sprite.scale.set(x,y)\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetScalar(scalar) {\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetX(x) {\n\t\t\tthis.x = x;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetY(y) {\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetZ(z) {\n\t\t\tthis.z = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetComponent(index, value) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\tthis.x = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\t\t\t\t\tthis.y = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.z = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetComponent(index) {\n\t\t\tswitch (index) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn this.x;\n\n\t\t\t\tcase 1:\n\t\t\t\t\treturn this.y;\n\n\t\t\t\tcase 2:\n\t\t\t\t\treturn this.z;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('index is out of range: ' + index);\n\t\t\t}\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.x, this.y, this.z);\n\t\t}\n\n\t\tcopy(v) {\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tadd(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n\t\t\t\treturn this.addVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScalar(s) {\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\t\t\treturn this;\n\t\t}\n\n\t\taddVectors(a, b) {\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScaledVector(v, s) {\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsub(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n\t\t\t\treturn this.subVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubScalar(s) {\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsubVectors(a, b) {\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.');\n\t\t\t\treturn this.multiplyVectors(v, w);\n\t\t\t}\n\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\t\t\tthis.z *= v.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(scalar) {\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyVectors(a, b) {\n\t\t\tthis.x = a.x * b.x;\n\t\t\tthis.y = a.y * b.y;\n\t\t\tthis.z = a.z * b.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyEuler(euler) {\n\t\t\tif (!(euler && euler.isEuler)) {\n\t\t\t\tconsole.error('THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.');\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n\t\t}\n\n\t\tapplyAxisAngle(axis, angle) {\n\t\t\treturn this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n\t\t}\n\n\t\tapplyMatrix3(m) {\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y,\n\t\t\t\t\t\tz = this.z;\n\t\t\tconst e = m.elements;\n\t\t\tthis.x = e[0] * x + e[3] * y + e[6] * z;\n\t\t\tthis.y = e[1] * x + e[4] * y + e[7] * z;\n\t\t\tthis.z = e[2] * x + e[5] * y + e[8] * z;\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyNormalMatrix(m) {\n\t\t\treturn this.applyMatrix3(m).normalize();\n\t\t}\n\n\t\tapplyMatrix4(m) {\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y,\n\t\t\t\t\t\tz = this.z;\n\t\t\tconst e = m.elements;\n\t\t\tconst w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n\t\t\tthis.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n\t\t\tthis.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n\t\t\tthis.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyQuaternion(q) {\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y,\n\t\t\t\t\t\tz = this.z;\n\t\t\tconst qx = q.x,\n\t\t\t\t\t\tqy = q.y,\n\t\t\t\t\t\tqz = q.z,\n\t\t\t\t\t\tqw = q.w; // calculate quat * vector\n\n\t\t\tconst ix = qw * x + qy * z - qz * y;\n\t\t\tconst iy = qw * y + qz * x - qx * z;\n\t\t\tconst iz = qw * z + qx * y - qy * x;\n\t\t\tconst iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n\t\t\tthis.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\t\tthis.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\t\tthis.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t\t\treturn this;\n\t\t}\n\n\t\tproject(camera) {\n\t\t\treturn this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n\t\t}\n\n\t\tunproject(camera) {\n\t\t\treturn this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n\t\t}\n\n\t\ttransformDirection(m) {\n\t\t\t// input: THREE.Matrix4 affine matrix\n\t\t\t// vector interpreted as a direction\n\t\t\tconst x = this.x,\n\t\t\t\t\t\ty = this.y,\n\t\t\t\t\t\tz = this.z;\n\t\t\tconst e = m.elements;\n\t\t\tthis.x = e[0] * x + e[4] * y + e[8] * z;\n\t\t\tthis.y = e[1] * x + e[5] * y + e[9] * z;\n\t\t\tthis.z = e[2] * x + e[6] * y + e[10] * z;\n\t\t\treturn this.normalize();\n\t\t}\n\n\t\tdivide(v) {\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\t\t\tthis.z /= v.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tdivideScalar(scalar) {\n\t\t\treturn this.multiplyScalar(1 / scalar);\n\t\t}\n\n\t\tmin(v) {\n\t\t\tthis.x = Math.min(this.x, v.x);\n\t\t\tthis.y = Math.min(this.y, v.y);\n\t\t\tthis.z = Math.min(this.z, v.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tmax(v) {\n\t\t\tthis.x = Math.max(this.x, v.x);\n\t\t\tthis.y = Math.max(this.y, v.y);\n\t\t\tthis.z = Math.max(this.z, v.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tclamp(min, max) {\n\t\t\t// assumes min < max, componentwise\n\t\t\tthis.x = Math.max(min.x, Math.min(max.x, this.x));\n\t\t\tthis.y = Math.max(min.y, Math.min(max.y, this.y));\n\t\t\tthis.z = Math.max(min.z, Math.min(max.z, this.z));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampScalar(minVal, maxVal) {\n\t\t\tthis.x = Math.max(minVal, Math.min(maxVal, this.x));\n\t\t\tthis.y = Math.max(minVal, Math.min(maxVal, this.y));\n\t\t\tthis.z = Math.max(minVal, Math.min(maxVal, this.z));\n\t\t\treturn this;\n\t\t}\n\n\t\tclampLength(min, max) {\n\t\t\tconst length = this.length();\n\t\t\treturn this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n\t\t}\n\n\t\tfloor() {\n\t\t\tthis.x = Math.floor(this.x);\n\t\t\tthis.y = Math.floor(this.y);\n\t\t\tthis.z = Math.floor(this.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tceil() {\n\t\t\tthis.x = Math.ceil(this.x);\n\t\t\tthis.y = Math.ceil(this.y);\n\t\t\tthis.z = Math.ceil(this.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tround() {\n\t\t\tthis.x = Math.round(this.x);\n\t\t\tthis.y = Math.round(this.y);\n\t\t\tthis.z = Math.round(this.z);\n\t\t\treturn this;\n\t\t}\n\n\t\troundToZero() {\n\t\t\tthis.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n\t\t\tthis.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n\t\t\tthis.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tnegate() {\n\t\t\tthis.x = -this.x;\n\t\t\tthis.y = -this.y;\n\t\t\tthis.z = -this.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tdot(v) {\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\t\t} // TODO lengthSquared?\n\n\n\t\tlengthSq() {\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\t\t}\n\n\t\tlength() {\n\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n\t\t}\n\n\t\tmanhattanLength() {\n\t\t\treturn Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n\t\t}\n\n\t\tnormalize() {\n\t\t\treturn this.divideScalar(this.length() || 1);\n\t\t}\n\n\t\tsetLength(length) {\n\t\t\treturn this.normalize().multiplyScalar(length);\n\t\t}\n\n\t\tlerp(v, alpha) {\n\t\t\tthis.x += (v.x - this.x) * alpha;\n\t\t\tthis.y += (v.y - this.y) * alpha;\n\t\t\tthis.z += (v.z - this.z) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerpVectors(v1, v2, alpha) {\n\t\t\tthis.x = v1.x + (v2.x - v1.x) * alpha;\n\t\t\tthis.y = v1.y + (v2.y - v1.y) * alpha;\n\t\t\tthis.z = v1.z + (v2.z - v1.z) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tcross(v, w) {\n\t\t\tif (w !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.');\n\t\t\t\treturn this.crossVectors(v, w);\n\t\t\t}\n\n\t\t\treturn this.crossVectors(this, v);\n\t\t}\n\n\t\tcrossVectors(a, b) {\n\t\t\tconst ax = a.x,\n\t\t\t\t\t\tay = a.y,\n\t\t\t\t\t\taz = a.z;\n\t\t\tconst bx = b.x,\n\t\t\t\t\t\tby = b.y,\n\t\t\t\t\t\tbz = b.z;\n\t\t\tthis.x = ay * bz - az * by;\n\t\t\tthis.y = az * bx - ax * bz;\n\t\t\tthis.z = ax * by - ay * bx;\n\t\t\treturn this;\n\t\t}\n\n\t\tprojectOnVector(v) {\n\t\t\tconst denominator = v.lengthSq();\n\t\t\tif (denominator === 0) return this.set(0, 0, 0);\n\t\t\tconst scalar = v.dot(this) / denominator;\n\t\t\treturn this.copy(v).multiplyScalar(scalar);\n\t\t}\n\n\t\tprojectOnPlane(planeNormal) {\n\t\t\t_vector$c.copy(this).projectOnVector(planeNormal);\n\n\t\t\treturn this.sub(_vector$c);\n\t\t}\n\n\t\treflect(normal) {\n\t\t\t// reflect incident vector off plane orthogonal to normal\n\t\t\t// normal is assumed to have unit length\n\t\t\treturn this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n\t\t}\n\n\t\tangleTo(v) {\n\t\t\tconst denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n\t\t\tif (denominator === 0) return Math.PI / 2;\n\t\t\tconst theta = this.dot(v) / denominator; // clamp, to handle numerical problems\n\n\t\t\treturn Math.acos(clamp(theta, -1, 1));\n\t\t}\n\n\t\tdistanceTo(v) {\n\t\t\treturn Math.sqrt(this.distanceToSquared(v));\n\t\t}\n\n\t\tdistanceToSquared(v) {\n\t\t\tconst dx = this.x - v.x,\n\t\t\t\t\t\tdy = this.y - v.y,\n\t\t\t\t\t\tdz = this.z - v.z;\n\t\t\treturn dx * dx + dy * dy + dz * dz;\n\t\t}\n\n\t\tmanhattanDistanceTo(v) {\n\t\t\treturn Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n\t\t}\n\n\t\tsetFromSpherical(s) {\n\t\t\treturn this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n\t\t}\n\n\t\tsetFromSphericalCoords(radius, phi, theta) {\n\t\t\tconst sinPhiRadius = Math.sin(phi) * radius;\n\t\t\tthis.x = sinPhiRadius * Math.sin(theta);\n\t\t\tthis.y = Math.cos(phi) * radius;\n\t\t\tthis.z = sinPhiRadius * Math.cos(theta);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromCylindrical(c) {\n\t\t\treturn this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n\t\t}\n\n\t\tsetFromCylindricalCoords(radius, theta, y) {\n\t\t\tthis.x = radius * Math.sin(theta);\n\t\t\tthis.y = y;\n\t\t\tthis.z = radius * Math.cos(theta);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromMatrixPosition(m) {\n\t\t\tconst e = m.elements;\n\t\t\tthis.x = e[12];\n\t\t\tthis.y = e[13];\n\t\t\tthis.z = e[14];\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromMatrixScale(m) {\n\t\t\tconst sx = this.setFromMatrixColumn(m, 0).length();\n\t\t\tconst sy = this.setFromMatrixColumn(m, 1).length();\n\t\t\tconst sz = this.setFromMatrixColumn(m, 2).length();\n\t\t\tthis.x = sx;\n\t\t\tthis.y = sy;\n\t\t\tthis.z = sz;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromMatrixColumn(m, index) {\n\t\t\treturn this.fromArray(m.elements, index * 4);\n\t\t}\n\n\t\tsetFromMatrix3Column(m, index) {\n\t\t\treturn this.fromArray(m.elements, index * 3);\n\t\t}\n\n\t\tequals(v) {\n\t\t\treturn v.x === this.x && v.y === this.y && v.z === this.z;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tthis.x = array[offset];\n\t\t\tthis.y = array[offset + 1];\n\t\t\tthis.z = array[offset + 2];\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this.x;\n\t\t\tarray[offset + 1] = this.y;\n\t\t\tarray[offset + 2] = this.z;\n\t\t\treturn array;\n\t\t}\n\n\t\tfromBufferAttribute(attribute, index, offset) {\n\t\t\tif (offset !== undefined) {\n\t\t\t\tconsole.warn('THREE.Vector3: offset has been removed from .fromBufferAttribute().');\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX(index);\n\t\t\tthis.y = attribute.getY(index);\n\t\t\tthis.z = attribute.getZ(index);\n\t\t\treturn this;\n\t\t}\n\n\t\trandom() {\n\t\t\tthis.x = Math.random();\n\t\t\tthis.y = Math.random();\n\t\t\tthis.z = Math.random();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tVector3.prototype.isVector3 = true;\n\n\tconst _vector$c = /*@__PURE__*/new Vector3();\n\n\tconst _quaternion$4 = /*@__PURE__*/new Quaternion();\n\n\tclass Box3 {\n\t\tconstructor(min = new Vector3(+Infinity, +Infinity, +Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n\t\t\tthis.min = min;\n\t\t\tthis.max = max;\n\t\t}\n\n\t\tset(min, max) {\n\t\t\tthis.min.copy(min);\n\t\t\tthis.max.copy(max);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromArray(array) {\n\t\t\tlet minX = +Infinity;\n\t\t\tlet minY = +Infinity;\n\t\t\tlet minZ = +Infinity;\n\t\t\tlet maxX = -Infinity;\n\t\t\tlet maxY = -Infinity;\n\t\t\tlet maxZ = -Infinity;\n\n\t\t\tfor (let i = 0, l = array.length; i < l; i += 3) {\n\t\t\t\tconst x = array[i];\n\t\t\t\tconst y = array[i + 1];\n\t\t\t\tconst z = array[i + 2];\n\t\t\t\tif (x < minX) minX = x;\n\t\t\t\tif (y < minY) minY = y;\n\t\t\t\tif (z < minZ) minZ = z;\n\t\t\t\tif (x > maxX) maxX = x;\n\t\t\t\tif (y > maxY) maxY = y;\n\t\t\t\tif (z > maxZ) maxZ = z;\n\t\t\t}\n\n\t\t\tthis.min.set(minX, minY, minZ);\n\t\t\tthis.max.set(maxX, maxY, maxZ);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromBufferAttribute(attribute) {\n\t\t\tlet minX = +Infinity;\n\t\t\tlet minY = +Infinity;\n\t\t\tlet minZ = +Infinity;\n\t\t\tlet maxX = -Infinity;\n\t\t\tlet maxY = -Infinity;\n\t\t\tlet maxZ = -Infinity;\n\n\t\t\tfor (let i = 0, l = attribute.count; i < l; i++) {\n\t\t\t\tconst x = attribute.getX(i);\n\t\t\t\tconst y = attribute.getY(i);\n\t\t\t\tconst z = attribute.getZ(i);\n\t\t\t\tif (x < minX) minX = x;\n\t\t\t\tif (y < minY) minY = y;\n\t\t\t\tif (z < minZ) minZ = z;\n\t\t\t\tif (x > maxX) maxX = x;\n\t\t\t\tif (y > maxY) maxY = y;\n\t\t\t\tif (z > maxZ) maxZ = z;\n\t\t\t}\n\n\t\t\tthis.min.set(minX, minY, minZ);\n\t\t\tthis.max.set(maxX, maxY, maxZ);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromPoints(points) {\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor (let i = 0, il = points.length; i < il; i++) {\n\t\t\t\tthis.expandByPoint(points[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromCenterAndSize(center, size) {\n\t\t\tconst halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n\n\t\t\tthis.min.copy(center).sub(halfSize);\n\t\t\tthis.max.copy(center).add(halfSize);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromObject(object) {\n\t\t\tthis.makeEmpty();\n\t\t\treturn this.expandByObject(object);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(box) {\n\t\t\tthis.min.copy(box.min);\n\t\t\tthis.max.copy(box.max);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeEmpty() {\n\t\t\tthis.min.x = this.min.y = this.min.z = +Infinity;\n\t\t\tthis.max.x = this.max.y = this.max.z = -Infinity;\n\t\t\treturn this;\n\t\t}\n\n\t\tisEmpty() {\n\t\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\t\t\treturn this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n\t\t}\n\n\t\tgetCenter(target) {\n\t\t\treturn this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n\t\t}\n\n\t\tgetSize(target) {\n\t\t\treturn this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n\t\t}\n\n\t\texpandByPoint(point) {\n\t\t\tthis.min.min(point);\n\t\t\tthis.max.max(point);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByVector(vector) {\n\t\t\tthis.min.sub(vector);\n\t\t\tthis.max.add(vector);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByScalar(scalar) {\n\t\t\tthis.min.addScalar(-scalar);\n\t\t\tthis.max.addScalar(scalar);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByObject(object) {\n\t\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t\t// accounting for both the object's, and children's, world transforms\n\t\t\tobject.updateWorldMatrix(false, false);\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif (geometry !== undefined) {\n\t\t\t\tif (geometry.boundingBox === null) {\n\t\t\t\t\tgeometry.computeBoundingBox();\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy(geometry.boundingBox);\n\n\t\t\t\t_box$3.applyMatrix4(object.matrixWorld);\n\n\t\t\t\tthis.union(_box$3);\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tthis.expandByObject(children[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcontainsPoint(point) {\n\t\t\treturn point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n\t\t}\n\n\t\tcontainsBox(box) {\n\t\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n\t\t}\n\n\t\tgetParameter(point, target) {\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\t\t\treturn target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\t// using 6 splitting planes to rule out intersections.\n\t\t\treturn box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\t\t}\n\n\t\tintersectsSphere(sphere) {\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint(sphere.center, _vector$b); // If that point is inside the sphere, the AABB and sphere intersect.\n\n\t\t\treturn _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n\t\t}\n\n\t\tintersectsPlane(plane) {\n\t\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\t\t\tlet min, max;\n\n\t\t\tif (plane.normal.x > 0) {\n\t\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\t\tmax = plane.normal.x * this.max.x;\n\t\t\t} else {\n\t\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\t\tmax = plane.normal.x * this.min.x;\n\t\t\t}\n\n\t\t\tif (plane.normal.y > 0) {\n\t\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\t\tmax += plane.normal.y * this.max.y;\n\t\t\t} else {\n\t\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\t\tmax += plane.normal.y * this.min.y;\n\t\t\t}\n\n\t\t\tif (plane.normal.z > 0) {\n\t\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\t\tmax += plane.normal.z * this.max.z;\n\t\t\t} else {\n\t\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\t\tmax += plane.normal.z * this.min.z;\n\t\t\t}\n\n\t\t\treturn min <= -plane.constant && max >= -plane.constant;\n\t\t}\n\n\t\tintersectsTriangle(triangle) {\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn false;\n\t\t\t} // compute box center and extents\n\n\n\t\t\tthis.getCenter(_center);\n\n\t\t\t_extents.subVectors(this.max, _center); // translate triangle to aabb origin\n\n\n\t\t\t_v0$2.subVectors(triangle.a, _center);\n\n\t\t\t_v1$7.subVectors(triangle.b, _center);\n\n\t\t\t_v2$3.subVectors(triangle.c, _center); // compute edge vectors for triangle\n\n\n\t\t\t_f0.subVectors(_v1$7, _v0$2);\n\n\t\t\t_f1.subVectors(_v2$3, _v1$7);\n\n\t\t\t_f2.subVectors(_v0$2, _v2$3); // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\n\n\t\t\tlet axes = [0, -_f0.z, _f0.y, 0, -_f1.z, _f1.y, 0, -_f2.z, _f2.y, _f0.z, 0, -_f0.x, _f1.z, 0, -_f1.x, _f2.z, 0, -_f2.x, -_f0.y, _f0.x, 0, -_f1.y, _f1.x, 0, -_f2.y, _f2.x, 0];\n\n\t\t\tif (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n\t\t\t\treturn false;\n\t\t\t} // test 3 face normals from the aabb\n\n\n\t\t\taxes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n\t\t\tif (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n\t\t\t\treturn false;\n\t\t\t} // finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\n\n\t\t\t_triangleNormal.crossVectors(_f0, _f1);\n\n\t\t\taxes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n\t\t\treturn satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents);\n\t\t}\n\n\t\tclampPoint(point, target) {\n\t\t\treturn target.copy(point).clamp(this.min, this.max);\n\t\t}\n\n\t\tdistanceToPoint(point) {\n\t\t\tconst clampedPoint = _vector$b.copy(point).clamp(this.min, this.max);\n\n\t\t\treturn clampedPoint.sub(point).length();\n\t\t}\n\n\t\tgetBoundingSphere(target) {\n\t\t\tthis.getCenter(target.center);\n\t\t\ttarget.radius = this.getSize(_vector$b).length() * 0.5;\n\t\t\treturn target;\n\t\t}\n\n\t\tintersect(box) {\n\t\t\tthis.min.max(box.min);\n\t\t\tthis.max.min(box.max); // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\n\t\t\tif (this.isEmpty()) this.makeEmpty();\n\t\t\treturn this;\n\t\t}\n\n\t\tunion(box) {\n\t\t\tthis.min.min(box.min);\n\t\t\tthis.max.max(box.max);\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyMatrix4(matrix) {\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif (this.isEmpty()) return this; // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\n\t\t\t_points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); // 000\n\n\n\t\t\t_points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); // 001\n\n\n\t\t\t_points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); // 010\n\n\n\t\t\t_points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); // 011\n\n\n\t\t\t_points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); // 100\n\n\n\t\t\t_points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); // 101\n\n\n\t\t\t_points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); // 110\n\n\n\t\t\t_points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); // 111\n\n\n\t\t\tthis.setFromPoints(_points);\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(offset) {\n\t\t\tthis.min.add(offset);\n\t\t\tthis.max.add(offset);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(box) {\n\t\t\treturn box.min.equals(this.min) && box.max.equals(this.max);\n\t\t}\n\n\t}\n\n\tBox3.prototype.isBox3 = true;\n\tconst _points = [/*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3()];\n\n\tconst _vector$b = /*@__PURE__*/new Vector3();\n\n\tconst _box$3 = /*@__PURE__*/new Box3(); // triangle centered vertices\n\n\n\tconst _v0$2 = /*@__PURE__*/new Vector3();\n\n\tconst _v1$7 = /*@__PURE__*/new Vector3();\n\n\tconst _v2$3 = /*@__PURE__*/new Vector3(); // triangle edge vectors\n\n\n\tconst _f0 = /*@__PURE__*/new Vector3();\n\n\tconst _f1 = /*@__PURE__*/new Vector3();\n\n\tconst _f2 = /*@__PURE__*/new Vector3();\n\n\tconst _center = /*@__PURE__*/new Vector3();\n\n\tconst _extents = /*@__PURE__*/new Vector3();\n\n\tconst _triangleNormal = /*@__PURE__*/new Vector3();\n\n\tconst _testAxis = /*@__PURE__*/new Vector3();\n\n\tfunction satForAxes(axes, v0, v1, v2, extents) {\n\t\tfor (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n\t\t\t_testAxis.fromArray(axes, i); // project the aabb onto the seperating axis\n\n\n\t\t\tconst r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z); // project all 3 vertices of the triangle onto the seperating axis\n\n\t\t\tconst p0 = v0.dot(_testAxis);\n\t\t\tconst p1 = v1.dot(_testAxis);\n\t\t\tconst p2 = v2.dot(_testAxis); // actual test, basically see if either of the most extreme of the triangle points intersects r\n\n\t\t\tif (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tconst _box$2 = /*@__PURE__*/new Box3();\n\n\tconst _v1$6 = /*@__PURE__*/new Vector3();\n\n\tconst _toFarthestPoint = /*@__PURE__*/new Vector3();\n\n\tconst _toPoint = /*@__PURE__*/new Vector3();\n\n\tclass Sphere {\n\t\tconstructor(center = new Vector3(), radius = -1) {\n\t\t\tthis.center = center;\n\t\t\tthis.radius = radius;\n\t\t}\n\n\t\tset(center, radius) {\n\t\t\tthis.center.copy(center);\n\t\t\tthis.radius = radius;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromPoints(points, optionalCenter) {\n\t\t\tconst center = this.center;\n\n\t\t\tif (optionalCenter !== undefined) {\n\t\t\t\tcenter.copy(optionalCenter);\n\t\t\t} else {\n\t\t\t\t_box$2.setFromPoints(points).getCenter(center);\n\t\t\t}\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor (let i = 0, il = points.length; i < il; i++) {\n\t\t\t\tmaxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt(maxRadiusSq);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(sphere) {\n\t\t\tthis.center.copy(sphere.center);\n\t\t\tthis.radius = sphere.radius;\n\t\t\treturn this;\n\t\t}\n\n\t\tisEmpty() {\n\t\t\treturn this.radius < 0;\n\t\t}\n\n\t\tmakeEmpty() {\n\t\t\tthis.center.set(0, 0, 0);\n\t\t\tthis.radius = -1;\n\t\t\treturn this;\n\t\t}\n\n\t\tcontainsPoint(point) {\n\t\t\treturn point.distanceToSquared(this.center) <= this.radius * this.radius;\n\t\t}\n\n\t\tdistanceToPoint(point) {\n\t\t\treturn point.distanceTo(this.center) - this.radius;\n\t\t}\n\n\t\tintersectsSphere(sphere) {\n\t\t\tconst radiusSum = this.radius + sphere.radius;\n\t\t\treturn sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\treturn box.intersectsSphere(this);\n\t\t}\n\n\t\tintersectsPlane(plane) {\n\t\t\treturn Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n\t\t}\n\n\t\tclampPoint(point, target) {\n\t\t\tconst deltaLengthSq = this.center.distanceToSquared(point);\n\t\t\ttarget.copy(point);\n\n\t\t\tif (deltaLengthSq > this.radius * this.radius) {\n\t\t\t\ttarget.sub(this.center).normalize();\n\t\t\t\ttarget.multiplyScalar(this.radius).add(this.center);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\tgetBoundingBox(target) {\n\t\t\tif (this.isEmpty()) {\n\t\t\t\t// Empty sphere produces empty bounding box\n\t\t\t\ttarget.makeEmpty();\n\t\t\t\treturn target;\n\t\t\t}\n\n\t\t\ttarget.set(this.center, this.center);\n\t\t\ttarget.expandByScalar(this.radius);\n\t\t\treturn target;\n\t\t}\n\n\t\tapplyMatrix4(matrix) {\n\t\t\tthis.center.applyMatrix4(matrix);\n\t\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(offset) {\n\t\t\tthis.center.add(offset);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByPoint(point) {\n\t\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\t\t\t_toPoint.subVectors(point, this.center);\n\n\t\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\t\tif (lengthSq > this.radius * this.radius) {\n\t\t\t\tconst length = Math.sqrt(lengthSq);\n\t\t\t\tconst missingRadiusHalf = (length - this.radius) * 0.5; // Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\t\tthis.center.add(_toPoint.multiplyScalar(missingRadiusHalf / length));\n\t\t\t\tthis.radius += missingRadiusHalf;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tunion(sphere) {\n\t\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\t\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\t\t\t_toFarthestPoint.subVectors(sphere.center, this.center).normalize().multiplyScalar(sphere.radius);\n\n\t\t\tthis.expandByPoint(_v1$6.copy(sphere.center).add(_toFarthestPoint));\n\t\t\tthis.expandByPoint(_v1$6.copy(sphere.center).sub(_toFarthestPoint));\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(sphere) {\n\t\t\treturn sphere.center.equals(this.center) && sphere.radius === this.radius;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tconst _vector$a = /*@__PURE__*/new Vector3();\n\n\tconst _segCenter = /*@__PURE__*/new Vector3();\n\n\tconst _segDir = /*@__PURE__*/new Vector3();\n\n\tconst _diff = /*@__PURE__*/new Vector3();\n\n\tconst _edge1 = /*@__PURE__*/new Vector3();\n\n\tconst _edge2 = /*@__PURE__*/new Vector3();\n\n\tconst _normal$1 = /*@__PURE__*/new Vector3();\n\n\tclass Ray {\n\t\tconstructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n\t\t\tthis.origin = origin;\n\t\t\tthis.direction = direction;\n\t\t}\n\n\t\tset(origin, direction) {\n\t\t\tthis.origin.copy(origin);\n\t\t\tthis.direction.copy(direction);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(ray) {\n\t\t\tthis.origin.copy(ray.origin);\n\t\t\tthis.direction.copy(ray.direction);\n\t\t\treturn this;\n\t\t}\n\n\t\tat(t, target) {\n\t\t\treturn target.copy(this.direction).multiplyScalar(t).add(this.origin);\n\t\t}\n\n\t\tlookAt(v) {\n\t\t\tthis.direction.copy(v).sub(this.origin).normalize();\n\t\t\treturn this;\n\t\t}\n\n\t\trecast(t) {\n\t\t\tthis.origin.copy(this.at(t, _vector$a));\n\t\t\treturn this;\n\t\t}\n\n\t\tclosestPointToPoint(point, target) {\n\t\t\ttarget.subVectors(point, this.origin);\n\t\t\tconst directionDistance = target.dot(this.direction);\n\n\t\t\tif (directionDistance < 0) {\n\t\t\t\treturn target.copy(this.origin);\n\t\t\t}\n\n\t\t\treturn target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n\t\t}\n\n\t\tdistanceToPoint(point) {\n\t\t\treturn Math.sqrt(this.distanceSqToPoint(point));\n\t\t}\n\n\t\tdistanceSqToPoint(point) {\n\t\t\tconst directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction); // point behind the ray\n\n\n\t\t\tif (directionDistance < 0) {\n\t\t\t\treturn this.origin.distanceToSquared(point);\n\t\t\t}\n\n\t\t\t_vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n\n\t\t\treturn _vector$a.distanceToSquared(point);\n\t\t}\n\n\t\tdistanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\t\t\t_segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n\n\t\t\t_segDir.copy(v1).sub(v0).normalize();\n\n\t\t\t_diff.copy(this.origin).sub(_segCenter);\n\n\t\t\tconst segExtent = v0.distanceTo(v1) * 0.5;\n\t\t\tconst a01 = -this.direction.dot(_segDir);\n\n\t\t\tconst b0 = _diff.dot(this.direction);\n\n\t\t\tconst b1 = -_diff.dot(_segDir);\n\n\t\t\tconst c = _diff.lengthSq();\n\n\t\t\tconst det = Math.abs(1 - a01 * a01);\n\t\t\tlet s0, s1, sqrDist, extDet;\n\n\t\t\tif (det > 0) {\n\t\t\t\t// The ray and segment are not parallel.\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif (s0 >= 0) {\n\t\t\t\t\tif (s1 >= -extDet) {\n\t\t\t\t\t\tif (s1 <= extDet) {\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\t\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// region 1\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max(0, -(a01 * s1 + b0));\n\t\t\t\t\t\t\tsqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// region 5\n\t\t\t\t\t\ts1 = -segExtent;\n\t\t\t\t\t\ts0 = Math.max(0, -(a01 * s1 + b0));\n\t\t\t\t\t\tsqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (s1 <= -extDet) {\n\t\t\t\t\t\t// region 4\n\t\t\t\t\t\ts0 = Math.max(0, -(-a01 * segExtent + b0));\n\t\t\t\t\t\ts1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n\t\t\t\t\t\tsqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n\t\t\t\t\t} else if (s1 <= extDet) {\n\t\t\t\t\t\t// region 3\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n\t\t\t\t\t\tsqrDist = s1 * (s1 + 2 * b1) + c;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// region 2\n\t\t\t\t\t\ts0 = Math.max(0, -(a01 * segExtent + b0));\n\t\t\t\t\t\ts1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n\t\t\t\t\t\tsqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Ray and segment are parallel.\n\t\t\t\ts1 = a01 > 0 ? -segExtent : segExtent;\n\t\t\t\ts0 = Math.max(0, -(a01 * s1 + b0));\n\t\t\t\tsqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n\t\t\t}\n\n\t\t\tif (optionalPointOnRay) {\n\t\t\t\toptionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n\t\t\t}\n\n\t\t\tif (optionalPointOnSegment) {\n\t\t\t\toptionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter);\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\t\t}\n\n\t\tintersectSphere(sphere, target) {\n\t\t\t_vector$a.subVectors(sphere.center, this.origin);\n\n\t\t\tconst tca = _vector$a.dot(this.direction);\n\n\t\t\tconst d2 = _vector$a.dot(_vector$a) - tca * tca;\n\t\t\tconst radius2 = sphere.radius * sphere.radius;\n\t\t\tif (d2 > radius2) return null;\n\t\t\tconst thc = Math.sqrt(radius2 - d2); // t0 = first intersect point - entrance on front of sphere\n\n\t\t\tconst t0 = tca - thc; // t1 = second intersect point - exit point on back of sphere\n\n\t\t\tconst t1 = tca + thc; // test to see if both t0 and t1 are behind the ray - if so, return null\n\n\t\t\tif (t0 < 0 && t1 < 0) return null; // test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\n\t\t\tif (t0 < 0) return this.at(t1, target); // else t0 is in front of the ray, so return the first collision point scaled by t0\n\n\t\t\treturn this.at(t0, target);\n\t\t}\n\n\t\tintersectsSphere(sphere) {\n\t\t\treturn this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n\t\t}\n\n\t\tdistanceToPlane(plane) {\n\t\t\tconst denominator = plane.normal.dot(this.direction);\n\n\t\t\tif (denominator === 0) {\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif (plane.distanceToPoint(this.origin) === 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t} // Null is preferable to undefined since undefined means.... it is undefined\n\n\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; // Return if the ray never intersects the plane\n\n\t\t\treturn t >= 0 ? t : null;\n\t\t}\n\n\t\tintersectPlane(plane, target) {\n\t\t\tconst t = this.distanceToPlane(plane);\n\n\t\t\tif (t === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.at(t, target);\n\t\t}\n\n\t\tintersectsPlane(plane) {\n\t\t\t// check if the ray lies on the plane first\n\t\t\tconst distToPoint = plane.distanceToPoint(this.origin);\n\n\t\t\tif (distToPoint === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst denominator = plane.normal.dot(this.direction);\n\n\t\t\tif (denominator * distToPoint < 0) {\n\t\t\t\treturn true;\n\t\t\t} // ray origin is behind the plane (and is pointing behind it)\n\n\n\t\t\treturn false;\n\t\t}\n\n\t\tintersectBox(box, target) {\n\t\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\t\t\tconst invdirx = 1 / this.direction.x,\n\t\t\t\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\t\t\t\tinvdirz = 1 / this.direction.z;\n\t\t\tconst origin = this.origin;\n\n\t\t\tif (invdirx >= 0) {\n\t\t\t\ttmin = (box.min.x - origin.x) * invdirx;\n\t\t\t\ttmax = (box.max.x - origin.x) * invdirx;\n\t\t\t} else {\n\t\t\t\ttmin = (box.max.x - origin.x) * invdirx;\n\t\t\t\ttmax = (box.min.x - origin.x) * invdirx;\n\t\t\t}\n\n\t\t\tif (invdiry >= 0) {\n\t\t\t\ttymin = (box.min.y - origin.y) * invdiry;\n\t\t\t\ttymax = (box.max.y - origin.y) * invdiry;\n\t\t\t} else {\n\t\t\t\ttymin = (box.max.y - origin.y) * invdiry;\n\t\t\t\ttymax = (box.min.y - origin.y) * invdiry;\n\t\t\t}\n\n\t\t\tif (tmin > tymax || tymin > tmax) return null; // These lines also handle the case where tmin or tmax is NaN\n\t\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\t\tif (tymin > tmin || tmin !== tmin) tmin = tymin;\n\t\t\tif (tymax < tmax || tmax !== tmax) tmax = tymax;\n\n\t\t\tif (invdirz >= 0) {\n\t\t\t\ttzmin = (box.min.z - origin.z) * invdirz;\n\t\t\t\ttzmax = (box.max.z - origin.z) * invdirz;\n\t\t\t} else {\n\t\t\t\ttzmin = (box.max.z - origin.z) * invdirz;\n\t\t\t\ttzmax = (box.min.z - origin.z) * invdirz;\n\t\t\t}\n\n\t\t\tif (tmin > tzmax || tzmin > tmax) return null;\n\t\t\tif (tzmin > tmin || tmin !== tmin) tmin = tzmin;\n\t\t\tif (tzmax < tmax || tmax !== tmax) tmax = tzmax; //return point closest to the ray (positive side)\n\n\t\t\tif (tmax < 0) return null;\n\t\t\treturn this.at(tmin >= 0 ? tmin : tmax, target);\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\treturn this.intersectBox(box, _vector$a) !== null;\n\t\t}\n\n\t\tintersectTriangle(a, b, c, backfaceCulling, target) {\n\t\t\t// Compute the offset origin, edges, and normal.\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\t\t\t_edge1.subVectors(b, a);\n\n\t\t\t_edge2.subVectors(c, a);\n\n\t\t\t_normal$1.crossVectors(_edge1, _edge2); // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t//\t |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t//\t |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t//\t |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\n\n\t\t\tlet DdN = this.direction.dot(_normal$1);\n\t\t\tlet sign;\n\n\t\t\tif (DdN > 0) {\n\t\t\t\tif (backfaceCulling) return null;\n\t\t\t\tsign = 1;\n\t\t\t} else if (DdN < 0) {\n\t\t\t\tsign = -1;\n\t\t\t\tDdN = -DdN;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t_diff.subVectors(this.origin, a);\n\n\t\t\tconst DdQxE2 = sign * this.direction.dot(_edge2.crossVectors(_diff, _edge2)); // b1 < 0, no intersection\n\n\t\t\tif (DdQxE2 < 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst DdE1xQ = sign * this.direction.dot(_edge1.cross(_diff)); // b2 < 0, no intersection\n\n\t\t\tif (DdE1xQ < 0) {\n\t\t\t\treturn null;\n\t\t\t} // b1+b2 > 1, no intersection\n\n\n\t\t\tif (DdQxE2 + DdE1xQ > DdN) {\n\t\t\t\treturn null;\n\t\t\t} // Line intersects triangle, check if ray does.\n\n\n\t\t\tconst QdN = -sign * _diff.dot(_normal$1); // t < 0, no intersection\n\n\n\t\t\tif (QdN < 0) {\n\t\t\t\treturn null;\n\t\t\t} // Ray intersects triangle.\n\n\n\t\t\treturn this.at(QdN / DdN, target);\n\t\t}\n\n\t\tapplyMatrix4(matrix4) {\n\t\t\tthis.origin.applyMatrix4(matrix4);\n\t\t\tthis.direction.transformDirection(matrix4);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(ray) {\n\t\t\treturn ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tclass Matrix4 {\n\t\tconstructor() {\n\t\t\tthis.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n\n\t\t\tif (arguments.length > 0) {\n\t\t\t\tconsole.error('THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.');\n\t\t\t}\n\t\t}\n\n\t\tset(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] = n11;\n\t\t\tte[4] = n12;\n\t\t\tte[8] = n13;\n\t\t\tte[12] = n14;\n\t\t\tte[1] = n21;\n\t\t\tte[5] = n22;\n\t\t\tte[9] = n23;\n\t\t\tte[13] = n24;\n\t\t\tte[2] = n31;\n\t\t\tte[6] = n32;\n\t\t\tte[10] = n33;\n\t\t\tte[14] = n34;\n\t\t\tte[3] = n41;\n\t\t\tte[7] = n42;\n\t\t\tte[11] = n43;\n\t\t\tte[15] = n44;\n\t\t\treturn this;\n\t\t}\n\n\t\tidentity() {\n\t\t\tthis.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new Matrix4().fromArray(this.elements);\n\t\t}\n\n\t\tcopy(m) {\n\t\t\tconst te = this.elements;\n\t\t\tconst me = m.elements;\n\t\t\tte[0] = me[0];\n\t\t\tte[1] = me[1];\n\t\t\tte[2] = me[2];\n\t\t\tte[3] = me[3];\n\t\t\tte[4] = me[4];\n\t\t\tte[5] = me[5];\n\t\t\tte[6] = me[6];\n\t\t\tte[7] = me[7];\n\t\t\tte[8] = me[8];\n\t\t\tte[9] = me[9];\n\t\t\tte[10] = me[10];\n\t\t\tte[11] = me[11];\n\t\t\tte[12] = me[12];\n\t\t\tte[13] = me[13];\n\t\t\tte[14] = me[14];\n\t\t\tte[15] = me[15];\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyPosition(m) {\n\t\t\tconst te = this.elements,\n\t\t\t\t\t\tme = m.elements;\n\t\t\tte[12] = me[12];\n\t\t\tte[13] = me[13];\n\t\t\tte[14] = me[14];\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromMatrix3(m) {\n\t\t\tconst me = m.elements;\n\t\t\tthis.set(me[0], me[3], me[6], 0, me[1], me[4], me[7], 0, me[2], me[5], me[8], 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\textractBasis(xAxis, yAxis, zAxis) {\n\t\t\txAxis.setFromMatrixColumn(this, 0);\n\t\t\tyAxis.setFromMatrixColumn(this, 1);\n\t\t\tzAxis.setFromMatrixColumn(this, 2);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeBasis(xAxis, yAxis, zAxis) {\n\t\t\tthis.set(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\textractRotation(m) {\n\t\t\t// this method does not support reflection matrices\n\t\t\tconst te = this.elements;\n\t\t\tconst me = m.elements;\n\n\t\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n\n\t\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n\n\t\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n\n\t\t\tte[0] = me[0] * scaleX;\n\t\t\tte[1] = me[1] * scaleX;\n\t\t\tte[2] = me[2] * scaleX;\n\t\t\tte[3] = 0;\n\t\t\tte[4] = me[4] * scaleY;\n\t\t\tte[5] = me[5] * scaleY;\n\t\t\tte[6] = me[6] * scaleY;\n\t\t\tte[7] = 0;\n\t\t\tte[8] = me[8] * scaleZ;\n\t\t\tte[9] = me[9] * scaleZ;\n\t\t\tte[10] = me[10] * scaleZ;\n\t\t\tte[11] = 0;\n\t\t\tte[12] = 0;\n\t\t\tte[13] = 0;\n\t\t\tte[14] = 0;\n\t\t\tte[15] = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationFromEuler(euler) {\n\t\t\tif (!(euler && euler.isEuler)) {\n\t\t\t\tconsole.error('THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.');\n\t\t\t}\n\n\t\t\tconst te = this.elements;\n\t\t\tconst x = euler.x,\n\t\t\t\t\t\ty = euler.y,\n\t\t\t\t\t\tz = euler.z;\n\t\t\tconst a = Math.cos(x),\n\t\t\t\t\t\tb = Math.sin(x);\n\t\t\tconst c = Math.cos(y),\n\t\t\t\t\t\td = Math.sin(y);\n\t\t\tconst e = Math.cos(z),\n\t\t\t\t\t\tf = Math.sin(z);\n\n\t\t\tif (euler.order === 'XYZ') {\n\t\t\t\tconst ae = a * e,\n\t\t\t\t\t\t\taf = a * f,\n\t\t\t\t\t\t\tbe = b * e,\n\t\t\t\t\t\t\tbf = b * f;\n\t\t\t\tte[0] = c * e;\n\t\t\t\tte[4] = -c * f;\n\t\t\t\tte[8] = d;\n\t\t\t\tte[1] = af + be * d;\n\t\t\t\tte[5] = ae - bf * d;\n\t\t\t\tte[9] = -b * c;\n\t\t\t\tte[2] = bf - ae * d;\n\t\t\t\tte[6] = be + af * d;\n\t\t\t\tte[10] = a * c;\n\t\t\t} else if (euler.order === 'YXZ') {\n\t\t\t\tconst ce = c * e,\n\t\t\t\t\t\t\tcf = c * f,\n\t\t\t\t\t\t\tde = d * e,\n\t\t\t\t\t\t\tdf = d * f;\n\t\t\t\tte[0] = ce + df * b;\n\t\t\t\tte[4] = de * b - cf;\n\t\t\t\tte[8] = a * d;\n\t\t\t\tte[1] = a * f;\n\t\t\t\tte[5] = a * e;\n\t\t\t\tte[9] = -b;\n\t\t\t\tte[2] = cf * b - de;\n\t\t\t\tte[6] = df + ce * b;\n\t\t\t\tte[10] = a * c;\n\t\t\t} else if (euler.order === 'ZXY') {\n\t\t\t\tconst ce = c * e,\n\t\t\t\t\t\t\tcf = c * f,\n\t\t\t\t\t\t\tde = d * e,\n\t\t\t\t\t\t\tdf = d * f;\n\t\t\t\tte[0] = ce - df * b;\n\t\t\t\tte[4] = -a * f;\n\t\t\t\tte[8] = de + cf * b;\n\t\t\t\tte[1] = cf + de * b;\n\t\t\t\tte[5] = a * e;\n\t\t\t\tte[9] = df - ce * b;\n\t\t\t\tte[2] = -a * d;\n\t\t\t\tte[6] = b;\n\t\t\t\tte[10] = a * c;\n\t\t\t} else if (euler.order === 'ZYX') {\n\t\t\t\tconst ae = a * e,\n\t\t\t\t\t\t\taf = a * f,\n\t\t\t\t\t\t\tbe = b * e,\n\t\t\t\t\t\t\tbf = b * f;\n\t\t\t\tte[0] = c * e;\n\t\t\t\tte[4] = be * d - af;\n\t\t\t\tte[8] = ae * d + bf;\n\t\t\t\tte[1] = c * f;\n\t\t\t\tte[5] = bf * d + ae;\n\t\t\t\tte[9] = af * d - be;\n\t\t\t\tte[2] = -d;\n\t\t\t\tte[6] = b * c;\n\t\t\t\tte[10] = a * c;\n\t\t\t} else if (euler.order === 'YZX') {\n\t\t\t\tconst ac = a * c,\n\t\t\t\t\t\t\tad = a * d,\n\t\t\t\t\t\t\tbc = b * c,\n\t\t\t\t\t\t\tbd = b * d;\n\t\t\t\tte[0] = c * e;\n\t\t\t\tte[4] = bd - ac * f;\n\t\t\t\tte[8] = bc * f + ad;\n\t\t\t\tte[1] = f;\n\t\t\t\tte[5] = a * e;\n\t\t\t\tte[9] = -b * e;\n\t\t\t\tte[2] = -d * e;\n\t\t\t\tte[6] = ad * f + bc;\n\t\t\t\tte[10] = ac - bd * f;\n\t\t\t} else if (euler.order === 'XZY') {\n\t\t\t\tconst ac = a * c,\n\t\t\t\t\t\t\tad = a * d,\n\t\t\t\t\t\t\tbc = b * c,\n\t\t\t\t\t\t\tbd = b * d;\n\t\t\t\tte[0] = c * e;\n\t\t\t\tte[4] = -f;\n\t\t\t\tte[8] = d * e;\n\t\t\t\tte[1] = ac * f + bd;\n\t\t\t\tte[5] = a * e;\n\t\t\t\tte[9] = ad * f - bc;\n\t\t\t\tte[2] = bc * f - ad;\n\t\t\t\tte[6] = b * e;\n\t\t\t\tte[10] = bd * f + ac;\n\t\t\t} // bottom row\n\n\n\t\t\tte[3] = 0;\n\t\t\tte[7] = 0;\n\t\t\tte[11] = 0; // last column\n\n\t\t\tte[12] = 0;\n\t\t\tte[13] = 0;\n\t\t\tte[14] = 0;\n\t\t\tte[15] = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationFromQuaternion(q) {\n\t\t\treturn this.compose(_zero, q, _one);\n\t\t}\n\n\t\tlookAt(eye, target, up) {\n\t\t\tconst te = this.elements;\n\n\t\t\t_z.subVectors(eye, target);\n\n\t\t\tif (_z.lengthSq() === 0) {\n\t\t\t\t// eye and target are in the same position\n\t\t\t\t_z.z = 1;\n\t\t\t}\n\n\t\t\t_z.normalize();\n\n\t\t\t_x.crossVectors(up, _z);\n\n\t\t\tif (_x.lengthSq() === 0) {\n\t\t\t\t// up and z are parallel\n\t\t\t\tif (Math.abs(up.z) === 1) {\n\t\t\t\t\t_z.x += 0.0001;\n\t\t\t\t} else {\n\t\t\t\t\t_z.z += 0.0001;\n\t\t\t\t}\n\n\t\t\t\t_z.normalize();\n\n\t\t\t\t_x.crossVectors(up, _z);\n\t\t\t}\n\n\t\t\t_x.normalize();\n\n\t\t\t_y.crossVectors(_z, _x);\n\n\t\t\tte[0] = _x.x;\n\t\t\tte[4] = _y.x;\n\t\t\tte[8] = _z.x;\n\t\t\tte[1] = _x.y;\n\t\t\tte[5] = _y.y;\n\t\t\tte[9] = _z.y;\n\t\t\tte[2] = _x.z;\n\t\t\tte[6] = _y.z;\n\t\t\tte[10] = _z.z;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(m, n) {\n\t\t\tif (n !== undefined) {\n\t\t\t\tconsole.warn('THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.');\n\t\t\t\treturn this.multiplyMatrices(m, n);\n\t\t\t}\n\n\t\t\treturn this.multiplyMatrices(this, m);\n\t\t}\n\n\t\tpremultiply(m) {\n\t\t\treturn this.multiplyMatrices(m, this);\n\t\t}\n\n\t\tmultiplyMatrices(a, b) {\n\t\t\tconst ae = a.elements;\n\t\t\tconst be = b.elements;\n\t\t\tconst te = this.elements;\n\t\t\tconst a11 = ae[0],\n\t\t\t\t\t\ta12 = ae[4],\n\t\t\t\t\t\ta13 = ae[8],\n\t\t\t\t\t\ta14 = ae[12];\n\t\t\tconst a21 = ae[1],\n\t\t\t\t\t\ta22 = ae[5],\n\t\t\t\t\t\ta23 = ae[9],\n\t\t\t\t\t\ta24 = ae[13];\n\t\t\tconst a31 = ae[2],\n\t\t\t\t\t\ta32 = ae[6],\n\t\t\t\t\t\ta33 = ae[10],\n\t\t\t\t\t\ta34 = ae[14];\n\t\t\tconst a41 = ae[3],\n\t\t\t\t\t\ta42 = ae[7],\n\t\t\t\t\t\ta43 = ae[11],\n\t\t\t\t\t\ta44 = ae[15];\n\t\t\tconst b11 = be[0],\n\t\t\t\t\t\tb12 = be[4],\n\t\t\t\t\t\tb13 = be[8],\n\t\t\t\t\t\tb14 = be[12];\n\t\t\tconst b21 = be[1],\n\t\t\t\t\t\tb22 = be[5],\n\t\t\t\t\t\tb23 = be[9],\n\t\t\t\t\t\tb24 = be[13];\n\t\t\tconst b31 = be[2],\n\t\t\t\t\t\tb32 = be[6],\n\t\t\t\t\t\tb33 = be[10],\n\t\t\t\t\t\tb34 = be[14];\n\t\t\tconst b41 = be[3],\n\t\t\t\t\t\tb42 = be[7],\n\t\t\t\t\t\tb43 = be[11],\n\t\t\t\t\t\tb44 = be[15];\n\t\t\tte[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\t\tte[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\t\tte[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\t\tte[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\t\t\tte[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\t\tte[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\t\tte[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\t\tte[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\t\t\tte[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\t\tte[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\t\tte[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\t\tte[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\t\t\tte[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\t\tte[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\t\tte[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\t\tte[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(s) {\n\t\t\tconst te = this.elements;\n\t\t\tte[0] *= s;\n\t\t\tte[4] *= s;\n\t\t\tte[8] *= s;\n\t\t\tte[12] *= s;\n\t\t\tte[1] *= s;\n\t\t\tte[5] *= s;\n\t\t\tte[9] *= s;\n\t\t\tte[13] *= s;\n\t\t\tte[2] *= s;\n\t\t\tte[6] *= s;\n\t\t\tte[10] *= s;\n\t\t\tte[14] *= s;\n\t\t\tte[3] *= s;\n\t\t\tte[7] *= s;\n\t\t\tte[11] *= s;\n\t\t\tte[15] *= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tdeterminant() {\n\t\t\tconst te = this.elements;\n\t\t\tconst n11 = te[0],\n\t\t\t\t\t\tn12 = te[4],\n\t\t\t\t\t\tn13 = te[8],\n\t\t\t\t\t\tn14 = te[12];\n\t\t\tconst n21 = te[1],\n\t\t\t\t\t\tn22 = te[5],\n\t\t\t\t\t\tn23 = te[9],\n\t\t\t\t\t\tn24 = te[13];\n\t\t\tconst n31 = te[2],\n\t\t\t\t\t\tn32 = te[6],\n\t\t\t\t\t\tn33 = te[10],\n\t\t\t\t\t\tn34 = te[14];\n\t\t\tconst n41 = te[3],\n\t\t\t\t\t\tn42 = te[7],\n\t\t\t\t\t\tn43 = te[11],\n\t\t\t\t\t\tn44 = te[15]; //TODO: make this more efficient\n\t\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\t\treturn n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n\t\t}\n\n\t\ttranspose() {\n\t\t\tconst te = this.elements;\n\t\t\tlet tmp;\n\t\t\ttmp = te[1];\n\t\t\tte[1] = te[4];\n\t\t\tte[4] = tmp;\n\t\t\ttmp = te[2];\n\t\t\tte[2] = te[8];\n\t\t\tte[8] = tmp;\n\t\t\ttmp = te[6];\n\t\t\tte[6] = te[9];\n\t\t\tte[9] = tmp;\n\t\t\ttmp = te[3];\n\t\t\tte[3] = te[12];\n\t\t\tte[12] = tmp;\n\t\t\ttmp = te[7];\n\t\t\tte[7] = te[13];\n\t\t\tte[13] = tmp;\n\t\t\ttmp = te[11];\n\t\t\tte[11] = te[14];\n\t\t\tte[14] = tmp;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetPosition(x, y, z) {\n\t\t\tconst te = this.elements;\n\n\t\t\tif (x.isVector3) {\n\t\t\t\tte[12] = x.x;\n\t\t\t\tte[13] = x.y;\n\t\t\t\tte[14] = x.z;\n\t\t\t} else {\n\t\t\t\tte[12] = x;\n\t\t\t\tte[13] = y;\n\t\t\t\tte[14] = z;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tinvert() {\n\t\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\t\tconst te = this.elements,\n\t\t\t\t\t\tn11 = te[0],\n\t\t\t\t\t\tn21 = te[1],\n\t\t\t\t\t\tn31 = te[2],\n\t\t\t\t\t\tn41 = te[3],\n\t\t\t\t\t\tn12 = te[4],\n\t\t\t\t\t\tn22 = te[5],\n\t\t\t\t\t\tn32 = te[6],\n\t\t\t\t\t\tn42 = te[7],\n\t\t\t\t\t\tn13 = te[8],\n\t\t\t\t\t\tn23 = te[9],\n\t\t\t\t\t\tn33 = te[10],\n\t\t\t\t\t\tn43 = te[11],\n\t\t\t\t\t\tn14 = te[12],\n\t\t\t\t\t\tn24 = te[13],\n\t\t\t\t\t\tn34 = te[14],\n\t\t\t\t\t\tn44 = te[15],\n\t\t\t\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\t\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\t\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\t\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\t\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\t\t\tif (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n\t\t\tconst detInv = 1 / det;\n\t\t\tte[0] = t11 * detInv;\n\t\t\tte[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n\t\t\tte[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n\t\t\tte[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n\t\t\tte[4] = t12 * detInv;\n\t\t\tte[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n\t\t\tte[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n\t\t\tte[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n\t\t\tte[8] = t13 * detInv;\n\t\t\tte[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n\t\t\tte[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n\t\t\tte[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n\t\t\tte[12] = t14 * detInv;\n\t\t\tte[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n\t\t\tte[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n\t\t\tte[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n\t\t\treturn this;\n\t\t}\n\n\t\tscale(v) {\n\t\t\tconst te = this.elements;\n\t\t\tconst x = v.x,\n\t\t\t\t\t\ty = v.y,\n\t\t\t\t\t\tz = v.z;\n\t\t\tte[0] *= x;\n\t\t\tte[4] *= y;\n\t\t\tte[8] *= z;\n\t\t\tte[1] *= x;\n\t\t\tte[5] *= y;\n\t\t\tte[9] *= z;\n\t\t\tte[2] *= x;\n\t\t\tte[6] *= y;\n\t\t\tte[10] *= z;\n\t\t\tte[3] *= x;\n\t\t\tte[7] *= y;\n\t\t\tte[11] *= z;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetMaxScaleOnAxis() {\n\t\t\tconst te = this.elements;\n\t\t\tconst scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n\t\t\tconst scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n\t\t\tconst scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n\t\t\treturn Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n\t\t}\n\n\t\tmakeTranslation(x, y, z) {\n\t\t\tthis.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationX(theta) {\n\t\t\tconst c = Math.cos(theta),\n\t\t\t\t\t\ts = Math.sin(theta);\n\t\t\tthis.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationY(theta) {\n\t\t\tconst c = Math.cos(theta),\n\t\t\t\t\t\ts = Math.sin(theta);\n\t\t\tthis.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationZ(theta) {\n\t\t\tconst c = Math.cos(theta),\n\t\t\t\t\t\ts = Math.sin(theta);\n\t\t\tthis.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeRotationAxis(axis, angle) {\n\t\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\t\t\tconst c = Math.cos(angle);\n\t\t\tconst s = Math.sin(angle);\n\t\t\tconst t = 1 - c;\n\t\t\tconst x = axis.x,\n\t\t\t\t\t\ty = axis.y,\n\t\t\t\t\t\tz = axis.z;\n\t\t\tconst tx = t * x,\n\t\t\t\t\t\tty = t * y;\n\t\t\tthis.set(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeScale(x, y, z) {\n\t\t\tthis.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeShear(xy, xz, yx, yz, zx, zy) {\n\t\t\tthis.set(1, yx, zx, 0, xy, 1, zy, 0, xz, yz, 1, 0, 0, 0, 0, 1);\n\t\t\treturn this;\n\t\t}\n\n\t\tcompose(position, quaternion, scale) {\n\t\t\tconst te = this.elements;\n\t\t\tconst x = quaternion._x,\n\t\t\t\t\t\ty = quaternion._y,\n\t\t\t\t\t\tz = quaternion._z,\n\t\t\t\t\t\tw = quaternion._w;\n\t\t\tconst x2 = x + x,\n\t\t\t\t\t\ty2 = y + y,\n\t\t\t\t\t\tz2 = z + z;\n\t\t\tconst xx = x * x2,\n\t\t\t\t\t\txy = x * y2,\n\t\t\t\t\t\txz = x * z2;\n\t\t\tconst yy = y * y2,\n\t\t\t\t\t\tyz = y * z2,\n\t\t\t\t\t\tzz = z * z2;\n\t\t\tconst wx = w * x2,\n\t\t\t\t\t\twy = w * y2,\n\t\t\t\t\t\twz = w * z2;\n\t\t\tconst sx = scale.x,\n\t\t\t\t\t\tsy = scale.y,\n\t\t\t\t\t\tsz = scale.z;\n\t\t\tte[0] = (1 - (yy + zz)) * sx;\n\t\t\tte[1] = (xy + wz) * sx;\n\t\t\tte[2] = (xz - wy) * sx;\n\t\t\tte[3] = 0;\n\t\t\tte[4] = (xy - wz) * sy;\n\t\t\tte[5] = (1 - (xx + zz)) * sy;\n\t\t\tte[6] = (yz + wx) * sy;\n\t\t\tte[7] = 0;\n\t\t\tte[8] = (xz + wy) * sz;\n\t\t\tte[9] = (yz - wx) * sz;\n\t\t\tte[10] = (1 - (xx + yy)) * sz;\n\t\t\tte[11] = 0;\n\t\t\tte[12] = position.x;\n\t\t\tte[13] = position.y;\n\t\t\tte[14] = position.z;\n\t\t\tte[15] = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\tdecompose(position, quaternion, scale) {\n\t\t\tconst te = this.elements;\n\n\t\t\tlet sx = _v1$5.set(te[0], te[1], te[2]).length();\n\n\t\t\tconst sy = _v1$5.set(te[4], te[5], te[6]).length();\n\n\t\t\tconst sz = _v1$5.set(te[8], te[9], te[10]).length(); // if determine is negative, we need to invert one scale\n\n\n\t\t\tconst det = this.determinant();\n\t\t\tif (det < 0) sx = -sx;\n\t\t\tposition.x = te[12];\n\t\t\tposition.y = te[13];\n\t\t\tposition.z = te[14]; // scale the rotation part\n\n\t\t\t_m1$2.copy(this);\n\n\t\t\tconst invSX = 1 / sx;\n\t\t\tconst invSY = 1 / sy;\n\t\t\tconst invSZ = 1 / sz;\n\t\t\t_m1$2.elements[0] *= invSX;\n\t\t\t_m1$2.elements[1] *= invSX;\n\t\t\t_m1$2.elements[2] *= invSX;\n\t\t\t_m1$2.elements[4] *= invSY;\n\t\t\t_m1$2.elements[5] *= invSY;\n\t\t\t_m1$2.elements[6] *= invSY;\n\t\t\t_m1$2.elements[8] *= invSZ;\n\t\t\t_m1$2.elements[9] *= invSZ;\n\t\t\t_m1$2.elements[10] *= invSZ;\n\t\t\tquaternion.setFromRotationMatrix(_m1$2);\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\t\t\treturn this;\n\t\t}\n\n\t\tmakePerspective(left, right, top, bottom, near, far) {\n\t\t\tif (far === undefined) {\n\t\t\t\tconsole.warn('THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.');\n\t\t\t}\n\n\t\t\tconst te = this.elements;\n\t\t\tconst x = 2 * near / (right - left);\n\t\t\tconst y = 2 * near / (top - bottom);\n\t\t\tconst a = (right + left) / (right - left);\n\t\t\tconst b = (top + bottom) / (top - bottom);\n\t\t\tconst c = -(far + near) / (far - near);\n\t\t\tconst d = -2 * far * near / (far - near);\n\t\t\tte[0] = x;\n\t\t\tte[4] = 0;\n\t\t\tte[8] = a;\n\t\t\tte[12] = 0;\n\t\t\tte[1] = 0;\n\t\t\tte[5] = y;\n\t\t\tte[9] = b;\n\t\t\tte[13] = 0;\n\t\t\tte[2] = 0;\n\t\t\tte[6] = 0;\n\t\t\tte[10] = c;\n\t\t\tte[14] = d;\n\t\t\tte[3] = 0;\n\t\t\tte[7] = 0;\n\t\t\tte[11] = -1;\n\t\t\tte[15] = 0;\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeOrthographic(left, right, top, bottom, near, far) {\n\t\t\tconst te = this.elements;\n\t\t\tconst w = 1.0 / (right - left);\n\t\t\tconst h = 1.0 / (top - bottom);\n\t\t\tconst p = 1.0 / (far - near);\n\t\t\tconst x = (right + left) * w;\n\t\t\tconst y = (top + bottom) * h;\n\t\t\tconst z = (far + near) * p;\n\t\t\tte[0] = 2 * w;\n\t\t\tte[4] = 0;\n\t\t\tte[8] = 0;\n\t\t\tte[12] = -x;\n\t\t\tte[1] = 0;\n\t\t\tte[5] = 2 * h;\n\t\t\tte[9] = 0;\n\t\t\tte[13] = -y;\n\t\t\tte[2] = 0;\n\t\t\tte[6] = 0;\n\t\t\tte[10] = -2 * p;\n\t\t\tte[14] = -z;\n\t\t\tte[3] = 0;\n\t\t\tte[7] = 0;\n\t\t\tte[11] = 0;\n\t\t\tte[15] = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(matrix) {\n\t\t\tconst te = this.elements;\n\t\t\tconst me = matrix.elements;\n\n\t\t\tfor (let i = 0; i < 16; i++) {\n\t\t\t\tif (te[i] !== me[i]) return false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tfor (let i = 0; i < 16; i++) {\n\t\t\t\tthis.elements[i] = array[i + offset];\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tconst te = this.elements;\n\t\t\tarray[offset] = te[0];\n\t\t\tarray[offset + 1] = te[1];\n\t\t\tarray[offset + 2] = te[2];\n\t\t\tarray[offset + 3] = te[3];\n\t\t\tarray[offset + 4] = te[4];\n\t\t\tarray[offset + 5] = te[5];\n\t\t\tarray[offset + 6] = te[6];\n\t\t\tarray[offset + 7] = te[7];\n\t\t\tarray[offset + 8] = te[8];\n\t\t\tarray[offset + 9] = te[9];\n\t\t\tarray[offset + 10] = te[10];\n\t\t\tarray[offset + 11] = te[11];\n\t\t\tarray[offset + 12] = te[12];\n\t\t\tarray[offset + 13] = te[13];\n\t\t\tarray[offset + 14] = te[14];\n\t\t\tarray[offset + 15] = te[15];\n\t\t\treturn array;\n\t\t}\n\n\t}\n\n\tMatrix4.prototype.isMatrix4 = true;\n\n\tconst _v1$5 = /*@__PURE__*/new Vector3();\n\n\tconst _m1$2 = /*@__PURE__*/new Matrix4();\n\n\tconst _zero = /*@__PURE__*/new Vector3(0, 0, 0);\n\n\tconst _one = /*@__PURE__*/new Vector3(1, 1, 1);\n\n\tconst _x = /*@__PURE__*/new Vector3();\n\n\tconst _y = /*@__PURE__*/new Vector3();\n\n\tconst _z = /*@__PURE__*/new Vector3();\n\n\tconst _matrix$1 = /*@__PURE__*/new Matrix4();\n\n\tconst _quaternion$3 = /*@__PURE__*/new Quaternion();\n\n\tclass Euler {\n\t\tconstructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._order = order;\n\t\t}\n\n\t\tget x() {\n\t\t\treturn this._x;\n\t\t}\n\n\t\tset x(value) {\n\t\t\tthis._x = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget y() {\n\t\t\treturn this._y;\n\t\t}\n\n\t\tset y(value) {\n\t\t\tthis._y = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget z() {\n\t\t\treturn this._z;\n\t\t}\n\n\t\tset z(value) {\n\t\t\tthis._z = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tget order() {\n\t\t\treturn this._order;\n\t\t}\n\n\t\tset order(value) {\n\t\t\tthis._order = value;\n\n\t\t\tthis._onChangeCallback();\n\t\t}\n\n\t\tset(x, y, z, order = this._order) {\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._order = order;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this._x, this._y, this._z, this._order);\n\t\t}\n\n\t\tcopy(euler) {\n\t\t\tthis._x = euler._x;\n\t\t\tthis._y = euler._y;\n\t\t\tthis._z = euler._z;\n\t\t\tthis._order = euler._order;\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromRotationMatrix(m, order = this._order, update = true) {\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\t\t\tconst te = m.elements;\n\t\t\tconst m11 = te[0],\n\t\t\t\t\t\tm12 = te[4],\n\t\t\t\t\t\tm13 = te[8];\n\t\t\tconst m21 = te[1],\n\t\t\t\t\t\tm22 = te[5],\n\t\t\t\t\t\tm23 = te[9];\n\t\t\tconst m31 = te[2],\n\t\t\t\t\t\tm32 = te[6],\n\t\t\t\t\t\tm33 = te[10];\n\n\t\t\tswitch (order) {\n\t\t\t\tcase 'XYZ':\n\t\t\t\t\tthis._y = Math.asin(clamp(m13, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m13) < 0.9999999) {\n\t\t\t\t\t\tthis._x = Math.atan2(-m23, m33);\n\t\t\t\t\t\tthis._z = Math.atan2(-m12, m11);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._x = Math.atan2(m32, m22);\n\t\t\t\t\t\tthis._z = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'YXZ':\n\t\t\t\t\tthis._x = Math.asin(-clamp(m23, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m23) < 0.9999999) {\n\t\t\t\t\t\tthis._y = Math.atan2(m13, m33);\n\t\t\t\t\t\tthis._z = Math.atan2(m21, m22);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._y = Math.atan2(-m31, m11);\n\t\t\t\t\t\tthis._z = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZXY':\n\t\t\t\t\tthis._x = Math.asin(clamp(m32, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m32) < 0.9999999) {\n\t\t\t\t\t\tthis._y = Math.atan2(-m31, m33);\n\t\t\t\t\t\tthis._z = Math.atan2(-m12, m22);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._y = 0;\n\t\t\t\t\t\tthis._z = Math.atan2(m21, m11);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZYX':\n\t\t\t\t\tthis._y = Math.asin(-clamp(m31, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m31) < 0.9999999) {\n\t\t\t\t\t\tthis._x = Math.atan2(m32, m33);\n\t\t\t\t\t\tthis._z = Math.atan2(m21, m11);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._x = 0;\n\t\t\t\t\t\tthis._z = Math.atan2(-m12, m22);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'YZX':\n\t\t\t\t\tthis._z = Math.asin(clamp(m21, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m21) < 0.9999999) {\n\t\t\t\t\t\tthis._x = Math.atan2(-m23, m22);\n\t\t\t\t\t\tthis._y = Math.atan2(-m31, m11);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._x = 0;\n\t\t\t\t\t\tthis._y = Math.atan2(m13, m33);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'XZY':\n\t\t\t\t\tthis._z = Math.asin(-clamp(m12, -1, 1));\n\n\t\t\t\t\tif (Math.abs(m12) < 0.9999999) {\n\t\t\t\t\t\tthis._x = Math.atan2(m32, m22);\n\t\t\t\t\t\tthis._y = Math.atan2(m13, m11);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._x = Math.atan2(-m23, m33);\n\t\t\t\t\t\tthis._y = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn('THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order);\n\t\t\t}\n\n\t\t\tthis._order = order;\n\t\t\tif (update === true) this._onChangeCallback();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromQuaternion(q, order, update) {\n\t\t\t_matrix$1.makeRotationFromQuaternion(q);\n\n\t\t\treturn this.setFromRotationMatrix(_matrix$1, order, update);\n\t\t}\n\n\t\tsetFromVector3(v, order = this._order) {\n\t\t\treturn this.set(v.x, v.y, v.z, order);\n\t\t}\n\n\t\treorder(newOrder) {\n\t\t\t// WARNING: this discards revolution information -bhouston\n\t\t\t_quaternion$3.setFromEuler(this);\n\n\t\t\treturn this.setFromQuaternion(_quaternion$3, newOrder);\n\t\t}\n\n\t\tequals(euler) {\n\t\t\treturn euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n\t\t}\n\n\t\tfromArray(array) {\n\t\t\tthis._x = array[0];\n\t\t\tthis._y = array[1];\n\t\t\tthis._z = array[2];\n\t\t\tif (array[3] !== undefined) this._order = array[3];\n\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this._x;\n\t\t\tarray[offset + 1] = this._y;\n\t\t\tarray[offset + 2] = this._z;\n\t\t\tarray[offset + 3] = this._order;\n\t\t\treturn array;\n\t\t}\n\n\t\ttoVector3(optionalResult) {\n\t\t\tif (optionalResult) {\n\t\t\t\treturn optionalResult.set(this._x, this._y, this._z);\n\t\t\t} else {\n\t\t\t\treturn new Vector3(this._x, this._y, this._z);\n\t\t\t}\n\t\t}\n\n\t\t_onChange(callback) {\n\t\t\tthis._onChangeCallback = callback;\n\t\t\treturn this;\n\t\t}\n\n\t\t_onChangeCallback() {}\n\n\t}\n\n\tEuler.prototype.isEuler = true;\n\tEuler.DefaultOrder = 'XYZ';\n\tEuler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX'];\n\n\tclass Layers {\n\t\tconstructor() {\n\t\t\tthis.mask = 1 | 0;\n\t\t}\n\n\t\tset(channel) {\n\t\t\tthis.mask = 1 << channel | 0;\n\t\t}\n\n\t\tenable(channel) {\n\t\t\tthis.mask |= 1 << channel | 0;\n\t\t}\n\n\t\tenableAll() {\n\t\t\tthis.mask = 0xffffffff | 0;\n\t\t}\n\n\t\ttoggle(channel) {\n\t\t\tthis.mask ^= 1 << channel | 0;\n\t\t}\n\n\t\tdisable(channel) {\n\t\t\tthis.mask &= ~(1 << channel | 0);\n\t\t}\n\n\t\tdisableAll() {\n\t\t\tthis.mask = 0;\n\t\t}\n\n\t\ttest(layers) {\n\t\t\treturn (this.mask & layers.mask) !== 0;\n\t\t}\n\n\t}\n\n\tlet _object3DId = 0;\n\n\tconst _v1$4 = /*@__PURE__*/new Vector3();\n\n\tconst _q1 = /*@__PURE__*/new Quaternion();\n\n\tconst _m1$1 = /*@__PURE__*/new Matrix4();\n\n\tconst _target = /*@__PURE__*/new Vector3();\n\n\tconst _position$3 = /*@__PURE__*/new Vector3();\n\n\tconst _scale$2 = /*@__PURE__*/new Vector3();\n\n\tconst _quaternion$2 = /*@__PURE__*/new Quaternion();\n\n\tconst _xAxis = /*@__PURE__*/new Vector3(1, 0, 0);\n\n\tconst _yAxis = /*@__PURE__*/new Vector3(0, 1, 0);\n\n\tconst _zAxis = /*@__PURE__*/new Vector3(0, 0, 1);\n\n\tconst _addedEvent = {\n\t\ttype: 'added'\n\t};\n\tconst _removedEvent = {\n\t\ttype: 'removed'\n\t};\n\n\tclass Object3D extends EventDispatcher {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tObject.defineProperty(this, 'id', {\n\t\t\t\tvalue: _object3DId++\n\t\t\t});\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.name = '';\n\t\t\tthis.type = 'Object3D';\n\t\t\tthis.parent = null;\n\t\t\tthis.children = [];\n\t\t\tthis.up = Object3D.DefaultUp.clone();\n\t\t\tconst position = new Vector3();\n\t\t\tconst rotation = new Euler();\n\t\t\tconst quaternion = new Quaternion();\n\t\t\tconst scale = new Vector3(1, 1, 1);\n\n\t\t\tfunction onRotationChange() {\n\t\t\t\tquaternion.setFromEuler(rotation, false);\n\t\t\t}\n\n\t\t\tfunction onQuaternionChange() {\n\t\t\t\trotation.setFromQuaternion(quaternion, undefined, false);\n\t\t\t}\n\n\t\t\trotation._onChange(onRotationChange);\n\n\t\t\tquaternion._onChange(onQuaternionChange);\n\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tposition: {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: position\n\t\t\t\t},\n\t\t\t\trotation: {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: rotation\n\t\t\t\t},\n\t\t\t\tquaternion: {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: quaternion\n\t\t\t\t},\n\t\t\t\tscale: {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: scale\n\t\t\t\t},\n\t\t\t\tmodelViewMatrix: {\n\t\t\t\t\tvalue: new Matrix4()\n\t\t\t\t},\n\t\t\t\tnormalMatrix: {\n\t\t\t\t\tvalue: new Matrix3()\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.matrix = new Matrix4();\n\t\t\tthis.matrixWorld = new Matrix4();\n\t\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\t\t\tthis.layers = new Layers();\n\t\t\tthis.visible = true;\n\t\t\tthis.castShadow = false;\n\t\t\tthis.receiveShadow = false;\n\t\t\tthis.frustumCulled = true;\n\t\t\tthis.renderOrder = 0;\n\t\t\tthis.animations = [];\n\t\t\tthis.userData = {};\n\t\t}\n\n\t\tonBeforeRender() {}\n\n\t\tonAfterRender() {}\n\n\t\tapplyMatrix4(matrix) {\n\t\t\tif (this.matrixAutoUpdate) this.updateMatrix();\n\t\t\tthis.matrix.premultiply(matrix);\n\t\t\tthis.matrix.decompose(this.position, this.quaternion, this.scale);\n\t\t}\n\n\t\tapplyQuaternion(q) {\n\t\t\tthis.quaternion.premultiply(q);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetRotationFromAxisAngle(axis, angle) {\n\t\t\t// assumes axis is normalized\n\t\t\tthis.quaternion.setFromAxisAngle(axis, angle);\n\t\t}\n\n\t\tsetRotationFromEuler(euler) {\n\t\t\tthis.quaternion.setFromEuler(euler, true);\n\t\t}\n\n\t\tsetRotationFromMatrix(m) {\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\t\t\tthis.quaternion.setFromRotationMatrix(m);\n\t\t}\n\n\t\tsetRotationFromQuaternion(q) {\n\t\t\t// assumes q is normalized\n\t\t\tthis.quaternion.copy(q);\n\t\t}\n\n\t\trotateOnAxis(axis, angle) {\n\t\t\t// rotate object on axis in object space\n\t\t\t// axis is assumed to be normalized\n\t\t\t_q1.setFromAxisAngle(axis, angle);\n\n\t\t\tthis.quaternion.multiply(_q1);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateOnWorldAxis(axis, angle) {\n\t\t\t// rotate object on axis in world space\n\t\t\t// axis is assumed to be normalized\n\t\t\t// method assumes no rotated parent\n\t\t\t_q1.setFromAxisAngle(axis, angle);\n\n\t\t\tthis.quaternion.premultiply(_q1);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateX(angle) {\n\t\t\treturn this.rotateOnAxis(_xAxis, angle);\n\t\t}\n\n\t\trotateY(angle) {\n\t\t\treturn this.rotateOnAxis(_yAxis, angle);\n\t\t}\n\n\t\trotateZ(angle) {\n\t\t\treturn this.rotateOnAxis(_zAxis, angle);\n\t\t}\n\n\t\ttranslateOnAxis(axis, distance) {\n\t\t\t// translate object by distance along axis in object space\n\t\t\t// axis is assumed to be normalized\n\t\t\t_v1$4.copy(axis).applyQuaternion(this.quaternion);\n\n\t\t\tthis.position.add(_v1$4.multiplyScalar(distance));\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslateX(distance) {\n\t\t\treturn this.translateOnAxis(_xAxis, distance);\n\t\t}\n\n\t\ttranslateY(distance) {\n\t\t\treturn this.translateOnAxis(_yAxis, distance);\n\t\t}\n\n\t\ttranslateZ(distance) {\n\t\t\treturn this.translateOnAxis(_zAxis, distance);\n\t\t}\n\n\t\tlocalToWorld(vector) {\n\t\t\treturn vector.applyMatrix4(this.matrixWorld);\n\t\t}\n\n\t\tworldToLocal(vector) {\n\t\t\treturn vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n\t\t}\n\n\t\tlookAt(x, y, z) {\n\t\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\t\t\tif (x.isVector3) {\n\t\t\t\t_target.copy(x);\n\t\t\t} else {\n\t\t\t\t_target.set(x, y, z);\n\t\t\t}\n\n\t\t\tconst parent = this.parent;\n\t\t\tthis.updateWorldMatrix(true, false);\n\n\t\t\t_position$3.setFromMatrixPosition(this.matrixWorld);\n\n\t\t\tif (this.isCamera || this.isLight) {\n\t\t\t\t_m1$1.lookAt(_position$3, _target, this.up);\n\t\t\t} else {\n\t\t\t\t_m1$1.lookAt(_target, _position$3, this.up);\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix(_m1$1);\n\n\t\t\tif (parent) {\n\t\t\t\t_m1$1.extractRotation(parent.matrixWorld);\n\n\t\t\t\t_q1.setFromRotationMatrix(_m1$1);\n\n\t\t\t\tthis.quaternion.premultiply(_q1.invert());\n\t\t\t}\n\t\t}\n\n\t\tadd(object) {\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\tthis.add(arguments[i]);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (object === this) {\n\t\t\t\tconsole.error('THREE.Object3D.add: object can\\'t be added as a child of itself.', object);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (object && object.isObject3D) {\n\t\t\t\tif (object.parent !== null) {\n\t\t\t\t\tobject.parent.remove(object);\n\t\t\t\t}\n\n\t\t\t\tobject.parent = this;\n\t\t\t\tthis.children.push(object);\n\t\t\t\tobject.dispatchEvent(_addedEvent);\n\t\t\t} else {\n\t\t\t\tconsole.error('THREE.Object3D.add: object not an instance of THREE.Object3D.', object);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tremove(object) {\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\tthis.remove(arguments[i]);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tconst index = this.children.indexOf(object);\n\n\t\t\tif (index !== -1) {\n\t\t\t\tobject.parent = null;\n\t\t\t\tthis.children.splice(index, 1);\n\t\t\t\tobject.dispatchEvent(_removedEvent);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tremoveFromParent() {\n\t\t\tconst parent = this.parent;\n\n\t\t\tif (parent !== null) {\n\t\t\t\tparent.remove(this);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclear() {\n\t\t\tfor (let i = 0; i < this.children.length; i++) {\n\t\t\t\tconst object = this.children[i];\n\t\t\t\tobject.parent = null;\n\t\t\t\tobject.dispatchEvent(_removedEvent);\n\t\t\t}\n\n\t\t\tthis.children.length = 0;\n\t\t\treturn this;\n\t\t}\n\n\t\tattach(object) {\n\t\t\t// adds object as a child of this, while maintaining the object's world transform\n\t\t\tthis.updateWorldMatrix(true, false);\n\n\t\t\t_m1$1.copy(this.matrixWorld).invert();\n\n\t\t\tif (object.parent !== null) {\n\t\t\t\tobject.parent.updateWorldMatrix(true, false);\n\n\t\t\t\t_m1$1.multiply(object.parent.matrixWorld);\n\t\t\t}\n\n\t\t\tobject.applyMatrix4(_m1$1);\n\t\t\tthis.add(object);\n\t\t\tobject.updateWorldMatrix(false, true);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetObjectById(id) {\n\t\t\treturn this.getObjectByProperty('id', id);\n\t\t}\n\n\t\tgetObjectByName(name) {\n\t\t\treturn this.getObjectByProperty('name', name);\n\t\t}\n\n\t\tgetObjectByProperty(name, value) {\n\t\t\tif (this[name] === value) return this;\n\n\t\t\tfor (let i = 0, l = this.children.length; i < l; i++) {\n\t\t\t\tconst child = this.children[i];\n\t\t\t\tconst object = child.getObjectByProperty(name, value);\n\n\t\t\t\tif (object !== undefined) {\n\t\t\t\t\treturn object;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tgetWorldPosition(target) {\n\t\t\tthis.updateWorldMatrix(true, false);\n\t\t\treturn target.setFromMatrixPosition(this.matrixWorld);\n\t\t}\n\n\t\tgetWorldQuaternion(target) {\n\t\t\tthis.updateWorldMatrix(true, false);\n\t\t\tthis.matrixWorld.decompose(_position$3, target, _scale$2);\n\t\t\treturn target;\n\t\t}\n\n\t\tgetWorldScale(target) {\n\t\t\tthis.updateWorldMatrix(true, false);\n\t\t\tthis.matrixWorld.decompose(_position$3, _quaternion$2, target);\n\t\t\treturn target;\n\t\t}\n\n\t\tgetWorldDirection(target) {\n\t\t\tthis.updateWorldMatrix(true, false);\n\t\t\tconst e = this.matrixWorld.elements;\n\t\t\treturn target.set(e[8], e[9], e[10]).normalize();\n\t\t}\n\n\t\traycast() {}\n\n\t\ttraverse(callback) {\n\t\t\tcallback(this);\n\t\t\tconst children = this.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tchildren[i].traverse(callback);\n\t\t\t}\n\t\t}\n\n\t\ttraverseVisible(callback) {\n\t\t\tif (this.visible === false) return;\n\t\t\tcallback(this);\n\t\t\tconst children = this.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tchildren[i].traverseVisible(callback);\n\t\t\t}\n\t\t}\n\n\t\ttraverseAncestors(callback) {\n\t\t\tconst parent = this.parent;\n\n\t\t\tif (parent !== null) {\n\t\t\t\tcallback(parent);\n\t\t\t\tparent.traverseAncestors(callback);\n\t\t\t}\n\t\t}\n\n\t\tupdateMatrix() {\n\t\t\tthis.matrix.compose(this.position, this.quaternion, this.scale);\n\t\t\tthis.matrixWorldNeedsUpdate = true;\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tif (this.matrixAutoUpdate) this.updateMatrix();\n\n\t\t\tif (this.matrixWorldNeedsUpdate || force) {\n\t\t\t\tif (this.parent === null) {\n\t\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t\t} else {\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t\t}\n\n\t\t\t\tthis.matrixWorldNeedsUpdate = false;\n\t\t\t\tforce = true;\n\t\t\t} // update children\n\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tchildren[i].updateMatrixWorld(force);\n\t\t\t}\n\t\t}\n\n\t\tupdateWorldMatrix(updateParents, updateChildren) {\n\t\t\tconst parent = this.parent;\n\n\t\t\tif (updateParents === true && parent !== null) {\n\t\t\t\tparent.updateWorldMatrix(true, false);\n\t\t\t}\n\n\t\t\tif (this.matrixAutoUpdate) this.updateMatrix();\n\n\t\t\tif (this.parent === null) {\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t} else {\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t} // update children\n\n\n\t\t\tif (updateChildren === true) {\n\t\t\t\tconst children = this.children;\n\n\t\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tchildren[i].updateWorldMatrix(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\t// meta is a string when called from JSON.stringify\n\t\t\tconst isRootObject = meta === undefined || typeof meta === 'string';\n\t\t\tconst output = {}; // meta is a hash used to collect geometries, materials.\n\t\t\t// not providing it implies that this is the root object\n\t\t\t// being serialized.\n\n\t\t\tif (isRootObject) {\n\t\t\t\t// initialize meta obj\n\t\t\t\tmeta = {\n\t\t\t\t\tgeometries: {},\n\t\t\t\t\tmaterials: {},\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {},\n\t\t\t\t\tshapes: {},\n\t\t\t\t\tskeletons: {},\n\t\t\t\t\tanimations: {}\n\t\t\t\t};\n\t\t\t\toutput.metadata = {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Object',\n\t\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t\t};\n\t\t\t} // standard Object3D serialization\n\n\n\t\t\tconst object = {};\n\t\t\tobject.uuid = this.uuid;\n\t\t\tobject.type = this.type;\n\t\t\tif (this.name !== '') object.name = this.name;\n\t\t\tif (this.castShadow === true) object.castShadow = true;\n\t\t\tif (this.receiveShadow === true) object.receiveShadow = true;\n\t\t\tif (this.visible === false) object.visible = false;\n\t\t\tif (this.frustumCulled === false) object.frustumCulled = false;\n\t\t\tif (this.renderOrder !== 0) object.renderOrder = this.renderOrder;\n\t\t\tif (JSON.stringify(this.userData) !== '{}') object.userData = this.userData;\n\t\t\tobject.layers = this.layers.mask;\n\t\t\tobject.matrix = this.matrix.toArray();\n\t\t\tif (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false; // object specific properties\n\n\t\t\tif (this.isInstancedMesh) {\n\t\t\t\tobject.type = 'InstancedMesh';\n\t\t\t\tobject.count = this.count;\n\t\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\t\tif (this.instanceColor !== null) object.instanceColor = this.instanceColor.toJSON();\n\t\t\t} //\n\n\n\t\t\tfunction serialize(library, element) {\n\t\t\t\tif (library[element.uuid] === undefined) {\n\t\t\t\t\tlibrary[element.uuid] = element.toJSON(meta);\n\t\t\t\t}\n\n\t\t\t\treturn element.uuid;\n\t\t\t}\n\n\t\t\tif (this.isScene) {\n\t\t\t\tif (this.background) {\n\t\t\t\t\tif (this.background.isColor) {\n\t\t\t\t\t\tobject.background = this.background.toJSON();\n\t\t\t\t\t} else if (this.background.isTexture) {\n\t\t\t\t\t\tobject.background = this.background.toJSON(meta).uuid;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.environment && this.environment.isTexture) {\n\t\t\t\t\tobject.environment = this.environment.toJSON(meta).uuid;\n\t\t\t\t}\n\t\t\t} else if (this.isMesh || this.isLine || this.isPoints) {\n\t\t\t\tobject.geometry = serialize(meta.geometries, this.geometry);\n\t\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\t\tif (parameters !== undefined && parameters.shapes !== undefined) {\n\t\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\t\tif (Array.isArray(shapes)) {\n\t\t\t\t\t\tfor (let i = 0, l = shapes.length; i < l; i++) {\n\t\t\t\t\t\t\tconst shape = shapes[i];\n\t\t\t\t\t\t\tserialize(meta.shapes, shape);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tserialize(meta.shapes, shapes);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isSkinnedMesh) {\n\t\t\t\tobject.bindMode = this.bindMode;\n\t\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\t\tif (this.skeleton !== undefined) {\n\t\t\t\t\tserialize(meta.skeletons, this.skeleton);\n\t\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.material !== undefined) {\n\t\t\t\tif (Array.isArray(this.material)) {\n\t\t\t\t\tconst uuids = [];\n\n\t\t\t\t\tfor (let i = 0, l = this.material.length; i < l; i++) {\n\t\t\t\t\t\tuuids.push(serialize(meta.materials, this.material[i]));\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.material = uuids;\n\t\t\t\t} else {\n\t\t\t\t\tobject.material = serialize(meta.materials, this.material);\n\t\t\t\t}\n\t\t\t} //\n\n\n\t\t\tif (this.children.length > 0) {\n\t\t\t\tobject.children = [];\n\n\t\t\t\tfor (let i = 0; i < this.children.length; i++) {\n\t\t\t\t\tobject.children.push(this.children[i].toJSON(meta).object);\n\t\t\t\t}\n\t\t\t} //\n\n\n\t\t\tif (this.animations.length > 0) {\n\t\t\t\tobject.animations = [];\n\n\t\t\t\tfor (let i = 0; i < this.animations.length; i++) {\n\t\t\t\t\tconst animation = this.animations[i];\n\t\t\t\t\tobject.animations.push(serialize(meta.animations, animation));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isRootObject) {\n\t\t\t\tconst geometries = extractFromCache(meta.geometries);\n\t\t\t\tconst materials = extractFromCache(meta.materials);\n\t\t\t\tconst textures = extractFromCache(meta.textures);\n\t\t\t\tconst images = extractFromCache(meta.images);\n\t\t\t\tconst shapes = extractFromCache(meta.shapes);\n\t\t\t\tconst skeletons = extractFromCache(meta.skeletons);\n\t\t\t\tconst animations = extractFromCache(meta.animations);\n\t\t\t\tif (geometries.length > 0) output.geometries = geometries;\n\t\t\t\tif (materials.length > 0) output.materials = materials;\n\t\t\t\tif (textures.length > 0) output.textures = textures;\n\t\t\t\tif (images.length > 0) output.images = images;\n\t\t\t\tif (shapes.length > 0) output.shapes = shapes;\n\t\t\t\tif (skeletons.length > 0) output.skeletons = skeletons;\n\t\t\t\tif (animations.length > 0) output.animations = animations;\n\t\t\t}\n\n\t\t\toutput.object = object;\n\t\t\treturn output; // extract data from the cache hash\n\t\t\t// remove metadata on each item\n\t\t\t// and return as array\n\n\t\t\tfunction extractFromCache(cache) {\n\t\t\t\tconst values = [];\n\n\t\t\t\tfor (const key in cache) {\n\t\t\t\t\tconst data = cache[key];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push(data);\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\n\t\tclone(recursive) {\n\t\t\treturn new this.constructor().copy(this, recursive);\n\t\t}\n\n\t\tcopy(source, recursive = true) {\n\t\t\tthis.name = source.name;\n\t\t\tthis.up.copy(source.up);\n\t\t\tthis.position.copy(source.position);\n\t\t\tthis.rotation.order = source.rotation.order;\n\t\t\tthis.quaternion.copy(source.quaternion);\n\t\t\tthis.scale.copy(source.scale);\n\t\t\tthis.matrix.copy(source.matrix);\n\t\t\tthis.matrixWorld.copy(source.matrixWorld);\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\t\t\tthis.layers.mask = source.layers.mask;\n\t\t\tthis.visible = source.visible;\n\t\t\tthis.castShadow = source.castShadow;\n\t\t\tthis.receiveShadow = source.receiveShadow;\n\t\t\tthis.frustumCulled = source.frustumCulled;\n\t\t\tthis.renderOrder = source.renderOrder;\n\t\t\tthis.userData = JSON.parse(JSON.stringify(source.userData));\n\n\t\t\tif (recursive === true) {\n\t\t\t\tfor (let i = 0; i < source.children.length; i++) {\n\t\t\t\t\tconst child = source.children[i];\n\t\t\t\t\tthis.add(child.clone());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tObject3D.DefaultUp = new Vector3(0, 1, 0);\n\tObject3D.DefaultMatrixAutoUpdate = true;\n\tObject3D.prototype.isObject3D = true;\n\n\tconst _v0$1 = /*@__PURE__*/new Vector3();\n\n\tconst _v1$3 = /*@__PURE__*/new Vector3();\n\n\tconst _v2$2 = /*@__PURE__*/new Vector3();\n\n\tconst _v3$1 = /*@__PURE__*/new Vector3();\n\n\tconst _vab = /*@__PURE__*/new Vector3();\n\n\tconst _vac = /*@__PURE__*/new Vector3();\n\n\tconst _vbc = /*@__PURE__*/new Vector3();\n\n\tconst _vap = /*@__PURE__*/new Vector3();\n\n\tconst _vbp = /*@__PURE__*/new Vector3();\n\n\tconst _vcp = /*@__PURE__*/new Vector3();\n\n\tclass Triangle {\n\t\tconstructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n\t\t\tthis.a = a;\n\t\t\tthis.b = b;\n\t\t\tthis.c = c;\n\t\t}\n\n\t\tstatic getNormal(a, b, c, target) {\n\t\t\ttarget.subVectors(c, b);\n\n\t\t\t_v0$1.subVectors(a, b);\n\n\t\t\ttarget.cross(_v0$1);\n\t\t\tconst targetLengthSq = target.lengthSq();\n\n\t\t\tif (targetLengthSq > 0) {\n\t\t\t\treturn target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n\t\t\t}\n\n\t\t\treturn target.set(0, 0, 0);\n\t\t} // static/instance method to calculate barycentric coordinates\n\t\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\n\n\t\tstatic getBarycoord(point, a, b, c, target) {\n\t\t\t_v0$1.subVectors(c, a);\n\n\t\t\t_v1$3.subVectors(b, a);\n\n\t\t\t_v2$2.subVectors(point, a);\n\n\t\t\tconst dot00 = _v0$1.dot(_v0$1);\n\n\t\t\tconst dot01 = _v0$1.dot(_v1$3);\n\n\t\t\tconst dot02 = _v0$1.dot(_v2$2);\n\n\t\t\tconst dot11 = _v1$3.dot(_v1$3);\n\n\t\t\tconst dot12 = _v1$3.dot(_v2$2);\n\n\t\t\tconst denom = dot00 * dot11 - dot01 * dot01; // collinear or singular triangle\n\n\t\t\tif (denom === 0) {\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set(-2, -1, -1);\n\t\t\t}\n\n\t\t\tconst invDenom = 1 / denom;\n\t\t\tconst u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n\t\t\tconst v = (dot00 * dot12 - dot01 * dot02) * invDenom; // barycentric coordinates must always sum to 1\n\n\t\t\treturn target.set(1 - u - v, v, u);\n\t\t}\n\n\t\tstatic containsPoint(point, a, b, c) {\n\t\t\tthis.getBarycoord(point, a, b, c, _v3$1);\n\t\t\treturn _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1;\n\t\t}\n\n\t\tstatic getUV(point, p1, p2, p3, uv1, uv2, uv3, target) {\n\t\t\tthis.getBarycoord(point, p1, p2, p3, _v3$1);\n\t\t\ttarget.set(0, 0);\n\t\t\ttarget.addScaledVector(uv1, _v3$1.x);\n\t\t\ttarget.addScaledVector(uv2, _v3$1.y);\n\t\t\ttarget.addScaledVector(uv3, _v3$1.z);\n\t\t\treturn target;\n\t\t}\n\n\t\tstatic isFrontFacing(a, b, c, direction) {\n\t\t\t_v0$1.subVectors(c, b);\n\n\t\t\t_v1$3.subVectors(a, b); // strictly front facing\n\n\n\t\t\treturn _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n\t\t}\n\n\t\tset(a, b, c) {\n\t\t\tthis.a.copy(a);\n\t\t\tthis.b.copy(b);\n\t\t\tthis.c.copy(c);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromPointsAndIndices(points, i0, i1, i2) {\n\t\t\tthis.a.copy(points[i0]);\n\t\t\tthis.b.copy(points[i1]);\n\t\t\tthis.c.copy(points[i2]);\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(triangle) {\n\t\t\tthis.a.copy(triangle.a);\n\t\t\tthis.b.copy(triangle.b);\n\t\t\tthis.c.copy(triangle.c);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetArea() {\n\t\t\t_v0$1.subVectors(this.c, this.b);\n\n\t\t\t_v1$3.subVectors(this.a, this.b);\n\n\t\t\treturn _v0$1.cross(_v1$3).length() * 0.5;\n\t\t}\n\n\t\tgetMidpoint(target) {\n\t\t\treturn target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n\t\t}\n\n\t\tgetNormal(target) {\n\t\t\treturn Triangle.getNormal(this.a, this.b, this.c, target);\n\t\t}\n\n\t\tgetPlane(target) {\n\t\t\treturn target.setFromCoplanarPoints(this.a, this.b, this.c);\n\t\t}\n\n\t\tgetBarycoord(point, target) {\n\t\t\treturn Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n\t\t}\n\n\t\tgetUV(point, uv1, uv2, uv3, target) {\n\t\t\treturn Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target);\n\t\t}\n\n\t\tcontainsPoint(point) {\n\t\t\treturn Triangle.containsPoint(point, this.a, this.b, this.c);\n\t\t}\n\n\t\tisFrontFacing(direction) {\n\t\t\treturn Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\treturn box.intersectsTriangle(this);\n\t\t}\n\n\t\tclosestPointToPoint(p, target) {\n\t\t\tconst a = this.a,\n\t\t\t\t\t\tb = this.b,\n\t\t\t\t\t\tc = this.c;\n\t\t\tlet v, w; // algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\t_vab.subVectors(b, a);\n\n\t\t\t_vac.subVectors(c, a);\n\n\t\t\t_vap.subVectors(p, a);\n\n\t\t\tconst d1 = _vab.dot(_vap);\n\n\t\t\tconst d2 = _vac.dot(_vap);\n\n\t\t\tif (d1 <= 0 && d2 <= 0) {\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy(a);\n\t\t\t}\n\n\t\t\t_vbp.subVectors(p, b);\n\n\t\t\tconst d3 = _vab.dot(_vbp);\n\n\t\t\tconst d4 = _vac.dot(_vbp);\n\n\t\t\tif (d3 >= 0 && d4 <= d3) {\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy(b);\n\t\t\t}\n\n\t\t\tconst vc = d1 * d4 - d3 * d2;\n\n\t\t\tif (vc <= 0 && d1 >= 0 && d3 <= 0) {\n\t\t\t\tv = d1 / (d1 - d3); // edge region of AB; barycentric coords (1-v, v, 0)\n\n\t\t\t\treturn target.copy(a).addScaledVector(_vab, v);\n\t\t\t}\n\n\t\t\t_vcp.subVectors(p, c);\n\n\t\t\tconst d5 = _vab.dot(_vcp);\n\n\t\t\tconst d6 = _vac.dot(_vcp);\n\n\t\t\tif (d6 >= 0 && d5 <= d6) {\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy(c);\n\t\t\t}\n\n\t\t\tconst vb = d5 * d2 - d1 * d6;\n\n\t\t\tif (vb <= 0 && d2 >= 0 && d6 <= 0) {\n\t\t\t\tw = d2 / (d2 - d6); // edge region of AC; barycentric coords (1-w, 0, w)\n\n\t\t\t\treturn target.copy(a).addScaledVector(_vac, w);\n\t\t\t}\n\n\t\t\tconst va = d3 * d6 - d5 * d4;\n\n\t\t\tif (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n\t\t\t\t_vbc.subVectors(c, b);\n\n\t\t\t\tw = (d4 - d3) / (d4 - d3 + (d5 - d6)); // edge region of BC; barycentric coords (0, 1-w, w)\n\n\t\t\t\treturn target.copy(b).addScaledVector(_vbc, w); // edge region of BC\n\t\t\t} // face region\n\n\n\t\t\tconst denom = 1 / (va + vb + vc); // u = va * denom\n\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w);\n\t\t}\n\n\t\tequals(triangle) {\n\t\t\treturn triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n\t\t}\n\n\t}\n\n\tlet materialId = 0;\n\n\tclass Material extends EventDispatcher {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tObject.defineProperty(this, 'id', {\n\t\t\t\tvalue: materialId++\n\t\t\t});\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.name = '';\n\t\t\tthis.type = 'Material';\n\t\t\tthis.fog = true;\n\t\t\tthis.blending = NormalBlending;\n\t\t\tthis.side = FrontSide;\n\t\t\tthis.vertexColors = false;\n\t\t\tthis.opacity = 1;\n\t\t\tthis.format = RGBAFormat;\n\t\t\tthis.transparent = false;\n\t\t\tthis.blendSrc = SrcAlphaFactor;\n\t\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\t\tthis.blendEquation = AddEquation;\n\t\t\tthis.blendSrcAlpha = null;\n\t\t\tthis.blendDstAlpha = null;\n\t\t\tthis.blendEquationAlpha = null;\n\t\t\tthis.depthFunc = LessEqualDepth;\n\t\t\tthis.depthTest = true;\n\t\t\tthis.depthWrite = true;\n\t\t\tthis.stencilWriteMask = 0xff;\n\t\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\t\tthis.stencilRef = 0;\n\t\t\tthis.stencilFuncMask = 0xff;\n\t\t\tthis.stencilFail = KeepStencilOp;\n\t\t\tthis.stencilZFail = KeepStencilOp;\n\t\t\tthis.stencilZPass = KeepStencilOp;\n\t\t\tthis.stencilWrite = false;\n\t\t\tthis.clippingPlanes = null;\n\t\t\tthis.clipIntersection = false;\n\t\t\tthis.clipShadows = false;\n\t\t\tthis.shadowSide = null;\n\t\t\tthis.colorWrite = true;\n\t\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\t\tthis.polygonOffset = false;\n\t\t\tthis.polygonOffsetFactor = 0;\n\t\t\tthis.polygonOffsetUnits = 0;\n\t\t\tthis.dithering = false;\n\t\t\tthis.alphaToCoverage = false;\n\t\t\tthis.premultipliedAlpha = false;\n\t\t\tthis.visible = true;\n\t\t\tthis.toneMapped = true;\n\t\t\tthis.userData = {};\n\t\t\tthis.version = 0;\n\t\t\tthis._alphaTest = 0;\n\t\t}\n\n\t\tget alphaTest() {\n\t\t\treturn this._alphaTest;\n\t\t}\n\n\t\tset alphaTest(value) {\n\t\t\tif (this._alphaTest > 0 !== value > 0) {\n\t\t\t\tthis.version++;\n\t\t\t}\n\n\t\t\tthis._alphaTest = value;\n\t\t}\n\n\t\tonBuild() {}\n\n\t\tonBeforeCompile() {}\n\n\t\tcustomProgramCacheKey() {\n\t\t\treturn this.onBeforeCompile.toString();\n\t\t}\n\n\t\tsetValues(values) {\n\t\t\tif (values === undefined) return;\n\n\t\t\tfor (const key in values) {\n\t\t\t\tconst newValue = values[key];\n\n\t\t\t\tif (newValue === undefined) {\n\t\t\t\t\tconsole.warn('THREE.Material: \\'' + key + '\\' parameter is undefined.');\n\t\t\t\t\tcontinue;\n\t\t\t\t} // for backward compatability if shading is set in the constructor\n\n\n\t\t\t\tif (key === 'shading') {\n\t\t\t\t\tconsole.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n\t\t\t\t\tthis.flatShading = newValue === FlatShading ? true : false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst currentValue = this[key];\n\n\t\t\t\tif (currentValue === undefined) {\n\t\t\t\t\tconsole.warn('THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.');\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (currentValue && currentValue.isColor) {\n\t\t\t\t\tcurrentValue.set(newValue);\n\t\t\t\t} else if (currentValue && currentValue.isVector3 && newValue && newValue.isVector3) {\n\t\t\t\t\tcurrentValue.copy(newValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis[key] = newValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst isRoot = meta === undefined || typeof meta === 'string';\n\n\t\t\tif (isRoot) {\n\t\t\t\tmeta = {\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Material',\n\t\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t\t}\n\t\t\t}; // standard Material serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif (this.name !== '') data.name = this.name;\n\t\t\tif (this.color && this.color.isColor) data.color = this.color.getHex();\n\t\t\tif (this.roughness !== undefined) data.roughness = this.roughness;\n\t\t\tif (this.metalness !== undefined) data.metalness = this.metalness;\n\t\t\tif (this.sheenTint && this.sheenTint.isColor) data.sheenTint = this.sheenTint.getHex();\n\t\t\tif (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex();\n\t\t\tif (this.emissiveIntensity && this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity;\n\t\t\tif (this.specular && this.specular.isColor) data.specular = this.specular.getHex();\n\t\t\tif (this.specularIntensity !== undefined) data.specularIntensity = this.specularIntensity;\n\t\t\tif (this.specularTint && this.specularTint.isColor) data.specularTint = this.specularTint.getHex();\n\t\t\tif (this.shininess !== undefined) data.shininess = this.shininess;\n\t\t\tif (this.clearcoat !== undefined) data.clearcoat = this.clearcoat;\n\t\t\tif (this.clearcoatRoughness !== undefined) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\t\tif (this.clearcoatMap && this.clearcoatMap.isTexture) {\n\t\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n\t\t\t}\n\n\t\t\tif (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n\t\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n\t\t\t}\n\n\t\t\tif (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n\t\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n\t\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\t\t\t}\n\n\t\t\tif (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid;\n\t\t\tif (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid;\n\t\t\tif (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n\n\t\t\tif (this.lightMap && this.lightMap.isTexture) {\n\t\t\t\tdata.lightMap = this.lightMap.toJSON(meta).uuid;\n\t\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\t\t\t}\n\n\t\t\tif (this.aoMap && this.aoMap.isTexture) {\n\t\t\t\tdata.aoMap = this.aoMap.toJSON(meta).uuid;\n\t\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\t\t\t}\n\n\t\t\tif (this.bumpMap && this.bumpMap.isTexture) {\n\t\t\t\tdata.bumpMap = this.bumpMap.toJSON(meta).uuid;\n\t\t\t\tdata.bumpScale = this.bumpScale;\n\t\t\t}\n\n\t\t\tif (this.normalMap && this.normalMap.isTexture) {\n\t\t\t\tdata.normalMap = this.normalMap.toJSON(meta).uuid;\n\t\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\t\tdata.normalScale = this.normalScale.toArray();\n\t\t\t}\n\n\t\t\tif (this.displacementMap && this.displacementMap.isTexture) {\n\t\t\t\tdata.displacementMap = this.displacementMap.toJSON(meta).uuid;\n\t\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\t\tdata.displacementBias = this.displacementBias;\n\t\t\t}\n\n\t\t\tif (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n\t\t\tif (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n\t\t\tif (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n\t\t\tif (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid;\n\t\t\tif (this.specularIntensityMap && this.specularIntensityMap.isTexture) data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n\t\t\tif (this.specularTintMap && this.specularTintMap.isTexture) data.specularTintMap = this.specularTintMap.toJSON(meta).uuid;\n\n\t\t\tif (this.envMap && this.envMap.isTexture) {\n\t\t\t\tdata.envMap = this.envMap.toJSON(meta).uuid;\n\t\t\t\tif (this.combine !== undefined) data.combine = this.combine;\n\t\t\t}\n\n\t\t\tif (this.envMapIntensity !== undefined) data.envMapIntensity = this.envMapIntensity;\n\t\t\tif (this.reflectivity !== undefined) data.reflectivity = this.reflectivity;\n\t\t\tif (this.refractionRatio !== undefined) data.refractionRatio = this.refractionRatio;\n\n\t\t\tif (this.gradientMap && this.gradientMap.isTexture) {\n\t\t\t\tdata.gradientMap = this.gradientMap.toJSON(meta).uuid;\n\t\t\t}\n\n\t\t\tif (this.transmission !== undefined) data.transmission = this.transmission;\n\t\t\tif (this.transmissionMap && this.transmissionMap.isTexture) data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n\t\t\tif (this.thickness !== undefined) data.thickness = this.thickness;\n\t\t\tif (this.thicknessMap && this.thicknessMap.isTexture) data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n\t\t\tif (this.attenuationDistance !== undefined) data.attenuationDistance = this.attenuationDistance;\n\t\t\tif (this.attenuationTint !== undefined) data.attenuationTint = this.attenuationTint.getHex();\n\t\t\tif (this.size !== undefined) data.size = this.size;\n\t\t\tif (this.shadowSide !== null) data.shadowSide = this.shadowSide;\n\t\t\tif (this.sizeAttenuation !== undefined) data.sizeAttenuation = this.sizeAttenuation;\n\t\t\tif (this.blending !== NormalBlending) data.blending = this.blending;\n\t\t\tif (this.side !== FrontSide) data.side = this.side;\n\t\t\tif (this.vertexColors) data.vertexColors = true;\n\t\t\tif (this.opacity < 1) data.opacity = this.opacity;\n\t\t\tif (this.format !== RGBAFormat) data.format = this.format;\n\t\t\tif (this.transparent === true) data.transparent = this.transparent;\n\t\t\tdata.depthFunc = this.depthFunc;\n\t\t\tdata.depthTest = this.depthTest;\n\t\t\tdata.depthWrite = this.depthWrite;\n\t\t\tdata.colorWrite = this.colorWrite;\n\t\t\tdata.stencilWrite = this.stencilWrite;\n\t\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\t\tdata.stencilFunc = this.stencilFunc;\n\t\t\tdata.stencilRef = this.stencilRef;\n\t\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\t\tdata.stencilFail = this.stencilFail;\n\t\t\tdata.stencilZFail = this.stencilZFail;\n\t\t\tdata.stencilZPass = this.stencilZPass; // rotation (SpriteMaterial)\n\n\t\t\tif (this.rotation && this.rotation !== 0) data.rotation = this.rotation;\n\t\t\tif (this.polygonOffset === true) data.polygonOffset = true;\n\t\t\tif (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\t\tif (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\t\t\tif (this.linewidth && this.linewidth !== 1) data.linewidth = this.linewidth;\n\t\t\tif (this.dashSize !== undefined) data.dashSize = this.dashSize;\n\t\t\tif (this.gapSize !== undefined) data.gapSize = this.gapSize;\n\t\t\tif (this.scale !== undefined) data.scale = this.scale;\n\t\t\tif (this.dithering === true) data.dithering = true;\n\t\t\tif (this.alphaTest > 0) data.alphaTest = this.alphaTest;\n\t\t\tif (this.alphaToCoverage === true) data.alphaToCoverage = this.alphaToCoverage;\n\t\t\tif (this.premultipliedAlpha === true) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\t\tif (this.wireframe === true) data.wireframe = this.wireframe;\n\t\t\tif (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\t\tif (this.wireframeLinecap !== 'round') data.wireframeLinecap = this.wireframeLinecap;\n\t\t\tif (this.wireframeLinejoin !== 'round') data.wireframeLinejoin = this.wireframeLinejoin;\n\t\t\tif (this.flatShading === true) data.flatShading = this.flatShading;\n\t\t\tif (this.visible === false) data.visible = false;\n\t\t\tif (this.toneMapped === false) data.toneMapped = false;\n\t\t\tif (JSON.stringify(this.userData) !== '{}') data.userData = this.userData; // TODO: Copied from Object3D.toJSON\n\n\t\t\tfunction extractFromCache(cache) {\n\t\t\t\tconst values = [];\n\n\t\t\t\tfor (const key in cache) {\n\t\t\t\t\tconst data = cache[key];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push(data);\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t}\n\n\t\t\tif (isRoot) {\n\t\t\t\tconst textures = extractFromCache(meta.textures);\n\t\t\t\tconst images = extractFromCache(meta.images);\n\t\t\t\tif (textures.length > 0) data.textures = textures;\n\t\t\t\tif (images.length > 0) data.images = images;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.name = source.name;\n\t\t\tthis.fog = source.fog;\n\t\t\tthis.blending = source.blending;\n\t\t\tthis.side = source.side;\n\t\t\tthis.vertexColors = source.vertexColors;\n\t\t\tthis.opacity = source.opacity;\n\t\t\tthis.format = source.format;\n\t\t\tthis.transparent = source.transparent;\n\t\t\tthis.blendSrc = source.blendSrc;\n\t\t\tthis.blendDst = source.blendDst;\n\t\t\tthis.blendEquation = source.blendEquation;\n\t\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\t\tthis.depthFunc = source.depthFunc;\n\t\t\tthis.depthTest = source.depthTest;\n\t\t\tthis.depthWrite = source.depthWrite;\n\t\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\t\tthis.stencilFunc = source.stencilFunc;\n\t\t\tthis.stencilRef = source.stencilRef;\n\t\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\t\tthis.stencilFail = source.stencilFail;\n\t\t\tthis.stencilZFail = source.stencilZFail;\n\t\t\tthis.stencilZPass = source.stencilZPass;\n\t\t\tthis.stencilWrite = source.stencilWrite;\n\t\t\tconst srcPlanes = source.clippingPlanes;\n\t\t\tlet dstPlanes = null;\n\n\t\t\tif (srcPlanes !== null) {\n\t\t\t\tconst n = srcPlanes.length;\n\t\t\t\tdstPlanes = new Array(n);\n\n\t\t\t\tfor (let i = 0; i !== n; ++i) {\n\t\t\t\t\tdstPlanes[i] = srcPlanes[i].clone();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.clippingPlanes = dstPlanes;\n\t\t\tthis.clipIntersection = source.clipIntersection;\n\t\t\tthis.clipShadows = source.clipShadows;\n\t\t\tthis.shadowSide = source.shadowSide;\n\t\t\tthis.colorWrite = source.colorWrite;\n\t\t\tthis.precision = source.precision;\n\t\t\tthis.polygonOffset = source.polygonOffset;\n\t\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\t\t\tthis.dithering = source.dithering;\n\t\t\tthis.alphaTest = source.alphaTest;\n\t\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\t\tthis.visible = source.visible;\n\t\t\tthis.toneMapped = source.toneMapped;\n\t\t\tthis.userData = JSON.parse(JSON.stringify(source.userData));\n\t\t\treturn this;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'dispose'\n\t\t\t});\n\t\t}\n\n\t\tset needsUpdate(value) {\n\t\t\tif (value === true) this.version++;\n\t\t}\n\n\t}\n\n\tMaterial.prototype.isMaterial = true;\n\n\tconst _colorKeywords = {\n\t\t'aliceblue': 0xF0F8FF,\n\t\t'antiquewhite': 0xFAEBD7,\n\t\t'aqua': 0x00FFFF,\n\t\t'aquamarine': 0x7FFFD4,\n\t\t'azure': 0xF0FFFF,\n\t\t'beige': 0xF5F5DC,\n\t\t'bisque': 0xFFE4C4,\n\t\t'black': 0x000000,\n\t\t'blanchedalmond': 0xFFEBCD,\n\t\t'blue': 0x0000FF,\n\t\t'blueviolet': 0x8A2BE2,\n\t\t'brown': 0xA52A2A,\n\t\t'burlywood': 0xDEB887,\n\t\t'cadetblue': 0x5F9EA0,\n\t\t'chartreuse': 0x7FFF00,\n\t\t'chocolate': 0xD2691E,\n\t\t'coral': 0xFF7F50,\n\t\t'cornflowerblue': 0x6495ED,\n\t\t'cornsilk': 0xFFF8DC,\n\t\t'crimson': 0xDC143C,\n\t\t'cyan': 0x00FFFF,\n\t\t'darkblue': 0x00008B,\n\t\t'darkcyan': 0x008B8B,\n\t\t'darkgoldenrod': 0xB8860B,\n\t\t'darkgray': 0xA9A9A9,\n\t\t'darkgreen': 0x006400,\n\t\t'darkgrey': 0xA9A9A9,\n\t\t'darkkhaki': 0xBDB76B,\n\t\t'darkmagenta': 0x8B008B,\n\t\t'darkolivegreen': 0x556B2F,\n\t\t'darkorange': 0xFF8C00,\n\t\t'darkorchid': 0x9932CC,\n\t\t'darkred': 0x8B0000,\n\t\t'darksalmon': 0xE9967A,\n\t\t'darkseagreen': 0x8FBC8F,\n\t\t'darkslateblue': 0x483D8B,\n\t\t'darkslategray': 0x2F4F4F,\n\t\t'darkslategrey': 0x2F4F4F,\n\t\t'darkturquoise': 0x00CED1,\n\t\t'darkviolet': 0x9400D3,\n\t\t'deeppink': 0xFF1493,\n\t\t'deepskyblue': 0x00BFFF,\n\t\t'dimgray': 0x696969,\n\t\t'dimgrey': 0x696969,\n\t\t'dodgerblue': 0x1E90FF,\n\t\t'firebrick': 0xB22222,\n\t\t'floralwhite': 0xFFFAF0,\n\t\t'forestgreen': 0x228B22,\n\t\t'fuchsia': 0xFF00FF,\n\t\t'gainsboro': 0xDCDCDC,\n\t\t'ghostwhite': 0xF8F8FF,\n\t\t'gold': 0xFFD700,\n\t\t'goldenrod': 0xDAA520,\n\t\t'gray': 0x808080,\n\t\t'green': 0x008000,\n\t\t'greenyellow': 0xADFF2F,\n\t\t'grey': 0x808080,\n\t\t'honeydew': 0xF0FFF0,\n\t\t'hotpink': 0xFF69B4,\n\t\t'indianred': 0xCD5C5C,\n\t\t'indigo': 0x4B0082,\n\t\t'ivory': 0xFFFFF0,\n\t\t'khaki': 0xF0E68C,\n\t\t'lavender': 0xE6E6FA,\n\t\t'lavenderblush': 0xFFF0F5,\n\t\t'lawngreen': 0x7CFC00,\n\t\t'lemonchiffon': 0xFFFACD,\n\t\t'lightblue': 0xADD8E6,\n\t\t'lightcoral': 0xF08080,\n\t\t'lightcyan': 0xE0FFFF,\n\t\t'lightgoldenrodyellow': 0xFAFAD2,\n\t\t'lightgray': 0xD3D3D3,\n\t\t'lightgreen': 0x90EE90,\n\t\t'lightgrey': 0xD3D3D3,\n\t\t'lightpink': 0xFFB6C1,\n\t\t'lightsalmon': 0xFFA07A,\n\t\t'lightseagreen': 0x20B2AA,\n\t\t'lightskyblue': 0x87CEFA,\n\t\t'lightslategray': 0x778899,\n\t\t'lightslategrey': 0x778899,\n\t\t'lightsteelblue': 0xB0C4DE,\n\t\t'lightyellow': 0xFFFFE0,\n\t\t'lime': 0x00FF00,\n\t\t'limegreen': 0x32CD32,\n\t\t'linen': 0xFAF0E6,\n\t\t'magenta': 0xFF00FF,\n\t\t'maroon': 0x800000,\n\t\t'mediumaquamarine': 0x66CDAA,\n\t\t'mediumblue': 0x0000CD,\n\t\t'mediumorchid': 0xBA55D3,\n\t\t'mediumpurple': 0x9370DB,\n\t\t'mediumseagreen': 0x3CB371,\n\t\t'mediumslateblue': 0x7B68EE,\n\t\t'mediumspringgreen': 0x00FA9A,\n\t\t'mediumturquoise': 0x48D1CC,\n\t\t'mediumvioletred': 0xC71585,\n\t\t'midnightblue': 0x191970,\n\t\t'mintcream': 0xF5FFFA,\n\t\t'mistyrose': 0xFFE4E1,\n\t\t'moccasin': 0xFFE4B5,\n\t\t'navajowhite': 0xFFDEAD,\n\t\t'navy': 0x000080,\n\t\t'oldlace': 0xFDF5E6,\n\t\t'olive': 0x808000,\n\t\t'olivedrab': 0x6B8E23,\n\t\t'orange': 0xFFA500,\n\t\t'orangered': 0xFF4500,\n\t\t'orchid': 0xDA70D6,\n\t\t'palegoldenrod': 0xEEE8AA,\n\t\t'palegreen': 0x98FB98,\n\t\t'paleturquoise': 0xAFEEEE,\n\t\t'palevioletred': 0xDB7093,\n\t\t'papayawhip': 0xFFEFD5,\n\t\t'peachpuff': 0xFFDAB9,\n\t\t'peru': 0xCD853F,\n\t\t'pink': 0xFFC0CB,\n\t\t'plum': 0xDDA0DD,\n\t\t'powderblue': 0xB0E0E6,\n\t\t'purple': 0x800080,\n\t\t'rebeccapurple': 0x663399,\n\t\t'red': 0xFF0000,\n\t\t'rosybrown': 0xBC8F8F,\n\t\t'royalblue': 0x4169E1,\n\t\t'saddlebrown': 0x8B4513,\n\t\t'salmon': 0xFA8072,\n\t\t'sandybrown': 0xF4A460,\n\t\t'seagreen': 0x2E8B57,\n\t\t'seashell': 0xFFF5EE,\n\t\t'sienna': 0xA0522D,\n\t\t'silver': 0xC0C0C0,\n\t\t'skyblue': 0x87CEEB,\n\t\t'slateblue': 0x6A5ACD,\n\t\t'slategray': 0x708090,\n\t\t'slategrey': 0x708090,\n\t\t'snow': 0xFFFAFA,\n\t\t'springgreen': 0x00FF7F,\n\t\t'steelblue': 0x4682B4,\n\t\t'tan': 0xD2B48C,\n\t\t'teal': 0x008080,\n\t\t'thistle': 0xD8BFD8,\n\t\t'tomato': 0xFF6347,\n\t\t'turquoise': 0x40E0D0,\n\t\t'violet': 0xEE82EE,\n\t\t'wheat': 0xF5DEB3,\n\t\t'white': 0xFFFFFF,\n\t\t'whitesmoke': 0xF5F5F5,\n\t\t'yellow': 0xFFFF00,\n\t\t'yellowgreen': 0x9ACD32\n\t};\n\tconst _hslA = {\n\t\th: 0,\n\t\ts: 0,\n\t\tl: 0\n\t};\n\tconst _hslB = {\n\t\th: 0,\n\t\ts: 0,\n\t\tl: 0\n\t};\n\n\tfunction hue2rgb(p, q, t) {\n\t\tif (t < 0) t += 1;\n\t\tif (t > 1) t -= 1;\n\t\tif (t < 1 / 6) return p + (q - p) * 6 * t;\n\t\tif (t < 1 / 2) return q;\n\t\tif (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n\t\treturn p;\n\t}\n\n\tfunction SRGBToLinear(c) {\n\t\treturn c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n\t}\n\n\tfunction LinearToSRGB(c) {\n\t\treturn c < 0.0031308 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n\t}\n\n\tclass Color {\n\t\tconstructor(r, g, b) {\n\t\t\tif (g === undefined && b === undefined) {\n\t\t\t\t// r is THREE.Color, hex or string\n\t\t\t\treturn this.set(r);\n\t\t\t}\n\n\t\t\treturn this.setRGB(r, g, b);\n\t\t}\n\n\t\tset(value) {\n\t\t\tif (value && value.isColor) {\n\t\t\t\tthis.copy(value);\n\t\t\t} else if (typeof value === 'number') {\n\t\t\t\tthis.setHex(value);\n\t\t\t} else if (typeof value === 'string') {\n\t\t\t\tthis.setStyle(value);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetScalar(scalar) {\n\t\t\tthis.r = scalar;\n\t\t\tthis.g = scalar;\n\t\t\tthis.b = scalar;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetHex(hex) {\n\t\t\thex = Math.floor(hex);\n\t\t\tthis.r = (hex >> 16 & 255) / 255;\n\t\t\tthis.g = (hex >> 8 & 255) / 255;\n\t\t\tthis.b = (hex & 255) / 255;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetRGB(r, g, b) {\n\t\t\tthis.r = r;\n\t\t\tthis.g = g;\n\t\t\tthis.b = b;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetHSL(h, s, l) {\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = euclideanModulo(h, 1);\n\t\t\ts = clamp(s, 0, 1);\n\t\t\tl = clamp(l, 0, 1);\n\n\t\t\tif (s === 0) {\n\t\t\t\tthis.r = this.g = this.b = l;\n\t\t\t} else {\n\t\t\t\tconst p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n\t\t\t\tconst q = 2 * l - p;\n\t\t\t\tthis.r = hue2rgb(q, p, h + 1 / 3);\n\t\t\t\tthis.g = hue2rgb(q, p, h);\n\t\t\t\tthis.b = hue2rgb(q, p, h - 1 / 3);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetStyle(style) {\n\t\t\tfunction handleAlpha(string) {\n\t\t\t\tif (string === undefined) return;\n\n\t\t\t\tif (parseFloat(string) < 1) {\n\t\t\t\t\tconsole.warn('THREE.Color: Alpha component of ' + style + ' will be ignored.');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet m;\n\n\t\t\tif (m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(style)) {\n\t\t\t\t// rgb / hsl\n\t\t\t\tlet color;\n\t\t\t\tconst name = m[1];\n\t\t\t\tconst components = m[2];\n\n\t\t\t\tswitch (name) {\n\t\t\t\t\tcase 'rgb':\n\t\t\t\t\tcase 'rgba':\n\t\t\t\t\t\tif (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n\t\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min(255, parseInt(color[1], 10)) / 255;\n\t\t\t\t\t\t\tthis.g = Math.min(255, parseInt(color[2], 10)) / 255;\n\t\t\t\t\t\t\tthis.b = Math.min(255, parseInt(color[3], 10)) / 255;\n\t\t\t\t\t\t\thandleAlpha(color[4]);\n\t\t\t\t\t\t\treturn this;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n\t\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min(100, parseInt(color[1], 10)) / 100;\n\t\t\t\t\t\t\tthis.g = Math.min(100, parseInt(color[2], 10)) / 100;\n\t\t\t\t\t\t\tthis.b = Math.min(100, parseInt(color[3], 10)) / 100;\n\t\t\t\t\t\t\thandleAlpha(color[4]);\n\t\t\t\t\t\t\treturn this;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'hsl':\n\t\t\t\t\tcase 'hsla':\n\t\t\t\t\t\tif (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n\t\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\t\tconst h = parseFloat(color[1]) / 360;\n\t\t\t\t\t\t\tconst s = parseInt(color[2], 10) / 100;\n\t\t\t\t\t\t\tconst l = parseInt(color[3], 10) / 100;\n\t\t\t\t\t\t\thandleAlpha(color[4]);\n\t\t\t\t\t\t\treturn this.setHSL(h, s, l);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n\t\t\t\t// hex color\n\t\t\t\tconst hex = m[1];\n\t\t\t\tconst size = hex.length;\n\n\t\t\t\tif (size === 3) {\n\t\t\t\t\t// #ff0\n\t\t\t\t\tthis.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n\t\t\t\t\tthis.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n\t\t\t\t\tthis.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n\t\t\t\t\treturn this;\n\t\t\t\t} else if (size === 6) {\n\t\t\t\t\t// #ff0000\n\t\t\t\t\tthis.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n\t\t\t\t\tthis.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n\t\t\t\t\tthis.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (style && style.length > 0) {\n\t\t\t\treturn this.setColorName(style);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetColorName(style) {\n\t\t\t// color keywords\n\t\t\tconst hex = _colorKeywords[style.toLowerCase()];\n\n\t\t\tif (hex !== undefined) {\n\t\t\t\t// red\n\t\t\t\tthis.setHex(hex);\n\t\t\t} else {\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn('THREE.Color: Unknown color ' + style);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.r, this.g, this.b);\n\t\t}\n\n\t\tcopy(color) {\n\t\t\tthis.r = color.r;\n\t\t\tthis.g = color.g;\n\t\t\tthis.b = color.b;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyGammaToLinear(color, gammaFactor = 2.0) {\n\t\t\tthis.r = Math.pow(color.r, gammaFactor);\n\t\t\tthis.g = Math.pow(color.g, gammaFactor);\n\t\t\tthis.b = Math.pow(color.b, gammaFactor);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyLinearToGamma(color, gammaFactor = 2.0) {\n\t\t\tconst safeInverse = gammaFactor > 0 ? 1.0 / gammaFactor : 1.0;\n\t\t\tthis.r = Math.pow(color.r, safeInverse);\n\t\t\tthis.g = Math.pow(color.g, safeInverse);\n\t\t\tthis.b = Math.pow(color.b, safeInverse);\n\t\t\treturn this;\n\t\t}\n\n\t\tconvertGammaToLinear(gammaFactor) {\n\t\t\tthis.copyGammaToLinear(this, gammaFactor);\n\t\t\treturn this;\n\t\t}\n\n\t\tconvertLinearToGamma(gammaFactor) {\n\t\t\tthis.copyLinearToGamma(this, gammaFactor);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopySRGBToLinear(color) {\n\t\t\tthis.r = SRGBToLinear(color.r);\n\t\t\tthis.g = SRGBToLinear(color.g);\n\t\t\tthis.b = SRGBToLinear(color.b);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyLinearToSRGB(color) {\n\t\t\tthis.r = LinearToSRGB(color.r);\n\t\t\tthis.g = LinearToSRGB(color.g);\n\t\t\tthis.b = LinearToSRGB(color.b);\n\t\t\treturn this;\n\t\t}\n\n\t\tconvertSRGBToLinear() {\n\t\t\tthis.copySRGBToLinear(this);\n\t\t\treturn this;\n\t\t}\n\n\t\tconvertLinearToSRGB() {\n\t\t\tthis.copyLinearToSRGB(this);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetHex() {\n\t\t\treturn this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;\n\t\t}\n\n\t\tgetHexString() {\n\t\t\treturn ('000000' + this.getHex().toString(16)).slice(-6);\n\t\t}\n\n\t\tgetHSL(target) {\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\tconst r = this.r,\n\t\t\t\t\t\tg = this.g,\n\t\t\t\t\t\tb = this.b;\n\t\t\tconst max = Math.max(r, g, b);\n\t\t\tconst min = Math.min(r, g, b);\n\t\t\tlet hue, saturation;\n\t\t\tconst lightness = (min + max) / 2.0;\n\n\t\t\tif (min === max) {\n\t\t\t\thue = 0;\n\t\t\t\tsaturation = 0;\n\t\t\t} else {\n\t\t\t\tconst delta = max - min;\n\t\t\t\tsaturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n\n\t\t\t\tswitch (max) {\n\t\t\t\t\tcase r:\n\t\t\t\t\t\thue = (g - b) / delta + (g < b ? 6 : 0);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase g:\n\t\t\t\t\t\thue = (b - r) / delta + 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase b:\n\t\t\t\t\t\thue = (r - g) / delta + 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\thue /= 6;\n\t\t\t}\n\n\t\t\ttarget.h = hue;\n\t\t\ttarget.s = saturation;\n\t\t\ttarget.l = lightness;\n\t\t\treturn target;\n\t\t}\n\n\t\tgetStyle() {\n\t\t\treturn 'rgb(' + (this.r * 255 | 0) + ',' + (this.g * 255 | 0) + ',' + (this.b * 255 | 0) + ')';\n\t\t}\n\n\t\toffsetHSL(h, s, l) {\n\t\t\tthis.getHSL(_hslA);\n\t\t\t_hslA.h += h;\n\t\t\t_hslA.s += s;\n\t\t\t_hslA.l += l;\n\t\t\tthis.setHSL(_hslA.h, _hslA.s, _hslA.l);\n\t\t\treturn this;\n\t\t}\n\n\t\tadd(color) {\n\t\t\tthis.r += color.r;\n\t\t\tthis.g += color.g;\n\t\t\tthis.b += color.b;\n\t\t\treturn this;\n\t\t}\n\n\t\taddColors(color1, color2) {\n\t\t\tthis.r = color1.r + color2.r;\n\t\t\tthis.g = color1.g + color2.g;\n\t\t\tthis.b = color1.b + color2.b;\n\t\t\treturn this;\n\t\t}\n\n\t\taddScalar(s) {\n\t\t\tthis.r += s;\n\t\t\tthis.g += s;\n\t\t\tthis.b += s;\n\t\t\treturn this;\n\t\t}\n\n\t\tsub(color) {\n\t\t\tthis.r = Math.max(0, this.r - color.r);\n\t\t\tthis.g = Math.max(0, this.g - color.g);\n\t\t\tthis.b = Math.max(0, this.b - color.b);\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiply(color) {\n\t\t\tthis.r *= color.r;\n\t\t\tthis.g *= color.g;\n\t\t\tthis.b *= color.b;\n\t\t\treturn this;\n\t\t}\n\n\t\tmultiplyScalar(s) {\n\t\t\tthis.r *= s;\n\t\t\tthis.g *= s;\n\t\t\tthis.b *= s;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerp(color, alpha) {\n\t\t\tthis.r += (color.r - this.r) * alpha;\n\t\t\tthis.g += (color.g - this.g) * alpha;\n\t\t\tthis.b += (color.b - this.b) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerpColors(color1, color2, alpha) {\n\t\t\tthis.r = color1.r + (color2.r - color1.r) * alpha;\n\t\t\tthis.g = color1.g + (color2.g - color1.g) * alpha;\n\t\t\tthis.b = color1.b + (color2.b - color1.b) * alpha;\n\t\t\treturn this;\n\t\t}\n\n\t\tlerpHSL(color, alpha) {\n\t\t\tthis.getHSL(_hslA);\n\t\t\tcolor.getHSL(_hslB);\n\t\t\tconst h = lerp(_hslA.h, _hslB.h, alpha);\n\t\t\tconst s = lerp(_hslA.s, _hslB.s, alpha);\n\t\t\tconst l = lerp(_hslA.l, _hslB.l, alpha);\n\t\t\tthis.setHSL(h, s, l);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(c) {\n\t\t\treturn c.r === this.r && c.g === this.g && c.b === this.b;\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tthis.r = array[offset];\n\t\t\tthis.g = array[offset + 1];\n\t\t\tthis.b = array[offset + 2];\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tarray[offset] = this.r;\n\t\t\tarray[offset + 1] = this.g;\n\t\t\tarray[offset + 2] = this.b;\n\t\t\treturn array;\n\t\t}\n\n\t\tfromBufferAttribute(attribute, index) {\n\t\t\tthis.r = attribute.getX(index);\n\t\t\tthis.g = attribute.getY(index);\n\t\t\tthis.b = attribute.getZ(index);\n\n\t\t\tif (attribute.normalized === true) {\n\t\t\t\t// assuming Uint8Array\n\t\t\t\tthis.r /= 255;\n\t\t\t\tthis.g /= 255;\n\t\t\t\tthis.b /= 255;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.getHex();\n\t\t}\n\n\t}\n\n\tColor.NAMES = _colorKeywords;\n\tColor.prototype.isColor = true;\n\tColor.prototype.r = 1;\n\tColor.prototype.g = 1;\n\tColor.prototype.b = 1;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\tlightMap: new THREE.Texture( ),\n\t *\tlightMapIntensity: \n\t *\n\t *\taoMap: new THREE.Texture( ),\n\t *\taoMapIntensity: \n\t *\n\t *\tspecularMap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tenvMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *\tcombine: THREE.Multiply,\n\t *\treflectivity: ,\n\t *\trefractionRatio: ,\n\t *\n\t *\tdepthTest: ,\n\t *\tdepthWrite: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t * }\n\t */\n\n\tclass MeshBasicMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshBasicMaterial';\n\t\t\tthis.color = new Color(0xffffff); // emissive\n\n\t\t\tthis.map = null;\n\t\t\tthis.lightMap = null;\n\t\t\tthis.lightMapIntensity = 1.0;\n\t\t\tthis.aoMap = null;\n\t\t\tthis.aoMapIntensity = 1.0;\n\t\t\tthis.specularMap = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.envMap = null;\n\t\t\tthis.combine = MultiplyOperation;\n\t\t\tthis.reflectivity = 1;\n\t\t\tthis.refractionRatio = 0.98;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.wireframeLinecap = 'round';\n\t\t\tthis.wireframeLinejoin = 'round';\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.map = source.map;\n\t\t\tthis.lightMap = source.lightMap;\n\t\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\t\t\tthis.aoMap = source.aoMap;\n\t\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\t\t\tthis.specularMap = source.specularMap;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.envMap = source.envMap;\n\t\t\tthis.combine = source.combine;\n\t\t\tthis.reflectivity = source.reflectivity;\n\t\t\tthis.refractionRatio = source.refractionRatio;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\n\tconst _vector$9 = /*@__PURE__*/new Vector3();\n\n\tconst _vector2$1 = /*@__PURE__*/new Vector2();\n\n\tclass BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tif (Array.isArray(array)) {\n\t\t\t\tthrow new TypeError('THREE.BufferAttribute: array should be a Typed Array.');\n\t\t\t}\n\n\t\t\tthis.name = '';\n\t\t\tthis.array = array;\n\t\t\tthis.itemSize = itemSize;\n\t\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\t\tthis.normalized = normalized === true;\n\t\t\tthis.usage = StaticDrawUsage;\n\t\t\tthis.updateRange = {\n\t\t\t\toffset: 0,\n\t\t\t\tcount: -1\n\t\t\t};\n\t\t\tthis.version = 0;\n\t\t}\n\n\t\tonUploadCallback() {}\n\n\t\tset needsUpdate(value) {\n\t\t\tif (value === true) this.version++;\n\t\t}\n\n\t\tsetUsage(value) {\n\t\t\tthis.usage = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.name = source.name;\n\t\t\tthis.array = new source.array.constructor(source.array);\n\t\t\tthis.itemSize = source.itemSize;\n\t\t\tthis.count = source.count;\n\t\t\tthis.normalized = source.normalized;\n\t\t\tthis.usage = source.usage;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyAt(index1, attribute, index2) {\n\t\t\tindex1 *= this.itemSize;\n\t\t\tindex2 *= attribute.itemSize;\n\n\t\t\tfor (let i = 0, l = this.itemSize; i < l; i++) {\n\t\t\t\tthis.array[index1 + i] = attribute.array[index2 + i];\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyArray(array) {\n\t\t\tthis.array.set(array);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyColorsArray(colors) {\n\t\t\tconst array = this.array;\n\t\t\tlet offset = 0;\n\n\t\t\tfor (let i = 0, l = colors.length; i < l; i++) {\n\t\t\t\tlet color = colors[i];\n\n\t\t\t\tif (color === undefined) {\n\t\t\t\t\tconsole.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined', i);\n\t\t\t\t\tcolor = new Color();\n\t\t\t\t}\n\n\t\t\t\tarray[offset++] = color.r;\n\t\t\t\tarray[offset++] = color.g;\n\t\t\t\tarray[offset++] = color.b;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyVector2sArray(vectors) {\n\t\t\tconst array = this.array;\n\t\t\tlet offset = 0;\n\n\t\t\tfor (let i = 0, l = vectors.length; i < l; i++) {\n\t\t\t\tlet vector = vectors[i];\n\n\t\t\t\tif (vector === undefined) {\n\t\t\t\t\tconsole.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i);\n\t\t\t\t\tvector = new Vector2();\n\t\t\t\t}\n\n\t\t\t\tarray[offset++] = vector.x;\n\t\t\t\tarray[offset++] = vector.y;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyVector3sArray(vectors) {\n\t\t\tconst array = this.array;\n\t\t\tlet offset = 0;\n\n\t\t\tfor (let i = 0, l = vectors.length; i < l; i++) {\n\t\t\t\tlet vector = vectors[i];\n\n\t\t\t\tif (vector === undefined) {\n\t\t\t\t\tconsole.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i);\n\t\t\t\t\tvector = new Vector3();\n\t\t\t\t}\n\n\t\t\t\tarray[offset++] = vector.x;\n\t\t\t\tarray[offset++] = vector.y;\n\t\t\t\tarray[offset++] = vector.z;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyVector4sArray(vectors) {\n\t\t\tconst array = this.array;\n\t\t\tlet offset = 0;\n\n\t\t\tfor (let i = 0, l = vectors.length; i < l; i++) {\n\t\t\t\tlet vector = vectors[i];\n\n\t\t\t\tif (vector === undefined) {\n\t\t\t\t\tconsole.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i);\n\t\t\t\t\tvector = new Vector4();\n\t\t\t\t}\n\n\t\t\t\tarray[offset++] = vector.x;\n\t\t\t\tarray[offset++] = vector.y;\n\t\t\t\tarray[offset++] = vector.z;\n\t\t\t\tarray[offset++] = vector.w;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyMatrix3(m) {\n\t\t\tif (this.itemSize === 2) {\n\t\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t\t_vector2$1.fromBufferAttribute(this, i);\n\n\t\t\t\t\t_vector2$1.applyMatrix3(m);\n\n\t\t\t\t\tthis.setXY(i, _vector2$1.x, _vector2$1.y);\n\t\t\t\t}\n\t\t\t} else if (this.itemSize === 3) {\n\t\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t\t_vector$9.fromBufferAttribute(this, i);\n\n\t\t\t\t\t_vector$9.applyMatrix3(m);\n\n\t\t\t\t\tthis.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyMatrix4(m) {\n\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t_vector$9.x = this.getX(i);\n\t\t\t\t_vector$9.y = this.getY(i);\n\t\t\t\t_vector$9.z = this.getZ(i);\n\n\t\t\t\t_vector$9.applyMatrix4(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyNormalMatrix(m) {\n\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t_vector$9.x = this.getX(i);\n\t\t\t\t_vector$9.y = this.getY(i);\n\t\t\t\t_vector$9.z = this.getZ(i);\n\n\t\t\t\t_vector$9.applyNormalMatrix(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttransformDirection(m) {\n\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t_vector$9.x = this.getX(i);\n\t\t\t\t_vector$9.y = this.getY(i);\n\t\t\t\t_vector$9.z = this.getZ(i);\n\n\t\t\t\t_vector$9.transformDirection(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tset(value, offset = 0) {\n\t\t\tthis.array.set(value, offset);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetX(index) {\n\t\t\treturn this.array[index * this.itemSize];\n\t\t}\n\n\t\tsetX(index, x) {\n\t\t\tthis.array[index * this.itemSize] = x;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetY(index) {\n\t\t\treturn this.array[index * this.itemSize + 1];\n\t\t}\n\n\t\tsetY(index, y) {\n\t\t\tthis.array[index * this.itemSize + 1] = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetZ(index) {\n\t\t\treturn this.array[index * this.itemSize + 2];\n\t\t}\n\n\t\tsetZ(index, z) {\n\t\t\tthis.array[index * this.itemSize + 2] = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetW(index) {\n\t\t\treturn this.array[index * this.itemSize + 3];\n\t\t}\n\n\t\tsetW(index, w) {\n\t\t\tthis.array[index * this.itemSize + 3] = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetXY(index, x, y) {\n\t\t\tindex *= this.itemSize;\n\t\t\tthis.array[index + 0] = x;\n\t\t\tthis.array[index + 1] = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetXYZ(index, x, y, z) {\n\t\t\tindex *= this.itemSize;\n\t\t\tthis.array[index + 0] = x;\n\t\t\tthis.array[index + 1] = y;\n\t\t\tthis.array[index + 2] = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetXYZW(index, x, y, z, w) {\n\t\t\tindex *= this.itemSize;\n\t\t\tthis.array[index + 0] = x;\n\t\t\tthis.array[index + 1] = y;\n\t\t\tthis.array[index + 2] = z;\n\t\t\tthis.array[index + 3] = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tonUpload(callback) {\n\t\t\tthis.onUploadCallback = callback;\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.array, this.itemSize).copy(this);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call(this.array),\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\t\t\tif (this.name !== '') data.name = this.name;\n\t\t\tif (this.usage !== StaticDrawUsage) data.usage = this.usage;\n\t\t\tif (this.updateRange.offset !== 0 || this.updateRange.count !== -1) data.updateRange = this.updateRange;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tBufferAttribute.prototype.isBufferAttribute = true; //\n\n\tclass Int8BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Int8Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Uint8BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Uint8Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Uint8ClampedArray(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Int16BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Int16Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Uint16BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Uint16Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Int32BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Int32Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Uint32BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Uint32Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Float16BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Uint16Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\n\tclass Float32BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Float32Array(array), itemSize, normalized);\n\t\t}\n\n\t}\n\n\tclass Float64BufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized) {\n\t\t\tsuper(new Float64Array(array), itemSize, normalized);\n\t\t}\n\n\t} //\n\n\tfunction arrayMax(array) {\n\t\tif (array.length === 0) return -Infinity;\n\t\tlet max = array[0];\n\n\t\tfor (let i = 1, l = array.length; i < l; ++i) {\n\t\t\tif (array[i] > max) max = array[i];\n\t\t}\n\n\t\treturn max;\n\t}\n\n\tconst TYPED_ARRAYS = {\n\t\tInt8Array: Int8Array,\n\t\tUint8Array: Uint8Array,\n\t\tUint8ClampedArray: Uint8ClampedArray,\n\t\tInt16Array: Int16Array,\n\t\tUint16Array: Uint16Array,\n\t\tInt32Array: Int32Array,\n\t\tUint32Array: Uint32Array,\n\t\tFloat32Array: Float32Array,\n\t\tFloat64Array: Float64Array\n\t};\n\n\tfunction getTypedArray(type, buffer) {\n\t\treturn new TYPED_ARRAYS[type](buffer);\n\t}\n\n\tlet _id = 0;\n\n\tconst _m1 = /*@__PURE__*/new Matrix4();\n\n\tconst _obj = /*@__PURE__*/new Object3D();\n\n\tconst _offset = /*@__PURE__*/new Vector3();\n\n\tconst _box$1 = /*@__PURE__*/new Box3();\n\n\tconst _boxMorphTargets = /*@__PURE__*/new Box3();\n\n\tconst _vector$8 = /*@__PURE__*/new Vector3();\n\n\tclass BufferGeometry extends EventDispatcher {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tObject.defineProperty(this, 'id', {\n\t\t\t\tvalue: _id++\n\t\t\t});\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.name = '';\n\t\t\tthis.type = 'BufferGeometry';\n\t\t\tthis.index = null;\n\t\t\tthis.attributes = {};\n\t\t\tthis.morphAttributes = {};\n\t\t\tthis.morphTargetsRelative = false;\n\t\t\tthis.groups = [];\n\t\t\tthis.boundingBox = null;\n\t\t\tthis.boundingSphere = null;\n\t\t\tthis.drawRange = {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: Infinity\n\t\t\t};\n\t\t\tthis.userData = {};\n\t\t}\n\n\t\tgetIndex() {\n\t\t\treturn this.index;\n\t\t}\n\n\t\tsetIndex(index) {\n\t\t\tif (Array.isArray(index)) {\n\t\t\t\tthis.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.index = index;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetAttribute(name) {\n\t\t\treturn this.attributes[name];\n\t\t}\n\n\t\tsetAttribute(name, attribute) {\n\t\t\tthis.attributes[name] = attribute;\n\t\t\treturn this;\n\t\t}\n\n\t\tdeleteAttribute(name) {\n\t\t\tdelete this.attributes[name];\n\t\t\treturn this;\n\t\t}\n\n\t\thasAttribute(name) {\n\t\t\treturn this.attributes[name] !== undefined;\n\t\t}\n\n\t\taddGroup(start, count, materialIndex = 0) {\n\t\t\tthis.groups.push({\n\t\t\t\tstart: start,\n\t\t\t\tcount: count,\n\t\t\t\tmaterialIndex: materialIndex\n\t\t\t});\n\t\t}\n\n\t\tclearGroups() {\n\t\t\tthis.groups = [];\n\t\t}\n\n\t\tsetDrawRange(start, count) {\n\t\t\tthis.drawRange.start = start;\n\t\t\tthis.drawRange.count = count;\n\t\t}\n\n\t\tapplyMatrix4(matrix) {\n\t\t\tconst position = this.attributes.position;\n\n\t\t\tif (position !== undefined) {\n\t\t\t\tposition.applyMatrix4(matrix);\n\t\t\t\tposition.needsUpdate = true;\n\t\t\t}\n\n\t\t\tconst normal = this.attributes.normal;\n\n\t\t\tif (normal !== undefined) {\n\t\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix(matrix);\n\t\t\t\tnormal.applyNormalMatrix(normalMatrix);\n\t\t\t\tnormal.needsUpdate = true;\n\t\t\t}\n\n\t\t\tconst tangent = this.attributes.tangent;\n\n\t\t\tif (tangent !== undefined) {\n\t\t\t\ttangent.transformDirection(matrix);\n\t\t\t\ttangent.needsUpdate = true;\n\t\t\t}\n\n\t\t\tif (this.boundingBox !== null) {\n\t\t\t\tthis.computeBoundingBox();\n\t\t\t}\n\n\t\t\tif (this.boundingSphere !== null) {\n\t\t\t\tthis.computeBoundingSphere();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyQuaternion(q) {\n\t\t\t_m1.makeRotationFromQuaternion(q);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateX(angle) {\n\t\t\t// rotate geometry around world x-axis\n\t\t\t_m1.makeRotationX(angle);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateY(angle) {\n\t\t\t// rotate geometry around world y-axis\n\t\t\t_m1.makeRotationY(angle);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\trotateZ(angle) {\n\t\t\t// rotate geometry around world z-axis\n\t\t\t_m1.makeRotationZ(angle);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(x, y, z) {\n\t\t\t// translate geometry\n\t\t\t_m1.makeTranslation(x, y, z);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\tscale(x, y, z) {\n\t\t\t// scale geometry\n\t\t\t_m1.makeScale(x, y, z);\n\n\t\t\tthis.applyMatrix4(_m1);\n\t\t\treturn this;\n\t\t}\n\n\t\tlookAt(vector) {\n\t\t\t_obj.lookAt(vector);\n\n\t\t\t_obj.updateMatrix();\n\n\t\t\tthis.applyMatrix4(_obj.matrix);\n\t\t\treturn this;\n\t\t}\n\n\t\tcenter() {\n\t\t\tthis.computeBoundingBox();\n\t\t\tthis.boundingBox.getCenter(_offset).negate();\n\t\t\tthis.translate(_offset.x, _offset.y, _offset.z);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromPoints(points) {\n\t\t\tconst position = [];\n\n\t\t\tfor (let i = 0, l = points.length; i < l; i++) {\n\t\t\t\tconst point = points[i];\n\t\t\t\tposition.push(point.x, point.y, point.z || 0);\n\t\t\t}\n\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(position, 3));\n\t\t\treturn this;\n\t\t}\n\n\t\tcomputeBoundingBox() {\n\t\t\tif (this.boundingBox === null) {\n\t\t\t\tthis.boundingBox = new Box3();\n\t\t\t}\n\n\t\t\tconst position = this.attributes.position;\n\t\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif (position && position.isGLBufferAttribute) {\n\t\t\t\tconsole.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n\t\t\t\tthis.boundingBox.set(new Vector3(-Infinity, -Infinity, -Infinity), new Vector3(+Infinity, +Infinity, +Infinity));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (position !== undefined) {\n\t\t\t\tthis.boundingBox.setFromBufferAttribute(position); // process morph attributes if present\n\n\t\t\t\tif (morphAttributesPosition) {\n\t\t\t\t\tfor (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n\t\t\t\t\t\tconst morphAttribute = morphAttributesPosition[i];\n\n\t\t\t\t\t\t_box$1.setFromBufferAttribute(morphAttribute);\n\n\t\t\t\t\t\tif (this.morphTargetsRelative) {\n\t\t\t\t\t\t\t_vector$8.addVectors(this.boundingBox.min, _box$1.min);\n\n\t\t\t\t\t\t\tthis.boundingBox.expandByPoint(_vector$8);\n\n\t\t\t\t\t\t\t_vector$8.addVectors(this.boundingBox.max, _box$1.max);\n\n\t\t\t\t\t\t\tthis.boundingBox.expandByPoint(_vector$8);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.boundingBox.expandByPoint(_box$1.min);\n\t\t\t\t\t\t\tthis.boundingBox.expandByPoint(_box$1.max);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.boundingBox.makeEmpty();\n\t\t\t}\n\n\t\t\tif (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n\t\t\t\tconsole.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n\t\t\t}\n\t\t}\n\n\t\tcomputeBoundingSphere() {\n\t\t\tif (this.boundingSphere === null) {\n\t\t\t\tthis.boundingSphere = new Sphere();\n\t\t\t}\n\n\t\t\tconst position = this.attributes.position;\n\t\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif (position && position.isGLBufferAttribute) {\n\t\t\t\tconsole.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n\t\t\t\tthis.boundingSphere.set(new Vector3(), Infinity);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (position) {\n\t\t\t\t// first, find the center of the bounding sphere\n\t\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t\t_box$1.setFromBufferAttribute(position); // process morph attributes if present\n\n\n\t\t\t\tif (morphAttributesPosition) {\n\t\t\t\t\tfor (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n\t\t\t\t\t\tconst morphAttribute = morphAttributesPosition[i];\n\n\t\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute(morphAttribute);\n\n\t\t\t\t\t\tif (this.morphTargetsRelative) {\n\t\t\t\t\t\t\t_vector$8.addVectors(_box$1.min, _boxMorphTargets.min);\n\n\t\t\t\t\t\t\t_box$1.expandByPoint(_vector$8);\n\n\t\t\t\t\t\t\t_vector$8.addVectors(_box$1.max, _boxMorphTargets.max);\n\n\t\t\t\t\t\t\t_box$1.expandByPoint(_vector$8);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_box$1.expandByPoint(_boxMorphTargets.min);\n\n\t\t\t\t\t\t\t_box$1.expandByPoint(_boxMorphTargets.max);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t_box$1.getCenter(center); // second, try to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\n\t\t\t\tlet maxRadiusSq = 0;\n\n\t\t\t\tfor (let i = 0, il = position.count; i < il; i++) {\n\t\t\t\t\t_vector$8.fromBufferAttribute(position, i);\n\n\t\t\t\t\tmaxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n\t\t\t\t} // process morph attributes if present\n\n\n\t\t\t\tif (morphAttributesPosition) {\n\t\t\t\t\tfor (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n\t\t\t\t\t\tconst morphAttribute = morphAttributesPosition[i];\n\t\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\t\tfor (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n\t\t\t\t\t\t\t_vector$8.fromBufferAttribute(morphAttribute, j);\n\n\t\t\t\t\t\t\tif (morphTargetsRelative) {\n\t\t\t\t\t\t\t\t_offset.fromBufferAttribute(position, j);\n\n\t\t\t\t\t\t\t\t_vector$8.add(_offset);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmaxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n\n\t\t\t\tif (isNaN(this.boundingSphere.radius)) {\n\t\t\t\t\tconsole.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcomputeTangents() {\n\t\t\tconst index = this.index;\n\t\t\tconst attributes = this.attributes; // based on http://www.terathon.com/code/tangent.html\n\t\t\t// (per vertex tangents)\n\n\t\t\tif (index === null || attributes.position === undefined || attributes.normal === undefined || attributes.uv === undefined) {\n\t\t\t\tconsole.error('THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst indices = index.array;\n\t\t\tconst positions = attributes.position.array;\n\t\t\tconst normals = attributes.normal.array;\n\t\t\tconst uvs = attributes.uv.array;\n\t\t\tconst nVertices = positions.length / 3;\n\n\t\t\tif (attributes.tangent === undefined) {\n\t\t\t\tthis.setAttribute('tangent', new BufferAttribute(new Float32Array(4 * nVertices), 4));\n\t\t\t}\n\n\t\t\tconst tangents = attributes.tangent.array;\n\t\t\tconst tan1 = [],\n\t\t\t\t\t\ttan2 = [];\n\n\t\t\tfor (let i = 0; i < nVertices; i++) {\n\t\t\t\ttan1[i] = new Vector3();\n\t\t\t\ttan2[i] = new Vector3();\n\t\t\t}\n\n\t\t\tconst vA = new Vector3(),\n\t\t\t\t\t\tvB = new Vector3(),\n\t\t\t\t\t\tvC = new Vector3(),\n\t\t\t\t\t\tuvA = new Vector2(),\n\t\t\t\t\t\tuvB = new Vector2(),\n\t\t\t\t\t\tuvC = new Vector2(),\n\t\t\t\t\t\tsdir = new Vector3(),\n\t\t\t\t\t\ttdir = new Vector3();\n\n\t\t\tfunction handleTriangle(a, b, c) {\n\t\t\t\tvA.fromArray(positions, a * 3);\n\t\t\t\tvB.fromArray(positions, b * 3);\n\t\t\t\tvC.fromArray(positions, c * 3);\n\t\t\t\tuvA.fromArray(uvs, a * 2);\n\t\t\t\tuvB.fromArray(uvs, b * 2);\n\t\t\t\tuvC.fromArray(uvs, c * 2);\n\t\t\t\tvB.sub(vA);\n\t\t\t\tvC.sub(vA);\n\t\t\t\tuvB.sub(uvA);\n\t\t\t\tuvC.sub(uvA);\n\t\t\t\tconst r = 1.0 / (uvB.x * uvC.y - uvC.x * uvB.y); // silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\t\tif (!isFinite(r)) return;\n\t\t\t\tsdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n\t\t\t\ttdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\n\t\t\t\ttan1[a].add(sdir);\n\t\t\t\ttan1[b].add(sdir);\n\t\t\t\ttan1[c].add(sdir);\n\t\t\t\ttan2[a].add(tdir);\n\t\t\t\ttan2[b].add(tdir);\n\t\t\t\ttan2[c].add(tdir);\n\t\t\t}\n\n\t\t\tlet groups = this.groups;\n\n\t\t\tif (groups.length === 0) {\n\t\t\t\tgroups = [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tcount: indices.length\n\t\t\t\t}];\n\t\t\t}\n\n\t\t\tfor (let i = 0, il = groups.length; i < il; ++i) {\n\t\t\t\tconst group = groups[i];\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor (let j = start, jl = start + count; j < jl; j += 3) {\n\t\t\t\t\thandleTriangle(indices[j + 0], indices[j + 1], indices[j + 2]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst tmp = new Vector3(),\n\t\t\t\t\t\ttmp2 = new Vector3();\n\t\t\tconst n = new Vector3(),\n\t\t\t\t\t\tn2 = new Vector3();\n\n\t\t\tfunction handleVertex(v) {\n\t\t\t\tn.fromArray(normals, v * 3);\n\t\t\t\tn2.copy(n);\n\t\t\t\tconst t = tan1[v]; // Gram-Schmidt orthogonalize\n\n\t\t\t\ttmp.copy(t);\n\t\t\t\ttmp.sub(n.multiplyScalar(n.dot(t))).normalize(); // Calculate handedness\n\n\t\t\t\ttmp2.crossVectors(n2, t);\n\t\t\t\tconst test = tmp2.dot(tan2[v]);\n\t\t\t\tconst w = test < 0.0 ? -1.0 : 1.0;\n\t\t\t\ttangents[v * 4] = tmp.x;\n\t\t\t\ttangents[v * 4 + 1] = tmp.y;\n\t\t\t\ttangents[v * 4 + 2] = tmp.z;\n\t\t\t\ttangents[v * 4 + 3] = w;\n\t\t\t}\n\n\t\t\tfor (let i = 0, il = groups.length; i < il; ++i) {\n\t\t\t\tconst group = groups[i];\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor (let j = start, jl = start + count; j < jl; j += 3) {\n\t\t\t\t\thandleVertex(indices[j + 0]);\n\t\t\t\t\thandleVertex(indices[j + 1]);\n\t\t\t\t\thandleVertex(indices[j + 2]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcomputeVertexNormals() {\n\t\t\tconst index = this.index;\n\t\t\tconst positionAttribute = this.getAttribute('position');\n\n\t\t\tif (positionAttribute !== undefined) {\n\t\t\t\tlet normalAttribute = this.getAttribute('normal');\n\n\t\t\t\tif (normalAttribute === undefined) {\n\t\t\t\t\tnormalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n\t\t\t\t\tthis.setAttribute('normal', normalAttribute);\n\t\t\t\t} else {\n\t\t\t\t\t// reset existing normals to zero\n\t\t\t\t\tfor (let i = 0, il = normalAttribute.count; i < il; i++) {\n\t\t\t\t\t\tnormalAttribute.setXYZ(i, 0, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst pA = new Vector3(),\n\t\t\t\t\t\t\tpB = new Vector3(),\n\t\t\t\t\t\t\tpC = new Vector3();\n\t\t\t\tconst nA = new Vector3(),\n\t\t\t\t\t\t\tnB = new Vector3(),\n\t\t\t\t\t\t\tnC = new Vector3();\n\t\t\t\tconst cb = new Vector3(),\n\t\t\t\t\t\t\tab = new Vector3(); // indexed elements\n\n\t\t\t\tif (index) {\n\t\t\t\t\tfor (let i = 0, il = index.count; i < il; i += 3) {\n\t\t\t\t\t\tconst vA = index.getX(i + 0);\n\t\t\t\t\t\tconst vB = index.getX(i + 1);\n\t\t\t\t\t\tconst vC = index.getX(i + 2);\n\t\t\t\t\t\tpA.fromBufferAttribute(positionAttribute, vA);\n\t\t\t\t\t\tpB.fromBufferAttribute(positionAttribute, vB);\n\t\t\t\t\t\tpC.fromBufferAttribute(positionAttribute, vC);\n\t\t\t\t\t\tcb.subVectors(pC, pB);\n\t\t\t\t\t\tab.subVectors(pA, pB);\n\t\t\t\t\t\tcb.cross(ab);\n\t\t\t\t\t\tnA.fromBufferAttribute(normalAttribute, vA);\n\t\t\t\t\t\tnB.fromBufferAttribute(normalAttribute, vB);\n\t\t\t\t\t\tnC.fromBufferAttribute(normalAttribute, vC);\n\t\t\t\t\t\tnA.add(cb);\n\t\t\t\t\t\tnB.add(cb);\n\t\t\t\t\t\tnC.add(cb);\n\t\t\t\t\t\tnormalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n\t\t\t\t\t\tnormalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n\t\t\t\t\t\tnormalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\t\t\t\t\tfor (let i = 0, il = positionAttribute.count; i < il; i += 3) {\n\t\t\t\t\t\tpA.fromBufferAttribute(positionAttribute, i + 0);\n\t\t\t\t\t\tpB.fromBufferAttribute(positionAttribute, i + 1);\n\t\t\t\t\t\tpC.fromBufferAttribute(positionAttribute, i + 2);\n\t\t\t\t\t\tcb.subVectors(pC, pB);\n\t\t\t\t\t\tab.subVectors(pA, pB);\n\t\t\t\t\t\tcb.cross(ab);\n\t\t\t\t\t\tnormalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n\t\t\t\t\t\tnormalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n\t\t\t\t\t\tnormalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.normalizeNormals();\n\t\t\t\tnormalAttribute.needsUpdate = true;\n\t\t\t}\n\t\t}\n\n\t\tmerge(geometry, offset) {\n\t\t\tif (!(geometry && geometry.isBufferGeometry)) {\n\t\t\t\tconsole.error('THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (offset === undefined) {\n\t\t\t\toffset = 0;\n\t\t\t\tconsole.warn('THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.');\n\t\t\t}\n\n\t\t\tconst attributes = this.attributes;\n\n\t\t\tfor (const key in attributes) {\n\t\t\t\tif (geometry.attributes[key] === undefined) continue;\n\t\t\t\tconst attribute1 = attributes[key];\n\t\t\t\tconst attributeArray1 = attribute1.array;\n\t\t\t\tconst attribute2 = geometry.attributes[key];\n\t\t\t\tconst attributeArray2 = attribute2.array;\n\t\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\t\tconst length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset);\n\n\t\t\t\tfor (let i = 0, j = attributeOffset; i < length; i++, j++) {\n\t\t\t\t\tattributeArray1[j] = attributeArray2[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tnormalizeNormals() {\n\t\t\tconst normals = this.attributes.normal;\n\n\t\t\tfor (let i = 0, il = normals.count; i < il; i++) {\n\t\t\t\t_vector$8.fromBufferAttribute(normals, i);\n\n\t\t\t\t_vector$8.normalize();\n\n\t\t\t\tnormals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z);\n\t\t\t}\n\t\t}\n\n\t\ttoNonIndexed() {\n\t\t\tfunction convertBufferAttribute(attribute, indices) {\n\t\t\t\tconst array = attribute.array;\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst normalized = attribute.normalized;\n\t\t\t\tconst array2 = new array.constructor(indices.length * itemSize);\n\t\t\t\tlet index = 0,\n\t\t\t\t\t\tindex2 = 0;\n\n\t\t\t\tfor (let i = 0, l = indices.length; i < l; i++) {\n\t\t\t\t\tif (attribute.isInterleavedBufferAttribute) {\n\t\t\t\t\t\tindex = indices[i] * attribute.data.stride + attribute.offset;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex = indices[i] * itemSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let j = 0; j < itemSize; j++) {\n\t\t\t\t\t\tarray2[index2++] = array[index++];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new BufferAttribute(array2, itemSize, normalized);\n\t\t\t} //\n\n\n\t\t\tif (this.index === null) {\n\t\t\t\tconsole.warn('THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.');\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tconst geometry2 = new BufferGeometry();\n\t\t\tconst indices = this.index.array;\n\t\t\tconst attributes = this.attributes; // attributes\n\n\t\t\tfor (const name in attributes) {\n\t\t\t\tconst attribute = attributes[name];\n\t\t\t\tconst newAttribute = convertBufferAttribute(attribute, indices);\n\t\t\t\tgeometry2.setAttribute(name, newAttribute);\n\t\t\t} // morph attributes\n\n\n\t\t\tconst morphAttributes = this.morphAttributes;\n\n\t\t\tfor (const name in morphAttributes) {\n\t\t\t\tconst morphArray = [];\n\t\t\t\tconst morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\t\tfor (let i = 0, il = morphAttribute.length; i < il; i++) {\n\t\t\t\t\tconst attribute = morphAttribute[i];\n\t\t\t\t\tconst newAttribute = convertBufferAttribute(attribute, indices);\n\t\t\t\t\tmorphArray.push(newAttribute);\n\t\t\t\t}\n\n\t\t\t\tgeometry2.morphAttributes[name] = morphArray;\n\t\t\t}\n\n\t\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative; // groups\n\n\t\t\tconst groups = this.groups;\n\n\t\t\tfor (let i = 0, l = groups.length; i < l; i++) {\n\t\t\t\tconst group = groups[i];\n\t\t\t\tgeometry2.addGroup(group.start, group.count, group.materialIndex);\n\t\t\t}\n\n\t\t\treturn geometry2;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t\t}\n\t\t\t}; // standard BufferGeometry serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif (this.name !== '') data.name = this.name;\n\t\t\tif (Object.keys(this.userData).length > 0) data.userData = this.userData;\n\n\t\t\tif (this.parameters !== undefined) {\n\t\t\t\tconst parameters = this.parameters;\n\n\t\t\t\tfor (const key in parameters) {\n\t\t\t\t\tif (parameters[key] !== undefined) data[key] = parameters[key];\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\t\t\t} // for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\n\t\t\tdata.data = {\n\t\t\t\tattributes: {}\n\t\t\t};\n\t\t\tconst index = this.index;\n\n\t\t\tif (index !== null) {\n\t\t\t\tdata.data.index = {\n\t\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\t\tarray: Array.prototype.slice.call(index.array)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst attributes = this.attributes;\n\n\t\t\tfor (const key in attributes) {\n\t\t\t\tconst attribute = attributes[key];\n\t\t\t\tdata.data.attributes[key] = attribute.toJSON(data.data);\n\t\t\t}\n\n\t\t\tconst morphAttributes = {};\n\t\t\tlet hasMorphAttributes = false;\n\n\t\t\tfor (const key in this.morphAttributes) {\n\t\t\t\tconst attributeArray = this.morphAttributes[key];\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor (let i = 0, il = attributeArray.length; i < il; i++) {\n\t\t\t\t\tconst attribute = attributeArray[i];\n\t\t\t\t\tarray.push(attribute.toJSON(data.data));\n\t\t\t\t}\n\n\t\t\t\tif (array.length > 0) {\n\t\t\t\t\tmorphAttributes[key] = array;\n\t\t\t\t\thasMorphAttributes = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hasMorphAttributes) {\n\t\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\t\t\t}\n\n\t\t\tconst groups = this.groups;\n\n\t\t\tif (groups.length > 0) {\n\t\t\t\tdata.data.groups = JSON.parse(JSON.stringify(groups));\n\t\t\t}\n\n\t\t\tconst boundingSphere = this.boundingSphere;\n\n\t\t\tif (boundingSphere !== null) {\n\t\t\t\tdata.data.boundingSphere = {\n\t\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\t\tradius: boundingSphere.radius\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\tclone() {\n\t\t\t/*\n\t\t\t // Handle primitives\n\t\t\t\t const parameters = this.parameters;\n\t\t\t\t if ( parameters !== undefined ) {\n\t\t\t\t const values = [];\n\t\t\t\t for ( const key in parameters ) {\n\t\t\t\t values.push( parameters[ key ] );\n\t\t\t\t }\n\t\t\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t\t this.constructor.apply( geometry, values );\n\t\t\t return geometry;\n\t\t\t\t }\n\t\t\t\t return new this.constructor().copy( this );\n\t\t\t */\n\t\t\treturn new BufferGeometry().copy(this);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\t// reset\n\t\t\tthis.index = null;\n\t\t\tthis.attributes = {};\n\t\t\tthis.morphAttributes = {};\n\t\t\tthis.groups = [];\n\t\t\tthis.boundingBox = null;\n\t\t\tthis.boundingSphere = null; // used for storing cloned, shared data\n\n\t\t\tconst data = {}; // name\n\n\t\t\tthis.name = source.name; // index\n\n\t\t\tconst index = source.index;\n\n\t\t\tif (index !== null) {\n\t\t\t\tthis.setIndex(index.clone(data));\n\t\t\t} // attributes\n\n\n\t\t\tconst attributes = source.attributes;\n\n\t\t\tfor (const name in attributes) {\n\t\t\t\tconst attribute = attributes[name];\n\t\t\t\tthis.setAttribute(name, attribute.clone(data));\n\t\t\t} // morph attributes\n\n\n\t\t\tconst morphAttributes = source.morphAttributes;\n\n\t\t\tfor (const name in morphAttributes) {\n\t\t\t\tconst array = [];\n\t\t\t\tconst morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\t\tfor (let i = 0, l = morphAttribute.length; i < l; i++) {\n\t\t\t\t\tarray.push(morphAttribute[i].clone(data));\n\t\t\t\t}\n\n\t\t\t\tthis.morphAttributes[name] = array;\n\t\t\t}\n\n\t\t\tthis.morphTargetsRelative = source.morphTargetsRelative; // groups\n\n\t\t\tconst groups = source.groups;\n\n\t\t\tfor (let i = 0, l = groups.length; i < l; i++) {\n\t\t\t\tconst group = groups[i];\n\t\t\t\tthis.addGroup(group.start, group.count, group.materialIndex);\n\t\t\t} // bounding box\n\n\n\t\t\tconst boundingBox = source.boundingBox;\n\n\t\t\tif (boundingBox !== null) {\n\t\t\t\tthis.boundingBox = boundingBox.clone();\n\t\t\t} // bounding sphere\n\n\n\t\t\tconst boundingSphere = source.boundingSphere;\n\n\t\t\tif (boundingSphere !== null) {\n\t\t\t\tthis.boundingSphere = boundingSphere.clone();\n\t\t\t} // draw range\n\n\n\t\t\tthis.drawRange.start = source.drawRange.start;\n\t\t\tthis.drawRange.count = source.drawRange.count; // user data\n\n\t\t\tthis.userData = source.userData;\n\t\t\treturn this;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'dispose'\n\t\t\t});\n\t\t}\n\n\t}\n\n\tBufferGeometry.prototype.isBufferGeometry = true;\n\n\tconst _inverseMatrix$2 = /*@__PURE__*/new Matrix4();\n\n\tconst _ray$2 = /*@__PURE__*/new Ray();\n\n\tconst _sphere$3 = /*@__PURE__*/new Sphere();\n\n\tconst _vA$1 = /*@__PURE__*/new Vector3();\n\n\tconst _vB$1 = /*@__PURE__*/new Vector3();\n\n\tconst _vC$1 = /*@__PURE__*/new Vector3();\n\n\tconst _tempA = /*@__PURE__*/new Vector3();\n\n\tconst _tempB = /*@__PURE__*/new Vector3();\n\n\tconst _tempC = /*@__PURE__*/new Vector3();\n\n\tconst _morphA = /*@__PURE__*/new Vector3();\n\n\tconst _morphB = /*@__PURE__*/new Vector3();\n\n\tconst _morphC = /*@__PURE__*/new Vector3();\n\n\tconst _uvA$1 = /*@__PURE__*/new Vector2();\n\n\tconst _uvB$1 = /*@__PURE__*/new Vector2();\n\n\tconst _uvC$1 = /*@__PURE__*/new Vector2();\n\n\tconst _intersectionPoint = /*@__PURE__*/new Vector3();\n\n\tconst _intersectionPointWorld = /*@__PURE__*/new Vector3();\n\n\tclass Mesh extends Object3D {\n\t\tconstructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Mesh';\n\t\t\tthis.geometry = geometry;\n\t\t\tthis.material = material;\n\t\t\tthis.updateMorphTargets();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\n\t\t\tif (source.morphTargetInfluences !== undefined) {\n\t\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\t\t\t}\n\n\t\t\tif (source.morphTargetDictionary !== undefined) {\n\t\t\t\tthis.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n\t\t\t}\n\n\t\t\tthis.material = source.material;\n\t\t\tthis.geometry = source.geometry;\n\t\t\treturn this;\n\t\t}\n\n\t\tupdateMorphTargets() {\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\t\tconst keys = Object.keys(morphAttributes);\n\n\t\t\t\tif (keys.length > 0) {\n\t\t\t\t\tconst morphAttribute = morphAttributes[keys[0]];\n\n\t\t\t\t\tif (morphAttribute !== undefined) {\n\t\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\t\tfor (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n\t\t\t\t\t\t\tconst name = morphAttribute[m].name || String(m);\n\t\t\t\t\t\t\tthis.morphTargetInfluences.push(0);\n\t\t\t\t\t\t\tthis.morphTargetDictionary[name] = m;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\t\tif (morphTargets !== undefined && morphTargets.length > 0) {\n\t\t\t\t\tconsole.error('THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tconst geometry = this.geometry;\n\t\t\tconst material = this.material;\n\t\t\tconst matrixWorld = this.matrixWorld;\n\t\t\tif (material === undefined) return; // Checking boundingSphere distance to ray\n\n\t\t\tif (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy(geometry.boundingSphere);\n\n\t\t\t_sphere$3.applyMatrix4(matrixWorld);\n\n\t\t\tif (raycaster.ray.intersectsSphere(_sphere$3) === false) return; //\n\n\t\t\t_inverseMatrix$2.copy(matrixWorld).invert();\n\n\t\t\t_ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2); // Check boundingBox before continuing\n\n\n\t\t\tif (geometry.boundingBox !== null) {\n\t\t\t\tif (_ray$2.intersectsBox(geometry.boundingBox) === false) return;\n\t\t\t}\n\n\t\t\tlet intersection;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst index = geometry.index;\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\t\tconst uv = geometry.attributes.uv;\n\t\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\t\tconst groups = geometry.groups;\n\t\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\t\tif (index !== null) {\n\t\t\t\t\t// indexed buffer geometry\n\t\t\t\t\tif (Array.isArray(material)) {\n\t\t\t\t\t\tfor (let i = 0, il = groups.length; i < il; i++) {\n\t\t\t\t\t\t\tconst group = groups[i];\n\t\t\t\t\t\t\tconst groupMaterial = material[group.materialIndex];\n\t\t\t\t\t\t\tconst start = Math.max(group.start, drawRange.start);\n\t\t\t\t\t\t\tconst end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\t\t\tfor (let j = start, jl = end; j < jl; j += 3) {\n\t\t\t\t\t\t\t\tconst a = index.getX(j);\n\t\t\t\t\t\t\t\tconst b = index.getX(j + 1);\n\t\t\t\t\t\t\t\tconst c = index.getX(j + 2);\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n\n\t\t\t\t\t\t\t\tif (intersection) {\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor(j / 3); // triangle number in indexed buffer semantics\n\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push(intersection);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\t\tconst end = Math.min(index.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\t\tfor (let i = start, il = end; i < il; i += 3) {\n\t\t\t\t\t\t\tconst a = index.getX(i);\n\t\t\t\t\t\t\tconst b = index.getX(i + 1);\n\t\t\t\t\t\t\tconst c = index.getX(i + 2);\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n\n\t\t\t\t\t\t\tif (intersection) {\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor(i / 3); // triangle number in indexed buffer semantics\n\n\t\t\t\t\t\t\t\tintersects.push(intersection);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (position !== undefined) {\n\t\t\t\t\t// non-indexed buffer geometry\n\t\t\t\t\tif (Array.isArray(material)) {\n\t\t\t\t\t\tfor (let i = 0, il = groups.length; i < il; i++) {\n\t\t\t\t\t\t\tconst group = groups[i];\n\t\t\t\t\t\t\tconst groupMaterial = material[group.materialIndex];\n\t\t\t\t\t\t\tconst start = Math.max(group.start, drawRange.start);\n\t\t\t\t\t\t\tconst end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\t\t\tfor (let j = start, jl = end; j < jl; j += 3) {\n\t\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\t\tconst c = j + 2;\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n\n\t\t\t\t\t\t\t\tif (intersection) {\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor(j / 3); // triangle number in non-indexed buffer semantics\n\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push(intersection);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\t\tconst end = Math.min(position.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\t\tfor (let i = start, il = end; i < il; i += 3) {\n\t\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\t\tconst c = i + 2;\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n\n\t\t\t\t\t\t\tif (intersection) {\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor(i / 3); // triangle number in non-indexed buffer semantics\n\n\t\t\t\t\t\t\t\tintersects.push(intersection);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (geometry.isGeometry) {\n\t\t\t\tconsole.error('THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t}\n\t\t}\n\n\t}\n\n\tMesh.prototype.isMesh = true;\n\n\tfunction checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) {\n\t\tlet intersect;\n\n\t\tif (material.side === BackSide) {\n\t\t\tintersect = ray.intersectTriangle(pC, pB, pA, true, point);\n\t\t} else {\n\t\t\tintersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n\t\t}\n\n\t\tif (intersect === null) return null;\n\n\t\t_intersectionPointWorld.copy(point);\n\n\t\t_intersectionPointWorld.applyMatrix4(object.matrixWorld);\n\n\t\tconst distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n\t\tif (distance < raycaster.near || distance > raycaster.far) return null;\n\t\treturn {\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectionPointWorld.clone(),\n\t\t\tobject: object\n\t\t};\n\t}\n\n\tfunction checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) {\n\t\t_vA$1.fromBufferAttribute(position, a);\n\n\t\t_vB$1.fromBufferAttribute(position, b);\n\n\t\t_vC$1.fromBufferAttribute(position, c);\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif (morphPosition && morphInfluences) {\n\t\t\t_morphA.set(0, 0, 0);\n\n\t\t\t_morphB.set(0, 0, 0);\n\n\t\t\t_morphC.set(0, 0, 0);\n\n\t\t\tfor (let i = 0, il = morphPosition.length; i < il; i++) {\n\t\t\t\tconst influence = morphInfluences[i];\n\t\t\t\tconst morphAttribute = morphPosition[i];\n\t\t\t\tif (influence === 0) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute(morphAttribute, a);\n\n\t\t\t\t_tempB.fromBufferAttribute(morphAttribute, b);\n\n\t\t\t\t_tempC.fromBufferAttribute(morphAttribute, c);\n\n\t\t\t\tif (morphTargetsRelative) {\n\t\t\t\t\t_morphA.addScaledVector(_tempA, influence);\n\n\t\t\t\t\t_morphB.addScaledVector(_tempB, influence);\n\n\t\t\t\t\t_morphC.addScaledVector(_tempC, influence);\n\t\t\t\t} else {\n\t\t\t\t\t_morphA.addScaledVector(_tempA.sub(_vA$1), influence);\n\n\t\t\t\t\t_morphB.addScaledVector(_tempB.sub(_vB$1), influence);\n\n\t\t\t\t\t_morphC.addScaledVector(_tempC.sub(_vC$1), influence);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_vA$1.add(_morphA);\n\n\t\t\t_vB$1.add(_morphB);\n\n\t\t\t_vC$1.add(_morphC);\n\t\t}\n\n\t\tif (object.isSkinnedMesh) {\n\t\t\tobject.boneTransform(a, _vA$1);\n\t\t\tobject.boneTransform(b, _vB$1);\n\t\t\tobject.boneTransform(c, _vC$1);\n\t\t}\n\n\t\tconst intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n\n\t\tif (intersection) {\n\t\t\tif (uv) {\n\t\t\t\t_uvA$1.fromBufferAttribute(uv, a);\n\n\t\t\t\t_uvB$1.fromBufferAttribute(uv, b);\n\n\t\t\t\t_uvC$1.fromBufferAttribute(uv, c);\n\n\t\t\t\tintersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n\t\t\t}\n\n\t\t\tif (uv2) {\n\t\t\t\t_uvA$1.fromBufferAttribute(uv2, a);\n\n\t\t\t\t_uvB$1.fromBufferAttribute(uv2, b);\n\n\t\t\t\t_uvC$1.fromBufferAttribute(uv2, c);\n\n\t\t\t\tintersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n\t\t\t}\n\n\t\t\tconst face = {\n\t\t\t\ta: a,\n\t\t\t\tb: b,\n\t\t\t\tc: c,\n\t\t\t\tnormal: new Vector3(),\n\t\t\t\tmaterialIndex: 0\n\t\t\t};\n\t\t\tTriangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n\t\t\tintersection.face = face;\n\t\t}\n\n\t\treturn intersection;\n\t}\n\n\tclass BoxGeometry extends BufferGeometry {\n\t\tconstructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n\t\t\tsuper();\n\t\t\tthis.type = 'BoxGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tdepth: depth,\n\t\t\t\twidthSegments: widthSegments,\n\t\t\t\theightSegments: heightSegments,\n\t\t\t\tdepthSegments: depthSegments\n\t\t\t};\n\t\t\tconst scope = this; // segments\n\n\t\t\twidthSegments = Math.floor(widthSegments);\n\t\t\theightSegments = Math.floor(heightSegments);\n\t\t\tdepthSegments = Math.floor(depthSegments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tlet numberOfVertices = 0;\n\t\t\tlet groupStart = 0; // build each side of the box geometry\n\n\t\t\tbuildPlane('z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0); // px\n\n\t\t\tbuildPlane('z', 'y', 'x', 1, -1, depth, height, -width, depthSegments, heightSegments, 1); // nx\n\n\t\t\tbuildPlane('x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2); // py\n\n\t\t\tbuildPlane('x', 'z', 'y', 1, -1, width, depth, -height, widthSegments, depthSegments, 3); // ny\n\n\t\t\tbuildPlane('x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4); // pz\n\n\t\t\tbuildPlane('x', 'y', 'z', -1, -1, width, height, -depth, widthSegments, heightSegments, 5); // nz\n\t\t\t// build geometry\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n\t\t\tfunction buildPlane(u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex) {\n\t\t\t\tconst segmentWidth = width / gridX;\n\t\t\t\tconst segmentHeight = height / gridY;\n\t\t\t\tconst widthHalf = width / 2;\n\t\t\t\tconst heightHalf = height / 2;\n\t\t\t\tconst depthHalf = depth / 2;\n\t\t\t\tconst gridX1 = gridX + 1;\n\t\t\t\tconst gridY1 = gridY + 1;\n\t\t\t\tlet vertexCounter = 0;\n\t\t\t\tlet groupCount = 0;\n\t\t\t\tconst vector = new Vector3(); // generate vertices, normals and uvs\n\n\t\t\t\tfor (let iy = 0; iy < gridY1; iy++) {\n\t\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\t\tfor (let ix = 0; ix < gridX1; ix++) {\n\t\t\t\t\t\tconst x = ix * segmentWidth - widthHalf; // set values to correct vector component\n\n\t\t\t\t\t\tvector[u] = x * udir;\n\t\t\t\t\t\tvector[v] = y * vdir;\n\t\t\t\t\t\tvector[w] = depthHalf; // now apply vector to vertex buffer\n\n\t\t\t\t\t\tvertices.push(vector.x, vector.y, vector.z); // set values to correct vector component\n\n\t\t\t\t\t\tvector[u] = 0;\n\t\t\t\t\t\tvector[v] = 0;\n\t\t\t\t\t\tvector[w] = depth > 0 ? 1 : -1; // now apply vector to normal buffer\n\n\t\t\t\t\t\tnormals.push(vector.x, vector.y, vector.z); // uvs\n\n\t\t\t\t\t\tuvs.push(ix / gridX);\n\t\t\t\t\t\tuvs.push(1 - iy / gridY); // counters\n\n\t\t\t\t\t\tvertexCounter += 1;\n\t\t\t\t\t}\n\t\t\t\t} // indices\n\t\t\t\t// 1. you need three indices to draw a single face\n\t\t\t\t// 2. a single segment consists of two faces\n\t\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\n\t\t\t\tfor (let iy = 0; iy < gridY; iy++) {\n\t\t\t\t\tfor (let ix = 0; ix < gridX; ix++) {\n\t\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * (iy + 1);\n\t\t\t\t\t\tconst c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n\t\t\t\t\t\tconst d = numberOfVertices + (ix + 1) + gridX1 * iy; // faces\n\n\t\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\t\tindices.push(b, c, d); // increase counter\n\n\t\t\t\t\t\tgroupCount += 6;\n\t\t\t\t\t}\n\t\t\t\t} // add a group to the geometry. this will ensure multi material support\n\n\n\t\t\t\tscope.addGroup(groupStart, groupCount, materialIndex); // calculate new start value for groups\n\n\t\t\t\tgroupStart += groupCount; // update total number of vertices\n\n\t\t\t\tnumberOfVertices += vertexCounter;\n\t\t\t}\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n\t\t}\n\n\t}\n\n\t/**\n\t * Uniform Utilities\n\t */\n\tfunction cloneUniforms(src) {\n\t\tconst dst = {};\n\n\t\tfor (const u in src) {\n\t\t\tdst[u] = {};\n\n\t\t\tfor (const p in src[u]) {\n\t\t\t\tconst property = src[u][p];\n\n\t\t\t\tif (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n\t\t\t\t\tdst[u][p] = property.clone();\n\t\t\t\t} else if (Array.isArray(property)) {\n\t\t\t\t\tdst[u][p] = property.slice();\n\t\t\t\t} else {\n\t\t\t\t\tdst[u][p] = property;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\tfunction mergeUniforms(uniforms) {\n\t\tconst merged = {};\n\n\t\tfor (let u = 0; u < uniforms.length; u++) {\n\t\t\tconst tmp = cloneUniforms(uniforms[u]);\n\n\t\t\tfor (const p in tmp) {\n\t\t\t\tmerged[p] = tmp[p];\n\t\t\t}\n\t\t}\n\n\t\treturn merged;\n\t} // Legacy\n\n\tconst UniformsUtils = {\n\t\tclone: cloneUniforms,\n\t\tmerge: mergeUniforms\n\t};\n\n\tvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\n\tvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n\t/**\n\t * parameters = {\n\t *\tdefines: { \"label\" : \"value\" },\n\t *\tuniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n\t *\n\t *\tfragmentShader: ,\n\t *\tvertexShader: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t *\n\t *\tlights: \n\t * }\n\t */\n\n\tclass ShaderMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ShaderMaterial';\n\t\t\tthis.defines = {};\n\t\t\tthis.uniforms = {};\n\t\t\tthis.vertexShader = default_vertex;\n\t\t\tthis.fragmentShader = default_fragment;\n\t\t\tthis.linewidth = 1;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.fog = false; // set to use scene fog\n\n\t\t\tthis.lights = false; // set to use scene lights\n\n\t\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\t\tthis.extensions = {\n\t\t\t\tderivatives: false,\n\t\t\t\t// set to use derivatives\n\t\t\t\tfragDepth: false,\n\t\t\t\t// set to use fragment depth values\n\t\t\t\tdrawBuffers: false,\n\t\t\t\t// set to use draw buffers\n\t\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\n\t\t\t}; // When rendered geometry doesn't include these attributes but the material does,\n\t\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\n\t\t\tthis.defaultAttributeValues = {\n\t\t\t\t'color': [1, 1, 1],\n\t\t\t\t'uv': [0, 0],\n\t\t\t\t'uv2': [0, 0]\n\t\t\t};\n\t\t\tthis.index0AttributeName = undefined;\n\t\t\tthis.uniformsNeedUpdate = false;\n\t\t\tthis.glslVersion = null;\n\n\t\t\tif (parameters !== undefined) {\n\t\t\t\tif (parameters.attributes !== undefined) {\n\t\t\t\t\tconsole.error('THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.');\n\t\t\t\t}\n\n\t\t\t\tthis.setValues(parameters);\n\t\t\t}\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.fragmentShader = source.fragmentShader;\n\t\t\tthis.vertexShader = source.vertexShader;\n\t\t\tthis.uniforms = cloneUniforms(source.uniforms);\n\t\t\tthis.defines = Object.assign({}, source.defines);\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.lights = source.lights;\n\t\t\tthis.clipping = source.clipping;\n\t\t\tthis.extensions = Object.assign({}, source.extensions);\n\t\t\tthis.glslVersion = source.glslVersion;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.glslVersion = this.glslVersion;\n\t\t\tdata.uniforms = {};\n\n\t\t\tfor (const name in this.uniforms) {\n\t\t\t\tconst uniform = this.uniforms[name];\n\t\t\t\tconst value = uniform.value;\n\n\t\t\t\tif (value && value.isTexture) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 't',\n\t\t\t\t\t\tvalue: value.toJSON(meta).uuid\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isColor) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'c',\n\t\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isVector2) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'v2',\n\t\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isVector3) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'v3',\n\t\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isVector4) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'v4',\n\t\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isMatrix3) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'm3',\n\t\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t\t};\n\t\t\t\t} else if (value && value.isMatrix4) {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\ttype: 'm4',\n\t\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tdata.uniforms[name] = {\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t}; // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Object.keys(this.defines).length > 0) data.defines = this.defines;\n\t\t\tdata.vertexShader = this.vertexShader;\n\t\t\tdata.fragmentShader = this.fragmentShader;\n\t\t\tconst extensions = {};\n\n\t\t\tfor (const key in this.extensions) {\n\t\t\t\tif (this.extensions[key] === true) extensions[key] = true;\n\t\t\t}\n\n\t\t\tif (Object.keys(extensions).length > 0) data.extensions = extensions;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tShaderMaterial.prototype.isShaderMaterial = true;\n\n\tclass Camera extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'Camera';\n\t\t\tthis.matrixWorldInverse = new Matrix4();\n\t\t\tthis.projectionMatrix = new Matrix4();\n\t\t\tthis.projectionMatrixInverse = new Matrix4();\n\t\t}\n\n\t\tcopy(source, recursive) {\n\t\t\tsuper.copy(source, recursive);\n\t\t\tthis.matrixWorldInverse.copy(source.matrixWorldInverse);\n\t\t\tthis.projectionMatrix.copy(source.projectionMatrix);\n\t\t\tthis.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetWorldDirection(target) {\n\t\t\tthis.updateWorldMatrix(true, false);\n\t\t\tconst e = this.matrixWorld.elements;\n\t\t\treturn target.set(-e[8], -e[9], -e[10]).normalize();\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t\tthis.matrixWorldInverse.copy(this.matrixWorld).invert();\n\t\t}\n\n\t\tupdateWorldMatrix(updateParents, updateChildren) {\n\t\t\tsuper.updateWorldMatrix(updateParents, updateChildren);\n\t\t\tthis.matrixWorldInverse.copy(this.matrixWorld).invert();\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tCamera.prototype.isCamera = true;\n\n\tclass PerspectiveCamera extends Camera {\n\t\tconstructor(fov = 50, aspect = 1, near = 0.1, far = 2000) {\n\t\t\tsuper();\n\t\t\tthis.type = 'PerspectiveCamera';\n\t\t\tthis.fov = fov;\n\t\t\tthis.zoom = 1;\n\t\t\tthis.near = near;\n\t\t\tthis.far = far;\n\t\t\tthis.focus = 10;\n\t\t\tthis.aspect = aspect;\n\t\t\tthis.view = null;\n\t\t\tthis.filmGauge = 35; // width of the film (default in millimeters)\n\n\t\t\tthis.filmOffset = 0; // horizontal film offset (same unit as gauge)\n\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tcopy(source, recursive) {\n\t\t\tsuper.copy(source, recursive);\n\t\t\tthis.fov = source.fov;\n\t\t\tthis.zoom = source.zoom;\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\t\t\tthis.focus = source.focus;\n\t\t\tthis.aspect = source.aspect;\n\t\t\tthis.view = source.view === null ? null : Object.assign({}, source.view);\n\t\t\tthis.filmGauge = source.filmGauge;\n\t\t\tthis.filmOffset = source.filmOffset;\n\t\t\treturn this;\n\t\t}\n\t\t/**\n\t\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t\t *\n\t\t * The default film gauge is 35, so that the focal length can be specified for\n\t\t * a 35mm (full frame) camera.\n\t\t *\n\t\t * Values for focal length and film gauge must have the same unit.\n\t\t */\n\n\n\t\tsetFocalLength(focalLength) {\n\t\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\t\t\tthis.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\t\t/**\n\t\t * Calculates the focal length from the current .fov and .filmGauge.\n\t\t */\n\n\n\t\tgetFocalLength() {\n\t\t\tconst vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n\t\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\t\t}\n\n\t\tgetEffectiveFOV() {\n\t\t\treturn RAD2DEG * 2 * Math.atan(Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom);\n\t\t}\n\n\t\tgetFilmWidth() {\n\t\t\t// film not completely covered in portrait format (aspect < 1)\n\t\t\treturn this.filmGauge * Math.min(this.aspect, 1);\n\t\t}\n\n\t\tgetFilmHeight() {\n\t\t\t// film not completely covered in landscape format (aspect > 1)\n\t\t\treturn this.filmGauge / Math.max(this.aspect, 1);\n\t\t}\n\t\t/**\n\t\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t\t * multi-monitor/multi-machine setups.\n\t\t *\n\t\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t\t * the monitors are in grid like this\n\t\t *\n\t\t *\t +---+---+---+\n\t\t *\t | A | B | C |\n\t\t *\t +---+---+---+\n\t\t *\t | D | E | F |\n\t\t *\t +---+---+---+\n\t\t *\n\t\t * then for each monitor you would call it like this\n\t\t *\n\t\t *\t const w = 1920;\n\t\t *\t const h = 1080;\n\t\t *\t const fullWidth = w * 3;\n\t\t *\t const fullHeight = h * 2;\n\t\t *\n\t\t *\t --A--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t\t *\t --B--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t\t *\t --C--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t\t *\t --D--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t\t *\t --E--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t\t *\t --F--\n\t\t *\t camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t\t *\n\t\t *\t Note there is no reason monitors have to be the same size or in a grid.\n\t\t */\n\n\n\t\tsetViewOffset(fullWidth, fullHeight, x, y, width, height) {\n\t\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\t\tif (this.view === null) {\n\t\t\t\tthis.view = {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tfullWidth: 1,\n\t\t\t\t\tfullHeight: 1,\n\t\t\t\t\toffsetX: 0,\n\t\t\t\t\toffsetY: 0,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.view.enabled = true;\n\t\t\tthis.view.fullWidth = fullWidth;\n\t\t\tthis.view.fullHeight = fullHeight;\n\t\t\tthis.view.offsetX = x;\n\t\t\tthis.view.offsetY = y;\n\t\t\tthis.view.width = width;\n\t\t\tthis.view.height = height;\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tclearViewOffset() {\n\t\t\tif (this.view !== null) {\n\t\t\t\tthis.view.enabled = false;\n\t\t\t}\n\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tupdateProjectionMatrix() {\n\t\t\tconst near = this.near;\n\t\t\tlet top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n\t\t\tlet height = 2 * top;\n\t\t\tlet width = this.aspect * height;\n\t\t\tlet left = -0.5 * width;\n\t\t\tconst view = this.view;\n\n\t\t\tif (this.view !== null && this.view.enabled) {\n\t\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\t\t\t\tfullHeight = view.fullHeight;\n\t\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\t\twidth *= view.width / fullWidth;\n\t\t\t\theight *= view.height / fullHeight;\n\t\t\t}\n\n\t\t\tconst skew = this.filmOffset;\n\t\t\tif (skew !== 0) left += near * skew / this.getFilmWidth();\n\t\t\tthis.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n\t\t\tthis.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.object.fov = this.fov;\n\t\t\tdata.object.zoom = this.zoom;\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\t\t\tdata.object.focus = this.focus;\n\t\t\tdata.object.aspect = this.aspect;\n\t\t\tif (this.view !== null) data.object.view = Object.assign({}, this.view);\n\t\t\tdata.object.filmGauge = this.filmGauge;\n\t\t\tdata.object.filmOffset = this.filmOffset;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\n\tconst fov = 90,\n\t\t\t\taspect = 1;\n\n\tclass CubeCamera extends Object3D {\n\t\tconstructor(near, far, renderTarget) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CubeCamera';\n\n\t\t\tif (renderTarget.isWebGLCubeRenderTarget !== true) {\n\t\t\t\tconsole.error('THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.renderTarget = renderTarget;\n\t\t\tconst cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraPX.layers = this.layers;\n\t\t\tcameraPX.up.set(0, -1, 0);\n\t\t\tcameraPX.lookAt(new Vector3(1, 0, 0));\n\t\t\tthis.add(cameraPX);\n\t\t\tconst cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraNX.layers = this.layers;\n\t\t\tcameraNX.up.set(0, -1, 0);\n\t\t\tcameraNX.lookAt(new Vector3(-1, 0, 0));\n\t\t\tthis.add(cameraNX);\n\t\t\tconst cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraPY.layers = this.layers;\n\t\t\tcameraPY.up.set(0, 0, 1);\n\t\t\tcameraPY.lookAt(new Vector3(0, 1, 0));\n\t\t\tthis.add(cameraPY);\n\t\t\tconst cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraNY.layers = this.layers;\n\t\t\tcameraNY.up.set(0, 0, -1);\n\t\t\tcameraNY.lookAt(new Vector3(0, -1, 0));\n\t\t\tthis.add(cameraNY);\n\t\t\tconst cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraPZ.layers = this.layers;\n\t\t\tcameraPZ.up.set(0, -1, 0);\n\t\t\tcameraPZ.lookAt(new Vector3(0, 0, 1));\n\t\t\tthis.add(cameraPZ);\n\t\t\tconst cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tcameraNZ.layers = this.layers;\n\t\t\tcameraNZ.up.set(0, -1, 0);\n\t\t\tcameraNZ.lookAt(new Vector3(0, 0, -1));\n\t\t\tthis.add(cameraNZ);\n\t\t}\n\n\t\tupdate(renderer, scene) {\n\t\t\tif (this.parent === null) this.updateMatrixWorld();\n\t\t\tconst renderTarget = this.renderTarget;\n\t\t\tconst [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\trenderer.xr.enabled = false;\n\t\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\t\t\trenderTarget.texture.generateMipmaps = false;\n\t\t\trenderer.setRenderTarget(renderTarget, 0);\n\t\t\trenderer.render(scene, cameraPX);\n\t\t\trenderer.setRenderTarget(renderTarget, 1);\n\t\t\trenderer.render(scene, cameraNX);\n\t\t\trenderer.setRenderTarget(renderTarget, 2);\n\t\t\trenderer.render(scene, cameraPY);\n\t\t\trenderer.setRenderTarget(renderTarget, 3);\n\t\t\trenderer.render(scene, cameraNY);\n\t\t\trenderer.setRenderTarget(renderTarget, 4);\n\t\t\trenderer.render(scene, cameraPZ);\n\t\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\t\t\trenderer.setRenderTarget(renderTarget, 5);\n\t\t\trenderer.render(scene, cameraNZ);\n\t\t\trenderer.setRenderTarget(currentRenderTarget);\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t}\n\n\t}\n\n\tclass CubeTexture extends Texture {\n\t\tconstructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n\t\t\timages = images !== undefined ? images : [];\n\t\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\t\t\tformat = format !== undefined ? format : RGBFormat;\n\t\t\tsuper(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n\t\t\tthis.flipY = false;\n\t\t}\n\n\t\tget images() {\n\t\t\treturn this.image;\n\t\t}\n\n\t\tset images(value) {\n\t\t\tthis.image = value;\n\t\t}\n\n\t}\n\n\tCubeTexture.prototype.isCubeTexture = true;\n\n\tclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\t\tconstructor(size, options, dummy) {\n\t\t\tif (Number.isInteger(options)) {\n\t\t\t\tconsole.warn('THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )');\n\t\t\t\toptions = dummy;\n\t\t\t}\n\n\t\t\tsuper(size, size, options);\n\t\t\toptions = options || {}; // By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\t\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\t\tthis.texture = new CubeTexture(undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n\t\t\tthis.texture.isRenderTargetTexture = true;\n\t\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\t\t\tthis.texture._needsFlipEnvMap = false;\n\t\t}\n\n\t\tfromEquirectangularTexture(renderer, texture) {\n\t\t\tthis.texture.type = texture.type;\n\t\t\tthis.texture.format = RGBAFormat; // see #18859\n\n\t\t\tthis.texture.encoding = texture.encoding;\n\t\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\t\tthis.texture.minFilter = texture.minFilter;\n\t\t\tthis.texture.magFilter = texture.magFilter;\n\t\t\tconst shader = {\n\t\t\t\tuniforms: {\n\t\t\t\t\ttEquirect: {\n\t\t\t\t\t\tvalue: null\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tvertexShader:\n\t\t\t\t/* glsl */\n\t\t\t\t`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\t\t\t\tfragmentShader:\n\t\t\t\t/* glsl */\n\t\t\t\t`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t\t};\n\t\t\tconst geometry = new BoxGeometry(5, 5, 5);\n\t\t\tconst material = new ShaderMaterial({\n\t\t\t\tname: 'CubemapFromEquirect',\n\t\t\t\tuniforms: cloneUniforms(shader.uniforms),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\t\tside: BackSide,\n\t\t\t\tblending: NoBlending\n\t\t\t});\n\t\t\tmaterial.uniforms.tEquirect.value = texture;\n\t\t\tconst mesh = new Mesh(geometry, material);\n\t\t\tconst currentMinFilter = texture.minFilter; // Avoid blurred poles\n\n\t\t\tif (texture.minFilter === LinearMipmapLinearFilter) texture.minFilter = LinearFilter;\n\t\t\tconst camera = new CubeCamera(1, 10, this);\n\t\t\tcamera.update(renderer, mesh);\n\t\t\ttexture.minFilter = currentMinFilter;\n\t\t\tmesh.geometry.dispose();\n\t\t\tmesh.material.dispose();\n\t\t\treturn this;\n\t\t}\n\n\t\tclear(renderer, color, depth, stencil) {\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\trenderer.setRenderTarget(this, i);\n\t\t\t\trenderer.clear(color, depth, stencil);\n\t\t\t}\n\n\t\t\trenderer.setRenderTarget(currentRenderTarget);\n\t\t}\n\n\t}\n\n\tWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\n\tconst _vector1 = /*@__PURE__*/new Vector3();\n\n\tconst _vector2 = /*@__PURE__*/new Vector3();\n\n\tconst _normalMatrix = /*@__PURE__*/new Matrix3();\n\n\tclass Plane {\n\t\tconstructor(normal = new Vector3(1, 0, 0), constant = 0) {\n\t\t\t// normal is assumed to be normalized\n\t\t\tthis.normal = normal;\n\t\t\tthis.constant = constant;\n\t\t}\n\n\t\tset(normal, constant) {\n\t\t\tthis.normal.copy(normal);\n\t\t\tthis.constant = constant;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetComponents(x, y, z, w) {\n\t\t\tthis.normal.set(x, y, z);\n\t\t\tthis.constant = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromNormalAndCoplanarPoint(normal, point) {\n\t\t\tthis.normal.copy(normal);\n\t\t\tthis.constant = -point.dot(this.normal);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromCoplanarPoints(a, b, c) {\n\t\t\tconst normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize(); // Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\n\t\t\tthis.setFromNormalAndCoplanarPoint(normal, a);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(plane) {\n\t\t\tthis.normal.copy(plane.normal);\n\t\t\tthis.constant = plane.constant;\n\t\t\treturn this;\n\t\t}\n\n\t\tnormalize() {\n\t\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\t\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\t\tthis.normal.multiplyScalar(inverseNormalLength);\n\t\t\tthis.constant *= inverseNormalLength;\n\t\t\treturn this;\n\t\t}\n\n\t\tnegate() {\n\t\t\tthis.constant *= -1;\n\t\t\tthis.normal.negate();\n\t\t\treturn this;\n\t\t}\n\n\t\tdistanceToPoint(point) {\n\t\t\treturn this.normal.dot(point) + this.constant;\n\t\t}\n\n\t\tdistanceToSphere(sphere) {\n\t\t\treturn this.distanceToPoint(sphere.center) - sphere.radius;\n\t\t}\n\n\t\tprojectPoint(point, target) {\n\t\t\treturn target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n\t\t}\n\n\t\tintersectLine(line, target) {\n\t\t\tconst direction = line.delta(_vector1);\n\t\t\tconst denominator = this.normal.dot(direction);\n\n\t\t\tif (denominator === 0) {\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif (this.distanceToPoint(line.start) === 0) {\n\t\t\t\t\treturn target.copy(line.start);\n\t\t\t\t} // Unsure if this is the correct method to handle this case.\n\n\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst t = -(line.start.dot(this.normal) + this.constant) / denominator;\n\n\t\t\tif (t < 0 || t > 1) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn target.copy(direction).multiplyScalar(t).add(line.start);\n\t\t}\n\n\t\tintersectsLine(line) {\n\t\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\t\t\tconst startSign = this.distanceToPoint(line.start);\n\t\t\tconst endSign = this.distanceToPoint(line.end);\n\t\t\treturn startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\treturn box.intersectsPlane(this);\n\t\t}\n\n\t\tintersectsSphere(sphere) {\n\t\t\treturn sphere.intersectsPlane(this);\n\t\t}\n\n\t\tcoplanarPoint(target) {\n\t\t\treturn target.copy(this.normal).multiplyScalar(-this.constant);\n\t\t}\n\n\t\tapplyMatrix4(matrix, optionalNormalMatrix) {\n\t\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n\n\t\t\tconst referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n\t\t\tconst normal = this.normal.applyMatrix3(normalMatrix).normalize();\n\t\t\tthis.constant = -referencePoint.dot(normal);\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(offset) {\n\t\t\tthis.constant -= offset.dot(this.normal);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(plane) {\n\t\t\treturn plane.normal.equals(this.normal) && plane.constant === this.constant;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tPlane.prototype.isPlane = true;\n\n\tconst _sphere$2 = /*@__PURE__*/new Sphere();\n\n\tconst _vector$7 = /*@__PURE__*/new Vector3();\n\n\tclass Frustum {\n\t\tconstructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n\t\t\tthis.planes = [p0, p1, p2, p3, p4, p5];\n\t\t}\n\n\t\tset(p0, p1, p2, p3, p4, p5) {\n\t\t\tconst planes = this.planes;\n\t\t\tplanes[0].copy(p0);\n\t\t\tplanes[1].copy(p1);\n\t\t\tplanes[2].copy(p2);\n\t\t\tplanes[3].copy(p3);\n\t\t\tplanes[4].copy(p4);\n\t\t\tplanes[5].copy(p5);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(frustum) {\n\t\t\tconst planes = this.planes;\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tplanes[i].copy(frustum.planes[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromProjectionMatrix(m) {\n\t\t\tconst planes = this.planes;\n\t\t\tconst me = m.elements;\n\t\t\tconst me0 = me[0],\n\t\t\t\t\t\tme1 = me[1],\n\t\t\t\t\t\tme2 = me[2],\n\t\t\t\t\t\tme3 = me[3];\n\t\t\tconst me4 = me[4],\n\t\t\t\t\t\tme5 = me[5],\n\t\t\t\t\t\tme6 = me[6],\n\t\t\t\t\t\tme7 = me[7];\n\t\t\tconst me8 = me[8],\n\t\t\t\t\t\tme9 = me[9],\n\t\t\t\t\t\tme10 = me[10],\n\t\t\t\t\t\tme11 = me[11];\n\t\t\tconst me12 = me[12],\n\t\t\t\t\t\tme13 = me[13],\n\t\t\t\t\t\tme14 = me[14],\n\t\t\t\t\t\tme15 = me[15];\n\t\t\tplanes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n\t\t\tplanes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n\t\t\tplanes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n\t\t\tplanes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n\t\t\tplanes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n\t\t\tplanes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n\t\t\treturn this;\n\t\t}\n\n\t\tintersectsObject(object) {\n\t\t\tconst geometry = object.geometry;\n\t\t\tif (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n\n\t\t\treturn this.intersectsSphere(_sphere$2);\n\t\t}\n\n\t\tintersectsSprite(sprite) {\n\t\t\t_sphere$2.center.set(0, 0, 0);\n\n\t\t\t_sphere$2.radius = 0.7071067811865476;\n\n\t\t\t_sphere$2.applyMatrix4(sprite.matrixWorld);\n\n\t\t\treturn this.intersectsSphere(_sphere$2);\n\t\t}\n\n\t\tintersectsSphere(sphere) {\n\t\t\tconst planes = this.planes;\n\t\t\tconst center = sphere.center;\n\t\t\tconst negRadius = -sphere.radius;\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tconst distance = planes[i].distanceToPoint(center);\n\n\t\t\t\tif (distance < negRadius) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\tconst planes = this.planes;\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tconst plane = planes[i]; // corner at max distance\n\n\t\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tif (plane.distanceToPoint(_vector$7) < 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcontainsPoint(point) {\n\t\t\tconst planes = this.planes;\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tif (planes[i].distanceToPoint(point) < 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tfunction WebGLAnimation() {\n\t\tlet context = null;\n\t\tlet isAnimating = false;\n\t\tlet animationLoop = null;\n\t\tlet requestId = null;\n\n\t\tfunction onAnimationFrame(time, frame) {\n\t\t\tanimationLoop(time, frame);\n\t\t\trequestId = context.requestAnimationFrame(onAnimationFrame);\n\t\t}\n\n\t\treturn {\n\t\t\tstart: function () {\n\t\t\t\tif (isAnimating === true) return;\n\t\t\t\tif (animationLoop === null) return;\n\t\t\t\trequestId = context.requestAnimationFrame(onAnimationFrame);\n\t\t\t\tisAnimating = true;\n\t\t\t},\n\t\t\tstop: function () {\n\t\t\t\tcontext.cancelAnimationFrame(requestId);\n\t\t\t\tisAnimating = false;\n\t\t\t},\n\t\t\tsetAnimationLoop: function (callback) {\n\t\t\t\tanimationLoop = callback;\n\t\t\t},\n\t\t\tsetContext: function (value) {\n\t\t\t\tcontext = value;\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction WebGLAttributes(gl, capabilities) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\t\tconst buffers = new WeakMap();\n\n\t\tfunction createBuffer(attribute, bufferType) {\n\t\t\tconst array = attribute.array;\n\t\t\tconst usage = attribute.usage;\n\t\t\tconst buffer = gl.createBuffer();\n\t\t\tgl.bindBuffer(bufferType, buffer);\n\t\t\tgl.bufferData(bufferType, array, usage);\n\t\t\tattribute.onUploadCallback();\n\t\t\tlet type = gl.FLOAT;\n\n\t\t\tif (array instanceof Float32Array) {\n\t\t\t\ttype = gl.FLOAT;\n\t\t\t} else if (array instanceof Float64Array) {\n\t\t\t\tconsole.warn('THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.');\n\t\t\t} else if (array instanceof Uint16Array) {\n\t\t\t\tif (attribute.isFloat16BufferAttribute) {\n\t\t\t\t\tif (isWebGL2) {\n\t\t\t\t\t\ttype = gl.HALF_FLOAT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\t\t\t\t}\n\t\t\t} else if (array instanceof Int16Array) {\n\t\t\t\ttype = gl.SHORT;\n\t\t\t} else if (array instanceof Uint32Array) {\n\t\t\t\ttype = gl.UNSIGNED_INT;\n\t\t\t} else if (array instanceof Int32Array) {\n\t\t\t\ttype = gl.INT;\n\t\t\t} else if (array instanceof Int8Array) {\n\t\t\t\ttype = gl.BYTE;\n\t\t\t} else if (array instanceof Uint8Array) {\n\t\t\t\ttype = gl.UNSIGNED_BYTE;\n\t\t\t} else if (array instanceof Uint8ClampedArray) {\n\t\t\t\ttype = gl.UNSIGNED_BYTE;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbuffer: buffer,\n\t\t\t\ttype: type,\n\t\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\t\tversion: attribute.version\n\t\t\t};\n\t\t}\n\n\t\tfunction updateBuffer(buffer, attribute, bufferType) {\n\t\t\tconst array = attribute.array;\n\t\t\tconst updateRange = attribute.updateRange;\n\t\t\tgl.bindBuffer(bufferType, buffer);\n\n\t\t\tif (updateRange.count === -1) {\n\t\t\t\t// Not using update ranges\n\t\t\t\tgl.bufferSubData(bufferType, 0, array);\n\t\t\t} else {\n\t\t\t\tif (isWebGL2) {\n\t\t\t\t\tgl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array, updateRange.offset, updateRange.count);\n\t\t\t\t} else {\n\t\t\t\t\tgl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array.subarray(updateRange.offset, updateRange.offset + updateRange.count));\n\t\t\t\t}\n\n\t\t\t\tupdateRange.count = -1; // reset range\n\t\t\t}\n\t\t} //\n\n\n\t\tfunction get(attribute) {\n\t\t\tif (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n\t\t\treturn buffers.get(attribute);\n\t\t}\n\n\t\tfunction remove(attribute) {\n\t\t\tif (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n\t\t\tconst data = buffers.get(attribute);\n\n\t\t\tif (data) {\n\t\t\t\tgl.deleteBuffer(data.buffer);\n\t\t\t\tbuffers.delete(attribute);\n\t\t\t}\n\t\t}\n\n\t\tfunction update(attribute, bufferType) {\n\t\t\tif (attribute.isGLBufferAttribute) {\n\t\t\t\tconst cached = buffers.get(attribute);\n\n\t\t\t\tif (!cached || cached.version < attribute.version) {\n\t\t\t\t\tbuffers.set(attribute, {\n\t\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\t\tversion: attribute.version\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n\t\t\tconst data = buffers.get(attribute);\n\n\t\t\tif (data === undefined) {\n\t\t\t\tbuffers.set(attribute, createBuffer(attribute, bufferType));\n\t\t\t} else if (data.version < attribute.version) {\n\t\t\t\tupdateBuffer(data.buffer, attribute, bufferType);\n\t\t\t\tdata.version = attribute.version;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tremove: remove,\n\t\t\tupdate: update\n\t\t};\n\t}\n\n\tclass PlaneGeometry extends BufferGeometry {\n\t\tconstructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n\t\t\tsuper();\n\t\t\tthis.type = 'PlaneGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\twidthSegments: widthSegments,\n\t\t\t\theightSegments: heightSegments\n\t\t\t};\n\t\t\tconst width_half = width / 2;\n\t\t\tconst height_half = height / 2;\n\t\t\tconst gridX = Math.floor(widthSegments);\n\t\t\tconst gridY = Math.floor(heightSegments);\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\t\t\tconst segment_width = width / gridX;\n\t\t\tconst segment_height = height / gridY; //\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = [];\n\n\t\t\tfor (let iy = 0; iy < gridY1; iy++) {\n\t\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\t\tfor (let ix = 0; ix < gridX1; ix++) {\n\t\t\t\t\tconst x = ix * segment_width - width_half;\n\t\t\t\t\tvertices.push(x, -y, 0);\n\t\t\t\t\tnormals.push(0, 0, 1);\n\t\t\t\t\tuvs.push(ix / gridX);\n\t\t\t\t\tuvs.push(1 - iy / gridY);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let iy = 0; iy < gridY; iy++) {\n\t\t\t\tfor (let ix = 0; ix < gridX; ix++) {\n\t\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\t\tconst b = ix + gridX1 * (iy + 1);\n\t\t\t\t\tconst c = ix + 1 + gridX1 * (iy + 1);\n\t\t\t\t\tconst d = ix + 1 + gridX1 * iy;\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n\t\t}\n\n\t}\n\n\tvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\n\tvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\n\tvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\n\tvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\n\tvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\n\tvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\n\tvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\n\tvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\n\tvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( geometry.viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float NoH ) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float NoV, float NoL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( NoL + NoV - NoL * NoV ) ) );\\n}\\nvec3 BRDF_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\n\tvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\n\tvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\n\tvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\n\tvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\n\tvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\n\tvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\n\tvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\n\tvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\n\tvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\n\tvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\n\tvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\n\tvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\n\tvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\n\tvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\n\tvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\n\tvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\n\tvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\n\tvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\n\tvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\n\tvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\n\tvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\n\tvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\n\tvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\n\tvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\n\tvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\n\tvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\n\tvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\n\tvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\n\tvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tlightMapIrradiance *= PI;\\n\\t#endif\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\n\tvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\n\tvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\n\tvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\n\tvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getIBLIrradiance( const in GeometricContext geometry ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec;\\n\\t\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\t\\treflectVec = reflect( - viewDir, normal );\\n\\t\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\\t\\t\\t#endif\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\n\tvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\n\tvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\n\tvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\n\tvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\n\tvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularTintFactor = specularTint;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARTINTMAP\\n\\t\\t\\tspecularTintFactor *= specularTintMapTexelToLinear( texture2D( specularTintMap, vUv ) ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularTintFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularTintFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenTint = sheenTint;\\n#endif\";\n\n\tvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenTint;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(\t\t0, 1,\t\t0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_Sheen( material.roughness, directLight.direction, geometry, material.sheenTint );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\n\tvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\n\tvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\n\tvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\n\tvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\n\tvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\n\tvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\n\tvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\n\tvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\n\tvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\n\tvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\n\tvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\n\tvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\n\tvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\n\tvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\n\tvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\n\tvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\n\tvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\n\tvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\n\tvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\n\tvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\n\tvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\n\tvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\n\tvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\n\tvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\n\tvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\n\tvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\n\tvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\n\tvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\n\tvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\n\tvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\n\tvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\n\tvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\n\tvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\n\tvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t\tf.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t\tf.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\n\tvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\n\tvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\n\tvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\n\tvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\n\tvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\n\tvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\n\tvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\n\tvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\n\tvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\n\tvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\n\tvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3(\t1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108,\t1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605,\t1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\n\tvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationTint, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = transmission.a;\\n#endif\";\n\n\tvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationTint;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( float roughness, float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\\t\\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\\t\\tvec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\n\tvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\n\tvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\n\tvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\n\tvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\n\tvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\n\tvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\n\tvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\n\tvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\n\tvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\n\tvar cube_frag = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\n\tvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\n\tvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\n\tvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\n\tvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\n\tvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\n\tvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\n\tvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\n\tvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\n\tvar meshnormal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\n\tvar meshnormal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\n\tvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularTint;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARTINTMAP\\n\\t\\tuniform sampler2D specularTintMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenTint;\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\n\tvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar shadow_vert = \"#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\n\tconst ShaderChunk = {\n\t\talphamap_fragment: alphamap_fragment,\n\t\talphamap_pars_fragment: alphamap_pars_fragment,\n\t\talphatest_fragment: alphatest_fragment,\n\t\talphatest_pars_fragment: alphatest_pars_fragment,\n\t\taomap_fragment: aomap_fragment,\n\t\taomap_pars_fragment: aomap_pars_fragment,\n\t\tbegin_vertex: begin_vertex,\n\t\tbeginnormal_vertex: beginnormal_vertex,\n\t\tbsdfs: bsdfs,\n\t\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\t\tclipping_planes_fragment: clipping_planes_fragment,\n\t\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\t\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\t\tclipping_planes_vertex: clipping_planes_vertex,\n\t\tcolor_fragment: color_fragment,\n\t\tcolor_pars_fragment: color_pars_fragment,\n\t\tcolor_pars_vertex: color_pars_vertex,\n\t\tcolor_vertex: color_vertex,\n\t\tcommon: common,\n\t\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\t\tdefaultnormal_vertex: defaultnormal_vertex,\n\t\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\t\tdisplacementmap_vertex: displacementmap_vertex,\n\t\temissivemap_fragment: emissivemap_fragment,\n\t\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\t\tencodings_fragment: encodings_fragment,\n\t\tencodings_pars_fragment: encodings_pars_fragment,\n\t\tenvmap_fragment: envmap_fragment,\n\t\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\t\tenvmap_pars_fragment: envmap_pars_fragment,\n\t\tenvmap_pars_vertex: envmap_pars_vertex,\n\t\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\t\tenvmap_vertex: envmap_vertex,\n\t\tfog_vertex: fog_vertex,\n\t\tfog_pars_vertex: fog_pars_vertex,\n\t\tfog_fragment: fog_fragment,\n\t\tfog_pars_fragment: fog_pars_fragment,\n\t\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\t\tlightmap_fragment: lightmap_fragment,\n\t\tlightmap_pars_fragment: lightmap_pars_fragment,\n\t\tlights_lambert_vertex: lights_lambert_vertex,\n\t\tlights_pars_begin: lights_pars_begin,\n\t\tlights_toon_fragment: lights_toon_fragment,\n\t\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\t\tlights_phong_fragment: lights_phong_fragment,\n\t\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\t\tlights_physical_fragment: lights_physical_fragment,\n\t\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\t\tlights_fragment_begin: lights_fragment_begin,\n\t\tlights_fragment_maps: lights_fragment_maps,\n\t\tlights_fragment_end: lights_fragment_end,\n\t\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\t\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\t\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\t\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\t\tmap_fragment: map_fragment,\n\t\tmap_pars_fragment: map_pars_fragment,\n\t\tmap_particle_fragment: map_particle_fragment,\n\t\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\t\tmetalnessmap_fragment: metalnessmap_fragment,\n\t\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\t\tmorphnormal_vertex: morphnormal_vertex,\n\t\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\t\tmorphtarget_vertex: morphtarget_vertex,\n\t\tnormal_fragment_begin: normal_fragment_begin,\n\t\tnormal_fragment_maps: normal_fragment_maps,\n\t\tnormal_pars_fragment: normal_pars_fragment,\n\t\tnormal_pars_vertex: normal_pars_vertex,\n\t\tnormal_vertex: normal_vertex,\n\t\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\t\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\t\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\t\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\t\toutput_fragment: output_fragment,\n\t\tpacking: packing,\n\t\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\t\tproject_vertex: project_vertex,\n\t\tdithering_fragment: dithering_fragment,\n\t\tdithering_pars_fragment: dithering_pars_fragment,\n\t\troughnessmap_fragment: roughnessmap_fragment,\n\t\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\t\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\t\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\t\tshadowmap_vertex: shadowmap_vertex,\n\t\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\t\tskinbase_vertex: skinbase_vertex,\n\t\tskinning_pars_vertex: skinning_pars_vertex,\n\t\tskinning_vertex: skinning_vertex,\n\t\tskinnormal_vertex: skinnormal_vertex,\n\t\tspecularmap_fragment: specularmap_fragment,\n\t\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\t\ttonemapping_fragment: tonemapping_fragment,\n\t\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\t\ttransmission_fragment: transmission_fragment,\n\t\ttransmission_pars_fragment: transmission_pars_fragment,\n\t\tuv_pars_fragment: uv_pars_fragment,\n\t\tuv_pars_vertex: uv_pars_vertex,\n\t\tuv_vertex: uv_vertex,\n\t\tuv2_pars_fragment: uv2_pars_fragment,\n\t\tuv2_pars_vertex: uv2_pars_vertex,\n\t\tuv2_vertex: uv2_vertex,\n\t\tworldpos_vertex: worldpos_vertex,\n\t\tbackground_frag: background_frag,\n\t\tbackground_vert: background_vert,\n\t\tcube_frag: cube_frag,\n\t\tcube_vert: cube_vert,\n\t\tdepth_frag: depth_frag,\n\t\tdepth_vert: depth_vert,\n\t\tdistanceRGBA_frag: distanceRGBA_frag,\n\t\tdistanceRGBA_vert: distanceRGBA_vert,\n\t\tequirect_frag: equirect_frag,\n\t\tequirect_vert: equirect_vert,\n\t\tlinedashed_frag: linedashed_frag,\n\t\tlinedashed_vert: linedashed_vert,\n\t\tmeshbasic_frag: meshbasic_frag,\n\t\tmeshbasic_vert: meshbasic_vert,\n\t\tmeshlambert_frag: meshlambert_frag,\n\t\tmeshlambert_vert: meshlambert_vert,\n\t\tmeshmatcap_frag: meshmatcap_frag,\n\t\tmeshmatcap_vert: meshmatcap_vert,\n\t\tmeshnormal_frag: meshnormal_frag,\n\t\tmeshnormal_vert: meshnormal_vert,\n\t\tmeshphong_frag: meshphong_frag,\n\t\tmeshphong_vert: meshphong_vert,\n\t\tmeshphysical_frag: meshphysical_frag,\n\t\tmeshphysical_vert: meshphysical_vert,\n\t\tmeshtoon_frag: meshtoon_frag,\n\t\tmeshtoon_vert: meshtoon_vert,\n\t\tpoints_frag: points_frag,\n\t\tpoints_vert: points_vert,\n\t\tshadow_frag: shadow_frag,\n\t\tshadow_vert: shadow_vert,\n\t\tsprite_frag: sprite_frag,\n\t\tsprite_vert: sprite_vert\n\t};\n\n\t/**\n\t * Uniforms library for shared webgl shaders\n\t */\n\n\tconst UniformsLib = {\n\t\tcommon: {\n\t\t\tdiffuse: {\n\t\t\t\tvalue: new Color(0xffffff)\n\t\t\t},\n\t\t\topacity: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\tmap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tuvTransform: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t},\n\t\t\tuv2Transform: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t},\n\t\t\talphaMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\talphaTest: {\n\t\t\t\tvalue: 0\n\t\t\t}\n\t\t},\n\t\tspecularmap: {\n\t\t\tspecularMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tenvmap: {\n\t\t\tenvMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tflipEnvMap: {\n\t\t\t\tvalue: -1\n\t\t\t},\n\t\t\treflectivity: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\t// basic, lambert, phong\n\t\t\tior: {\n\t\t\t\tvalue: 1.5\n\t\t\t},\n\t\t\t// standard, physical\n\t\t\trefractionRatio: {\n\t\t\t\tvalue: 0.98\n\t\t\t},\n\t\t\tmaxMipLevel: {\n\t\t\t\tvalue: 0\n\t\t\t}\n\t\t},\n\t\taomap: {\n\t\t\taoMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\taoMapIntensity: {\n\t\t\t\tvalue: 1\n\t\t\t}\n\t\t},\n\t\tlightmap: {\n\t\t\tlightMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tlightMapIntensity: {\n\t\t\t\tvalue: 1\n\t\t\t}\n\t\t},\n\t\temissivemap: {\n\t\t\temissiveMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tbumpmap: {\n\t\t\tbumpMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tbumpScale: {\n\t\t\t\tvalue: 1\n\t\t\t}\n\t\t},\n\t\tnormalmap: {\n\t\t\tnormalMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tnormalScale: {\n\t\t\t\tvalue: new Vector2(1, 1)\n\t\t\t}\n\t\t},\n\t\tdisplacementmap: {\n\t\t\tdisplacementMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tdisplacementScale: {\n\t\t\t\tvalue: 1\n\t\t\t},\n\t\t\tdisplacementBias: {\n\t\t\t\tvalue: 0\n\t\t\t}\n\t\t},\n\t\troughnessmap: {\n\t\t\troughnessMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tmetalnessmap: {\n\t\t\tmetalnessMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tgradientmap: {\n\t\t\tgradientMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tfog: {\n\t\t\tfogDensity: {\n\t\t\t\tvalue: 0.00025\n\t\t\t},\n\t\t\tfogNear: {\n\t\t\t\tvalue: 1\n\t\t\t},\n\t\t\tfogFar: {\n\t\t\t\tvalue: 2000\n\t\t\t},\n\t\t\tfogColor: {\n\t\t\t\tvalue: new Color(0xffffff)\n\t\t\t}\n\t\t},\n\t\tlights: {\n\t\t\tambientLightColor: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tlightProbe: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tdirectionalLights: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tdirection: {},\n\t\t\t\t\tcolor: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdirectionalLightShadows: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tshadowBias: {},\n\t\t\t\t\tshadowNormalBias: {},\n\t\t\t\t\tshadowRadius: {},\n\t\t\t\t\tshadowMapSize: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdirectionalShadowMap: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tdirectionalShadowMatrix: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tspotLights: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tcolor: {},\n\t\t\t\t\tposition: {},\n\t\t\t\t\tdirection: {},\n\t\t\t\t\tdistance: {},\n\t\t\t\t\tconeCos: {},\n\t\t\t\t\tpenumbraCos: {},\n\t\t\t\t\tdecay: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tspotLightShadows: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tshadowBias: {},\n\t\t\t\t\tshadowNormalBias: {},\n\t\t\t\t\tshadowRadius: {},\n\t\t\t\t\tshadowMapSize: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tspotShadowMap: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tspotShadowMatrix: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tpointLights: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tcolor: {},\n\t\t\t\t\tposition: {},\n\t\t\t\t\tdecay: {},\n\t\t\t\t\tdistance: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tpointLightShadows: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tshadowBias: {},\n\t\t\t\t\tshadowNormalBias: {},\n\t\t\t\t\tshadowRadius: {},\n\t\t\t\t\tshadowMapSize: {},\n\t\t\t\t\tshadowCameraNear: {},\n\t\t\t\t\tshadowCameraFar: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tpointShadowMap: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tpointShadowMatrix: {\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\themisphereLights: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tdirection: {},\n\t\t\t\t\tskyColor: {},\n\t\t\t\t\tgroundColor: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\t\trectAreaLights: {\n\t\t\t\tvalue: [],\n\t\t\t\tproperties: {\n\t\t\t\t\tcolor: {},\n\t\t\t\t\tposition: {},\n\t\t\t\t\twidth: {},\n\t\t\t\t\theight: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\tltc_1: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tltc_2: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t},\n\t\tpoints: {\n\t\t\tdiffuse: {\n\t\t\t\tvalue: new Color(0xffffff)\n\t\t\t},\n\t\t\topacity: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\tmap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\talphaMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\talphaTest: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tuvTransform: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t},\n\t\tsprite: {\n\t\t\tdiffuse: {\n\t\t\t\tvalue: new Color(0xffffff)\n\t\t\t},\n\t\t\topacity: {\n\t\t\t\tvalue: 1.0\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t\tvalue: new Vector2(0.5, 0.5)\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tvalue: 0.0\n\t\t\t},\n\t\t\tmap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\talphaMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\talphaTest: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tuvTransform: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t}\n\t};\n\n\tconst ShaderLib = {\n\t\tbasic: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.fog]),\n\t\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\t\t},\n\t\tlambert: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.fog, UniformsLib.lights, {\n\t\t\t\temissive: {\n\t\t\t\t\tvalue: new Color(0x000000)\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\t\t},\n\t\tphong: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.fog, UniformsLib.lights, {\n\t\t\t\temissive: {\n\t\t\t\t\tvalue: new Color(0x000000)\n\t\t\t\t},\n\t\t\t\tspecular: {\n\t\t\t\t\tvalue: new Color(0x111111)\n\t\t\t\t},\n\t\t\t\tshininess: {\n\t\t\t\t\tvalue: 30\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\t\tfragmentShader: ShaderChunk.meshphong_frag\n\t\t},\n\t\tstandard: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.roughnessmap, UniformsLib.metalnessmap, UniformsLib.fog, UniformsLib.lights, {\n\t\t\t\temissive: {\n\t\t\t\t\tvalue: new Color(0x000000)\n\t\t\t\t},\n\t\t\t\troughness: {\n\t\t\t\t\tvalue: 1.0\n\t\t\t\t},\n\t\t\t\tmetalness: {\n\t\t\t\t\tvalue: 0.0\n\t\t\t\t},\n\t\t\t\tenvMapIntensity: {\n\t\t\t\t\tvalue: 1\n\t\t\t\t} // temporary\n\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\t\t},\n\t\ttoon: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.gradientmap, UniformsLib.fog, UniformsLib.lights, {\n\t\t\t\temissive: {\n\t\t\t\t\tvalue: new Color(0x000000)\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\t\t},\n\t\tmatcap: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.fog, {\n\t\t\t\tmatcap: {\n\t\t\t\t\tvalue: null\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\t\t},\n\t\tpoints: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.points, UniformsLib.fog]),\n\t\t\tvertexShader: ShaderChunk.points_vert,\n\t\t\tfragmentShader: ShaderChunk.points_frag\n\t\t},\n\t\tdashed: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.fog, {\n\t\t\t\tscale: {\n\t\t\t\t\tvalue: 1\n\t\t\t\t},\n\t\t\t\tdashSize: {\n\t\t\t\t\tvalue: 1\n\t\t\t\t},\n\t\t\t\ttotalSize: {\n\t\t\t\t\tvalue: 2\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\t\tfragmentShader: ShaderChunk.linedashed_frag\n\t\t},\n\t\tdepth: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap]),\n\t\t\tvertexShader: ShaderChunk.depth_vert,\n\t\t\tfragmentShader: ShaderChunk.depth_frag\n\t\t},\n\t\tnormal: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, {\n\t\t\t\topacity: {\n\t\t\t\t\tvalue: 1.0\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\t\t},\n\t\tsprite: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.sprite, UniformsLib.fog]),\n\t\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\t\tfragmentShader: ShaderChunk.sprite_frag\n\t\t},\n\t\tbackground: {\n\t\t\tuniforms: {\n\t\t\t\tuvTransform: {\n\t\t\t\t\tvalue: new Matrix3()\n\t\t\t\t},\n\t\t\t\tt2D: {\n\t\t\t\t\tvalue: null\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: ShaderChunk.background_vert,\n\t\t\tfragmentShader: ShaderChunk.background_frag\n\t\t},\n\n\t\t/* -------------------------------------------------------------------------\n\t\t//\tCube map shader\n\t\t ------------------------------------------------------------------------- */\n\t\tcube: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.envmap, {\n\t\t\t\topacity: {\n\t\t\t\t\tvalue: 1.0\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.cube_vert,\n\t\t\tfragmentShader: ShaderChunk.cube_frag\n\t\t},\n\t\tequirect: {\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: {\n\t\t\t\t\tvalue: null\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\t\tfragmentShader: ShaderChunk.equirect_frag\n\t\t},\n\t\tdistanceRGBA: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap, {\n\t\t\t\treferencePosition: {\n\t\t\t\t\tvalue: new Vector3()\n\t\t\t\t},\n\t\t\t\tnearDistance: {\n\t\t\t\t\tvalue: 1\n\t\t\t\t},\n\t\t\t\tfarDistance: {\n\t\t\t\t\tvalue: 1000\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\t\t},\n\t\tshadow: {\n\t\t\tuniforms: mergeUniforms([UniformsLib.lights, UniformsLib.fog, {\n\t\t\t\tcolor: {\n\t\t\t\t\tvalue: new Color(0x00000)\n\t\t\t\t},\n\t\t\t\topacity: {\n\t\t\t\t\tvalue: 1.0\n\t\t\t\t}\n\t\t\t}]),\n\t\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\t\tfragmentShader: ShaderChunk.shadow_frag\n\t\t}\n\t};\n\tShaderLib.physical = {\n\t\tuniforms: mergeUniforms([ShaderLib.standard.uniforms, {\n\t\t\tclearcoat: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tclearcoatMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tclearcoatRoughness: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tclearcoatRoughnessMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tclearcoatNormalScale: {\n\t\t\t\tvalue: new Vector2(1, 1)\n\t\t\t},\n\t\t\tclearcoatNormalMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tsheenTint: {\n\t\t\t\tvalue: new Color(0x000000)\n\t\t\t},\n\t\t\ttransmission: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\ttransmissionMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\ttransmissionSamplerSize: {\n\t\t\t\tvalue: new Vector2()\n\t\t\t},\n\t\t\ttransmissionSamplerMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tthickness: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tthicknessMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tattenuationDistance: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tattenuationTint: {\n\t\t\t\tvalue: new Color(0x000000)\n\t\t\t},\n\t\t\tspecularIntensity: {\n\t\t\t\tvalue: 0\n\t\t\t},\n\t\t\tspecularIntensityMap: {\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tspecularTint: {\n\t\t\t\tvalue: new Color(1, 1, 1)\n\t\t\t},\n\t\t\tspecularTintMap: {\n\t\t\t\tvalue: null\n\t\t\t}\n\t\t}]),\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\t};\n\n\tfunction WebGLBackground(renderer, cubemaps, state, objects, premultipliedAlpha) {\n\t\tconst clearColor = new Color(0x000000);\n\t\tlet clearAlpha = 0;\n\t\tlet planeMesh;\n\t\tlet boxMesh;\n\t\tlet currentBackground = null;\n\t\tlet currentBackgroundVersion = 0;\n\t\tlet currentTonemapping = null;\n\n\t\tfunction render(renderList, scene) {\n\t\t\tlet forceClear = false;\n\t\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t\tif (background && background.isTexture) {\n\t\t\t\tbackground = cubemaps.get(background);\n\t\t\t} // Ignore background in AR\n\t\t\t// TODO: Reconsider this.\n\n\n\t\t\tconst xr = renderer.xr;\n\t\t\tconst session = xr.getSession && xr.getSession();\n\n\t\t\tif (session && session.environmentBlendMode === 'additive') {\n\t\t\t\tbackground = null;\n\t\t\t}\n\n\t\t\tif (background === null) {\n\t\t\t\tsetClear(clearColor, clearAlpha);\n\t\t\t} else if (background && background.isColor) {\n\t\t\t\tsetClear(background, 1);\n\t\t\t\tforceClear = true;\n\t\t\t}\n\n\t\t\tif (renderer.autoClear || forceClear) {\n\t\t\t\trenderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n\t\t\t}\n\n\t\t\tif (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n\t\t\t\tif (boxMesh === undefined) {\n\t\t\t\t\tboxMesh = new Mesh(new BoxGeometry(1, 1, 1), new ShaderMaterial({\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms(ShaderLib.cube.uniforms),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t}));\n\t\t\t\t\tboxMesh.geometry.deleteAttribute('normal');\n\t\t\t\t\tboxMesh.geometry.deleteAttribute('uv');\n\n\t\t\t\t\tboxMesh.onBeforeRender = function (renderer, scene, camera) {\n\t\t\t\t\t\tthis.matrixWorld.copyPosition(camera.matrixWorld);\n\t\t\t\t\t}; // enable code injection for non-built-in material\n\n\n\t\t\t\t\tObject.defineProperty(boxMesh.material, 'envMap', {\n\t\t\t\t\t\tget: function () {\n\t\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tobjects.update(boxMesh);\n\t\t\t\t}\n\n\t\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\t\tboxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n\n\t\t\t\tif (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n\t\t\t\t\tboxMesh.material.needsUpdate = true;\n\t\t\t\t\tcurrentBackground = background;\n\t\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\t\t\t\t} // push to the pre-sorted opaque render list\n\n\n\t\t\t\trenderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n\t\t\t} else if (background && background.isTexture) {\n\t\t\t\tif (planeMesh === undefined) {\n\t\t\t\t\tplaneMesh = new Mesh(new PlaneGeometry(2, 2), new ShaderMaterial({\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms(ShaderLib.background.uniforms),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t}));\n\t\t\t\t\tplaneMesh.geometry.deleteAttribute('normal'); // enable code injection for non-built-in material\n\n\t\t\t\t\tObject.defineProperty(planeMesh.material, 'map', {\n\t\t\t\t\t\tget: function () {\n\t\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tobjects.update(planeMesh);\n\t\t\t\t}\n\n\t\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\t\tif (background.matrixAutoUpdate === true) {\n\t\t\t\t\tbackground.updateMatrix();\n\t\t\t\t}\n\n\t\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n\n\t\t\t\tif (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n\t\t\t\t\tplaneMesh.material.needsUpdate = true;\n\t\t\t\t\tcurrentBackground = background;\n\t\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\t\t\t\t} // push to the pre-sorted opaque render list\n\n\n\t\t\t\trenderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n\t\t\t}\n\t\t}\n\n\t\tfunction setClear(color, alpha) {\n\t\t\tstate.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha);\n\t\t}\n\n\t\treturn {\n\t\t\tgetClearColor: function () {\n\t\t\t\treturn clearColor;\n\t\t\t},\n\t\t\tsetClearColor: function (color, alpha = 1) {\n\t\t\t\tclearColor.set(color);\n\t\t\t\tclearAlpha = alpha;\n\t\t\t\tsetClear(clearColor, clearAlpha);\n\t\t\t},\n\t\t\tgetClearAlpha: function () {\n\t\t\t\treturn clearAlpha;\n\t\t\t},\n\t\t\tsetClearAlpha: function (alpha) {\n\t\t\t\tclearAlpha = alpha;\n\t\t\t\tsetClear(clearColor, clearAlpha);\n\t\t\t},\n\t\t\trender: render\n\t\t};\n\t}\n\n\tfunction WebGLBindingStates(gl, extensions, attributes, capabilities) {\n\t\tconst maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\t\tconst extension = capabilities.isWebGL2 ? null : extensions.get('OES_vertex_array_object');\n\t\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\t\tconst bindingStates = {};\n\t\tconst defaultState = createBindingState(null);\n\t\tlet currentState = defaultState;\n\n\t\tfunction setup(object, material, program, geometry, index) {\n\t\t\tlet updateBuffers = false;\n\n\t\t\tif (vaoAvailable) {\n\t\t\t\tconst state = getBindingState(geometry, program, material);\n\n\t\t\t\tif (currentState !== state) {\n\t\t\t\t\tcurrentState = state;\n\t\t\t\t\tbindVertexArrayObject(currentState.object);\n\t\t\t\t}\n\n\t\t\t\tupdateBuffers = needsUpdate(geometry, index);\n\t\t\t\tif (updateBuffers) saveCache(geometry, index);\n\t\t\t} else {\n\t\t\t\tconst wireframe = material.wireframe === true;\n\n\t\t\t\tif (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n\t\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\t\tcurrentState.program = program.id;\n\t\t\t\t\tcurrentState.wireframe = wireframe;\n\t\t\t\t\tupdateBuffers = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (object.isInstancedMesh === true) {\n\t\t\t\tupdateBuffers = true;\n\t\t\t}\n\n\t\t\tif (index !== null) {\n\t\t\t\tattributes.update(index, gl.ELEMENT_ARRAY_BUFFER);\n\t\t\t}\n\n\t\t\tif (updateBuffers) {\n\t\t\t\tsetupVertexAttributes(object, material, program, geometry);\n\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, attributes.get(index).buffer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction createVertexArrayObject() {\n\t\t\tif (capabilities.isWebGL2) return gl.createVertexArray();\n\t\t\treturn extension.createVertexArrayOES();\n\t\t}\n\n\t\tfunction bindVertexArrayObject(vao) {\n\t\t\tif (capabilities.isWebGL2) return gl.bindVertexArray(vao);\n\t\t\treturn extension.bindVertexArrayOES(vao);\n\t\t}\n\n\t\tfunction deleteVertexArrayObject(vao) {\n\t\t\tif (capabilities.isWebGL2) return gl.deleteVertexArray(vao);\n\t\t\treturn extension.deleteVertexArrayOES(vao);\n\t\t}\n\n\t\tfunction getBindingState(geometry, program, material) {\n\t\t\tconst wireframe = material.wireframe === true;\n\t\t\tlet programMap = bindingStates[geometry.id];\n\n\t\t\tif (programMap === undefined) {\n\t\t\t\tprogramMap = {};\n\t\t\t\tbindingStates[geometry.id] = programMap;\n\t\t\t}\n\n\t\t\tlet stateMap = programMap[program.id];\n\n\t\t\tif (stateMap === undefined) {\n\t\t\t\tstateMap = {};\n\t\t\t\tprogramMap[program.id] = stateMap;\n\t\t\t}\n\n\t\t\tlet state = stateMap[wireframe];\n\n\t\t\tif (state === undefined) {\n\t\t\t\tstate = createBindingState(createVertexArrayObject());\n\t\t\t\tstateMap[wireframe] = state;\n\t\t\t}\n\n\t\t\treturn state;\n\t\t}\n\n\t\tfunction createBindingState(vao) {\n\t\t\tconst newAttributes = [];\n\t\t\tconst enabledAttributes = [];\n\t\t\tconst attributeDivisors = [];\n\n\t\t\tfor (let i = 0; i < maxVertexAttributes; i++) {\n\t\t\t\tnewAttributes[i] = 0;\n\t\t\t\tenabledAttributes[i] = 0;\n\t\t\t\tattributeDivisors[i] = 0;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\t\tgeometry: null,\n\t\t\t\tprogram: null,\n\t\t\t\twireframe: false,\n\t\t\t\tnewAttributes: newAttributes,\n\t\t\t\tenabledAttributes: enabledAttributes,\n\t\t\t\tattributeDivisors: attributeDivisors,\n\t\t\t\tobject: vao,\n\t\t\t\tattributes: {},\n\t\t\t\tindex: null\n\t\t\t};\n\t\t}\n\n\t\tfunction needsUpdate(geometry, index) {\n\t\t\tconst cachedAttributes = currentState.attributes;\n\t\t\tconst geometryAttributes = geometry.attributes;\n\t\t\tlet attributesNum = 0;\n\n\t\t\tfor (const key in geometryAttributes) {\n\t\t\t\tconst cachedAttribute = cachedAttributes[key];\n\t\t\t\tconst geometryAttribute = geometryAttributes[key];\n\t\t\t\tif (cachedAttribute === undefined) return true;\n\t\t\t\tif (cachedAttribute.attribute !== geometryAttribute) return true;\n\t\t\t\tif (cachedAttribute.data !== geometryAttribute.data) return true;\n\t\t\t\tattributesNum++;\n\t\t\t}\n\n\t\t\tif (currentState.attributesNum !== attributesNum) return true;\n\t\t\tif (currentState.index !== index) return true;\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction saveCache(geometry, index) {\n\t\t\tconst cache = {};\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tlet attributesNum = 0;\n\n\t\t\tfor (const key in attributes) {\n\t\t\t\tconst attribute = attributes[key];\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif (attribute.data) {\n\t\t\t\t\tdata.data = attribute.data;\n\t\t\t\t}\n\n\t\t\t\tcache[key] = data;\n\t\t\t\tattributesNum++;\n\t\t\t}\n\n\t\t\tcurrentState.attributes = cache;\n\t\t\tcurrentState.attributesNum = attributesNum;\n\t\t\tcurrentState.index = index;\n\t\t}\n\n\t\tfunction initAttributes() {\n\t\t\tconst newAttributes = currentState.newAttributes;\n\n\t\t\tfor (let i = 0, il = newAttributes.length; i < il; i++) {\n\t\t\t\tnewAttributes[i] = 0;\n\t\t\t}\n\t\t}\n\n\t\tfunction enableAttribute(attribute) {\n\t\t\tenableAttributeAndDivisor(attribute, 0);\n\t\t}\n\n\t\tfunction enableAttributeAndDivisor(attribute, meshPerAttribute) {\n\t\t\tconst newAttributes = currentState.newAttributes;\n\t\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\t\tconst attributeDivisors = currentState.attributeDivisors;\n\t\t\tnewAttributes[attribute] = 1;\n\n\t\t\tif (enabledAttributes[attribute] === 0) {\n\t\t\t\tgl.enableVertexAttribArray(attribute);\n\t\t\t\tenabledAttributes[attribute] = 1;\n\t\t\t}\n\n\t\t\tif (attributeDivisors[attribute] !== meshPerAttribute) {\n\t\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get('ANGLE_instanced_arrays');\n\t\t\t\textension[capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE'](attribute, meshPerAttribute);\n\t\t\t\tattributeDivisors[attribute] = meshPerAttribute;\n\t\t\t}\n\t\t}\n\n\t\tfunction disableUnusedAttributes() {\n\t\t\tconst newAttributes = currentState.newAttributes;\n\t\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\t\tfor (let i = 0, il = enabledAttributes.length; i < il; i++) {\n\t\t\t\tif (enabledAttributes[i] !== newAttributes[i]) {\n\t\t\t\t\tgl.disableVertexAttribArray(i);\n\t\t\t\t\tenabledAttributes[i] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction vertexAttribPointer(index, size, type, normalized, stride, offset) {\n\t\t\tif (capabilities.isWebGL2 === true && (type === gl.INT || type === gl.UNSIGNED_INT)) {\n\t\t\t\tgl.vertexAttribIPointer(index, size, type, stride, offset);\n\t\t\t} else {\n\t\t\t\tgl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n\t\t\t}\n\t\t}\n\n\t\tfunction setupVertexAttributes(object, material, program, geometry) {\n\t\t\tif (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n\t\t\t\tif (extensions.get('ANGLE_instanced_arrays') === null) return;\n\t\t\t}\n\n\t\t\tinitAttributes();\n\t\t\tconst geometryAttributes = geometry.attributes;\n\t\t\tconst programAttributes = program.getAttributes();\n\t\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\t\tfor (const name in programAttributes) {\n\t\t\t\tconst programAttribute = programAttributes[name];\n\n\t\t\t\tif (programAttribute.location >= 0) {\n\t\t\t\t\tlet geometryAttribute = geometryAttributes[name];\n\n\t\t\t\t\tif (geometryAttribute === undefined) {\n\t\t\t\t\t\tif (name === 'instanceMatrix' && object.instanceMatrix) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\t\tif (name === 'instanceColor' && object.instanceColor) geometryAttribute = object.instanceColor;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (geometryAttribute !== undefined) {\n\t\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\t\t\t\t\t\tconst attribute = attributes.get(geometryAttribute); // TODO Attribute may not be available on context restore\n\n\t\t\t\t\t\tif (attribute === undefined) continue;\n\t\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t\tif (geometryAttribute.isInterleavedBufferAttribute) {\n\t\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\t\tif (data && data.isInstancedInterleavedBuffer) {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\t\tenableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined) {\n\t\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\t\tenableAttribute(programAttribute.location + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n\n\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\tvertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, stride * bytesPerElement, (offset + size / programAttribute.locationSize * i) * bytesPerElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (geometryAttribute.isInstancedBufferAttribute) {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\t\tenableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined) {\n\t\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\t\tenableAttribute(programAttribute.location + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n\n\t\t\t\t\t\t\tfor (let i = 0; i < programAttribute.locationSize; i++) {\n\t\t\t\t\t\t\t\tvertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, size * bytesPerElement, size / programAttribute.locationSize * i * bytesPerElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (materialDefaultAttributeValues !== undefined) {\n\t\t\t\t\t\tconst value = materialDefaultAttributeValues[name];\n\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\tswitch (value.length) {\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\tgl.vertexAttrib2fv(programAttribute.location, value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tgl.vertexAttrib3fv(programAttribute.location, value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tgl.vertexAttrib4fv(programAttribute.location, value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tgl.vertexAttrib1fv(programAttribute.location, value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdisableUnusedAttributes();\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\treset();\n\n\t\t\tfor (const geometryId in bindingStates) {\n\t\t\t\tconst programMap = bindingStates[geometryId];\n\n\t\t\t\tfor (const programId in programMap) {\n\t\t\t\t\tconst stateMap = programMap[programId];\n\n\t\t\t\t\tfor (const wireframe in stateMap) {\n\t\t\t\t\t\tdeleteVertexArrayObject(stateMap[wireframe].object);\n\t\t\t\t\t\tdelete stateMap[wireframe];\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete programMap[programId];\n\t\t\t\t}\n\n\t\t\t\tdelete bindingStates[geometryId];\n\t\t\t}\n\t\t}\n\n\t\tfunction releaseStatesOfGeometry(geometry) {\n\t\t\tif (bindingStates[geometry.id] === undefined) return;\n\t\t\tconst programMap = bindingStates[geometry.id];\n\n\t\t\tfor (const programId in programMap) {\n\t\t\t\tconst stateMap = programMap[programId];\n\n\t\t\t\tfor (const wireframe in stateMap) {\n\t\t\t\t\tdeleteVertexArrayObject(stateMap[wireframe].object);\n\t\t\t\t\tdelete stateMap[wireframe];\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[programId];\n\t\t\t}\n\n\t\t\tdelete bindingStates[geometry.id];\n\t\t}\n\n\t\tfunction releaseStatesOfProgram(program) {\n\t\t\tfor (const geometryId in bindingStates) {\n\t\t\t\tconst programMap = bindingStates[geometryId];\n\t\t\t\tif (programMap[program.id] === undefined) continue;\n\t\t\t\tconst stateMap = programMap[program.id];\n\n\t\t\t\tfor (const wireframe in stateMap) {\n\t\t\t\t\tdeleteVertexArrayObject(stateMap[wireframe].object);\n\t\t\t\t\tdelete stateMap[wireframe];\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[program.id];\n\t\t\t}\n\t\t}\n\n\t\tfunction reset() {\n\t\t\tresetDefaultState();\n\t\t\tif (currentState === defaultState) return;\n\t\t\tcurrentState = defaultState;\n\t\t\tbindVertexArrayObject(currentState.object);\n\t\t} // for backward-compatilibity\n\n\n\t\tfunction resetDefaultState() {\n\t\t\tdefaultState.geometry = null;\n\t\t\tdefaultState.program = null;\n\t\t\tdefaultState.wireframe = false;\n\t\t}\n\n\t\treturn {\n\t\t\tsetup: setup,\n\t\t\treset: reset,\n\t\t\tresetDefaultState: resetDefaultState,\n\t\t\tdispose: dispose,\n\t\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\t\t\tinitAttributes: initAttributes,\n\t\t\tenableAttribute: enableAttribute,\n\t\t\tdisableUnusedAttributes: disableUnusedAttributes\n\t\t};\n\t}\n\n\tfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\t\tlet mode;\n\n\t\tfunction setMode(value) {\n\t\t\tmode = value;\n\t\t}\n\n\t\tfunction render(start, count) {\n\t\t\tgl.drawArrays(mode, start, count);\n\t\t\tinfo.update(count, mode, 1);\n\t\t}\n\n\t\tfunction renderInstances(start, count, primcount) {\n\t\t\tif (primcount === 0) return;\n\t\t\tlet extension, methodName;\n\n\t\t\tif (isWebGL2) {\n\t\t\t\textension = gl;\n\t\t\t\tmethodName = 'drawArraysInstanced';\n\t\t\t} else {\n\t\t\t\textension = extensions.get('ANGLE_instanced_arrays');\n\t\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\t\tif (extension === null) {\n\t\t\t\t\tconsole.error('THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\textension[methodName](mode, start, count, primcount);\n\t\t\tinfo.update(count, mode, primcount);\n\t\t} //\n\n\n\t\tthis.setMode = setMode;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\t}\n\n\tfunction WebGLCapabilities(gl, extensions, parameters) {\n\t\tlet maxAnisotropy;\n\n\t\tfunction getMaxAnisotropy() {\n\t\t\tif (maxAnisotropy !== undefined) return maxAnisotropy;\n\n\t\t\tif (extensions.has('EXT_texture_filter_anisotropic') === true) {\n\t\t\t\tconst extension = extensions.get('EXT_texture_filter_anisotropic');\n\t\t\t\tmaxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n\t\t\t} else {\n\t\t\t\tmaxAnisotropy = 0;\n\t\t\t}\n\n\t\t\treturn maxAnisotropy;\n\t\t}\n\n\t\tfunction getMaxPrecision(precision) {\n\t\t\tif (precision === 'highp') {\n\t\t\t\tif (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) {\n\t\t\t\t\treturn 'highp';\n\t\t\t\t}\n\n\t\t\t\tprecision = 'mediump';\n\t\t\t}\n\n\t\t\tif (precision === 'mediump') {\n\t\t\t\tif (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) {\n\t\t\t\t\treturn 'mediump';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn 'lowp';\n\t\t}\n\t\t/* eslint-disable no-undef */\n\n\n\t\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext;\n\t\t/* eslint-enable no-undef */\n\n\t\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\t\tconst maxPrecision = getMaxPrecision(precision);\n\n\t\tif (maxPrecision !== precision) {\n\t\t\tconsole.warn('THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.');\n\t\t\tprecision = maxPrecision;\n\t\t}\n\n\t\tconst drawBuffers = isWebGL2 || extensions.has('WEBGL_draw_buffers');\n\t\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\t\tconst maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n\t\tconst maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n\t\tconst maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\t\tconst maxCubemapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n\t\tconst maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\t\tconst maxVertexUniforms = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n\t\tconst maxVaryings = gl.getParameter(gl.MAX_VARYING_VECTORS);\n\t\tconst maxFragmentUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n\t\tconst vertexTextures = maxVertexTextures > 0;\n\t\tconst floatFragmentTextures = isWebGL2 || extensions.has('OES_texture_float');\n\t\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\t\tconst maxSamples = isWebGL2 ? gl.getParameter(gl.MAX_SAMPLES) : 0;\n\t\treturn {\n\t\t\tisWebGL2: isWebGL2,\n\t\t\tdrawBuffers: drawBuffers,\n\t\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\t\tgetMaxPrecision: getMaxPrecision,\n\t\t\tprecision: precision,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\t\tmaxTextures: maxTextures,\n\t\t\tmaxVertexTextures: maxVertexTextures,\n\t\t\tmaxTextureSize: maxTextureSize,\n\t\t\tmaxCubemapSize: maxCubemapSize,\n\t\t\tmaxAttributes: maxAttributes,\n\t\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\t\tmaxVaryings: maxVaryings,\n\t\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\t\t\tvertexTextures: vertexTextures,\n\t\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\t\tfloatVertexTextures: floatVertexTextures,\n\t\t\tmaxSamples: maxSamples\n\t\t};\n\t}\n\n\tfunction WebGLClipping(properties) {\n\t\tconst scope = this;\n\t\tlet globalState = null,\n\t\t\t\tnumGlobalPlanes = 0,\n\t\t\t\tlocalClippingEnabled = false,\n\t\t\t\trenderingShadows = false;\n\t\tconst plane = new Plane(),\n\t\t\t\t\tviewNormalMatrix = new Matrix3(),\n\t\t\t\t\tuniform = {\n\t\t\tvalue: null,\n\t\t\tneedsUpdate: false\n\t\t};\n\t\tthis.uniform = uniform;\n\t\tthis.numPlanes = 0;\n\t\tthis.numIntersection = 0;\n\n\t\tthis.init = function (planes, enableLocalClipping, camera) {\n\t\t\tconst enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 || localClippingEnabled;\n\t\t\tlocalClippingEnabled = enableLocalClipping;\n\t\t\tglobalState = projectPlanes(planes, camera, 0);\n\t\t\tnumGlobalPlanes = planes.length;\n\t\t\treturn enabled;\n\t\t};\n\n\t\tthis.beginShadows = function () {\n\t\t\trenderingShadows = true;\n\t\t\tprojectPlanes(null);\n\t\t};\n\n\t\tthis.endShadows = function () {\n\t\t\trenderingShadows = false;\n\t\t\tresetGlobalState();\n\t\t};\n\n\t\tthis.setState = function (material, camera, useCache) {\n\t\t\tconst planes = material.clippingPlanes,\n\t\t\t\t\t\tclipIntersection = material.clipIntersection,\n\t\t\t\t\t\tclipShadows = material.clipShadows;\n\t\t\tconst materialProperties = properties.get(material);\n\n\t\t\tif (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n\t\t\t\t// there's no local clipping\n\t\t\t\tif (renderingShadows) {\n\t\t\t\t\t// there's no global clipping\n\t\t\t\t\tprojectPlanes(null);\n\t\t\t\t} else {\n\t\t\t\t\tresetGlobalState();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\t\t\t\tlGlobal = nGlobal * 4;\n\t\t\t\tlet dstArray = materialProperties.clippingState || null;\n\t\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\t\tdstArray = projectPlanes(planes, camera, lGlobal, useCache);\n\n\t\t\t\tfor (let i = 0; i !== lGlobal; ++i) {\n\t\t\t\t\tdstArray[i] = globalState[i];\n\t\t\t\t}\n\n\t\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\t\tthis.numPlanes += nGlobal;\n\t\t\t}\n\t\t};\n\n\t\tfunction resetGlobalState() {\n\t\t\tif (uniform.value !== globalState) {\n\t\t\t\tuniform.value = globalState;\n\t\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\t\t\t}\n\n\t\t\tscope.numPlanes = numGlobalPlanes;\n\t\t\tscope.numIntersection = 0;\n\t\t}\n\n\t\tfunction projectPlanes(planes, camera, dstOffset, skipTransform) {\n\t\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\t\tlet dstArray = null;\n\n\t\t\tif (nPlanes !== 0) {\n\t\t\t\tdstArray = uniform.value;\n\n\t\t\t\tif (skipTransform !== true || dstArray === null) {\n\t\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\t\t\t\t\tviewNormalMatrix.getNormalMatrix(viewMatrix);\n\n\t\t\t\t\tif (dstArray === null || dstArray.length < flatSize) {\n\t\t\t\t\t\tdstArray = new Float32Array(flatSize);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n\t\t\t\t\t\tplane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n\t\t\t\t\t\tplane.normal.toArray(dstArray, i4);\n\t\t\t\t\t\tdstArray[i4 + 3] = plane.constant;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tuniform.value = dstArray;\n\t\t\t\tuniform.needsUpdate = true;\n\t\t\t}\n\n\t\t\tscope.numPlanes = nPlanes;\n\t\t\tscope.numIntersection = 0;\n\t\t\treturn dstArray;\n\t\t}\n\t}\n\n\tfunction WebGLCubeMaps(renderer) {\n\t\tlet cubemaps = new WeakMap();\n\n\t\tfunction mapTextureMapping(texture, mapping) {\n\t\t\tif (mapping === EquirectangularReflectionMapping) {\n\t\t\t\ttexture.mapping = CubeReflectionMapping;\n\t\t\t} else if (mapping === EquirectangularRefractionMapping) {\n\t\t\t\ttexture.mapping = CubeRefractionMapping;\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t\tfunction get(texture) {\n\t\t\tif (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n\t\t\t\tconst mapping = texture.mapping;\n\n\t\t\t\tif (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n\t\t\t\t\tif (cubemaps.has(texture)) {\n\t\t\t\t\t\tconst cubemap = cubemaps.get(texture).texture;\n\t\t\t\t\t\treturn mapTextureMapping(cubemap, texture.mapping);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif (image && image.height > 0) {\n\t\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget(image.height / 2);\n\t\t\t\t\t\t\trenderTarget.fromEquirectangularTexture(renderer, texture);\n\t\t\t\t\t\t\tcubemaps.set(texture, renderTarget);\n\t\t\t\t\t\t\trenderer.setRenderTarget(currentRenderTarget);\n\t\t\t\t\t\t\ttexture.addEventListener('dispose', onTextureDispose);\n\t\t\t\t\t\t\treturn mapTextureMapping(renderTarget.texture, texture.mapping);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t\tfunction onTextureDispose(event) {\n\t\t\tconst texture = event.target;\n\t\t\ttexture.removeEventListener('dispose', onTextureDispose);\n\t\t\tconst cubemap = cubemaps.get(texture);\n\n\t\t\tif (cubemap !== undefined) {\n\t\t\t\tcubemaps.delete(texture);\n\t\t\t\tcubemap.dispose();\n\t\t\t}\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tcubemaps = new WeakMap();\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\tclass OrthographicCamera extends Camera {\n\t\tconstructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000) {\n\t\t\tsuper();\n\t\t\tthis.type = 'OrthographicCamera';\n\t\t\tthis.zoom = 1;\n\t\t\tthis.view = null;\n\t\t\tthis.left = left;\n\t\t\tthis.right = right;\n\t\t\tthis.top = top;\n\t\t\tthis.bottom = bottom;\n\t\t\tthis.near = near;\n\t\t\tthis.far = far;\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tcopy(source, recursive) {\n\t\t\tsuper.copy(source, recursive);\n\t\t\tthis.left = source.left;\n\t\t\tthis.right = source.right;\n\t\t\tthis.top = source.top;\n\t\t\tthis.bottom = source.bottom;\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\t\t\tthis.zoom = source.zoom;\n\t\t\tthis.view = source.view === null ? null : Object.assign({}, source.view);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetViewOffset(fullWidth, fullHeight, x, y, width, height) {\n\t\t\tif (this.view === null) {\n\t\t\t\tthis.view = {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tfullWidth: 1,\n\t\t\t\t\tfullHeight: 1,\n\t\t\t\t\toffsetX: 0,\n\t\t\t\t\toffsetY: 0,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.view.enabled = true;\n\t\t\tthis.view.fullWidth = fullWidth;\n\t\t\tthis.view.fullHeight = fullHeight;\n\t\t\tthis.view.offsetX = x;\n\t\t\tthis.view.offsetY = y;\n\t\t\tthis.view.width = width;\n\t\t\tthis.view.height = height;\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tclearViewOffset() {\n\t\t\tif (this.view !== null) {\n\t\t\t\tthis.view.enabled = false;\n\t\t\t}\n\n\t\t\tthis.updateProjectionMatrix();\n\t\t}\n\n\t\tupdateProjectionMatrix() {\n\t\t\tconst dx = (this.right - this.left) / (2 * this.zoom);\n\t\t\tconst dy = (this.top - this.bottom) / (2 * this.zoom);\n\t\t\tconst cx = (this.right + this.left) / 2;\n\t\t\tconst cy = (this.top + this.bottom) / 2;\n\t\t\tlet left = cx - dx;\n\t\t\tlet right = cx + dx;\n\t\t\tlet top = cy + dy;\n\t\t\tlet bottom = cy - dy;\n\n\t\t\tif (this.view !== null && this.view.enabled) {\n\t\t\t\tconst scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n\t\t\t\tconst scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n\t\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\t\tright = left + scaleW * this.view.width;\n\t\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\t\tbottom = top - scaleH * this.view.height;\n\t\t\t}\n\n\t\t\tthis.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n\t\t\tthis.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.object.zoom = this.zoom;\n\t\t\tdata.object.left = this.left;\n\t\t\tdata.object.right = this.right;\n\t\t\tdata.object.top = this.top;\n\t\t\tdata.object.bottom = this.bottom;\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\t\t\tif (this.view !== null) data.object.view = Object.assign({}, this.view);\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tOrthographicCamera.prototype.isOrthographicCamera = true;\n\n\tclass RawShaderMaterial extends ShaderMaterial {\n\t\tconstructor(parameters) {\n\t\t\tsuper(parameters);\n\t\t\tthis.type = 'RawShaderMaterial';\n\t\t}\n\n\t}\n\n\tRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\tconst LOD_MIN = 4;\n\tconst LOD_MAX = 8;\n\tconst SIZE_MAX = Math.pow(2, LOD_MAX); // The standard deviations (radians) associated with the extra mips. These are\n\t// chosen to approximate a Trowbridge-Reitz distribution function times the\n\t// geometric shadowing function. These sigma values squared must match the\n\t// variance #defines in cube_uv_reflection_fragment.glsl.js.\n\n\tconst EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\n\tconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length; // The maximum length of the blur for loop. Smaller sigmas will use fewer\n\t// samples and exit early, but not recompile the shader.\n\n\tconst MAX_SAMPLES = 20;\n\tconst ENCODINGS = {\n\t\t[LinearEncoding]: 0,\n\t\t[sRGBEncoding]: 1,\n\t\t[RGBEEncoding]: 2,\n\t\t[RGBM7Encoding]: 3,\n\t\t[RGBM16Encoding]: 4,\n\t\t[RGBDEncoding]: 5,\n\t\t[GammaEncoding]: 6\n\t};\n\n\tconst _flatCamera = /*@__PURE__*/new OrthographicCamera();\n\n\tconst {\n\t\t_lodPlanes,\n\t\t_sizeLods,\n\t\t_sigmas\n\t} = /*@__PURE__*/_createPlanes();\n\n\tconst _clearColor = /*@__PURE__*/new Color();\n\n\tlet _oldTarget = null; // Golden Ratio\n\n\tconst PHI = (1 + Math.sqrt(5)) / 2;\n\tconst INV_PHI = 1 / PHI; // Vertices of a dodecahedron (except the opposites, which represent the\n\t// same axis), used as axis directions evenly spread on a sphere.\n\n\tconst _axisDirections = [/*@__PURE__*/new Vector3(1, 1, 1), /*@__PURE__*/new Vector3(-1, 1, 1), /*@__PURE__*/new Vector3(1, 1, -1), /*@__PURE__*/new Vector3(-1, 1, -1), /*@__PURE__*/new Vector3(0, PHI, INV_PHI), /*@__PURE__*/new Vector3(0, PHI, -INV_PHI), /*@__PURE__*/new Vector3(INV_PHI, 0, PHI), /*@__PURE__*/new Vector3(-INV_PHI, 0, PHI), /*@__PURE__*/new Vector3(PHI, INV_PHI, 0), /*@__PURE__*/new Vector3(-PHI, INV_PHI, 0)];\n\t/**\n\t * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n\t * (PMREM) from a cubeMap environment texture. This allows different levels of\n\t * blur to be quickly accessed based on material roughness. It is packed into a\n\t * special CubeUV format that allows us to perform custom interpolation so that\n\t * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n\t * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n\t * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n\t * higher roughness levels. In this way we maintain resolution to smoothly\n\t * interpolate diffuse lighting while limiting sampling computation.\n\t *\n\t * Paper: Fast, Accurate Image-Based Lighting\n\t * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n\t*/\n\n\tclass PMREMGenerator {\n\t\tconstructor(renderer) {\n\t\t\tthis._renderer = renderer;\n\t\t\tthis._pingPongRenderTarget = null;\n\t\t\tthis._blurMaterial = _getBlurShader(MAX_SAMPLES);\n\t\t\tthis._equirectShader = null;\n\t\t\tthis._cubemapShader = null;\n\n\t\t\tthis._compileMaterial(this._blurMaterial);\n\t\t}\n\t\t/**\n\t\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t\t * is placed at the origin).\n\t\t */\n\n\n\t\tfromScene(scene, sigma = 0, near = 0.1, far = 100) {\n\t\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\t\tthis._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n\n\t\t\tif (sigma > 0) {\n\t\t\t\tthis._blur(cubeUVRenderTarget, 0, 0, sigma);\n\t\t\t}\n\n\t\t\tthis._applyPMREM(cubeUVRenderTarget);\n\n\t\t\tthis._cleanup(cubeUVRenderTarget);\n\n\t\t\treturn cubeUVRenderTarget;\n\t\t}\n\t\t/**\n\t\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t\t * as this matches best with the 256 x 256 cubemap output.\n\t\t */\n\n\n\t\tfromEquirectangular(equirectangular) {\n\t\t\treturn this._fromTexture(equirectangular);\n\t\t}\n\t\t/**\n\t\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t\t * as this matches best with the 256 x 256 cubemap output.\n\t\t */\n\n\n\t\tfromCubemap(cubemap) {\n\t\t\treturn this._fromTexture(cubemap);\n\t\t}\n\t\t/**\n\t\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t\t * your texture's network fetch for increased concurrency.\n\t\t */\n\n\n\t\tcompileCubemapShader() {\n\t\t\tif (this._cubemapShader === null) {\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t\tthis._compileMaterial(this._cubemapShader);\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t\t * your texture's network fetch for increased concurrency.\n\t\t */\n\n\n\t\tcompileEquirectangularShader() {\n\t\t\tif (this._equirectShader === null) {\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t\tthis._compileMaterial(this._equirectShader);\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t\t * one of them will cause any others to also become unusable.\n\t\t */\n\n\n\t\tdispose() {\n\t\t\tthis._blurMaterial.dispose();\n\n\t\t\tif (this._cubemapShader !== null) this._cubemapShader.dispose();\n\t\t\tif (this._equirectShader !== null) this._equirectShader.dispose();\n\n\t\t\tfor (let i = 0; i < _lodPlanes.length; i++) {\n\t\t\t\t_lodPlanes[i].dispose();\n\t\t\t}\n\t\t} // private interface\n\n\n\t\t_cleanup(outputTarget) {\n\t\t\tthis._pingPongRenderTarget.dispose();\n\n\t\t\tthis._renderer.setRenderTarget(_oldTarget);\n\n\t\t\toutputTarget.scissorTest = false;\n\n\t\t\t_setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n\t\t}\n\n\t\t_fromTexture(texture) {\n\t\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\t\tconst cubeUVRenderTarget = this._allocateTargets(texture);\n\n\t\t\tthis._textureToCubeUV(texture, cubeUVRenderTarget);\n\n\t\t\tthis._applyPMREM(cubeUVRenderTarget);\n\n\t\t\tthis._cleanup(cubeUVRenderTarget);\n\n\t\t\treturn cubeUVRenderTarget;\n\t\t}\n\n\t\t_allocateTargets(texture) {\n\t\t\t// warning: null texture is valid\n\t\t\tconst params = {\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\tminFilter: NearestFilter,\n\t\t\t\tgenerateMipmaps: false,\n\t\t\t\ttype: UnsignedByteType,\n\t\t\t\tformat: RGBEFormat,\n\t\t\t\tencoding: _isLDR(texture) ? texture.encoding : RGBEEncoding,\n\t\t\t\tdepthBuffer: false\n\t\t\t};\n\n\t\t\tconst cubeUVRenderTarget = _createRenderTarget(params);\n\n\t\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget(params);\n\t\t\treturn cubeUVRenderTarget;\n\t\t}\n\n\t\t_compileMaterial(material) {\n\t\t\tconst tmpMesh = new Mesh(_lodPlanes[0], material);\n\n\t\t\tthis._renderer.compile(tmpMesh, _flatCamera);\n\t\t}\n\n\t\t_sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n\t\t\tconst fov = 90;\n\t\t\tconst aspect = 1;\n\t\t\tconst cubeCamera = new PerspectiveCamera(fov, aspect, near, far);\n\t\t\tconst upSign = [1, -1, 1, 1, 1, 1];\n\t\t\tconst forwardSign = [1, 1, 1, -1, -1, -1];\n\t\t\tconst renderer = this._renderer;\n\t\t\tconst originalAutoClear = renderer.autoClear;\n\t\t\tconst outputEncoding = renderer.outputEncoding;\n\t\t\tconst toneMapping = renderer.toneMapping;\n\t\t\trenderer.getClearColor(_clearColor);\n\t\t\trenderer.toneMapping = NoToneMapping;\n\t\t\trenderer.outputEncoding = LinearEncoding;\n\t\t\trenderer.autoClear = false;\n\t\t\tconst backgroundMaterial = new MeshBasicMaterial({\n\t\t\t\tname: 'PMREM.Background',\n\t\t\t\tside: BackSide,\n\t\t\t\tdepthWrite: false,\n\t\t\t\tdepthTest: false\n\t\t\t});\n\t\t\tconst backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n\t\t\tlet useSolidColor = false;\n\t\t\tconst background = scene.background;\n\n\t\t\tif (background) {\n\t\t\t\tif (background.isColor) {\n\t\t\t\t\tbackgroundMaterial.color.copy(background);\n\t\t\t\t\tscene.background = null;\n\t\t\t\t\tuseSolidColor = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbackgroundMaterial.color.copy(_clearColor);\n\t\t\t\tuseSolidColor = true;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tconst col = i % 3;\n\n\t\t\t\tif (col == 0) {\n\t\t\t\t\tcubeCamera.up.set(0, upSign[i], 0);\n\t\t\t\t\tcubeCamera.lookAt(forwardSign[i], 0, 0);\n\t\t\t\t} else if (col == 1) {\n\t\t\t\t\tcubeCamera.up.set(0, 0, upSign[i]);\n\t\t\t\t\tcubeCamera.lookAt(0, forwardSign[i], 0);\n\t\t\t\t} else {\n\t\t\t\t\tcubeCamera.up.set(0, upSign[i], 0);\n\t\t\t\t\tcubeCamera.lookAt(0, 0, forwardSign[i]);\n\t\t\t\t}\n\n\t\t\t\t_setViewport(cubeUVRenderTarget, col * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX);\n\n\t\t\t\trenderer.setRenderTarget(cubeUVRenderTarget);\n\n\t\t\t\tif (useSolidColor) {\n\t\t\t\t\trenderer.render(backgroundBox, cubeCamera);\n\t\t\t\t}\n\n\t\t\t\trenderer.render(scene, cubeCamera);\n\t\t\t}\n\n\t\t\tbackgroundBox.geometry.dispose();\n\t\t\tbackgroundBox.material.dispose();\n\t\t\trenderer.toneMapping = toneMapping;\n\t\t\trenderer.outputEncoding = outputEncoding;\n\t\t\trenderer.autoClear = originalAutoClear;\n\t\t\tscene.background = background;\n\t\t}\n\n\t\t_textureToCubeUV(texture, cubeUVRenderTarget) {\n\t\t\tconst renderer = this._renderer;\n\n\t\t\tif (texture.isCubeTexture) {\n\t\t\t\tif (this._cubemapShader == null) {\n\t\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this._equirectShader == null) {\n\t\t\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\t\tconst mesh = new Mesh(_lodPlanes[0], material);\n\t\t\tconst uniforms = material.uniforms;\n\t\t\tuniforms['envMap'].value = texture;\n\n\t\t\tif (!texture.isCubeTexture) {\n\t\t\t\tuniforms['texelSize'].value.set(1.0 / texture.image.width, 1.0 / texture.image.height);\n\t\t\t}\n\n\t\t\tuniforms['inputEncoding'].value = ENCODINGS[texture.encoding];\n\t\t\tuniforms['outputEncoding'].value = ENCODINGS[cubeUVRenderTarget.texture.encoding];\n\n\t\t\t_setViewport(cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX);\n\n\t\t\trenderer.setRenderTarget(cubeUVRenderTarget);\n\t\t\trenderer.render(mesh, _flatCamera);\n\t\t}\n\n\t\t_applyPMREM(cubeUVRenderTarget) {\n\t\t\tconst renderer = this._renderer;\n\t\t\tconst autoClear = renderer.autoClear;\n\t\t\trenderer.autoClear = false;\n\n\t\t\tfor (let i = 1; i < TOTAL_LODS; i++) {\n\t\t\t\tconst sigma = Math.sqrt(_sigmas[i] * _sigmas[i] - _sigmas[i - 1] * _sigmas[i - 1]);\n\t\t\t\tconst poleAxis = _axisDirections[(i - 1) % _axisDirections.length];\n\n\t\t\t\tthis._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis);\n\t\t\t}\n\n\t\t\trenderer.autoClear = autoClear;\n\t\t}\n\t\t/**\n\t\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t\t * accurate at the poles, but still does a decent job.\n\t\t */\n\n\n\t\t_blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n\t\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\t\tthis._halfBlur(cubeUVRenderTarget, pingPongRenderTarget, lodIn, lodOut, sigma, 'latitudinal', poleAxis);\n\n\t\t\tthis._halfBlur(pingPongRenderTarget, cubeUVRenderTarget, lodOut, lodOut, sigma, 'longitudinal', poleAxis);\n\t\t}\n\n\t\t_halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n\t\t\tconst renderer = this._renderer;\n\t\t\tconst blurMaterial = this._blurMaterial;\n\n\t\t\tif (direction !== 'latitudinal' && direction !== 'longitudinal') {\n\t\t\t\tconsole.error('blur direction must be either latitudinal or longitudinal!');\n\t\t\t} // Number of standard deviations at which to cut off the discrete approximation.\n\n\n\t\t\tconst STANDARD_DEVIATIONS = 3;\n\t\t\tconst blurMesh = new Mesh(_lodPlanes[lodOut], blurMaterial);\n\t\t\tconst blurUniforms = blurMaterial.uniforms;\n\t\t\tconst pixels = _sizeLods[lodIn] - 1;\n\t\t\tconst radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n\t\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\t\tconst samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n\n\t\t\tif (samples > MAX_SAMPLES) {\n\t\t\t\tconsole.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n\t\t\t}\n\n\t\t\tconst weights = [];\n\t\t\tlet sum = 0;\n\n\t\t\tfor (let i = 0; i < MAX_SAMPLES; ++i) {\n\t\t\t\tconst x = i / sigmaPixels;\n\t\t\t\tconst weight = Math.exp(-x * x / 2);\n\t\t\t\tweights.push(weight);\n\n\t\t\t\tif (i == 0) {\n\t\t\t\t\tsum += weight;\n\t\t\t\t} else if (i < samples) {\n\t\t\t\t\tsum += 2 * weight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < weights.length; i++) {\n\t\t\t\tweights[i] = weights[i] / sum;\n\t\t\t}\n\n\t\t\tblurUniforms['envMap'].value = targetIn.texture;\n\t\t\tblurUniforms['samples'].value = samples;\n\t\t\tblurUniforms['weights'].value = weights;\n\t\t\tblurUniforms['latitudinal'].value = direction === 'latitudinal';\n\n\t\t\tif (poleAxis) {\n\t\t\t\tblurUniforms['poleAxis'].value = poleAxis;\n\t\t\t}\n\n\t\t\tblurUniforms['dTheta'].value = radiansPerPixel;\n\t\t\tblurUniforms['mipInt'].value = LOD_MAX - lodIn;\n\t\t\tblurUniforms['inputEncoding'].value = ENCODINGS[targetIn.texture.encoding];\n\t\t\tblurUniforms['outputEncoding'].value = ENCODINGS[targetIn.texture.encoding];\n\t\t\tconst outputSize = _sizeLods[lodOut];\n\t\t\tconst x = 3 * Math.max(0, SIZE_MAX - 2 * outputSize);\n\t\t\tconst y = (lodOut === 0 ? 0 : 2 * SIZE_MAX) + 2 * outputSize * (lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0);\n\n\t\t\t_setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n\n\t\t\trenderer.setRenderTarget(targetOut);\n\t\t\trenderer.render(blurMesh, _flatCamera);\n\t\t}\n\n\t}\n\n\tfunction _isLDR(texture) {\n\t\tif (texture === undefined || texture.type !== UnsignedByteType) return false;\n\t\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\t}\n\n\tfunction _createPlanes() {\n\t\tconst _lodPlanes = [];\n\t\tconst _sizeLods = [];\n\t\tconst _sigmas = [];\n\t\tlet lod = LOD_MAX;\n\n\t\tfor (let i = 0; i < TOTAL_LODS; i++) {\n\t\t\tconst sizeLod = Math.pow(2, lod);\n\n\t\t\t_sizeLods.push(sizeLod);\n\n\t\t\tlet sigma = 1.0 / sizeLod;\n\n\t\t\tif (i > LOD_MAX - LOD_MIN) {\n\t\t\t\tsigma = EXTRA_LOD_SIGMA[i - LOD_MAX + LOD_MIN - 1];\n\t\t\t} else if (i == 0) {\n\t\t\t\tsigma = 0;\n\t\t\t}\n\n\t\t\t_sigmas.push(sigma);\n\n\t\t\tconst texelSize = 1.0 / (sizeLod - 1);\n\t\t\tconst min = -texelSize / 2;\n\t\t\tconst max = 1 + texelSize / 2;\n\t\t\tconst uv1 = [min, min, max, min, max, max, min, min, max, max, min, max];\n\t\t\tconst cubeFaces = 6;\n\t\t\tconst vertices = 6;\n\t\t\tconst positionSize = 3;\n\t\t\tconst uvSize = 2;\n\t\t\tconst faceIndexSize = 1;\n\t\t\tconst position = new Float32Array(positionSize * vertices * cubeFaces);\n\t\t\tconst uv = new Float32Array(uvSize * vertices * cubeFaces);\n\t\t\tconst faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n\n\t\t\tfor (let face = 0; face < cubeFaces; face++) {\n\t\t\t\tconst x = face % 3 * 2 / 3 - 1;\n\t\t\t\tconst y = face > 2 ? 0 : -1;\n\t\t\t\tconst coordinates = [x, y, 0, x + 2 / 3, y, 0, x + 2 / 3, y + 1, 0, x, y, 0, x + 2 / 3, y + 1, 0, x, y + 1, 0];\n\t\t\t\tposition.set(coordinates, positionSize * vertices * face);\n\t\t\t\tuv.set(uv1, uvSize * vertices * face);\n\t\t\t\tconst fill = [face, face, face, face, face, face];\n\t\t\t\tfaceIndex.set(fill, faceIndexSize * vertices * face);\n\t\t\t}\n\n\t\t\tconst planes = new BufferGeometry();\n\t\t\tplanes.setAttribute('position', new BufferAttribute(position, positionSize));\n\t\t\tplanes.setAttribute('uv', new BufferAttribute(uv, uvSize));\n\t\t\tplanes.setAttribute('faceIndex', new BufferAttribute(faceIndex, faceIndexSize));\n\n\t\t\t_lodPlanes.push(planes);\n\n\t\t\tif (lod > LOD_MIN) {\n\t\t\t\tlod--;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t_lodPlanes,\n\t\t\t_sizeLods,\n\t\t\t_sigmas\n\t\t};\n\t}\n\n\tfunction _createRenderTarget(params) {\n\t\tconst cubeUVRenderTarget = new WebGLRenderTarget(3 * SIZE_MAX, 3 * SIZE_MAX, params);\n\t\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\t\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\t\tcubeUVRenderTarget.scissorTest = true;\n\t\treturn cubeUVRenderTarget;\n\t}\n\n\tfunction _setViewport(target, x, y, width, height) {\n\t\ttarget.viewport.set(x, y, width, height);\n\t\ttarget.scissor.set(x, y, width, height);\n\t}\n\n\tfunction _getBlurShader(maxSamples) {\n\t\tconst weights = new Float32Array(maxSamples);\n\t\tconst poleAxis = new Vector3(0, 1, 0);\n\t\tconst shaderMaterial = new RawShaderMaterial({\n\t\t\tname: 'SphericalGaussianBlur',\n\t\t\tdefines: {\n\t\t\t\t'n': maxSamples\n\t\t\t},\n\t\t\tuniforms: {\n\t\t\t\t'envMap': {\n\t\t\t\t\tvalue: null\n\t\t\t\t},\n\t\t\t\t'samples': {\n\t\t\t\t\tvalue: 1\n\t\t\t\t},\n\t\t\t\t'weights': {\n\t\t\t\t\tvalue: weights\n\t\t\t\t},\n\t\t\t\t'latitudinal': {\n\t\t\t\t\tvalue: false\n\t\t\t\t},\n\t\t\t\t'dTheta': {\n\t\t\t\t\tvalue: 0\n\t\t\t\t},\n\t\t\t\t'mipInt': {\n\t\t\t\t\tvalue: 0\n\t\t\t\t},\n\t\t\t\t'poleAxis': {\n\t\t\t\t\tvalue: poleAxis\n\t\t\t\t},\n\t\t\t\t'inputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t},\n\t\t\t\t'outputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: _getCommonVertexShader(),\n\t\t\tfragmentShader:\n\t\t\t/* glsl */\n\t\t\t`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\t\t\tblending: NoBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false\n\t\t});\n\t\treturn shaderMaterial;\n\t}\n\n\tfunction _getEquirectShader() {\n\t\tconst texelSize = new Vector2(1, 1);\n\t\tconst shaderMaterial = new RawShaderMaterial({\n\t\t\tname: 'EquirectangularToCubeUV',\n\t\t\tuniforms: {\n\t\t\t\t'envMap': {\n\t\t\t\t\tvalue: null\n\t\t\t\t},\n\t\t\t\t'texelSize': {\n\t\t\t\t\tvalue: texelSize\n\t\t\t\t},\n\t\t\t\t'inputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t},\n\t\t\t\t'outputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: _getCommonVertexShader(),\n\t\t\tfragmentShader:\n\t\t\t/* glsl */\n\t\t\t`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\t\t\tblending: NoBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false\n\t\t});\n\t\treturn shaderMaterial;\n\t}\n\n\tfunction _getCubemapShader() {\n\t\tconst shaderMaterial = new RawShaderMaterial({\n\t\t\tname: 'CubemapToCubeUV',\n\t\t\tuniforms: {\n\t\t\t\t'envMap': {\n\t\t\t\t\tvalue: null\n\t\t\t\t},\n\t\t\t\t'inputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t},\n\t\t\t\t'outputEncoding': {\n\t\t\t\t\tvalue: ENCODINGS[LinearEncoding]\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: _getCommonVertexShader(),\n\t\t\tfragmentShader:\n\t\t\t/* glsl */\n\t\t\t`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${_getEncodings()}\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\t\t\tblending: NoBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false\n\t\t});\n\t\treturn shaderMaterial;\n\t}\n\n\tfunction _getCommonVertexShader() {\n\t\treturn (\n\t\t\t/* glsl */\n\t\t\t`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`\n\t\t);\n\t}\n\n\tfunction _getEncodings() {\n\t\treturn (\n\t\t\t/* glsl */\n\t\t\t`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`\n\t\t);\n\t}\n\n\tfunction WebGLCubeUVMaps(renderer) {\n\t\tlet cubeUVmaps = new WeakMap();\n\t\tlet pmremGenerator = null;\n\n\t\tfunction get(texture) {\n\t\t\tif (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n\t\t\t\tconst mapping = texture.mapping;\n\t\t\t\tconst isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n\t\t\t\tconst isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n\n\t\t\t\tif (isEquirectMap || isCubeMap) {\n\t\t\t\t\t// equirect/cube map to cubeUV conversion\n\t\t\t\t\tif (cubeUVmaps.has(texture)) {\n\t\t\t\t\t\treturn cubeUVmaps.get(texture).texture;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n\t\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\t\t\t\t\tif (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer);\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n\t\t\t\t\t\t\tcubeUVmaps.set(texture, renderTarget);\n\t\t\t\t\t\t\trenderer.setRenderTarget(currentRenderTarget);\n\t\t\t\t\t\t\ttexture.addEventListener('dispose', onTextureDispose);\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t\tfunction isCubeTextureComplete(image) {\n\t\t\tlet count = 0;\n\t\t\tconst length = 6;\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tif (image[i] !== undefined) count++;\n\t\t\t}\n\n\t\t\treturn count === length;\n\t\t}\n\n\t\tfunction onTextureDispose(event) {\n\t\t\tconst texture = event.target;\n\t\t\ttexture.removeEventListener('dispose', onTextureDispose);\n\t\t\tconst cubemapUV = cubeUVmaps.get(texture);\n\n\t\t\tif (cubemapUV !== undefined) {\n\t\t\t\tcubeUVmaps.delete(texture);\n\t\t\t\tcubemapUV.dispose();\n\t\t\t}\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tcubeUVmaps = new WeakMap();\n\n\t\t\tif (pmremGenerator !== null) {\n\t\t\t\tpmremGenerator.dispose();\n\t\t\t\tpmremGenerator = null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\tfunction WebGLExtensions(gl) {\n\t\tconst extensions = {};\n\n\t\tfunction getExtension(name) {\n\t\t\tif (extensions[name] !== undefined) {\n\t\t\t\treturn extensions[name];\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch (name) {\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension('WEBGL_depth_texture') || gl.getExtension('MOZ_WEBGL_depth_texture') || gl.getExtension('WEBKIT_WEBGL_depth_texture');\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension(name);\n\t\t\t}\n\n\t\t\textensions[name] = extension;\n\t\t\treturn extension;\n\t\t}\n\n\t\treturn {\n\t\t\thas: function (name) {\n\t\t\t\treturn getExtension(name) !== null;\n\t\t\t},\n\t\t\tinit: function (capabilities) {\n\t\t\t\tif (capabilities.isWebGL2) {\n\t\t\t\t\tgetExtension('EXT_color_buffer_float');\n\t\t\t\t} else {\n\t\t\t\t\tgetExtension('WEBGL_depth_texture');\n\t\t\t\t\tgetExtension('OES_texture_float');\n\t\t\t\t\tgetExtension('OES_texture_half_float');\n\t\t\t\t\tgetExtension('OES_texture_half_float_linear');\n\t\t\t\t\tgetExtension('OES_standard_derivatives');\n\t\t\t\t\tgetExtension('OES_element_index_uint');\n\t\t\t\t\tgetExtension('OES_vertex_array_object');\n\t\t\t\t\tgetExtension('ANGLE_instanced_arrays');\n\t\t\t\t}\n\n\t\t\t\tgetExtension('OES_texture_float_linear');\n\t\t\t\tgetExtension('EXT_color_buffer_half_float');\n\t\t\t},\n\t\t\tget: function (name) {\n\t\t\t\tconst extension = getExtension(name);\n\n\t\t\t\tif (extension === null) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: ' + name + ' extension not supported.');\n\t\t\t\t}\n\n\t\t\t\treturn extension;\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n\t\tconst geometries = {};\n\t\tconst wireframeAttributes = new WeakMap();\n\n\t\tfunction onGeometryDispose(event) {\n\t\t\tconst geometry = event.target;\n\n\t\t\tif (geometry.index !== null) {\n\t\t\t\tattributes.remove(geometry.index);\n\t\t\t}\n\n\t\t\tfor (const name in geometry.attributes) {\n\t\t\t\tattributes.remove(geometry.attributes[name]);\n\t\t\t}\n\n\t\t\tgeometry.removeEventListener('dispose', onGeometryDispose);\n\t\t\tdelete geometries[geometry.id];\n\t\t\tconst attribute = wireframeAttributes.get(geometry);\n\n\t\t\tif (attribute) {\n\t\t\t\tattributes.remove(attribute);\n\t\t\t\twireframeAttributes.delete(geometry);\n\t\t\t}\n\n\t\t\tbindingStates.releaseStatesOfGeometry(geometry);\n\n\t\t\tif (geometry.isInstancedBufferGeometry === true) {\n\t\t\t\tdelete geometry._maxInstanceCount;\n\t\t\t} //\n\n\n\t\t\tinfo.memory.geometries--;\n\t\t}\n\n\t\tfunction get(object, geometry) {\n\t\t\tif (geometries[geometry.id] === true) return geometry;\n\t\t\tgeometry.addEventListener('dispose', onGeometryDispose);\n\t\t\tgeometries[geometry.id] = true;\n\t\t\tinfo.memory.geometries++;\n\t\t\treturn geometry;\n\t\t}\n\n\t\tfunction update(geometry) {\n\t\t\tconst geometryAttributes = geometry.attributes; // Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\t\tfor (const name in geometryAttributes) {\n\t\t\t\tattributes.update(geometryAttributes[name], gl.ARRAY_BUFFER);\n\t\t\t} // morph targets\n\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor (const name in morphAttributes) {\n\t\t\t\tconst array = morphAttributes[name];\n\n\t\t\t\tfor (let i = 0, l = array.length; i < l; i++) {\n\t\t\t\t\tattributes.update(array[i], gl.ARRAY_BUFFER);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction updateWireframeAttribute(geometry) {\n\t\t\tconst indices = [];\n\t\t\tconst geometryIndex = geometry.index;\n\t\t\tconst geometryPosition = geometry.attributes.position;\n\t\t\tlet version = 0;\n\n\t\t\tif (geometryIndex !== null) {\n\t\t\t\tconst array = geometryIndex.array;\n\t\t\t\tversion = geometryIndex.version;\n\n\t\t\t\tfor (let i = 0, l = array.length; i < l; i += 3) {\n\t\t\t\t\tconst a = array[i + 0];\n\t\t\t\t\tconst b = array[i + 1];\n\t\t\t\t\tconst c = array[i + 2];\n\t\t\t\t\tindices.push(a, b, b, c, c, a);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst array = geometryPosition.array;\n\t\t\t\tversion = geometryPosition.version;\n\n\t\t\t\tfor (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n\t\t\t\t\tconst a = i + 0;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\t\t\t\t\tindices.push(a, b, b, c, c, a);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n\t\t\tattribute.version = version; // Updating index buffer in VAO now. See WebGLBindingStates\n\t\t\t//\n\n\t\t\tconst previousAttribute = wireframeAttributes.get(geometry);\n\t\t\tif (previousAttribute) attributes.remove(previousAttribute); //\n\n\t\t\twireframeAttributes.set(geometry, attribute);\n\t\t}\n\n\t\tfunction getWireframeAttribute(geometry) {\n\t\t\tconst currentAttribute = wireframeAttributes.get(geometry);\n\n\t\t\tif (currentAttribute) {\n\t\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\t\tif (geometryIndex !== null) {\n\t\t\t\t\t// if the attribute is obsolete, create a new one\n\t\t\t\t\tif (currentAttribute.version < geometryIndex.version) {\n\t\t\t\t\t\tupdateWireframeAttribute(geometry);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tupdateWireframeAttribute(geometry);\n\t\t\t}\n\n\t\t\treturn wireframeAttributes.get(geometry);\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tupdate: update,\n\t\t\tgetWireframeAttribute: getWireframeAttribute\n\t\t};\n\t}\n\n\tfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\t\tlet mode;\n\n\t\tfunction setMode(value) {\n\t\t\tmode = value;\n\t\t}\n\n\t\tlet type, bytesPerElement;\n\n\t\tfunction setIndex(value) {\n\t\t\ttype = value.type;\n\t\t\tbytesPerElement = value.bytesPerElement;\n\t\t}\n\n\t\tfunction render(start, count) {\n\t\t\tgl.drawElements(mode, count, type, start * bytesPerElement);\n\t\t\tinfo.update(count, mode, 1);\n\t\t}\n\n\t\tfunction renderInstances(start, count, primcount) {\n\t\t\tif (primcount === 0) return;\n\t\t\tlet extension, methodName;\n\n\t\t\tif (isWebGL2) {\n\t\t\t\textension = gl;\n\t\t\t\tmethodName = 'drawElementsInstanced';\n\t\t\t} else {\n\t\t\t\textension = extensions.get('ANGLE_instanced_arrays');\n\t\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\t\tif (extension === null) {\n\t\t\t\t\tconsole.error('THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\textension[methodName](mode, count, type, start * bytesPerElement, primcount);\n\t\t\tinfo.update(count, mode, primcount);\n\t\t} //\n\n\n\t\tthis.setMode = setMode;\n\t\tthis.setIndex = setIndex;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\t}\n\n\tfunction WebGLInfo(gl) {\n\t\tconst memory = {\n\t\t\tgeometries: 0,\n\t\t\ttextures: 0\n\t\t};\n\t\tconst render = {\n\t\t\tframe: 0,\n\t\t\tcalls: 0,\n\t\t\ttriangles: 0,\n\t\t\tpoints: 0,\n\t\t\tlines: 0\n\t\t};\n\n\t\tfunction update(count, mode, instanceCount) {\n\t\t\trender.calls++;\n\n\t\t\tswitch (mode) {\n\t\t\t\tcase gl.TRIANGLES:\n\t\t\t\t\trender.triangles += instanceCount * (count / 3);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.LINES:\n\t\t\t\t\trender.lines += instanceCount * (count / 2);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.LINE_STRIP:\n\t\t\t\t\trender.lines += instanceCount * (count - 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.LINE_LOOP:\n\t\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.POINTS:\n\t\t\t\t\trender.points += instanceCount * count;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error('THREE.WebGLInfo: Unknown draw mode:', mode);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfunction reset() {\n\t\t\trender.frame++;\n\t\t\trender.calls = 0;\n\t\t\trender.triangles = 0;\n\t\t\trender.points = 0;\n\t\t\trender.lines = 0;\n\t\t}\n\n\t\treturn {\n\t\t\tmemory: memory,\n\t\t\trender: render,\n\t\t\tprograms: null,\n\t\t\tautoReset: true,\n\t\t\treset: reset,\n\t\t\tupdate: update\n\t\t};\n\t}\n\n\tfunction numericalSort(a, b) {\n\t\treturn a[0] - b[0];\n\t}\n\n\tfunction absNumericalSort(a, b) {\n\t\treturn Math.abs(b[1]) - Math.abs(a[1]);\n\t}\n\n\tfunction WebGLMorphtargets(gl) {\n\t\tconst influencesList = {};\n\t\tconst morphInfluences = new Float32Array(8);\n\t\tconst workInfluences = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tworkInfluences[i] = [i, 0];\n\t\t}\n\n\t\tfunction update(object, geometry, material, program) {\n\t\t\tconst objectInfluences = object.morphTargetInfluences; // When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\t\t\tlet influences = influencesList[geometry.id];\n\n\t\t\tif (influences === undefined || influences.length !== length) {\n\t\t\t\t// initialise list\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tinfluences[i] = [i, 0];\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[geometry.id] = influences;\n\t\t\t} // Collect influences\n\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst influence = influences[i];\n\t\t\t\tinfluence[0] = i;\n\t\t\t\tinfluence[1] = objectInfluences[i];\n\t\t\t}\n\n\t\t\tinfluences.sort(absNumericalSort);\n\n\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\tif (i < length && influences[i][1]) {\n\t\t\t\t\tworkInfluences[i][0] = influences[i][0];\n\t\t\t\t\tworkInfluences[i][1] = influences[i][1];\n\t\t\t\t} else {\n\t\t\t\t\tworkInfluences[i][0] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[i][1] = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tworkInfluences.sort(numericalSort);\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\tconst influence = workInfluences[i];\n\t\t\t\tconst index = influence[0];\n\t\t\t\tconst value = influence[1];\n\n\t\t\t\tif (index !== Number.MAX_SAFE_INTEGER && value) {\n\t\t\t\t\tif (morphTargets && geometry.getAttribute('morphTarget' + i) !== morphTargets[index]) {\n\t\t\t\t\t\tgeometry.setAttribute('morphTarget' + i, morphTargets[index]);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (morphNormals && geometry.getAttribute('morphNormal' + i) !== morphNormals[index]) {\n\t\t\t\t\t\tgeometry.setAttribute('morphNormal' + i, morphNormals[index]);\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[i] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\t\t\t\t} else {\n\t\t\t\t\tif (morphTargets && geometry.hasAttribute('morphTarget' + i) === true) {\n\t\t\t\t\t\tgeometry.deleteAttribute('morphTarget' + i);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (morphNormals && geometry.hasAttribute('morphNormal' + i) === true) {\n\t\t\t\t\t\tgeometry.deleteAttribute('morphNormal' + i);\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[i] = 0;\n\t\t\t\t}\n\t\t\t} // GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\t\t\tprogram.getUniforms().setValue(gl, 'morphTargetBaseInfluence', morphBaseInfluence);\n\t\t\tprogram.getUniforms().setValue(gl, 'morphTargetInfluences', morphInfluences);\n\t\t}\n\n\t\treturn {\n\t\t\tupdate: update\n\t\t};\n\t}\n\n\tfunction WebGLObjects(gl, geometries, attributes, info) {\n\t\tlet updateMap = new WeakMap();\n\n\t\tfunction update(object) {\n\t\t\tconst frame = info.render.frame;\n\t\t\tconst geometry = object.geometry;\n\t\t\tconst buffergeometry = geometries.get(object, geometry); // Update once per frame\n\n\t\t\tif (updateMap.get(buffergeometry) !== frame) {\n\t\t\t\tgeometries.update(buffergeometry);\n\t\t\t\tupdateMap.set(buffergeometry, frame);\n\t\t\t}\n\n\t\t\tif (object.isInstancedMesh) {\n\t\t\t\tif (object.hasEventListener('dispose', onInstancedMeshDispose) === false) {\n\t\t\t\t\tobject.addEventListener('dispose', onInstancedMeshDispose);\n\t\t\t\t}\n\n\t\t\t\tattributes.update(object.instanceMatrix, gl.ARRAY_BUFFER);\n\n\t\t\t\tif (object.instanceColor !== null) {\n\t\t\t\t\tattributes.update(object.instanceColor, gl.ARRAY_BUFFER);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn buffergeometry;\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tupdateMap = new WeakMap();\n\t\t}\n\n\t\tfunction onInstancedMeshDispose(event) {\n\t\t\tconst instancedMesh = event.target;\n\t\t\tinstancedMesh.removeEventListener('dispose', onInstancedMeshDispose);\n\t\t\tattributes.remove(instancedMesh.instanceMatrix);\n\t\t\tif (instancedMesh.instanceColor !== null) attributes.remove(instancedMesh.instanceColor);\n\t\t}\n\n\t\treturn {\n\t\t\tupdate: update,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\tclass DataTexture2DArray extends Texture {\n\t\tconstructor(data = null, width = 1, height = 1, depth = 1) {\n\t\t\tsuper(null);\n\t\t\tthis.image = {\n\t\t\t\tdata,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tdepth\n\t\t\t};\n\t\t\tthis.magFilter = NearestFilter;\n\t\t\tthis.minFilter = NearestFilter;\n\t\t\tthis.wrapR = ClampToEdgeWrapping;\n\t\t\tthis.generateMipmaps = false;\n\t\t\tthis.flipY = false;\n\t\t\tthis.unpackAlignment = 1;\n\t\t\tthis.needsUpdate = true;\n\t\t}\n\n\t}\n\n\tDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n\tclass DataTexture3D extends Texture {\n\t\tconstructor(data = null, width = 1, height = 1, depth = 1) {\n\t\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t\t// Users can still set in DataTexture3D directly.\n\t\t\t//\n\t\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t\t// \ttexture.anisotropy = 16;\n\t\t\t//\n\t\t\t// See #14839\n\t\t\tsuper(null);\n\t\t\tthis.image = {\n\t\t\t\tdata,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tdepth\n\t\t\t};\n\t\t\tthis.magFilter = NearestFilter;\n\t\t\tthis.minFilter = NearestFilter;\n\t\t\tthis.wrapR = ClampToEdgeWrapping;\n\t\t\tthis.generateMipmaps = false;\n\t\t\tthis.flipY = false;\n\t\t\tthis.unpackAlignment = 1;\n\t\t\tthis.needsUpdate = true;\n\t\t}\n\n\t}\n\n\tDataTexture3D.prototype.isDataTexture3D = true;\n\n\t/**\n\t * Uniforms of a program.\n\t * Those form a tree structure with a special top-level container for the root,\n\t * which you get by calling 'new WebGLUniforms( gl, program )'.\n\t *\n\t *\n\t * Properties of inner nodes including the top-level container:\n\t *\n\t * .seq - array of nested uniforms\n\t * .map - nested uniforms by name\n\t *\n\t *\n\t * Methods of all nodes except the top-level container:\n\t *\n\t * .setValue( gl, value, [textures] )\n\t *\n\t * \t\tuploads a uniform value(s)\n\t *\t\tthe 'textures' parameter is needed for sampler uniforms\n\t *\n\t *\n\t * Static methods of the top-level container (textures factorizations):\n\t *\n\t * .upload( gl, seq, values, textures )\n\t *\n\t * \t\tsets uniforms in 'seq' to 'values[id].value'\n\t *\n\t * .seqWithValue( seq, values ) : filteredSeq\n\t *\n\t * \t\tfilters 'seq' entries with corresponding entry in values\n\t *\n\t *\n\t * Methods of the top-level container (textures factorizations):\n\t *\n\t * .setValue( gl, name, value, textures )\n\t *\n\t * \t\tsets uniform with\tname 'name' to 'value'\n\t *\n\t * .setOptional( gl, obj, prop )\n\t *\n\t * \t\tlike .set for an optional property of the object\n\t *\n\t */\n\tconst emptyTexture = new Texture();\n\tconst emptyTexture2dArray = new DataTexture2DArray();\n\tconst emptyTexture3d = new DataTexture3D();\n\tconst emptyCubeTexture = new CubeTexture(); // --- Utilities ---\n\t// Array Caches (provide typed arrays for temporary by size)\n\n\tconst arrayCacheF32 = [];\n\tconst arrayCacheI32 = []; // Float32Array caches used for uploading Matrix uniforms\n\n\tconst mat4array = new Float32Array(16);\n\tconst mat3array = new Float32Array(9);\n\tconst mat2array = new Float32Array(4); // Flattening for arrays of vectors and matrices\n\n\tfunction flatten(array, nBlocks, blockSize) {\n\t\tconst firstElem = array[0];\n\t\tif (firstElem <= 0 || firstElem > 0) return array; // unoptimized: ! isNaN( firstElem )\n\t\t// see http://jacksondunstan.com/articles/983\n\n\t\tconst n = nBlocks * blockSize;\n\t\tlet r = arrayCacheF32[n];\n\n\t\tif (r === undefined) {\n\t\t\tr = new Float32Array(n);\n\t\t\tarrayCacheF32[n] = r;\n\t\t}\n\n\t\tif (nBlocks !== 0) {\n\t\t\tfirstElem.toArray(r, 0);\n\n\t\t\tfor (let i = 1, offset = 0; i !== nBlocks; ++i) {\n\t\t\t\toffset += blockSize;\n\t\t\t\tarray[i].toArray(r, offset);\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n\n\tfunction arraysEqual(a, b) {\n\t\tif (a.length !== b.length) return false;\n\n\t\tfor (let i = 0, l = a.length; i < l; i++) {\n\t\t\tif (a[i] !== b[i]) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction copyArray(a, b) {\n\t\tfor (let i = 0, l = b.length; i < l; i++) {\n\t\t\ta[i] = b[i];\n\t\t}\n\t} // Texture unit allocation\n\n\n\tfunction allocTexUnits(textures, n) {\n\t\tlet r = arrayCacheI32[n];\n\n\t\tif (r === undefined) {\n\t\t\tr = new Int32Array(n);\n\t\t\tarrayCacheI32[n] = r;\n\t\t}\n\n\t\tfor (let i = 0; i !== n; ++i) {\n\t\t\tr[i] = textures.allocateTextureUnit();\n\t\t}\n\n\t\treturn r;\n\t} // --- Setters ---\n\t// Note: Defining these methods externally, because they come in a bunch\n\t// and this way their names minify.\n\t// Single scalar\n\n\n\tfunction setValueV1f(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (cache[0] === v) return;\n\t\tgl.uniform1f(this.addr, v);\n\t\tcache[0] = v;\n\t} // Single float vector (from flat array or THREE.VectorN)\n\n\n\tfunction setValueV2f(gl, v) {\n\t\tconst cache = this.cache;\n\n\t\tif (v.x !== undefined) {\n\t\t\tif (cache[0] !== v.x || cache[1] !== v.y) {\n\t\t\t\tgl.uniform2f(this.addr, v.x, v.y);\n\t\t\t\tcache[0] = v.x;\n\t\t\t\tcache[1] = v.y;\n\t\t\t}\n\t\t} else {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniform2fv(this.addr, v);\n\t\t\tcopyArray(cache, v);\n\t\t}\n\t}\n\n\tfunction setValueV3f(gl, v) {\n\t\tconst cache = this.cache;\n\n\t\tif (v.x !== undefined) {\n\t\t\tif (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n\t\t\t\tgl.uniform3f(this.addr, v.x, v.y, v.z);\n\t\t\t\tcache[0] = v.x;\n\t\t\t\tcache[1] = v.y;\n\t\t\t\tcache[2] = v.z;\n\t\t\t}\n\t\t} else if (v.r !== undefined) {\n\t\t\tif (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n\t\t\t\tgl.uniform3f(this.addr, v.r, v.g, v.b);\n\t\t\t\tcache[0] = v.r;\n\t\t\t\tcache[1] = v.g;\n\t\t\t\tcache[2] = v.b;\n\t\t\t}\n\t\t} else {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniform3fv(this.addr, v);\n\t\t\tcopyArray(cache, v);\n\t\t}\n\t}\n\n\tfunction setValueV4f(gl, v) {\n\t\tconst cache = this.cache;\n\n\t\tif (v.x !== undefined) {\n\t\t\tif (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n\t\t\t\tgl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n\t\t\t\tcache[0] = v.x;\n\t\t\t\tcache[1] = v.y;\n\t\t\t\tcache[2] = v.z;\n\t\t\t\tcache[3] = v.w;\n\t\t\t}\n\t\t} else {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniform4fv(this.addr, v);\n\t\t\tcopyArray(cache, v);\n\t\t}\n\t} // Single matrix (from flat array or THREE.MatrixN)\n\n\n\tfunction setValueM2(gl, v) {\n\t\tconst cache = this.cache;\n\t\tconst elements = v.elements;\n\n\t\tif (elements === undefined) {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniformMatrix2fv(this.addr, false, v);\n\t\t\tcopyArray(cache, v);\n\t\t} else {\n\t\t\tif (arraysEqual(cache, elements)) return;\n\t\t\tmat2array.set(elements);\n\t\t\tgl.uniformMatrix2fv(this.addr, false, mat2array);\n\t\t\tcopyArray(cache, elements);\n\t\t}\n\t}\n\n\tfunction setValueM3(gl, v) {\n\t\tconst cache = this.cache;\n\t\tconst elements = v.elements;\n\n\t\tif (elements === undefined) {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniformMatrix3fv(this.addr, false, v);\n\t\t\tcopyArray(cache, v);\n\t\t} else {\n\t\t\tif (arraysEqual(cache, elements)) return;\n\t\t\tmat3array.set(elements);\n\t\t\tgl.uniformMatrix3fv(this.addr, false, mat3array);\n\t\t\tcopyArray(cache, elements);\n\t\t}\n\t}\n\n\tfunction setValueM4(gl, v) {\n\t\tconst cache = this.cache;\n\t\tconst elements = v.elements;\n\n\t\tif (elements === undefined) {\n\t\t\tif (arraysEqual(cache, v)) return;\n\t\t\tgl.uniformMatrix4fv(this.addr, false, v);\n\t\t\tcopyArray(cache, v);\n\t\t} else {\n\t\t\tif (arraysEqual(cache, elements)) return;\n\t\t\tmat4array.set(elements);\n\t\t\tgl.uniformMatrix4fv(this.addr, false, mat4array);\n\t\t\tcopyArray(cache, elements);\n\t\t}\n\t} // Single integer / boolean\n\n\n\tfunction setValueV1i(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (cache[0] === v) return;\n\t\tgl.uniform1i(this.addr, v);\n\t\tcache[0] = v;\n\t} // Single integer / boolean vector (from flat array)\n\n\n\tfunction setValueV2i(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform2iv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t}\n\n\tfunction setValueV3i(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform3iv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t}\n\n\tfunction setValueV4i(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform4iv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t} // Single unsigned integer\n\n\n\tfunction setValueV1ui(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (cache[0] === v) return;\n\t\tgl.uniform1ui(this.addr, v);\n\t\tcache[0] = v;\n\t} // Single unsigned integer vector (from flat array)\n\n\n\tfunction setValueV2ui(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform2uiv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t}\n\n\tfunction setValueV3ui(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform3uiv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t}\n\n\tfunction setValueV4ui(gl, v) {\n\t\tconst cache = this.cache;\n\t\tif (arraysEqual(cache, v)) return;\n\t\tgl.uniform4uiv(this.addr, v);\n\t\tcopyArray(cache, v);\n\t} // Single texture (2D / Cube)\n\n\n\tfunction setValueT1(gl, v, textures) {\n\t\tconst cache = this.cache;\n\t\tconst unit = textures.allocateTextureUnit();\n\n\t\tif (cache[0] !== unit) {\n\t\t\tgl.uniform1i(this.addr, unit);\n\t\t\tcache[0] = unit;\n\t\t}\n\n\t\ttextures.safeSetTexture2D(v || emptyTexture, unit);\n\t}\n\n\tfunction setValueT3D1(gl, v, textures) {\n\t\tconst cache = this.cache;\n\t\tconst unit = textures.allocateTextureUnit();\n\n\t\tif (cache[0] !== unit) {\n\t\t\tgl.uniform1i(this.addr, unit);\n\t\t\tcache[0] = unit;\n\t\t}\n\n\t\ttextures.setTexture3D(v || emptyTexture3d, unit);\n\t}\n\n\tfunction setValueT6(gl, v, textures) {\n\t\tconst cache = this.cache;\n\t\tconst unit = textures.allocateTextureUnit();\n\n\t\tif (cache[0] !== unit) {\n\t\t\tgl.uniform1i(this.addr, unit);\n\t\t\tcache[0] = unit;\n\t\t}\n\n\t\ttextures.safeSetTextureCube(v || emptyCubeTexture, unit);\n\t}\n\n\tfunction setValueT2DArray1(gl, v, textures) {\n\t\tconst cache = this.cache;\n\t\tconst unit = textures.allocateTextureUnit();\n\n\t\tif (cache[0] !== unit) {\n\t\t\tgl.uniform1i(this.addr, unit);\n\t\t\tcache[0] = unit;\n\t\t}\n\n\t\ttextures.setTexture2DArray(v || emptyTexture2dArray, unit);\n\t} // Helper to pick the right setter for the singular case\n\n\n\tfunction getSingularSetter(type) {\n\t\tswitch (type) {\n\t\t\tcase 0x1406:\n\t\t\t\treturn setValueV1f;\n\t\t\t// FLOAT\n\n\t\t\tcase 0x8b50:\n\t\t\t\treturn setValueV2f;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8b51:\n\t\t\t\treturn setValueV3f;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8b52:\n\t\t\t\treturn setValueV4f;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x8b5a:\n\t\t\t\treturn setValueM2;\n\t\t\t// _MAT2\n\n\t\t\tcase 0x8b5b:\n\t\t\t\treturn setValueM3;\n\t\t\t// _MAT3\n\n\t\t\tcase 0x8b5c:\n\t\t\t\treturn setValueM4;\n\t\t\t// _MAT4\n\n\t\t\tcase 0x1404:\n\t\t\tcase 0x8b56:\n\t\t\t\treturn setValueV1i;\n\t\t\t// INT, BOOL\n\n\t\t\tcase 0x8b53:\n\t\t\tcase 0x8b57:\n\t\t\t\treturn setValueV2i;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8b54:\n\t\t\tcase 0x8b58:\n\t\t\t\treturn setValueV3i;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8b55:\n\t\t\tcase 0x8b59:\n\t\t\t\treturn setValueV4i;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x1405:\n\t\t\t\treturn setValueV1ui;\n\t\t\t// UINT\n\n\t\t\tcase 0x8dc6:\n\t\t\t\treturn setValueV2ui;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8dc7:\n\t\t\t\treturn setValueV3ui;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8dc8:\n\t\t\t\treturn setValueV4ui;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x8b5e: // SAMPLER_2D\n\n\t\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\n\t\t\tcase 0x8dca: // INT_SAMPLER_2D\n\n\t\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\n\t\t\tcase 0x8b62:\n\t\t\t\t// SAMPLER_2D_SHADOW\n\t\t\t\treturn setValueT1;\n\n\t\t\tcase 0x8b5f: // SAMPLER_3D\n\n\t\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\n\t\t\tcase 0x8dd3:\n\t\t\t\t// UNSIGNED_INT_SAMPLER_3D\n\t\t\t\treturn setValueT3D1;\n\n\t\t\tcase 0x8b60: // SAMPLER_CUBE\n\n\t\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\n\t\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\n\t\t\tcase 0x8dc5:\n\t\t\t\t// SAMPLER_CUBE_SHADOW\n\t\t\t\treturn setValueT6;\n\n\t\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\n\t\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\n\t\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\n\t\t\tcase 0x8dc4:\n\t\t\t\t// SAMPLER_2D_ARRAY_SHADOW\n\t\t\t\treturn setValueT2DArray1;\n\t\t}\n\t} // Array of scalars\n\n\n\tfunction setValueV1fArray(gl, v) {\n\t\tgl.uniform1fv(this.addr, v);\n\t} // Array of vectors (from flat array or array of THREE.VectorN)\n\n\n\tfunction setValueV2fArray(gl, v) {\n\t\tconst data = flatten(v, this.size, 2);\n\t\tgl.uniform2fv(this.addr, data);\n\t}\n\n\tfunction setValueV3fArray(gl, v) {\n\t\tconst data = flatten(v, this.size, 3);\n\t\tgl.uniform3fv(this.addr, data);\n\t}\n\n\tfunction setValueV4fArray(gl, v) {\n\t\tconst data = flatten(v, this.size, 4);\n\t\tgl.uniform4fv(this.addr, data);\n\t} // Array of matrices (from flat array or array of THREE.MatrixN)\n\n\n\tfunction setValueM2Array(gl, v) {\n\t\tconst data = flatten(v, this.size, 4);\n\t\tgl.uniformMatrix2fv(this.addr, false, data);\n\t}\n\n\tfunction setValueM3Array(gl, v) {\n\t\tconst data = flatten(v, this.size, 9);\n\t\tgl.uniformMatrix3fv(this.addr, false, data);\n\t}\n\n\tfunction setValueM4Array(gl, v) {\n\t\tconst data = flatten(v, this.size, 16);\n\t\tgl.uniformMatrix4fv(this.addr, false, data);\n\t} // Array of integer / boolean\n\n\n\tfunction setValueV1iArray(gl, v) {\n\t\tgl.uniform1iv(this.addr, v);\n\t} // Array of integer / boolean vectors (from flat array)\n\n\n\tfunction setValueV2iArray(gl, v) {\n\t\tgl.uniform2iv(this.addr, v);\n\t}\n\n\tfunction setValueV3iArray(gl, v) {\n\t\tgl.uniform3iv(this.addr, v);\n\t}\n\n\tfunction setValueV4iArray(gl, v) {\n\t\tgl.uniform4iv(this.addr, v);\n\t} // Array of unsigned integer\n\n\n\tfunction setValueV1uiArray(gl, v) {\n\t\tgl.uniform1uiv(this.addr, v);\n\t} // Array of unsigned integer vectors (from flat array)\n\n\n\tfunction setValueV2uiArray(gl, v) {\n\t\tgl.uniform2uiv(this.addr, v);\n\t}\n\n\tfunction setValueV3uiArray(gl, v) {\n\t\tgl.uniform3uiv(this.addr, v);\n\t}\n\n\tfunction setValueV4uiArray(gl, v) {\n\t\tgl.uniform4uiv(this.addr, v);\n\t} // Array of textures (2D / Cube)\n\n\n\tfunction setValueT1Array(gl, v, textures) {\n\t\tconst n = v.length;\n\t\tconst units = allocTexUnits(textures, n);\n\t\tgl.uniform1iv(this.addr, units);\n\n\t\tfor (let i = 0; i !== n; ++i) {\n\t\t\ttextures.safeSetTexture2D(v[i] || emptyTexture, units[i]);\n\t\t}\n\t}\n\n\tfunction setValueT6Array(gl, v, textures) {\n\t\tconst n = v.length;\n\t\tconst units = allocTexUnits(textures, n);\n\t\tgl.uniform1iv(this.addr, units);\n\n\t\tfor (let i = 0; i !== n; ++i) {\n\t\t\ttextures.safeSetTextureCube(v[i] || emptyCubeTexture, units[i]);\n\t\t}\n\t} // Helper to pick the right setter for a pure (bottom-level) array\n\n\n\tfunction getPureArraySetter(type) {\n\t\tswitch (type) {\n\t\t\tcase 0x1406:\n\t\t\t\treturn setValueV1fArray;\n\t\t\t// FLOAT\n\n\t\t\tcase 0x8b50:\n\t\t\t\treturn setValueV2fArray;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8b51:\n\t\t\t\treturn setValueV3fArray;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8b52:\n\t\t\t\treturn setValueV4fArray;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x8b5a:\n\t\t\t\treturn setValueM2Array;\n\t\t\t// _MAT2\n\n\t\t\tcase 0x8b5b:\n\t\t\t\treturn setValueM3Array;\n\t\t\t// _MAT3\n\n\t\t\tcase 0x8b5c:\n\t\t\t\treturn setValueM4Array;\n\t\t\t// _MAT4\n\n\t\t\tcase 0x1404:\n\t\t\tcase 0x8b56:\n\t\t\t\treturn setValueV1iArray;\n\t\t\t// INT, BOOL\n\n\t\t\tcase 0x8b53:\n\t\t\tcase 0x8b57:\n\t\t\t\treturn setValueV2iArray;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8b54:\n\t\t\tcase 0x8b58:\n\t\t\t\treturn setValueV3iArray;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8b55:\n\t\t\tcase 0x8b59:\n\t\t\t\treturn setValueV4iArray;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x1405:\n\t\t\t\treturn setValueV1uiArray;\n\t\t\t// UINT\n\n\t\t\tcase 0x8dc6:\n\t\t\t\treturn setValueV2uiArray;\n\t\t\t// _VEC2\n\n\t\t\tcase 0x8dc7:\n\t\t\t\treturn setValueV3uiArray;\n\t\t\t// _VEC3\n\n\t\t\tcase 0x8dc8:\n\t\t\t\treturn setValueV4uiArray;\n\t\t\t// _VEC4\n\n\t\t\tcase 0x8b5e: // SAMPLER_2D\n\n\t\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\n\t\t\tcase 0x8dca: // INT_SAMPLER_2D\n\n\t\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\n\t\t\tcase 0x8b62:\n\t\t\t\t// SAMPLER_2D_SHADOW\n\t\t\t\treturn setValueT1Array;\n\n\t\t\tcase 0x8b60: // SAMPLER_CUBE\n\n\t\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\n\t\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\n\t\t\tcase 0x8dc5:\n\t\t\t\t// SAMPLER_CUBE_SHADOW\n\t\t\t\treturn setValueT6Array;\n\t\t}\n\t} // --- Uniform Classes ---\n\n\n\tfunction SingleUniform(id, activeInfo, addr) {\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.setValue = getSingularSetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG\n\t}\n\n\tfunction PureArrayUniform(id, activeInfo, addr) {\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG\n\t}\n\n\tPureArrayUniform.prototype.updateCache = function (data) {\n\t\tconst cache = this.cache;\n\n\t\tif (data instanceof Float32Array && cache.length !== data.length) {\n\t\t\tthis.cache = new Float32Array(data.length);\n\t\t}\n\n\t\tcopyArray(cache, data);\n\t};\n\n\tfunction StructuredUniform(id) {\n\t\tthis.id = id;\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\t}\n\n\tStructuredUniform.prototype.setValue = function (gl, value, textures) {\n\t\tconst seq = this.seq;\n\n\t\tfor (let i = 0, n = seq.length; i !== n; ++i) {\n\t\t\tconst u = seq[i];\n\t\t\tu.setValue(gl, value[u.id], textures);\n\t\t}\n\t}; // --- Top-level ---\n\t// Parser - builds up the property tree from the path strings\n\n\n\tconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g; // extracts\n\t// \t- the identifier (member name or array index)\n\t//\t- followed by an optional right bracket (found when array index)\n\t//\t- followed by an optional left bracket or dot (type of subscript)\n\t//\n\t// Note: These portions can be read in a non-overlapping fashion and\n\t// allow straightforward parsing of the hierarchy that WebGL encodes\n\t// in the uniform names.\n\n\tfunction addUniform(container, uniformObject) {\n\t\tcontainer.seq.push(uniformObject);\n\t\tcontainer.map[uniformObject.id] = uniformObject;\n\t}\n\n\tfunction parseUniform(activeInfo, addr, container) {\n\t\tconst path = activeInfo.name,\n\t\t\t\t\tpathLength = path.length; // reset RegExp object, because of the early exit of a previous run\n\n\t\tRePathPart.lastIndex = 0;\n\n\t\twhile (true) {\n\t\t\tconst match = RePathPart.exec(path),\n\t\t\t\t\t\tmatchEnd = RePathPart.lastIndex;\n\t\t\tlet id = match[1];\n\t\t\tconst idIsIndex = match[2] === ']',\n\t\t\t\t\t\tsubscript = match[3];\n\t\t\tif (idIsIndex) id = id | 0; // convert to integer\n\n\t\t\tif (subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength) {\n\t\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\t\t\t\taddUniform(container, subscript === undefined ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\t// step into inner node / create it in case it doesn't exist\n\t\t\t\tconst map = container.map;\n\t\t\t\tlet next = map[id];\n\n\t\t\t\tif (next === undefined) {\n\t\t\t\t\tnext = new StructuredUniform(id);\n\t\t\t\t\taddUniform(container, next);\n\t\t\t\t}\n\n\t\t\t\tcontainer = next;\n\t\t\t}\n\t\t}\n\t} // Root Container\n\n\n\tfunction WebGLUniforms(gl, program) {\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\t\tconst n = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n\t\tfor (let i = 0; i < n; ++i) {\n\t\t\tconst info = gl.getActiveUniform(program, i),\n\t\t\t\t\t\taddr = gl.getUniformLocation(program, info.name);\n\t\t\tparseUniform(info, addr, this);\n\t\t}\n\t}\n\n\tWebGLUniforms.prototype.setValue = function (gl, name, value, textures) {\n\t\tconst u = this.map[name];\n\t\tif (u !== undefined) u.setValue(gl, value, textures);\n\t};\n\n\tWebGLUniforms.prototype.setOptional = function (gl, object, name) {\n\t\tconst v = object[name];\n\t\tif (v !== undefined) this.setValue(gl, name, v);\n\t}; // Static interface\n\n\n\tWebGLUniforms.upload = function (gl, seq, values, textures) {\n\t\tfor (let i = 0, n = seq.length; i !== n; ++i) {\n\t\t\tconst u = seq[i],\n\t\t\t\t\t\tv = values[u.id];\n\n\t\t\tif (v.needsUpdate !== false) {\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue(gl, v.value, textures);\n\t\t\t}\n\t\t}\n\t};\n\n\tWebGLUniforms.seqWithValue = function (seq, values) {\n\t\tconst r = [];\n\n\t\tfor (let i = 0, n = seq.length; i !== n; ++i) {\n\t\t\tconst u = seq[i];\n\t\t\tif (u.id in values) r.push(u);\n\t\t}\n\n\t\treturn r;\n\t};\n\n\tfunction WebGLShader(gl, type, string) {\n\t\tconst shader = gl.createShader(type);\n\t\tgl.shaderSource(shader, string);\n\t\tgl.compileShader(shader);\n\t\treturn shader;\n\t}\n\n\tlet programIdCount = 0;\n\n\tfunction addLineNumbers(string) {\n\t\tconst lines = string.split('\\n');\n\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = i + 1 + ': ' + lines[i];\n\t\t}\n\n\t\treturn lines.join('\\n');\n\t}\n\n\tfunction getEncodingComponents(encoding) {\n\t\tswitch (encoding) {\n\t\t\tcase LinearEncoding:\n\t\t\t\treturn ['Linear', '( value )'];\n\n\t\t\tcase sRGBEncoding:\n\t\t\t\treturn ['sRGB', '( value )'];\n\n\t\t\tcase RGBEEncoding:\n\t\t\t\treturn ['RGBE', '( value )'];\n\n\t\t\tcase RGBM7Encoding:\n\t\t\t\treturn ['RGBM', '( value, 7.0 )'];\n\n\t\t\tcase RGBM16Encoding:\n\t\t\t\treturn ['RGBM', '( value, 16.0 )'];\n\n\t\t\tcase RGBDEncoding:\n\t\t\t\treturn ['RGBD', '( value, 256.0 )'];\n\n\t\t\tcase GammaEncoding:\n\t\t\t\treturn ['Gamma', '( value, float( GAMMA_FACTOR ) )'];\n\n\t\t\tcase LogLuvEncoding:\n\t\t\t\treturn ['LogLuv', '( value )'];\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('THREE.WebGLProgram: Unsupported encoding:', encoding);\n\t\t\t\treturn ['Linear', '( value )'];\n\t\t}\n\t}\n\n\tfunction getShaderErrors(gl, shader, type) {\n\t\tconst status = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\t\tconst errors = gl.getShaderInfoLog(shader).trim();\n\t\tif (status && errors === '') return ''; // --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + addLineNumbers(gl.getShaderSource(shader));\n\t}\n\n\tfunction getTexelDecodingFunction(functionName, encoding) {\n\t\tconst components = getEncodingComponents(encoding);\n\t\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[0] + 'ToLinear' + components[1] + '; }';\n\t}\n\n\tfunction getTexelEncodingFunction(functionName, encoding) {\n\t\tconst components = getEncodingComponents(encoding);\n\t\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[0] + components[1] + '; }';\n\t}\n\n\tfunction getToneMappingFunction(functionName, toneMapping) {\n\t\tlet toneMappingName;\n\n\t\tswitch (toneMapping) {\n\t\t\tcase LinearToneMapping:\n\t\t\t\ttoneMappingName = 'Linear';\n\t\t\t\tbreak;\n\n\t\t\tcase ReinhardToneMapping:\n\t\t\t\ttoneMappingName = 'Reinhard';\n\t\t\t\tbreak;\n\n\t\t\tcase CineonToneMapping:\n\t\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\t\tbreak;\n\n\t\t\tcase ACESFilmicToneMapping:\n\t\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\t\tbreak;\n\n\t\t\tcase CustomToneMapping:\n\t\t\t\ttoneMappingName = 'Custom';\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('THREE.WebGLProgram: Unsupported toneMapping:', toneMapping);\n\t\t\t\ttoneMappingName = 'Linear';\n\t\t}\n\n\t\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\t}\n\n\tfunction generateExtensions(parameters) {\n\t\tconst chunks = [parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ? '#extension GL_OES_standard_derivatives : enable' : '', (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '', parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? '#extension GL_EXT_draw_buffers : require' : '', (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''];\n\t\treturn chunks.filter(filterEmptyLine).join('\\n');\n\t}\n\n\tfunction generateDefines(defines) {\n\t\tconst chunks = [];\n\n\t\tfor (const name in defines) {\n\t\t\tconst value = defines[name];\n\t\t\tif (value === false) continue;\n\t\t\tchunks.push('#define ' + name + ' ' + value);\n\t\t}\n\n\t\treturn chunks.join('\\n');\n\t}\n\n\tfunction fetchAttributeLocations(gl, program) {\n\t\tconst attributes = {};\n\t\tconst n = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst info = gl.getActiveAttrib(program, i);\n\t\t\tconst name = info.name;\n\t\t\tlet locationSize = 1;\n\t\t\tif (info.type === gl.FLOAT_MAT2) locationSize = 2;\n\t\t\tif (info.type === gl.FLOAT_MAT3) locationSize = 3;\n\t\t\tif (info.type === gl.FLOAT_MAT4) locationSize = 4; // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\t\tattributes[name] = {\n\t\t\t\ttype: info.type,\n\t\t\t\tlocation: gl.getAttribLocation(program, name),\n\t\t\t\tlocationSize: locationSize\n\t\t\t};\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\tfunction filterEmptyLine(string) {\n\t\treturn string !== '';\n\t}\n\n\tfunction replaceLightNums(string, parameters) {\n\t\treturn string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n\t}\n\n\tfunction replaceClippingPlaneNums(string, parameters) {\n\t\treturn string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n\t} // Resolve Includes\n\n\n\tconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\n\tfunction resolveIncludes(string) {\n\t\treturn string.replace(includePattern, includeReplacer);\n\t}\n\n\tfunction includeReplacer(match, include) {\n\t\tconst string = ShaderChunk[include];\n\n\t\tif (string === undefined) {\n\t\t\tthrow new Error('Can not resolve #include <' + include + '>');\n\t\t}\n\n\t\treturn resolveIncludes(string);\n\t} // Unroll Loops\n\n\n\tconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\tconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\n\tfunction unrollLoops(string) {\n\t\treturn string.replace(unrollLoopPattern, loopReplacer).replace(deprecatedUnrollLoopPattern, deprecatedLoopReplacer);\n\t}\n\n\tfunction deprecatedLoopReplacer(match, start, end, snippet) {\n\t\tconsole.warn('WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.');\n\t\treturn loopReplacer(match, start, end, snippet);\n\t}\n\n\tfunction loopReplacer(match, start, end, snippet) {\n\t\tlet string = '';\n\n\t\tfor (let i = parseInt(start); i < parseInt(end); i++) {\n\t\t\tstring += snippet.replace(/\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]').replace(/UNROLLED_LOOP_INDEX/g, i);\n\t\t}\n\n\t\treturn string;\n\t} //\n\n\n\tfunction generatePrecision(parameters) {\n\t\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\t\tif (parameters.precision === 'highp') {\n\t\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\t\t} else if (parameters.precision === 'mediump') {\n\t\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\t\t} else if (parameters.precision === 'lowp') {\n\t\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\t\t}\n\n\t\treturn precisionstring;\n\t}\n\n\tfunction generateShadowMapTypeDefine(parameters) {\n\t\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\t\tif (parameters.shadowMapType === PCFShadowMap) {\n\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\t\t} else if (parameters.shadowMapType === PCFSoftShadowMap) {\n\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\t\t} else if (parameters.shadowMapType === VSMShadowMap) {\n\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\t\t}\n\n\t\treturn shadowMapTypeDefine;\n\t}\n\n\tfunction generateEnvMapTypeDefine(parameters) {\n\t\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\t\tif (parameters.envMap) {\n\t\t\tswitch (parameters.envMapMode) {\n\t\t\t\tcase CubeReflectionMapping:\n\t\t\t\tcase CubeRefractionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn envMapTypeDefine;\n\t}\n\n\tfunction generateEnvMapModeDefine(parameters) {\n\t\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\t\tif (parameters.envMap) {\n\t\t\tswitch (parameters.envMapMode) {\n\t\t\t\tcase CubeRefractionMapping:\n\t\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn envMapModeDefine;\n\t}\n\n\tfunction generateEnvMapBlendingDefine(parameters) {\n\t\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\t\tif (parameters.envMap) {\n\t\t\tswitch (parameters.combine) {\n\t\t\t\tcase MultiplyOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MixOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase AddOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn envMapBlendingDefine;\n\t}\n\n\tfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n\t\t// TODO Send this event to Three.js DevTools\n\t\t// console.log( 'WebGLProgram', cacheKey );\n\t\tconst gl = renderer.getContext();\n\t\tconst defines = parameters.defines;\n\t\tlet vertexShader = parameters.vertexShader;\n\t\tlet fragmentShader = parameters.fragmentShader;\n\t\tconst shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n\t\tconst envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n\t\tconst envMapModeDefine = generateEnvMapModeDefine(parameters);\n\t\tconst envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n\t\tconst gammaFactorDefine = renderer.gammaFactor > 0 ? renderer.gammaFactor : 1.0;\n\t\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions(parameters);\n\t\tconst customDefines = generateDefines(defines);\n\t\tconst program = gl.createProgram();\n\t\tlet prefixVertex, prefixFragment;\n\t\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\t\tif (parameters.isRawShaderMaterial) {\n\t\t\tprefixVertex = [customDefines].filter(filterEmptyLine).join('\\n');\n\n\t\t\tif (prefixVertex.length > 0) {\n\t\t\t\tprefixVertex += '\\n';\n\t\t\t}\n\n\t\t\tprefixFragment = [customExtensions, customDefines].filter(filterEmptyLine).join('\\n');\n\n\t\t\tif (prefixFragment.length > 0) {\n\t\t\t\tprefixFragment += '\\n';\n\t\t\t}\n\t\t} else {\n\t\t\tprefixVertex = [generatePrecision(parameters), '#define SHADER_NAME ' + parameters.shaderName, customDefines, parameters.instancing ? '#define USE_INSTANCING' : '', parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '', parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', '#define GAMMA_FACTOR ' + gammaFactorDefine, '#define MAX_BONES ' + parameters.maxBones, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.normalMap && parameters.tangentSpaceNormalMap ? '#define TANGENTSPACE_NORMALMAP' : '', parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '', parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.transmission ? '#define USE_TRANSMISSION' : '', parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors ? '#define USE_COLOR' : '', parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.skinning ? '#define USE_SKINNING' : '', parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? '#define USE_LOGDEPTHBUF_EXT' : '', 'uniform mat4 modelMatrix;', 'uniform mat4 modelViewMatrix;', 'uniform mat4 projectionMatrix;', 'uniform mat4 viewMatrix;', 'uniform mat3 normalMatrix;', 'uniform vec3 cameraPosition;', 'uniform bool isOrthographic;', '#ifdef USE_INSTANCING', '\tattribute mat4 instanceMatrix;', '#endif', '#ifdef USE_INSTANCING_COLOR', '\tattribute vec3 instanceColor;', '#endif', 'attribute vec3 position;', 'attribute vec3 normal;', 'attribute vec2 uv;', '#ifdef USE_TANGENT', '\tattribute vec4 tangent;', '#endif', '#if defined( USE_COLOR_ALPHA )', '\tattribute vec4 color;', '#elif defined( USE_COLOR )', '\tattribute vec3 color;', '#endif', '#ifdef USE_MORPHTARGETS', '\tattribute vec3 morphTarget0;', '\tattribute vec3 morphTarget1;', '\tattribute vec3 morphTarget2;', '\tattribute vec3 morphTarget3;', '\t#ifdef USE_MORPHNORMALS', '\t\tattribute vec3 morphNormal0;', '\t\tattribute vec3 morphNormal1;', '\t\tattribute vec3 morphNormal2;', '\t\tattribute vec3 morphNormal3;', '\t#else', '\t\tattribute vec3 morphTarget4;', '\t\tattribute vec3 morphTarget5;', '\t\tattribute vec3 morphTarget6;', '\t\tattribute vec3 morphTarget7;', '\t#endif', '#endif', '#ifdef USE_SKINNING', '\tattribute vec4 skinIndex;', '\tattribute vec4 skinWeight;', '#endif', '\\n'].filter(filterEmptyLine).join('\\n');\n\t\t\tprefixFragment = [customExtensions, generatePrecision(parameters), '#define SHADER_NAME ' + parameters.shaderName, customDefines, '#define GAMMA_FACTOR ' + gammaFactorDefine, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.matcap ? '#define USE_MATCAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapTypeDefine : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.envMap ? '#define ' + envMapBlendingDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.normalMap && parameters.tangentSpaceNormalMap ? '#define TANGENTSPACE_NORMALMAP' : '', parameters.clearcoat ? '#define USE_CLEARCOAT' : '', parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '', parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.alphaTest ? '#define USE_ALPHATEST' : '', parameters.sheenTint ? '#define USE_SHEEN' : '', parameters.transmission ? '#define USE_TRANSMISSION' : '', parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '', parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? '#define USE_LOGDEPTHBUF_EXT' : '', (parameters.extensionShaderTextureLOD || parameters.envMap) && parameters.rendererExtensionShaderTextureLod ? '#define TEXTURE_LOD_EXT' : '', 'uniform mat4 viewMatrix;', 'uniform vec3 cameraPosition;', 'uniform bool isOrthographic;', parameters.toneMapping !== NoToneMapping ? '#define TONE_MAPPING' : '', parameters.toneMapping !== NoToneMapping ? ShaderChunk['tonemapping_pars_fragment'] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\tparameters.toneMapping !== NoToneMapping ? getToneMappingFunction('toneMapping', parameters.toneMapping) : '', parameters.dithering ? '#define DITHERING' : '', parameters.format === RGBFormat ? '#define OPAQUE' : '', ShaderChunk['encodings_pars_fragment'], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction('mapTexelToLinear', parameters.mapEncoding) : '', parameters.matcap ? getTexelDecodingFunction('matcapTexelToLinear', parameters.matcapEncoding) : '', parameters.envMap ? getTexelDecodingFunction('envMapTexelToLinear', parameters.envMapEncoding) : '', parameters.emissiveMap ? getTexelDecodingFunction('emissiveMapTexelToLinear', parameters.emissiveMapEncoding) : '', parameters.specularTintMap ? getTexelDecodingFunction('specularTintMapTexelToLinear', parameters.specularTintMapEncoding) : '', parameters.lightMap ? getTexelDecodingFunction('lightMapTexelToLinear', parameters.lightMapEncoding) : '', getTexelEncodingFunction('linearToOutputTexel', parameters.outputEncoding), parameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '', '\\n'].filter(filterEmptyLine).join('\\n');\n\t\t}\n\n\t\tvertexShader = resolveIncludes(vertexShader);\n\t\tvertexShader = replaceLightNums(vertexShader, parameters);\n\t\tvertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n\t\tfragmentShader = resolveIncludes(fragmentShader);\n\t\tfragmentShader = replaceLightNums(fragmentShader, parameters);\n\t\tfragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n\t\tvertexShader = unrollLoops(vertexShader);\n\t\tfragmentShader = unrollLoops(fragmentShader);\n\n\t\tif (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n\t\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\t\t\tversionString = '#version 300 es\\n';\n\t\t\tprefixVertex = ['#define attribute in', '#define varying out', '#define texture2D texture'].join('\\n') + '\\n' + prefixVertex;\n\t\t\tprefixFragment = ['#define varying in', parameters.glslVersion === GLSL3 ? '' : 'out highp vec4 pc_fragColor;', parameters.glslVersion === GLSL3 ? '' : '#define gl_FragColor pc_fragColor', '#define gl_FragDepthEXT gl_FragDepth', '#define texture2D texture', '#define textureCube texture', '#define texture2DProj textureProj', '#define texture2DLodEXT textureLod', '#define texture2DProjLodEXT textureProjLod', '#define textureCubeLodEXT textureLod', '#define texture2DGradEXT textureGrad', '#define texture2DProjGradEXT textureProjGrad', '#define textureCubeGradEXT textureGrad'].join('\\n') + '\\n' + prefixFragment;\n\t\t}\n\n\t\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\t\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader; // console.log( '*VERTEX*', vertexGlsl );\n\t\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\t\tconst glVertexShader = WebGLShader(gl, gl.VERTEX_SHADER, vertexGlsl);\n\t\tconst glFragmentShader = WebGLShader(gl, gl.FRAGMENT_SHADER, fragmentGlsl);\n\t\tgl.attachShader(program, glVertexShader);\n\t\tgl.attachShader(program, glFragmentShader); // Force a particular attribute to index 0.\n\n\t\tif (parameters.index0AttributeName !== undefined) {\n\t\t\tgl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n\t\t} else if (parameters.morphTargets === true) {\n\t\t\t// programs with morphTargets displace position out of attribute 0\n\t\t\tgl.bindAttribLocation(program, 0, 'position');\n\t\t}\n\n\t\tgl.linkProgram(program); // check for link errors\n\n\t\tif (renderer.debug.checkShaderErrors) {\n\t\t\tconst programLog = gl.getProgramInfoLog(program).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif (gl.getProgramParameter(program, gl.LINK_STATUS) === false) {\n\t\t\t\trunnable = false;\n\t\t\t\tconst vertexErrors = getShaderErrors(gl, glVertexShader, 'vertex');\n\t\t\t\tconst fragmentErrors = getShaderErrors(gl, glFragmentShader, 'fragment');\n\t\t\t\tconsole.error('THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' + 'VALIDATE_STATUS ' + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + '\\n\\n' + 'Program Info Log: ' + programLog + '\\n' + vertexErrors + '\\n' + fragmentErrors);\n\t\t\t} else if (programLog !== '') {\n\t\t\t\tconsole.warn('THREE.WebGLProgram: Program Info Log:', programLog);\n\t\t\t} else if (vertexLog === '' || fragmentLog === '') {\n\t\t\t\thaveDiagnostics = false;\n\t\t\t}\n\n\t\t\tif (haveDiagnostics) {\n\t\t\t\tthis.diagnostics = {\n\t\t\t\t\trunnable: runnable,\n\t\t\t\t\tprogramLog: programLog,\n\t\t\t\t\tvertexShader: {\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\t\t\t\t\t},\n\t\t\t\t\tfragmentShader: {\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} // Clean up\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\n\t\tgl.deleteShader(glVertexShader);\n\t\tgl.deleteShader(glFragmentShader); // set up caching for uniform locations\n\n\t\tlet cachedUniforms;\n\n\t\tthis.getUniforms = function () {\n\t\t\tif (cachedUniforms === undefined) {\n\t\t\t\tcachedUniforms = new WebGLUniforms(gl, program);\n\t\t\t}\n\n\t\t\treturn cachedUniforms;\n\t\t}; // set up caching for attribute locations\n\n\n\t\tlet cachedAttributes;\n\n\t\tthis.getAttributes = function () {\n\t\t\tif (cachedAttributes === undefined) {\n\t\t\t\tcachedAttributes = fetchAttributeLocations(gl, program);\n\t\t\t}\n\n\t\t\treturn cachedAttributes;\n\t\t}; // free resource\n\n\n\t\tthis.destroy = function () {\n\t\t\tbindingStates.releaseStatesOfProgram(this);\n\t\t\tgl.deleteProgram(program);\n\t\t\tthis.program = undefined;\n\t\t}; //\n\n\n\t\tthis.name = parameters.shaderName;\n\t\tthis.id = programIdCount++;\n\t\tthis.cacheKey = cacheKey;\n\t\tthis.usedTimes = 1;\n\t\tthis.program = program;\n\t\tthis.vertexShader = glVertexShader;\n\t\tthis.fragmentShader = glFragmentShader;\n\t\treturn this;\n\t}\n\n\tfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n\t\tconst programs = [];\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\t\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\t\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\t\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\t\tconst vertexTextures = capabilities.vertexTextures;\n\t\tlet precision = capabilities.precision;\n\t\tconst shaderIDs = {\n\t\t\tMeshDepthMaterial: 'depth',\n\t\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\t\tMeshNormalMaterial: 'normal',\n\t\t\tMeshBasicMaterial: 'basic',\n\t\t\tMeshLambertMaterial: 'lambert',\n\t\t\tMeshPhongMaterial: 'phong',\n\t\t\tMeshToonMaterial: 'toon',\n\t\t\tMeshStandardMaterial: 'physical',\n\t\t\tMeshPhysicalMaterial: 'physical',\n\t\t\tMeshMatcapMaterial: 'matcap',\n\t\t\tLineBasicMaterial: 'basic',\n\t\t\tLineDashedMaterial: 'dashed',\n\t\t\tPointsMaterial: 'points',\n\t\t\tShadowMaterial: 'shadow',\n\t\t\tSpriteMaterial: 'sprite'\n\t\t};\n\t\tconst parameterNames = ['precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor', 'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV', 'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap', 'objectSpaceNormalMap', 'tangentSpaceNormalMap', 'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap', 'displacementMap', 'specularMap', 'specularIntensityMap', 'specularTintMap', 'specularTintMapEncoding', 'roughnessMap', 'metalnessMap', 'gradientMap', 'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2', 'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning', 'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'premultipliedAlpha', 'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights', 'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows', 'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights', 'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format', 'sheenTint', 'transmission', 'transmissionMap', 'thicknessMap'];\n\n\t\tfunction getMaxBones(object) {\n\t\t\tconst skeleton = object.skeleton;\n\t\t\tconst bones = skeleton.bones;\n\n\t\t\tif (floatVertexTextures) {\n\t\t\t\treturn 1024;\n\t\t\t} else {\n\t\t\t\t// default for when object is not specified\n\t\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t\t//\n\t\t\t\t//\t- leave some extra space for other uniforms\n\t\t\t\t//\t- limit here is ANGLE's 254 max uniform vectors\n\t\t\t\t//\t\t(up to 54 should be safe)\n\t\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\t\tconst nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4);\n\t\t\t\tconst maxBones = Math.min(nVertexMatrices, bones.length);\n\n\t\t\t\tif (maxBones < bones.length) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.');\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn maxBones;\n\t\t\t}\n\t\t}\n\n\t\tfunction getTextureEncodingFromMap(map) {\n\t\t\tlet encoding;\n\n\t\t\tif (map && map.isTexture) {\n\t\t\t\tencoding = map.encoding;\n\t\t\t} else if (map && map.isWebGLRenderTarget) {\n\t\t\t\tconsole.warn('THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.');\n\t\t\t\tencoding = map.texture.encoding;\n\t\t\t} else {\n\t\t\t\tencoding = LinearEncoding;\n\t\t\t}\n\n\t\t\treturn encoding;\n\t\t}\n\n\t\tfunction getParameters(material, lights, shadows, scene, object) {\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n\t\t\tconst shaderID = shaderIDs[material.type]; // heuristics to create shader parameters according to lights in the scene\n\t\t\t// (not to blow over maxLights budget)\n\n\t\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones(object) : 0;\n\n\t\t\tif (material.precision !== null) {\n\t\t\t\tprecision = capabilities.getMaxPrecision(material.precision);\n\n\t\t\t\tif (precision !== material.precision) {\n\t\t\t\t\tconsole.warn('THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet vertexShader, fragmentShader;\n\n\t\t\tif (shaderID) {\n\t\t\t\tconst shader = ShaderLib[shaderID];\n\t\t\t\tvertexShader = shader.vertexShader;\n\t\t\t\tfragmentShader = shader.fragmentShader;\n\t\t\t} else {\n\t\t\t\tvertexShader = material.vertexShader;\n\t\t\t\tfragmentShader = material.fragmentShader;\n\t\t\t}\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\t\tconst useClearcoat = material.clearcoat > 0;\n\t\t\tconst parameters = {\n\t\t\t\tisWebGL2: isWebGL2,\n\t\t\t\tshaderID: shaderID,\n\t\t\t\tshaderName: material.type,\n\t\t\t\tvertexShader: vertexShader,\n\t\t\t\tfragmentShader: fragmentShader,\n\t\t\t\tdefines: material.defines,\n\t\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\t\tglslVersion: material.glslVersion,\n\t\t\t\tprecision: precision,\n\t\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\t\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\t\toutputEncoding: currentRenderTarget !== null ? getTextureEncodingFromMap(currentRenderTarget.texture) : renderer.outputEncoding,\n\t\t\t\tmap: !!material.map,\n\t\t\t\tmapEncoding: getTextureEncodingFromMap(material.map),\n\t\t\t\tmatcap: !!material.matcap,\n\t\t\t\tmatcapEncoding: getTextureEncodingFromMap(material.matcap),\n\t\t\t\tenvMap: !!envMap,\n\t\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\t\tenvMapEncoding: getTextureEncodingFromMap(envMap),\n\t\t\t\tenvMapCubeUV: !!envMap && (envMap.mapping === CubeUVReflectionMapping || envMap.mapping === CubeUVRefractionMapping),\n\t\t\t\tlightMap: !!material.lightMap,\n\t\t\t\tlightMapEncoding: getTextureEncodingFromMap(material.lightMap),\n\t\t\t\taoMap: !!material.aoMap,\n\t\t\t\temissiveMap: !!material.emissiveMap,\n\t\t\t\temissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap),\n\t\t\t\tbumpMap: !!material.bumpMap,\n\t\t\t\tnormalMap: !!material.normalMap,\n\t\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\t\tclearcoat: useClearcoat,\n\t\t\t\tclearcoatMap: useClearcoat && !!material.clearcoatMap,\n\t\t\t\tclearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap,\n\t\t\t\tclearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap,\n\t\t\t\tdisplacementMap: !!material.displacementMap,\n\t\t\t\troughnessMap: !!material.roughnessMap,\n\t\t\t\tmetalnessMap: !!material.metalnessMap,\n\t\t\t\tspecularMap: !!material.specularMap,\n\t\t\t\tspecularIntensityMap: !!material.specularIntensityMap,\n\t\t\t\tspecularTintMap: !!material.specularTintMap,\n\t\t\t\tspecularTintMapEncoding: getTextureEncodingFromMap(material.specularTintMap),\n\t\t\t\talphaMap: !!material.alphaMap,\n\t\t\t\talphaTest: useAlphaTest,\n\t\t\t\tgradientMap: !!material.gradientMap,\n\t\t\t\tsheenTint: !!material.sheenTint && (material.sheenTint.r > 0 || material.sheenTint.g > 0 || material.sheenTint.b > 0),\n\t\t\t\ttransmission: material.transmission > 0,\n\t\t\t\ttransmissionMap: !!material.transmissionMap,\n\t\t\t\tthicknessMap: !!material.thicknessMap,\n\t\t\t\tcombine: material.combine,\n\t\t\t\tvertexTangents: !!material.normalMap && !!object.geometry && !!object.geometry.attributes.tangent,\n\t\t\t\tvertexColors: material.vertexColors,\n\t\t\t\tvertexAlphas: material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n\t\t\t\tvertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularTintMap,\n\t\t\t\tuvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularTintMap) && !!material.displacementMap,\n\t\t\t\tfog: !!fog,\n\t\t\t\tuseFog: material.fog,\n\t\t\t\tfogExp2: fog && fog.isFogExp2,\n\t\t\t\tflatShading: !!material.flatShading,\n\t\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\t\t\tskinning: object.isSkinnedMesh === true && maxBones > 0,\n\t\t\t\tmaxBones: maxBones,\n\t\t\t\tuseVertexTexture: floatVertexTextures,\n\t\t\t\tmorphTargets: !!object.geometry && !!object.geometry.morphAttributes.position,\n\t\t\t\tmorphNormals: !!object.geometry && !!object.geometry.morphAttributes.normal,\n\t\t\t\tnumDirLights: lights.directional.length,\n\t\t\t\tnumPointLights: lights.point.length,\n\t\t\t\tnumSpotLights: lights.spot.length,\n\t\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\t\tnumHemiLights: lights.hemi.length,\n\t\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\t\tnumClipIntersection: clipping.numIntersection,\n\t\t\t\tformat: material.format,\n\t\t\t\tdithering: material.dithering,\n\t\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\t\tshadowMapType: renderer.shadowMap.type,\n\t\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\t\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\t\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\t\tflipSided: material.side === BackSide,\n\t\t\t\tdepthPacking: material.depthPacking !== undefined ? material.depthPacking : false,\n\t\t\t\tindex0AttributeName: material.index0AttributeName,\n\t\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\t\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has('EXT_frag_depth'),\n\t\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has('WEBGL_draw_buffers'),\n\t\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has('EXT_shader_texture_lod'),\n\t\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\t\t\t};\n\t\t\treturn parameters;\n\t\t}\n\n\t\tfunction getProgramCacheKey(parameters) {\n\t\t\tconst array = [];\n\n\t\t\tif (parameters.shaderID) {\n\t\t\t\tarray.push(parameters.shaderID);\n\t\t\t} else {\n\t\t\t\tarray.push(parameters.fragmentShader);\n\t\t\t\tarray.push(parameters.vertexShader);\n\t\t\t}\n\n\t\t\tif (parameters.defines !== undefined) {\n\t\t\t\tfor (const name in parameters.defines) {\n\t\t\t\t\tarray.push(name);\n\t\t\t\t\tarray.push(parameters.defines[name]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (parameters.isRawShaderMaterial === false) {\n\t\t\t\tfor (let i = 0; i < parameterNames.length; i++) {\n\t\t\t\t\tarray.push(parameters[parameterNames[i]]);\n\t\t\t\t}\n\n\t\t\t\tarray.push(renderer.outputEncoding);\n\t\t\t\tarray.push(renderer.gammaFactor);\n\t\t\t}\n\n\t\t\tarray.push(parameters.customProgramCacheKey);\n\t\t\treturn array.join();\n\t\t}\n\n\t\tfunction getUniforms(material) {\n\t\t\tconst shaderID = shaderIDs[material.type];\n\t\t\tlet uniforms;\n\n\t\t\tif (shaderID) {\n\t\t\t\tconst shader = ShaderLib[shaderID];\n\t\t\t\tuniforms = UniformsUtils.clone(shader.uniforms);\n\t\t\t} else {\n\t\t\t\tuniforms = material.uniforms;\n\t\t\t}\n\n\t\t\treturn uniforms;\n\t\t}\n\n\t\tfunction acquireProgram(parameters, cacheKey) {\n\t\t\tlet program; // Check if code has been already compiled\n\n\t\t\tfor (let p = 0, pl = programs.length; p < pl; p++) {\n\t\t\t\tconst preexistingProgram = programs[p];\n\n\t\t\t\tif (preexistingProgram.cacheKey === cacheKey) {\n\t\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t\t++program.usedTimes;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (program === undefined) {\n\t\t\t\tprogram = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n\t\t\t\tprograms.push(program);\n\t\t\t}\n\n\t\t\treturn program;\n\t\t}\n\n\t\tfunction releaseProgram(program) {\n\t\t\tif (--program.usedTimes === 0) {\n\t\t\t\t// Remove from unordered set\n\t\t\t\tconst i = programs.indexOf(program);\n\t\t\t\tprograms[i] = programs[programs.length - 1];\n\t\t\t\tprograms.pop(); // Free WebGL resources\n\n\t\t\t\tprogram.destroy();\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tgetParameters: getParameters,\n\t\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\t\tgetUniforms: getUniforms,\n\t\t\tacquireProgram: acquireProgram,\n\t\t\treleaseProgram: releaseProgram,\n\t\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\t\tprograms: programs\n\t\t};\n\t}\n\n\tfunction WebGLProperties() {\n\t\tlet properties = new WeakMap();\n\n\t\tfunction get(object) {\n\t\t\tlet map = properties.get(object);\n\n\t\t\tif (map === undefined) {\n\t\t\t\tmap = {};\n\t\t\t\tproperties.set(object, map);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}\n\n\t\tfunction remove(object) {\n\t\t\tproperties.delete(object);\n\t\t}\n\n\t\tfunction update(object, key, value) {\n\t\t\tproperties.get(object)[key] = value;\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tproperties = new WeakMap();\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tremove: remove,\n\t\t\tupdate: update,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\tfunction painterSortStable(a, b) {\n\t\tif (a.groupOrder !== b.groupOrder) {\n\t\t\treturn a.groupOrder - b.groupOrder;\n\t\t} else if (a.renderOrder !== b.renderOrder) {\n\t\t\treturn a.renderOrder - b.renderOrder;\n\t\t} else if (a.program !== b.program) {\n\t\t\treturn a.program.id - b.program.id;\n\t\t} else if (a.material.id !== b.material.id) {\n\t\t\treturn a.material.id - b.material.id;\n\t\t} else if (a.z !== b.z) {\n\t\t\treturn a.z - b.z;\n\t\t} else {\n\t\t\treturn a.id - b.id;\n\t\t}\n\t}\n\n\tfunction reversePainterSortStable(a, b) {\n\t\tif (a.groupOrder !== b.groupOrder) {\n\t\t\treturn a.groupOrder - b.groupOrder;\n\t\t} else if (a.renderOrder !== b.renderOrder) {\n\t\t\treturn a.renderOrder - b.renderOrder;\n\t\t} else if (a.z !== b.z) {\n\t\t\treturn b.z - a.z;\n\t\t} else {\n\t\t\treturn a.id - b.id;\n\t\t}\n\t}\n\n\tfunction WebGLRenderList(properties) {\n\t\tconst renderItems = [];\n\t\tlet renderItemsIndex = 0;\n\t\tconst opaque = [];\n\t\tconst transmissive = [];\n\t\tconst transparent = [];\n\t\tconst defaultProgram = {\n\t\t\tid: -1\n\t\t};\n\n\t\tfunction init() {\n\t\t\trenderItemsIndex = 0;\n\t\t\topaque.length = 0;\n\t\t\ttransmissive.length = 0;\n\t\t\ttransparent.length = 0;\n\t\t}\n\n\t\tfunction getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n\t\t\tlet renderItem = renderItems[renderItemsIndex];\n\t\t\tconst materialProperties = properties.get(material);\n\n\t\t\tif (renderItem === undefined) {\n\t\t\t\trenderItem = {\n\t\t\t\t\tid: object.id,\n\t\t\t\t\tobject: object,\n\t\t\t\t\tgeometry: geometry,\n\t\t\t\t\tmaterial: material,\n\t\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\t\tz: z,\n\t\t\t\t\tgroup: group\n\t\t\t\t};\n\t\t\t\trenderItems[renderItemsIndex] = renderItem;\n\t\t\t} else {\n\t\t\t\trenderItem.id = object.id;\n\t\t\t\trenderItem.object = object;\n\t\t\t\trenderItem.geometry = geometry;\n\t\t\t\trenderItem.material = material;\n\t\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\t\trenderItem.z = z;\n\t\t\t\trenderItem.group = group;\n\t\t\t}\n\n\t\t\trenderItemsIndex++;\n\t\t\treturn renderItem;\n\t\t}\n\n\t\tfunction push(object, geometry, material, groupOrder, z, group) {\n\t\t\tconst renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n\n\t\t\tif (material.transmission > 0.0) {\n\t\t\t\ttransmissive.push(renderItem);\n\t\t\t} else if (material.transparent === true) {\n\t\t\t\ttransparent.push(renderItem);\n\t\t\t} else {\n\t\t\t\topaque.push(renderItem);\n\t\t\t}\n\t\t}\n\n\t\tfunction unshift(object, geometry, material, groupOrder, z, group) {\n\t\t\tconst renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n\n\t\t\tif (material.transmission > 0.0) {\n\t\t\t\ttransmissive.unshift(renderItem);\n\t\t\t} else if (material.transparent === true) {\n\t\t\t\ttransparent.unshift(renderItem);\n\t\t\t} else {\n\t\t\t\topaque.unshift(renderItem);\n\t\t\t}\n\t\t}\n\n\t\tfunction sort(customOpaqueSort, customTransparentSort) {\n\t\t\tif (opaque.length > 1) opaque.sort(customOpaqueSort || painterSortStable);\n\t\t\tif (transmissive.length > 1) transmissive.sort(customTransparentSort || reversePainterSortStable);\n\t\t\tif (transparent.length > 1) transparent.sort(customTransparentSort || reversePainterSortStable);\n\t\t}\n\n\t\tfunction finish() {\n\t\t\t// Clear references from inactive renderItems in the list\n\t\t\tfor (let i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n\t\t\t\tconst renderItem = renderItems[i];\n\t\t\t\tif (renderItem.id === null) break;\n\t\t\t\trenderItem.id = null;\n\t\t\t\trenderItem.object = null;\n\t\t\t\trenderItem.geometry = null;\n\t\t\t\trenderItem.material = null;\n\t\t\t\trenderItem.program = null;\n\t\t\t\trenderItem.group = null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\topaque: opaque,\n\t\t\ttransmissive: transmissive,\n\t\t\ttransparent: transparent,\n\t\t\tinit: init,\n\t\t\tpush: push,\n\t\t\tunshift: unshift,\n\t\t\tfinish: finish,\n\t\t\tsort: sort\n\t\t};\n\t}\n\n\tfunction WebGLRenderLists(properties) {\n\t\tlet lists = new WeakMap();\n\n\t\tfunction get(scene, renderCallDepth) {\n\t\t\tlet list;\n\n\t\t\tif (lists.has(scene) === false) {\n\t\t\t\tlist = new WebGLRenderList(properties);\n\t\t\t\tlists.set(scene, [list]);\n\t\t\t} else {\n\t\t\t\tif (renderCallDepth >= lists.get(scene).length) {\n\t\t\t\t\tlist = new WebGLRenderList(properties);\n\t\t\t\t\tlists.get(scene).push(list);\n\t\t\t\t} else {\n\t\t\t\t\tlist = lists.get(scene)[renderCallDepth];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tlists = new WeakMap();\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\tfunction UniformsCache() {\n\t\tconst lights = {};\n\t\treturn {\n\t\t\tget: function (light) {\n\t\t\t\tif (lights[light.id] !== undefined) {\n\t\t\t\t\treturn lights[light.id];\n\t\t\t\t}\n\n\t\t\t\tlet uniforms;\n\n\t\t\t\tswitch (light.type) {\n\t\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlights[light.id] = uniforms;\n\t\t\t\treturn uniforms;\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction ShadowUniformsCache() {\n\t\tconst lights = {};\n\t\treturn {\n\t\t\tget: function (light) {\n\t\t\t\tif (lights[light.id] !== undefined) {\n\t\t\t\t\treturn lights[light.id];\n\t\t\t\t}\n\n\t\t\t\tlet uniforms;\n\n\t\t\t\tswitch (light.type) {\n\t\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t}\n\n\t\t\t\tlights[light.id] = uniforms;\n\t\t\t\treturn uniforms;\n\t\t\t}\n\t\t};\n\t}\n\n\tlet nextVersion = 0;\n\n\tfunction shadowCastingLightsFirst(lightA, lightB) {\n\t\treturn (lightB.castShadow ? 1 : 0) - (lightA.castShadow ? 1 : 0);\n\t}\n\n\tfunction WebGLLights(extensions, capabilities) {\n\t\tconst cache = new UniformsCache();\n\t\tconst shadowCache = ShadowUniformsCache();\n\t\tconst state = {\n\t\t\tversion: 0,\n\t\t\thash: {\n\t\t\t\tdirectionalLength: -1,\n\t\t\t\tpointLength: -1,\n\t\t\t\tspotLength: -1,\n\t\t\t\trectAreaLength: -1,\n\t\t\t\themiLength: -1,\n\t\t\t\tnumDirectionalShadows: -1,\n\t\t\t\tnumPointShadows: -1,\n\t\t\t\tnumSpotShadows: -1\n\t\t\t},\n\t\t\tambient: [0, 0, 0],\n\t\t\tprobe: [],\n\t\t\tdirectional: [],\n\t\t\tdirectionalShadow: [],\n\t\t\tdirectionalShadowMap: [],\n\t\t\tdirectionalShadowMatrix: [],\n\t\t\tspot: [],\n\t\t\tspotShadow: [],\n\t\t\tspotShadowMap: [],\n\t\t\tspotShadowMatrix: [],\n\t\t\trectArea: [],\n\t\t\trectAreaLTC1: null,\n\t\t\trectAreaLTC2: null,\n\t\t\tpoint: [],\n\t\t\tpointShadow: [],\n\t\t\tpointShadowMap: [],\n\t\t\tpointShadowMatrix: [],\n\t\t\themi: []\n\t\t};\n\n\t\tfor (let i = 0; i < 9; i++) state.probe.push(new Vector3());\n\n\t\tconst vector3 = new Vector3();\n\t\tconst matrix4 = new Matrix4();\n\t\tconst matrix42 = new Matrix4();\n\n\t\tfunction setup(lights, physicallyCorrectLights) {\n\t\t\tlet r = 0,\n\t\t\t\t\tg = 0,\n\t\t\t\t\tb = 0;\n\n\t\t\tfor (let i = 0; i < 9; i++) state.probe[i].set(0, 0, 0);\n\n\t\t\tlet directionalLength = 0;\n\t\t\tlet pointLength = 0;\n\t\t\tlet spotLength = 0;\n\t\t\tlet rectAreaLength = 0;\n\t\t\tlet hemiLength = 0;\n\t\t\tlet numDirectionalShadows = 0;\n\t\t\tlet numPointShadows = 0;\n\t\t\tlet numSpotShadows = 0;\n\t\t\tlights.sort(shadowCastingLightsFirst); // artist-friendly light intensity scaling factor\n\n\t\t\tconst scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1;\n\n\t\t\tfor (let i = 0, l = lights.length; i < l; i++) {\n\t\t\t\tconst light = lights[i];\n\t\t\t\tconst color = light.color;\n\t\t\t\tconst intensity = light.intensity;\n\t\t\t\tconst distance = light.distance;\n\t\t\t\tconst shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n\n\t\t\t\tif (light.isAmbientLight) {\n\t\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\t\tb += color.b * intensity * scaleFactor;\n\t\t\t\t} else if (light.isLightProbe) {\n\t\t\t\t\tfor (let j = 0; j < 9; j++) {\n\t\t\t\t\t\tstate.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n\t\t\t\t\t}\n\t\t\t\t} else if (light.isDirectionalLight) {\n\t\t\t\t\tconst uniforms = cache.get(light);\n\t\t\t\t\tuniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n\n\t\t\t\t\tif (light.castShadow) {\n\t\t\t\t\t\tconst shadow = light.shadow;\n\t\t\t\t\t\tconst shadowUniforms = shadowCache.get(light);\n\t\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\t\tstate.directionalShadow[directionalLength] = shadowUniforms;\n\t\t\t\t\t\tstate.directionalShadowMap[directionalLength] = shadowMap;\n\t\t\t\t\t\tstate.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n\t\t\t\t\t\tnumDirectionalShadows++;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.directional[directionalLength] = uniforms;\n\t\t\t\t\tdirectionalLength++;\n\t\t\t\t} else if (light.isSpotLight) {\n\t\t\t\t\tconst uniforms = cache.get(light);\n\t\t\t\t\tuniforms.position.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tuniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n\t\t\t\t\tuniforms.distance = distance;\n\t\t\t\t\tuniforms.coneCos = Math.cos(light.angle);\n\t\t\t\t\tuniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n\t\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\t\tif (light.castShadow) {\n\t\t\t\t\t\tconst shadow = light.shadow;\n\t\t\t\t\t\tconst shadowUniforms = shadowCache.get(light);\n\t\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\t\tstate.spotShadow[spotLength] = shadowUniforms;\n\t\t\t\t\t\tstate.spotShadowMap[spotLength] = shadowMap;\n\t\t\t\t\t\tstate.spotShadowMatrix[spotLength] = light.shadow.matrix;\n\t\t\t\t\t\tnumSpotShadows++;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.spot[spotLength] = uniforms;\n\t\t\t\t\tspotLength++;\n\t\t\t\t} else if (light.isRectAreaLight) {\n\t\t\t\t\tconst uniforms = cache.get(light); // (a) intensity is the total visible light emitted\n\t\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\t\t\t\t\t// (b) intensity is the brightness of the light\n\n\t\t\t\t\tuniforms.color.copy(color).multiplyScalar(intensity);\n\t\t\t\t\tuniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0);\n\t\t\t\t\tuniforms.halfHeight.set(0.0, light.height * 0.5, 0.0);\n\t\t\t\t\tstate.rectArea[rectAreaLength] = uniforms;\n\t\t\t\t\trectAreaLength++;\n\t\t\t\t} else if (light.isPointLight) {\n\t\t\t\t\tconst uniforms = cache.get(light);\n\t\t\t\t\tuniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n\t\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\t\tif (light.castShadow) {\n\t\t\t\t\t\tconst shadow = light.shadow;\n\t\t\t\t\t\tconst shadowUniforms = shadowCache.get(light);\n\t\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\t\t\t\t\t\tstate.pointShadow[pointLength] = shadowUniforms;\n\t\t\t\t\t\tstate.pointShadowMap[pointLength] = shadowMap;\n\t\t\t\t\t\tstate.pointShadowMatrix[pointLength] = light.shadow.matrix;\n\t\t\t\t\t\tnumPointShadows++;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.point[pointLength] = uniforms;\n\t\t\t\t\tpointLength++;\n\t\t\t\t} else if (light.isHemisphereLight) {\n\t\t\t\t\tconst uniforms = cache.get(light);\n\t\t\t\t\tuniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n\t\t\t\t\tuniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n\t\t\t\t\tstate.hemi[hemiLength] = uniforms;\n\t\t\t\t\themiLength++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rectAreaLength > 0) {\n\t\t\t\tif (capabilities.isWebGL2) {\n\t\t\t\t\t// WebGL 2\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\t\t\t\t} else {\n\t\t\t\t\t// WebGL 1\n\t\t\t\t\tif (extensions.has('OES_texture_float_linear') === true) {\n\t\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\t\t\t\t\t} else if (extensions.has('OES_texture_half_float_linear') === true) {\n\t\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error('THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.ambient[0] = r;\n\t\t\tstate.ambient[1] = g;\n\t\t\tstate.ambient[2] = b;\n\t\t\tconst hash = state.hash;\n\n\t\t\tif (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows) {\n\t\t\t\tstate.directional.length = directionalLength;\n\t\t\t\tstate.spot.length = spotLength;\n\t\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\t\tstate.point.length = pointLength;\n\t\t\t\tstate.hemi.length = hemiLength;\n\t\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\t\t\t\thash.directionalLength = directionalLength;\n\t\t\t\thash.pointLength = pointLength;\n\t\t\t\thash.spotLength = spotLength;\n\t\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\t\thash.hemiLength = hemiLength;\n\t\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\t\thash.numPointShadows = numPointShadows;\n\t\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\t\tstate.version = nextVersion++;\n\t\t\t}\n\t\t}\n\n\t\tfunction setupView(lights, camera) {\n\t\t\tlet directionalLength = 0;\n\t\t\tlet pointLength = 0;\n\t\t\tlet spotLength = 0;\n\t\t\tlet rectAreaLength = 0;\n\t\t\tlet hemiLength = 0;\n\t\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\t\tfor (let i = 0, l = lights.length; i < l; i++) {\n\t\t\t\tconst light = lights[i];\n\n\t\t\t\tif (light.isDirectionalLight) {\n\t\t\t\t\tconst uniforms = state.directional[directionalLength];\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tvector3.setFromMatrixPosition(light.target.matrixWorld);\n\t\t\t\t\tuniforms.direction.sub(vector3);\n\t\t\t\t\tuniforms.direction.transformDirection(viewMatrix);\n\t\t\t\t\tdirectionalLength++;\n\t\t\t\t} else if (light.isSpotLight) {\n\t\t\t\t\tconst uniforms = state.spot[spotLength];\n\t\t\t\t\tuniforms.position.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tuniforms.position.applyMatrix4(viewMatrix);\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tvector3.setFromMatrixPosition(light.target.matrixWorld);\n\t\t\t\t\tuniforms.direction.sub(vector3);\n\t\t\t\t\tuniforms.direction.transformDirection(viewMatrix);\n\t\t\t\t\tspotLength++;\n\t\t\t\t} else if (light.isRectAreaLight) {\n\t\t\t\t\tconst uniforms = state.rectArea[rectAreaLength];\n\t\t\t\t\tuniforms.position.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tuniforms.position.applyMatrix4(viewMatrix); // extract local rotation of light to derive width/height half vectors\n\n\t\t\t\t\tmatrix42.identity();\n\t\t\t\t\tmatrix4.copy(light.matrixWorld);\n\t\t\t\t\tmatrix4.premultiply(viewMatrix);\n\t\t\t\t\tmatrix42.extractRotation(matrix4);\n\t\t\t\t\tuniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0);\n\t\t\t\t\tuniforms.halfHeight.set(0.0, light.height * 0.5, 0.0);\n\t\t\t\t\tuniforms.halfWidth.applyMatrix4(matrix42);\n\t\t\t\t\tuniforms.halfHeight.applyMatrix4(matrix42);\n\t\t\t\t\trectAreaLength++;\n\t\t\t\t} else if (light.isPointLight) {\n\t\t\t\t\tconst uniforms = state.point[pointLength];\n\t\t\t\t\tuniforms.position.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tuniforms.position.applyMatrix4(viewMatrix);\n\t\t\t\t\tpointLength++;\n\t\t\t\t} else if (light.isHemisphereLight) {\n\t\t\t\t\tconst uniforms = state.hemi[hemiLength];\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\t\tuniforms.direction.transformDirection(viewMatrix);\n\t\t\t\t\tuniforms.direction.normalize();\n\t\t\t\t\themiLength++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsetup: setup,\n\t\t\tsetupView: setupView,\n\t\t\tstate: state\n\t\t};\n\t}\n\n\tfunction WebGLRenderState(extensions, capabilities) {\n\t\tconst lights = new WebGLLights(extensions, capabilities);\n\t\tconst lightsArray = [];\n\t\tconst shadowsArray = [];\n\n\t\tfunction init() {\n\t\t\tlightsArray.length = 0;\n\t\t\tshadowsArray.length = 0;\n\t\t}\n\n\t\tfunction pushLight(light) {\n\t\t\tlightsArray.push(light);\n\t\t}\n\n\t\tfunction pushShadow(shadowLight) {\n\t\t\tshadowsArray.push(shadowLight);\n\t\t}\n\n\t\tfunction setupLights(physicallyCorrectLights) {\n\t\t\tlights.setup(lightsArray, physicallyCorrectLights);\n\t\t}\n\n\t\tfunction setupLightsView(camera) {\n\t\t\tlights.setupView(lightsArray, camera);\n\t\t}\n\n\t\tconst state = {\n\t\t\tlightsArray: lightsArray,\n\t\t\tshadowsArray: shadowsArray,\n\t\t\tlights: lights\n\t\t};\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tstate: state,\n\t\t\tsetupLights: setupLights,\n\t\t\tsetupLightsView: setupLightsView,\n\t\t\tpushLight: pushLight,\n\t\t\tpushShadow: pushShadow\n\t\t};\n\t}\n\n\tfunction WebGLRenderStates(extensions, capabilities) {\n\t\tlet renderStates = new WeakMap();\n\n\t\tfunction get(scene, renderCallDepth = 0) {\n\t\t\tlet renderState;\n\n\t\t\tif (renderStates.has(scene) === false) {\n\t\t\t\trenderState = new WebGLRenderState(extensions, capabilities);\n\t\t\t\trenderStates.set(scene, [renderState]);\n\t\t\t} else {\n\t\t\t\tif (renderCallDepth >= renderStates.get(scene).length) {\n\t\t\t\t\trenderState = new WebGLRenderState(extensions, capabilities);\n\t\t\t\t\trenderStates.get(scene).push(renderState);\n\t\t\t\t} else {\n\t\t\t\t\trenderState = renderStates.get(scene)[renderCallDepth];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn renderState;\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\trenderStates = new WeakMap();\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tdispose: dispose\n\t\t};\n\t}\n\n\t/**\n\t * parameters = {\n\t *\n\t *\topacity: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: \n\t * }\n\t */\n\n\tclass MeshDepthMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshDepthMaterial';\n\t\t\tthis.depthPacking = BasicDepthPacking;\n\t\t\tthis.map = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.fog = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.depthPacking = source.depthPacking;\n\t\t\tthis.map = source.map;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\n\t *\treferencePosition: ,\n\t *\tnearDistance: ,\n\t *\tfarDistance: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: \n\t *\n\t * }\n\t */\n\n\tclass MeshDistanceMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshDistanceMaterial';\n\t\t\tthis.referencePosition = new Vector3();\n\t\t\tthis.nearDistance = 1;\n\t\t\tthis.farDistance = 1000;\n\t\t\tthis.map = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.fog = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.referencePosition.copy(source.referencePosition);\n\t\t\tthis.nearDistance = source.nearDistance;\n\t\t\tthis.farDistance = source.farDistance;\n\t\t\tthis.map = source.map;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\n\tvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\nuniform float samples;\\n#include \\nvoid main() {\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\n\tvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n\tfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n\t\tlet _frustum = new Frustum();\n\n\t\tconst _shadowMapSize = new Vector2(),\n\t\t\t\t\t_viewportSize = new Vector2(),\n\t\t\t\t\t_viewport = new Vector4(),\n\t\t\t\t\t_depthMaterial = new MeshDepthMaterial({\n\t\t\tdepthPacking: RGBADepthPacking\n\t\t}),\n\t\t\t\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\t\t\t\t\t_materialCache = {},\n\t\t\t\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\t\tconst shadowSide = {\n\t\t\t0: BackSide,\n\t\t\t1: FrontSide,\n\t\t\t2: DoubleSide\n\t\t};\n\t\tconst shadowMaterialVertical = new ShaderMaterial({\n\t\t\tuniforms: {\n\t\t\t\tshadow_pass: {\n\t\t\t\t\tvalue: null\n\t\t\t\t},\n\t\t\t\tresolution: {\n\t\t\t\t\tvalue: new Vector2()\n\t\t\t\t},\n\t\t\t\tradius: {\n\t\t\t\t\tvalue: 4.0\n\t\t\t\t},\n\t\t\t\tsamples: {\n\t\t\t\t\tvalue: 8.0\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: vsm_vert,\n\t\t\tfragmentShader: vsm_frag\n\t\t});\n\t\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\t\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\t\tconst fullScreenTri = new BufferGeometry();\n\t\tfullScreenTri.setAttribute('position', new BufferAttribute(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3));\n\t\tconst fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n\t\tconst scope = this;\n\t\tthis.enabled = false;\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\t\tthis.type = PCFShadowMap;\n\n\t\tthis.render = function (lights, scene, camera) {\n\t\t\tif (scope.enabled === false) return;\n\t\t\tif (scope.autoUpdate === false && scope.needsUpdate === false) return;\n\t\t\tif (lights.length === 0) return;\n\n\t\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\n\t\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\n\t\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\t\tconst _state = _renderer.state; // Set GL state for depth map.\n\n\t\t\t_state.setBlending(NoBlending);\n\n\t\t\t_state.buffers.color.setClear(1, 1, 1, 1);\n\n\t\t\t_state.buffers.depth.setTest(true);\n\n\t\t\t_state.setScissorTest(false); // render depth map\n\n\n\t\t\tfor (let i = 0, il = lights.length; i < il; i++) {\n\t\t\t\tconst light = lights[i];\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif (shadow === undefined) {\n\t\t\t\t\tconsole.warn('THREE.WebGLShadowMap:', light, 'has no shadow.');\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (shadow.autoUpdate === false && shadow.needsUpdate === false) continue;\n\n\t\t\t\t_shadowMapSize.copy(shadow.mapSize);\n\n\t\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t\t_shadowMapSize.multiply(shadowFrameExtents);\n\n\t\t\t\t_viewportSize.copy(shadow.mapSize);\n\n\t\t\t\tif (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n\t\t\t\t\tif (_shadowMapSize.x > _maxTextureSize) {\n\t\t\t\t\t\t_viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n\t\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_shadowMapSize.y > _maxTextureSize) {\n\t\t\t\t\t\t_viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n\t\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (shadow.map === null && !shadow.isPointLightShadow && this.type === VSMShadowMap) {\n\t\t\t\t\tconst pars = {\n\t\t\t\t\t\tminFilter: LinearFilter,\n\t\t\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\t\t\tformat: RGBAFormat\n\t\t\t\t\t};\n\t\t\t\t\tshadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n\t\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\t\t\t\t\tshadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n\t\t\t\t\tshadow.camera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tif (shadow.map === null) {\n\t\t\t\t\tconst pars = {\n\t\t\t\t\t\tminFilter: NearestFilter,\n\t\t\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\t\t\tformat: RGBAFormat\n\t\t\t\t\t};\n\t\t\t\t\tshadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n\t\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\t\t\t\t\tshadow.camera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\t_renderer.setRenderTarget(shadow.map);\n\n\t\t\t\t_renderer.clear();\n\n\t\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\t\tfor (let vp = 0; vp < viewportCount; vp++) {\n\t\t\t\t\tconst viewport = shadow.getViewport(vp);\n\n\t\t\t\t\t_viewport.set(_viewportSize.x * viewport.x, _viewportSize.y * viewport.y, _viewportSize.x * viewport.z, _viewportSize.y * viewport.w);\n\n\t\t\t\t\t_state.viewport(_viewport);\n\n\t\t\t\t\tshadow.updateMatrices(light, vp);\n\t\t\t\t\t_frustum = shadow.getFrustum();\n\t\t\t\t\trenderObject(scene, camera, shadow.camera, light, this.type);\n\t\t\t\t} // do blur pass for VSM\n\n\n\t\t\t\tif (!shadow.isPointLightShadow && this.type === VSMShadowMap) {\n\t\t\t\t\tVSMPass(shadow, camera);\n\t\t\t\t}\n\n\t\t\t\tshadow.needsUpdate = false;\n\t\t\t}\n\n\t\t\tscope.needsUpdate = false;\n\n\t\t\t_renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n\t\t};\n\n\t\tfunction VSMPass(shadow, camera) {\n\t\t\tconst geometry = _objects.update(fullScreenMesh); // vertical pass\n\n\n\t\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t\tshadowMaterialVertical.uniforms.samples.value = shadow.blurSamples;\n\n\t\t\t_renderer.setRenderTarget(shadow.mapPass);\n\n\t\t\t_renderer.clear();\n\n\t\t\t_renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null); // horizontal pass\n\n\n\t\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t\tshadowMaterialHorizontal.uniforms.samples.value = shadow.blurSamples;\n\n\t\t\t_renderer.setRenderTarget(shadow.map);\n\n\t\t\t_renderer.clear();\n\n\t\t\t_renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n\t\t}\n\n\t\tfunction getDepthMaterial(object, geometry, material, light, shadowCameraNear, shadowCameraFar, type) {\n\t\t\tlet result = null;\n\t\t\tconst customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\t\tif (customMaterial !== undefined) {\n\t\t\t\tresult = customMaterial;\n\t\t\t} else {\n\t\t\t\tresult = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n\t\t\t}\n\n\t\t\tif (_renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) {\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\t\t\t\tconst keyA = result.uuid,\n\t\t\t\t\t\t\tkeyB = material.uuid;\n\t\t\t\tlet materialsForVariant = _materialCache[keyA];\n\n\t\t\t\tif (materialsForVariant === undefined) {\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[keyA] = materialsForVariant;\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[keyB];\n\n\t\t\t\tif (cachedMaterial === undefined) {\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[keyB] = cachedMaterial;\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\t\t\t}\n\n\t\t\tresult.visible = material.visible;\n\t\t\tresult.wireframe = material.wireframe;\n\n\t\t\tif (type === VSMShadowMap) {\n\t\t\t\tresult.side = material.shadowSide !== null ? material.shadowSide : material.side;\n\t\t\t} else {\n\t\t\t\tresult.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n\t\t\t}\n\n\t\t\tresult.alphaMap = material.alphaMap;\n\t\t\tresult.alphaTest = material.alphaTest;\n\t\t\tresult.clipShadows = material.clipShadows;\n\t\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\t\tresult.clipIntersection = material.clipIntersection;\n\t\t\tresult.displacementMap = material.displacementMap;\n\t\t\tresult.displacementScale = material.displacementScale;\n\t\t\tresult.displacementBias = material.displacementBias;\n\t\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\t\tresult.linewidth = material.linewidth;\n\n\t\t\tif (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n\t\t\t\tresult.referencePosition.setFromMatrixPosition(light.matrixWorld);\n\t\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\t\tresult.farDistance = shadowCameraFar;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction renderObject(object, camera, shadowCamera, light, type) {\n\t\t\tif (object.visible === false) return;\n\t\t\tconst visible = object.layers.test(camera.layers);\n\n\t\t\tif (visible && (object.isMesh || object.isLine || object.isPoints)) {\n\t\t\t\tif ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n\n\t\t\t\t\tconst geometry = _objects.update(object);\n\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif (Array.isArray(material)) {\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor (let k = 0, kl = groups.length; k < kl; k++) {\n\t\t\t\t\t\t\tconst group = groups[k];\n\t\t\t\t\t\t\tconst groupMaterial = material[group.materialIndex];\n\n\t\t\t\t\t\t\tif (groupMaterial && groupMaterial.visible) {\n\t\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial(object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);\n\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (material.visible) {\n\t\t\t\t\t\tconst depthMaterial = getDepthMaterial(object, geometry, material, light, shadowCamera.near, shadowCamera.far, type);\n\n\t\t\t\t\t\t_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\trenderObject(children[i], camera, shadowCamera, light, type);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction WebGLState(gl, extensions, capabilities) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tfunction ColorBuffer() {\n\t\t\tlet locked = false;\n\t\t\tconst color = new Vector4();\n\t\t\tlet currentColorMask = null;\n\t\t\tconst currentColorClear = new Vector4(0, 0, 0, 0);\n\t\t\treturn {\n\t\t\t\tsetMask: function (colorMask) {\n\t\t\t\t\tif (currentColorMask !== colorMask && !locked) {\n\t\t\t\t\t\tgl.colorMask(colorMask, colorMask, colorMask, colorMask);\n\t\t\t\t\t\tcurrentColorMask = colorMask;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetLocked: function (lock) {\n\t\t\t\t\tlocked = lock;\n\t\t\t\t},\n\t\t\t\tsetClear: function (r, g, b, a, premultipliedAlpha) {\n\t\t\t\t\tif (premultipliedAlpha === true) {\n\t\t\t\t\t\tr *= a;\n\t\t\t\t\t\tg *= a;\n\t\t\t\t\t\tb *= a;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolor.set(r, g, b, a);\n\n\t\t\t\t\tif (currentColorClear.equals(color) === false) {\n\t\t\t\t\t\tgl.clearColor(r, g, b, a);\n\t\t\t\t\t\tcurrentColorClear.copy(color);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treset: function () {\n\t\t\t\t\tlocked = false;\n\t\t\t\t\tcurrentColorMask = null;\n\t\t\t\t\tcurrentColorClear.set(-1, 0, 0, 0); // set to invalid state\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfunction DepthBuffer() {\n\t\t\tlet locked = false;\n\t\t\tlet currentDepthMask = null;\n\t\t\tlet currentDepthFunc = null;\n\t\t\tlet currentDepthClear = null;\n\t\t\treturn {\n\t\t\t\tsetTest: function (depthTest) {\n\t\t\t\t\tif (depthTest) {\n\t\t\t\t\t\tenable(gl.DEPTH_TEST);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdisable(gl.DEPTH_TEST);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetMask: function (depthMask) {\n\t\t\t\t\tif (currentDepthMask !== depthMask && !locked) {\n\t\t\t\t\t\tgl.depthMask(depthMask);\n\t\t\t\t\t\tcurrentDepthMask = depthMask;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetFunc: function (depthFunc) {\n\t\t\t\t\tif (currentDepthFunc !== depthFunc) {\n\t\t\t\t\t\tif (depthFunc) {\n\t\t\t\t\t\t\tswitch (depthFunc) {\n\t\t\t\t\t\t\t\tcase NeverDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.NEVER);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase AlwaysDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.ALWAYS);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase LessDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.LESS);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase LessEqualDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.LEQUAL);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase EqualDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.EQUAL);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.GEQUAL);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase GreaterDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.GREATER);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase NotEqualDepth:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.NOTEQUAL);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tgl.depthFunc(gl.LEQUAL);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.depthFunc(gl.LEQUAL);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetLocked: function (lock) {\n\t\t\t\t\tlocked = lock;\n\t\t\t\t},\n\t\t\t\tsetClear: function (depth) {\n\t\t\t\t\tif (currentDepthClear !== depth) {\n\t\t\t\t\t\tgl.clearDepth(depth);\n\t\t\t\t\t\tcurrentDepthClear = depth;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treset: function () {\n\t\t\t\t\tlocked = false;\n\t\t\t\t\tcurrentDepthMask = null;\n\t\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\t\tcurrentDepthClear = null;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfunction StencilBuffer() {\n\t\t\tlet locked = false;\n\t\t\tlet currentStencilMask = null;\n\t\t\tlet currentStencilFunc = null;\n\t\t\tlet currentStencilRef = null;\n\t\t\tlet currentStencilFuncMask = null;\n\t\t\tlet currentStencilFail = null;\n\t\t\tlet currentStencilZFail = null;\n\t\t\tlet currentStencilZPass = null;\n\t\t\tlet currentStencilClear = null;\n\t\t\treturn {\n\t\t\t\tsetTest: function (stencilTest) {\n\t\t\t\t\tif (!locked) {\n\t\t\t\t\t\tif (stencilTest) {\n\t\t\t\t\t\t\tenable(gl.STENCIL_TEST);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdisable(gl.STENCIL_TEST);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetMask: function (stencilMask) {\n\t\t\t\t\tif (currentStencilMask !== stencilMask && !locked) {\n\t\t\t\t\t\tgl.stencilMask(stencilMask);\n\t\t\t\t\t\tcurrentStencilMask = stencilMask;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetFunc: function (stencilFunc, stencilRef, stencilMask) {\n\t\t\t\t\tif (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n\t\t\t\t\t\tgl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n\t\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetOp: function (stencilFail, stencilZFail, stencilZPass) {\n\t\t\t\t\tif (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n\t\t\t\t\t\tgl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n\t\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetLocked: function (lock) {\n\t\t\t\t\tlocked = lock;\n\t\t\t\t},\n\t\t\t\tsetClear: function (stencil) {\n\t\t\t\t\tif (currentStencilClear !== stencil) {\n\t\t\t\t\t\tgl.clearStencil(stencil);\n\t\t\t\t\t\tcurrentStencilClear = stencil;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treset: function () {\n\t\t\t\t\tlocked = false;\n\t\t\t\t\tcurrentStencilMask = null;\n\t\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\t\tcurrentStencilRef = null;\n\t\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\t\tcurrentStencilFail = null;\n\t\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\t\tcurrentStencilClear = null;\n\t\t\t\t}\n\t\t\t};\n\t\t} //\n\n\n\t\tconst colorBuffer = new ColorBuffer();\n\t\tconst depthBuffer = new DepthBuffer();\n\t\tconst stencilBuffer = new StencilBuffer();\n\t\tlet enabledCapabilities = {};\n\t\tlet xrFramebuffer = null;\n\t\tlet currentBoundFramebuffers = {};\n\t\tlet currentProgram = null;\n\t\tlet currentBlendingEnabled = false;\n\t\tlet currentBlending = null;\n\t\tlet currentBlendEquation = null;\n\t\tlet currentBlendSrc = null;\n\t\tlet currentBlendDst = null;\n\t\tlet currentBlendEquationAlpha = null;\n\t\tlet currentBlendSrcAlpha = null;\n\t\tlet currentBlendDstAlpha = null;\n\t\tlet currentPremultipledAlpha = false;\n\t\tlet currentFlipSided = null;\n\t\tlet currentCullFace = null;\n\t\tlet currentLineWidth = null;\n\t\tlet currentPolygonOffsetFactor = null;\n\t\tlet currentPolygonOffsetUnits = null;\n\t\tconst maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n\t\tlet lineWidthAvailable = false;\n\t\tlet version = 0;\n\t\tconst glVersion = gl.getParameter(gl.VERSION);\n\n\t\tif (glVersion.indexOf('WebGL') !== -1) {\n\t\t\tversion = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n\t\t\tlineWidthAvailable = version >= 1.0;\n\t\t} else if (glVersion.indexOf('OpenGL ES') !== -1) {\n\t\t\tversion = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n\t\t\tlineWidthAvailable = version >= 2.0;\n\t\t}\n\n\t\tlet currentTextureSlot = null;\n\t\tlet currentBoundTextures = {};\n\t\tconst scissorParam = gl.getParameter(gl.SCISSOR_BOX);\n\t\tconst viewportParam = gl.getParameter(gl.VIEWPORT);\n\t\tconst currentScissor = new Vector4().fromArray(scissorParam);\n\t\tconst currentViewport = new Vector4().fromArray(viewportParam);\n\n\t\tfunction createTexture(type, target, count) {\n\t\t\tconst data = new Uint8Array(4); // 4 is required to match default unpack alignment of 4.\n\n\t\t\tconst texture = gl.createTexture();\n\t\t\tgl.bindTexture(type, texture);\n\t\t\tgl.texParameteri(type, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\t\t\tgl.texParameteri(type, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tgl.texImage2D(target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t\tconst emptyTextures = {};\n\t\temptyTextures[gl.TEXTURE_2D] = createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1);\n\t\temptyTextures[gl.TEXTURE_CUBE_MAP] = createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6); // init\n\n\t\tcolorBuffer.setClear(0, 0, 0, 1);\n\t\tdepthBuffer.setClear(1);\n\t\tstencilBuffer.setClear(0);\n\t\tenable(gl.DEPTH_TEST);\n\t\tdepthBuffer.setFunc(LessEqualDepth);\n\t\tsetFlipSided(false);\n\t\tsetCullFace(CullFaceBack);\n\t\tenable(gl.CULL_FACE);\n\t\tsetBlending(NoBlending); //\n\n\t\tfunction enable(id) {\n\t\t\tif (enabledCapabilities[id] !== true) {\n\t\t\t\tgl.enable(id);\n\t\t\t\tenabledCapabilities[id] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction disable(id) {\n\t\t\tif (enabledCapabilities[id] !== false) {\n\t\t\t\tgl.disable(id);\n\t\t\t\tenabledCapabilities[id] = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction bindXRFramebuffer(framebuffer) {\n\t\t\tif (framebuffer !== xrFramebuffer) {\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\t\t\t\txrFramebuffer = framebuffer;\n\t\t\t}\n\t\t}\n\n\t\tfunction bindFramebuffer(target, framebuffer) {\n\t\t\tif (framebuffer === null && xrFramebuffer !== null) framebuffer = xrFramebuffer; // use active XR framebuffer if available\n\n\t\t\tif (currentBoundFramebuffers[target] !== framebuffer) {\n\t\t\t\tgl.bindFramebuffer(target, framebuffer);\n\t\t\t\tcurrentBoundFramebuffers[target] = framebuffer;\n\n\t\t\t\tif (isWebGL2) {\n\t\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\t\t\t\t\tif (target === gl.DRAW_FRAMEBUFFER) {\n\t\t\t\t\t\tcurrentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target === gl.FRAMEBUFFER) {\n\t\t\t\t\t\tcurrentBoundFramebuffers[gl.DRAW_FRAMEBUFFER] = framebuffer;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction useProgram(program) {\n\t\t\tif (currentProgram !== program) {\n\t\t\t\tgl.useProgram(program);\n\t\t\t\tcurrentProgram = program;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tconst equationToGL = {\n\t\t\t[AddEquation]: gl.FUNC_ADD,\n\t\t\t[SubtractEquation]: gl.FUNC_SUBTRACT,\n\t\t\t[ReverseSubtractEquation]: gl.FUNC_REVERSE_SUBTRACT\n\t\t};\n\n\t\tif (isWebGL2) {\n\t\t\tequationToGL[MinEquation] = gl.MIN;\n\t\t\tequationToGL[MaxEquation] = gl.MAX;\n\t\t} else {\n\t\t\tconst extension = extensions.get('EXT_blend_minmax');\n\n\t\t\tif (extension !== null) {\n\t\t\t\tequationToGL[MinEquation] = extension.MIN_EXT;\n\t\t\t\tequationToGL[MaxEquation] = extension.MAX_EXT;\n\t\t\t}\n\t\t}\n\n\t\tconst factorToGL = {\n\t\t\t[ZeroFactor]: gl.ZERO,\n\t\t\t[OneFactor]: gl.ONE,\n\t\t\t[SrcColorFactor]: gl.SRC_COLOR,\n\t\t\t[SrcAlphaFactor]: gl.SRC_ALPHA,\n\t\t\t[SrcAlphaSaturateFactor]: gl.SRC_ALPHA_SATURATE,\n\t\t\t[DstColorFactor]: gl.DST_COLOR,\n\t\t\t[DstAlphaFactor]: gl.DST_ALPHA,\n\t\t\t[OneMinusSrcColorFactor]: gl.ONE_MINUS_SRC_COLOR,\n\t\t\t[OneMinusSrcAlphaFactor]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t\t[OneMinusDstColorFactor]: gl.ONE_MINUS_DST_COLOR,\n\t\t\t[OneMinusDstAlphaFactor]: gl.ONE_MINUS_DST_ALPHA\n\t\t};\n\n\t\tfunction setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n\t\t\tif (blending === NoBlending) {\n\t\t\t\tif (currentBlendingEnabled === true) {\n\t\t\t\t\tdisable(gl.BLEND);\n\t\t\t\t\tcurrentBlendingEnabled = false;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentBlendingEnabled === false) {\n\t\t\t\tenable(gl.BLEND);\n\t\t\t\tcurrentBlendingEnabled = true;\n\t\t\t}\n\n\t\t\tif (blending !== CustomBlending) {\n\t\t\t\tif (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n\t\t\t\t\tif (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n\t\t\t\t\t\tgl.blendEquation(gl.FUNC_ADD);\n\t\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (premultipliedAlpha) {\n\t\t\t\t\t\tswitch (blending) {\n\t\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\t\tgl.blendFunc(gl.ONE, gl.ONE);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.error('THREE.WebGLState: Invalid blending: ', blending);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (blending) {\n\t\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\t\tgl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\t\tgl.blendFunc(gl.ZERO, gl.ONE_MINUS_SRC_COLOR);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\t\tgl.blendFunc(gl.ZERO, gl.SRC_COLOR);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.error('THREE.WebGLState: Invalid blending: ', blending);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\t\tcurrentBlendDst = null;\n\t\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\t\tcurrentBlending = blending;\n\t\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t} // custom blending\n\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n\t\t\t\tgl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\t\t\t}\n\n\t\t\tif (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n\t\t\t\tgl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = null;\n\t\t}\n\n\t\tfunction setMaterial(material, frontFaceCW) {\n\t\t\tmaterial.side === DoubleSide ? disable(gl.CULL_FACE) : enable(gl.CULL_FACE);\n\t\t\tlet flipSided = material.side === BackSide;\n\t\t\tif (frontFaceCW) flipSided = !flipSided;\n\t\t\tsetFlipSided(flipSided);\n\t\t\tmaterial.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n\t\t\tdepthBuffer.setFunc(material.depthFunc);\n\t\t\tdepthBuffer.setTest(material.depthTest);\n\t\t\tdepthBuffer.setMask(material.depthWrite);\n\t\t\tcolorBuffer.setMask(material.colorWrite);\n\t\t\tconst stencilWrite = material.stencilWrite;\n\t\t\tstencilBuffer.setTest(stencilWrite);\n\n\t\t\tif (stencilWrite) {\n\t\t\t\tstencilBuffer.setMask(material.stencilWriteMask);\n\t\t\t\tstencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n\t\t\t\tstencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n\t\t\t}\n\n\t\t\tsetPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n\t\t\tmaterial.alphaToCoverage === true ? enable(gl.SAMPLE_ALPHA_TO_COVERAGE) : disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t} //\n\n\n\t\tfunction setFlipSided(flipSided) {\n\t\t\tif (currentFlipSided !== flipSided) {\n\t\t\t\tif (flipSided) {\n\t\t\t\t\tgl.frontFace(gl.CW);\n\t\t\t\t} else {\n\t\t\t\t\tgl.frontFace(gl.CCW);\n\t\t\t\t}\n\n\t\t\t\tcurrentFlipSided = flipSided;\n\t\t\t}\n\t\t}\n\n\t\tfunction setCullFace(cullFace) {\n\t\t\tif (cullFace !== CullFaceNone) {\n\t\t\t\tenable(gl.CULL_FACE);\n\n\t\t\t\tif (cullFace !== currentCullFace) {\n\t\t\t\t\tif (cullFace === CullFaceBack) {\n\t\t\t\t\t\tgl.cullFace(gl.BACK);\n\t\t\t\t\t} else if (cullFace === CullFaceFront) {\n\t\t\t\t\t\tgl.cullFace(gl.FRONT);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.cullFace(gl.FRONT_AND_BACK);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdisable(gl.CULL_FACE);\n\t\t\t}\n\n\t\t\tcurrentCullFace = cullFace;\n\t\t}\n\n\t\tfunction setLineWidth(width) {\n\t\t\tif (width !== currentLineWidth) {\n\t\t\t\tif (lineWidthAvailable) gl.lineWidth(width);\n\t\t\t\tcurrentLineWidth = width;\n\t\t\t}\n\t\t}\n\n\t\tfunction setPolygonOffset(polygonOffset, factor, units) {\n\t\t\tif (polygonOffset) {\n\t\t\t\tenable(gl.POLYGON_OFFSET_FILL);\n\n\t\t\t\tif (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n\t\t\t\t\tgl.polygonOffset(factor, units);\n\t\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\t\tcurrentPolygonOffsetUnits = units;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdisable(gl.POLYGON_OFFSET_FILL);\n\t\t\t}\n\t\t}\n\n\t\tfunction setScissorTest(scissorTest) {\n\t\t\tif (scissorTest) {\n\t\t\t\tenable(gl.SCISSOR_TEST);\n\t\t\t} else {\n\t\t\t\tdisable(gl.SCISSOR_TEST);\n\t\t\t}\n\t\t} // texture\n\n\n\t\tfunction activeTexture(webglSlot) {\n\t\t\tif (webglSlot === undefined) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\tif (currentTextureSlot !== webglSlot) {\n\t\t\t\tgl.activeTexture(webglSlot);\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\t\t\t}\n\t\t}\n\n\t\tfunction bindTexture(webglType, webglTexture) {\n\t\t\tif (currentTextureSlot === null) {\n\t\t\t\tactiveTexture();\n\t\t\t}\n\n\t\t\tlet boundTexture = currentBoundTextures[currentTextureSlot];\n\n\t\t\tif (boundTexture === undefined) {\n\t\t\t\tboundTexture = {\n\t\t\t\t\ttype: undefined,\n\t\t\t\t\ttexture: undefined\n\t\t\t\t};\n\t\t\t\tcurrentBoundTextures[currentTextureSlot] = boundTexture;\n\t\t\t}\n\n\t\t\tif (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n\t\t\t\tgl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n\t\t\t\tboundTexture.type = webglType;\n\t\t\t\tboundTexture.texture = webglTexture;\n\t\t\t}\n\t\t}\n\n\t\tfunction unbindTexture() {\n\t\t\tconst boundTexture = currentBoundTextures[currentTextureSlot];\n\n\t\t\tif (boundTexture !== undefined && boundTexture.type !== undefined) {\n\t\t\t\tgl.bindTexture(boundTexture.type, null);\n\t\t\t\tboundTexture.type = undefined;\n\t\t\t\tboundTexture.texture = undefined;\n\t\t\t}\n\t\t}\n\n\t\tfunction compressedTexImage2D() {\n\t\t\ttry {\n\t\t\t\tgl.compressedTexImage2D.apply(gl, arguments);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('THREE.WebGLState:', error);\n\t\t\t}\n\t\t}\n\n\t\tfunction texImage2D() {\n\t\t\ttry {\n\t\t\t\tgl.texImage2D.apply(gl, arguments);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('THREE.WebGLState:', error);\n\t\t\t}\n\t\t}\n\n\t\tfunction texImage3D() {\n\t\t\ttry {\n\t\t\t\tgl.texImage3D.apply(gl, arguments);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('THREE.WebGLState:', error);\n\t\t\t}\n\t\t} //\n\n\n\t\tfunction scissor(scissor) {\n\t\t\tif (currentScissor.equals(scissor) === false) {\n\t\t\t\tgl.scissor(scissor.x, scissor.y, scissor.z, scissor.w);\n\t\t\t\tcurrentScissor.copy(scissor);\n\t\t\t}\n\t\t}\n\n\t\tfunction viewport(viewport) {\n\t\t\tif (currentViewport.equals(viewport) === false) {\n\t\t\t\tgl.viewport(viewport.x, viewport.y, viewport.z, viewport.w);\n\t\t\t\tcurrentViewport.copy(viewport);\n\t\t\t}\n\t\t} //\n\n\n\t\tfunction reset() {\n\t\t\t// reset state\n\t\t\tgl.disable(gl.BLEND);\n\t\t\tgl.disable(gl.CULL_FACE);\n\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\t\tgl.disable(gl.SCISSOR_TEST);\n\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\tgl.blendEquation(gl.FUNC_ADD);\n\t\t\tgl.blendFunc(gl.ONE, gl.ZERO);\n\t\t\tgl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO);\n\t\t\tgl.colorMask(true, true, true, true);\n\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\tgl.depthMask(true);\n\t\t\tgl.depthFunc(gl.LESS);\n\t\t\tgl.clearDepth(1);\n\t\t\tgl.stencilMask(0xffffffff);\n\t\t\tgl.stencilFunc(gl.ALWAYS, 0, 0xffffffff);\n\t\t\tgl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n\t\t\tgl.clearStencil(0);\n\t\t\tgl.cullFace(gl.BACK);\n\t\t\tgl.frontFace(gl.CCW);\n\t\t\tgl.polygonOffset(0, 0);\n\t\t\tgl.activeTexture(gl.TEXTURE0);\n\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n\t\t\tif (isWebGL2 === true) {\n\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n\t\t\t}\n\n\t\t\tgl.useProgram(null);\n\t\t\tgl.lineWidth(1);\n\t\t\tgl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n\t\t\tgl.viewport(0, 0, gl.canvas.width, gl.canvas.height); // reset internals\n\n\t\t\tenabledCapabilities = {};\n\t\t\tcurrentTextureSlot = null;\n\t\t\tcurrentBoundTextures = {};\n\t\t\txrFramebuffer = null;\n\t\t\tcurrentBoundFramebuffers = {};\n\t\t\tcurrentProgram = null;\n\t\t\tcurrentBlendingEnabled = false;\n\t\t\tcurrentBlending = null;\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\t\t\tcurrentPremultipledAlpha = false;\n\t\t\tcurrentFlipSided = null;\n\t\t\tcurrentCullFace = null;\n\t\t\tcurrentLineWidth = null;\n\t\t\tcurrentPolygonOffsetFactor = null;\n\t\t\tcurrentPolygonOffsetUnits = null;\n\t\t\tcurrentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n\t\t\tcurrentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n\t\t\tcolorBuffer.reset();\n\t\t\tdepthBuffer.reset();\n\t\t\tstencilBuffer.reset();\n\t\t}\n\n\t\treturn {\n\t\t\tbuffers: {\n\t\t\t\tcolor: colorBuffer,\n\t\t\t\tdepth: depthBuffer,\n\t\t\t\tstencil: stencilBuffer\n\t\t\t},\n\t\t\tenable: enable,\n\t\t\tdisable: disable,\n\t\t\tbindFramebuffer: bindFramebuffer,\n\t\t\tbindXRFramebuffer: bindXRFramebuffer,\n\t\t\tuseProgram: useProgram,\n\t\t\tsetBlending: setBlending,\n\t\t\tsetMaterial: setMaterial,\n\t\t\tsetFlipSided: setFlipSided,\n\t\t\tsetCullFace: setCullFace,\n\t\t\tsetLineWidth: setLineWidth,\n\t\t\tsetPolygonOffset: setPolygonOffset,\n\t\t\tsetScissorTest: setScissorTest,\n\t\t\tactiveTexture: activeTexture,\n\t\t\tbindTexture: bindTexture,\n\t\t\tunbindTexture: unbindTexture,\n\t\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\t\ttexImage2D: texImage2D,\n\t\t\ttexImage3D: texImage3D,\n\t\t\tscissor: scissor,\n\t\t\tviewport: viewport,\n\t\t\treset: reset\n\t\t};\n\t}\n\n\tfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\t\tconst maxTextures = capabilities.maxTextures;\n\t\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\t\tconst maxTextureSize = capabilities.maxTextureSize;\n\t\tconst maxSamples = capabilities.maxSamples;\n\n\t\tconst _videoTextures = new WeakMap();\n\n\t\tlet _canvas; // cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\n\t\tlet useOffscreenCanvas = false;\n\n\t\ttry {\n\t\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' && new OffscreenCanvas(1, 1).getContext('2d') !== null;\n\t\t} catch (err) {// Ignore any errors\n\t\t}\n\n\t\tfunction createCanvas(width, height) {\n\t\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\t\t\treturn useOffscreenCanvas ? new OffscreenCanvas(width, height) : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');\n\t\t}\n\n\t\tfunction resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n\t\t\tlet scale = 1; // handle case if texture exceeds max size\n\n\t\t\tif (image.width > maxSize || image.height > maxSize) {\n\t\t\t\tscale = maxSize / Math.max(image.width, image.height);\n\t\t\t} // only perform resize if necessary\n\n\n\t\t\tif (scale < 1 || needsPowerOfTwo === true) {\n\t\t\t\t// only perform resize for certain image types\n\t\t\t\tif (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n\t\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\t\t\t\t\tconst width = floor(scale * image.width);\n\t\t\t\t\tconst height = floor(scale * image.height);\n\t\t\t\t\tif (_canvas === undefined) _canvas = createCanvas(width, height); // cube textures can't reuse the same canvas\n\n\t\t\t\t\tconst canvas = needsNewCanvas ? createCanvas(width, height) : _canvas;\n\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\t\tcontext.drawImage(image, 0, 0, width, height);\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').');\n\t\t\t\t\treturn canvas;\n\t\t\t\t} else {\n\t\t\t\t\tif ('data' in image) {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').');\n\t\t\t\t\t}\n\n\t\t\t\t\treturn image;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn image;\n\t\t}\n\n\t\tfunction isPowerOfTwo$1(image) {\n\t\t\treturn isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n\t\t}\n\n\t\tfunction textureNeedsPowerOfTwo(texture) {\n\t\t\tif (isWebGL2) return false;\n\t\t\treturn texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\t\t}\n\n\t\tfunction textureNeedsGenerateMipmaps(texture, supportsMips) {\n\t\t\treturn texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\t\t}\n\n\t\tfunction generateMipmap(target, texture, width, height, depth = 1) {\n\t\t\t_gl.generateMipmap(target);\n\n\t\t\tconst textureProperties = properties.get(texture);\n\t\t\ttextureProperties.__maxMipLevel = Math.log2(Math.max(width, height, depth));\n\t\t}\n\n\t\tfunction getInternalFormat(internalFormatName, glFormat, glType) {\n\t\t\tif (isWebGL2 === false) return glFormat;\n\n\t\t\tif (internalFormatName !== null) {\n\t\t\t\tif (_gl[internalFormatName] !== undefined) return _gl[internalFormatName];\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'');\n\t\t\t}\n\n\t\t\tlet internalFormat = glFormat;\n\n\t\t\tif (glFormat === _gl.RED) {\n\t\t\t\tif (glType === _gl.FLOAT) internalFormat = _gl.R32F;\n\t\t\t\tif (glType === _gl.HALF_FLOAT) internalFormat = _gl.R16F;\n\t\t\t\tif (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8;\n\t\t\t}\n\n\t\t\tif (glFormat === _gl.RGB) {\n\t\t\t\tif (glType === _gl.FLOAT) internalFormat = _gl.RGB32F;\n\t\t\t\tif (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGB16F;\n\t\t\t\tif (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGB8;\n\t\t\t}\n\n\t\t\tif (glFormat === _gl.RGBA) {\n\t\t\t\tif (glType === _gl.FLOAT) internalFormat = _gl.RGBA32F;\n\t\t\t\tif (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGBA16F;\n\t\t\t\tif (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGBA8;\n\t\t\t}\n\n\t\t\tif (internalFormat === _gl.R16F || internalFormat === _gl.R32F || internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F) {\n\t\t\t\textensions.get('EXT_color_buffer_float');\n\t\t\t}\n\n\t\t\treturn internalFormat;\n\t\t} // Fallback filters for non-power-of-2 textures\n\n\n\t\tfunction filterFallback(f) {\n\t\t\tif (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n\t\t\t\treturn _gl.NEAREST;\n\t\t\t}\n\n\t\t\treturn _gl.LINEAR;\n\t\t} //\n\n\n\t\tfunction onTextureDispose(event) {\n\t\t\tconst texture = event.target;\n\t\t\ttexture.removeEventListener('dispose', onTextureDispose);\n\t\t\tdeallocateTexture(texture);\n\n\t\t\tif (texture.isVideoTexture) {\n\t\t\t\t_videoTextures.delete(texture);\n\t\t\t}\n\n\t\t\tinfo.memory.textures--;\n\t\t}\n\n\t\tfunction onRenderTargetDispose(event) {\n\t\t\tconst renderTarget = event.target;\n\t\t\trenderTarget.removeEventListener('dispose', onRenderTargetDispose);\n\t\t\tdeallocateRenderTarget(renderTarget);\n\t\t} //\n\n\n\t\tfunction deallocateTexture(texture) {\n\t\t\tconst textureProperties = properties.get(texture);\n\t\t\tif (textureProperties.__webglInit === undefined) return;\n\n\t\t\t_gl.deleteTexture(textureProperties.__webglTexture);\n\n\t\t\tproperties.remove(texture);\n\t\t}\n\n\t\tfunction deallocateRenderTarget(renderTarget) {\n\t\t\tconst texture = renderTarget.texture;\n\t\t\tconst renderTargetProperties = properties.get(renderTarget);\n\t\t\tconst textureProperties = properties.get(texture);\n\t\t\tif (!renderTarget) return;\n\n\t\t\tif (textureProperties.__webglTexture !== undefined) {\n\t\t\t\t_gl.deleteTexture(textureProperties.__webglTexture);\n\n\t\t\t\tinfo.memory.textures--;\n\t\t\t}\n\n\t\t\tif (renderTarget.depthTexture) {\n\t\t\t\trenderTarget.depthTexture.dispose();\n\t\t\t}\n\n\t\t\tif (renderTarget.isWebGLCubeRenderTarget) {\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\t_gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n\n\t\t\t\t\tif (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n\n\t\t\t\tif (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n\t\t\t\tif (renderTargetProperties.__webglMultisampledFramebuffer) _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n\t\t\t\tif (renderTargetProperties.__webglColorRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer);\n\t\t\t\tif (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n\t\t\t}\n\n\t\t\tif (renderTarget.isWebGLMultipleRenderTargets) {\n\t\t\t\tfor (let i = 0, il = texture.length; i < il; i++) {\n\t\t\t\t\tconst attachmentProperties = properties.get(texture[i]);\n\n\t\t\t\t\tif (attachmentProperties.__webglTexture) {\n\t\t\t\t\t\t_gl.deleteTexture(attachmentProperties.__webglTexture);\n\n\t\t\t\t\t\tinfo.memory.textures--;\n\t\t\t\t\t}\n\n\t\t\t\t\tproperties.remove(texture[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tproperties.remove(texture);\n\t\t\tproperties.remove(renderTarget);\n\t\t} //\n\n\n\t\tlet textureUnits = 0;\n\n\t\tfunction resetTextureUnits() {\n\t\t\ttextureUnits = 0;\n\t\t}\n\n\t\tfunction allocateTextureUnit() {\n\t\t\tconst textureUnit = textureUnits;\n\n\t\t\tif (textureUnit >= maxTextures) {\n\t\t\t\tconsole.warn('THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures);\n\t\t\t}\n\n\t\t\ttextureUnits += 1;\n\t\t\treturn textureUnit;\n\t\t} //\n\n\n\t\tfunction setTexture2D(texture, slot) {\n\t\t\tconst textureProperties = properties.get(texture);\n\t\t\tif (texture.isVideoTexture) updateVideoTexture(texture);\n\n\t\t\tif (texture.version > 0 && textureProperties.__version !== texture.version) {\n\t\t\t\tconst image = texture.image;\n\n\t\t\t\tif (image === undefined) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Texture marked for update but image is undefined');\n\t\t\t\t} else if (image.complete === false) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Texture marked for update but image is incomplete');\n\t\t\t\t} else {\n\t\t\t\t\tuploadTexture(textureProperties, texture, slot);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(_gl.TEXTURE_2D, textureProperties.__webglTexture);\n\t\t}\n\n\t\tfunction setTexture2DArray(texture, slot) {\n\t\t\tconst textureProperties = properties.get(texture);\n\n\t\t\tif (texture.version > 0 && textureProperties.__version !== texture.version) {\n\t\t\t\tuploadTexture(textureProperties, texture, slot);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(_gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture);\n\t\t}\n\n\t\tfunction setTexture3D(texture, slot) {\n\t\t\tconst textureProperties = properties.get(texture);\n\n\t\t\tif (texture.version > 0 && textureProperties.__version !== texture.version) {\n\t\t\t\tuploadTexture(textureProperties, texture, slot);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(_gl.TEXTURE_3D, textureProperties.__webglTexture);\n\t\t}\n\n\t\tfunction setTextureCube(texture, slot) {\n\t\t\tconst textureProperties = properties.get(texture);\n\n\t\t\tif (texture.version > 0 && textureProperties.__version !== texture.version) {\n\t\t\t\tuploadCubeTexture(textureProperties, texture, slot);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture);\n\t\t}\n\n\t\tconst wrappingToGL = {\n\t\t\t[RepeatWrapping]: _gl.REPEAT,\n\t\t\t[ClampToEdgeWrapping]: _gl.CLAMP_TO_EDGE,\n\t\t\t[MirroredRepeatWrapping]: _gl.MIRRORED_REPEAT\n\t\t};\n\t\tconst filterToGL = {\n\t\t\t[NearestFilter]: _gl.NEAREST,\n\t\t\t[NearestMipmapNearestFilter]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t\t[NearestMipmapLinearFilter]: _gl.NEAREST_MIPMAP_LINEAR,\n\t\t\t[LinearFilter]: _gl.LINEAR,\n\t\t\t[LinearMipmapNearestFilter]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t\t[LinearMipmapLinearFilter]: _gl.LINEAR_MIPMAP_LINEAR\n\t\t};\n\n\t\tfunction setTextureParameters(textureType, texture, supportsMips) {\n\t\t\tif (supportsMips) {\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[texture.wrapS]);\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[texture.wrapT]);\n\n\t\t\t\tif (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) {\n\t\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[texture.wrapR]);\n\t\t\t\t}\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[texture.magFilter]);\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[texture.minFilter]);\n\t\t\t} else {\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE);\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE);\n\n\t\t\t\tif (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) {\n\t\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE);\n\t\t\t\t}\n\n\t\t\t\tif (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.');\n\t\t\t\t}\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterFallback(texture.magFilter));\n\n\t\t\t\t_gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterFallback(texture.minFilter));\n\n\t\t\t\tif (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (extensions.has('EXT_texture_filter_anisotropic') === true) {\n\t\t\t\tconst extension = extensions.get('EXT_texture_filter_anisotropic');\n\t\t\t\tif (texture.type === FloatType && extensions.has('OES_texture_float_linear') === false) return; // verify extension for WebGL 1 and WebGL 2\n\n\t\t\t\tif (isWebGL2 === false && texture.type === HalfFloatType && extensions.has('OES_texture_half_float_linear') === false) return; // verify extension for WebGL 1 only\n\n\t\t\t\tif (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n\t\t\t\t\t_gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n\n\t\t\t\t\tproperties.get(texture).__currentAnisotropy = texture.anisotropy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction initTexture(textureProperties, texture) {\n\t\t\tif (textureProperties.__webglInit === undefined) {\n\t\t\t\ttextureProperties.__webglInit = true;\n\t\t\t\ttexture.addEventListener('dispose', onTextureDispose);\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\t\t\t\tinfo.memory.textures++;\n\t\t\t}\n\t\t}\n\n\t\tfunction uploadTexture(textureProperties, texture, slot) {\n\t\t\tlet textureType = _gl.TEXTURE_2D;\n\t\t\tif (texture.isDataTexture2DArray) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\t\tif (texture.isDataTexture3D) textureType = _gl.TEXTURE_3D;\n\t\t\tinitTexture(textureProperties, texture);\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(textureType, textureProperties.__webglTexture);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE);\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n\t\t\tconst image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize);\n\t\t\tconst supportsMips = isPowerOfTwo$1(image) || isWebGL2,\n\t\t\t\t\t\tglFormat = utils.convert(texture.format);\n\t\t\tlet glType = utils.convert(texture.type),\n\t\t\t\t\tglInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType);\n\t\t\tsetTextureParameters(textureType, texture, supportsMips);\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tif (texture.isDepthTexture) {\n\t\t\t\t// populate depth texture with dummy data\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif (isWebGL2) {\n\t\t\t\t\tif (texture.type === FloatType) {\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t} else if (texture.type === UnsignedIntType) {\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\t\t\t\t\t} else if (texture.type === UnsignedInt248Type) {\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (texture.type === FloatType) {\n\t\t\t\t\t\tconsole.error('WebGLRenderer: Floating point depth texture requires WebGL2.');\n\t\t\t\t\t}\n\t\t\t\t} // validation checks for WebGL 1\n\n\n\t\t\t\tif (texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT) {\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.');\n\t\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\t\tglType = utils.convert(texture.type);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT) {\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL; // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\n\t\t\t\t\tif (texture.type !== UnsignedInt248Type) {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.');\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert(texture.type);\n\t\t\t\t\t}\n\t\t\t\t} //\n\n\n\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n\t\t\t} else if (texture.isDataTexture) {\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\t\t\t\tif (mipmaps.length > 0 && supportsMips) {\n\t\t\t\t\tfor (let i = 0, il = mipmaps.length; i < il; i++) {\n\t\t\t\t\t\tmipmap = mipmaps[i];\n\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\t\t\t\t} else {\n\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\t\t\t\t}\n\t\t\t} else if (texture.isCompressedTexture) {\n\t\t\t\tfor (let i = 0, il = mipmaps.length; i < il; i++) {\n\t\t\t\t\tmipmap = mipmaps[i];\n\n\t\t\t\t\tif (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n\t\t\t\t\t\tif (glFormat !== null) {\n\t\t\t\t\t\t\tstate.compressedTexImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\t\t\t} else if (texture.isDataTexture2DArray) {\n\t\t\t\tstate.texImage3D(_gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\t\t\t} else if (texture.isDataTexture3D) {\n\t\t\t\tstate.texImage3D(_gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\t\t\t} else {\n\t\t\t\t// regular Texture (image, video, canvas)\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\t\t\t\tif (mipmaps.length > 0 && supportsMips) {\n\t\t\t\t\tfor (let i = 0, il = mipmaps.length; i < il; i++) {\n\t\t\t\t\t\tmipmap = mipmaps[i];\n\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap);\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\t\t\t\t} else {\n\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image);\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n\t\t\t\tgenerateMipmap(textureType, texture, image.width, image.height);\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tif (texture.onUpdate) texture.onUpdate(texture);\n\t\t}\n\n\t\tfunction uploadCubeTexture(textureProperties, texture, slot) {\n\t\t\tif (texture.image.length !== 6) return;\n\t\t\tinitTexture(textureProperties, texture);\n\t\t\tstate.activeTexture(_gl.TEXTURE0 + slot);\n\t\t\tstate.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE);\n\n\t\t\tconst isCompressed = texture && (texture.isCompressedTexture || texture.image[0].isCompressedTexture);\n\t\t\tconst isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tif (!isCompressed && !isDataTexture) {\n\t\t\t\t\tcubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize);\n\t\t\t\t} else {\n\t\t\t\t\tcubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst image = cubeImage[0],\n\t\t\t\t\t\tsupportsMips = isPowerOfTwo$1(image) || isWebGL2,\n\t\t\t\t\t\tglFormat = utils.convert(texture.format),\n\t\t\t\t\t\tglType = utils.convert(texture.type),\n\t\t\t\t\t\tglInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType);\n\t\t\tsetTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips);\n\t\t\tlet mipmaps;\n\n\t\t\tif (isCompressed) {\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tmipmaps = cubeImage[i].mipmaps;\n\n\t\t\t\t\tfor (let j = 0; j < mipmaps.length; j++) {\n\t\t\t\t\t\tconst mipmap = mipmaps[j];\n\n\t\t\t\t\t\tif (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n\t\t\t\t\t\t\tif (glFormat !== null) {\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\t\t\t} else {\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tif (isDataTexture) {\n\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n\n\t\t\t\t\t\tfor (let j = 0; j < mipmaps.length; j++) {\n\t\t\t\t\t\t\tconst mipmap = mipmaps[j];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[i].image;\n\t\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n\n\t\t\t\t\t\tfor (let j = 0; j < mipmaps.length; j++) {\n\t\t\t\t\t\t\tconst mipmap = mipmaps[j];\n\t\t\t\t\t\t\tstate.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\t\t\t}\n\n\t\t\tif (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap(_gl.TEXTURE_CUBE_MAP, texture, image.width, image.height);\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tif (texture.onUpdate) texture.onUpdate(texture);\n\t\t} // Render targets\n\t\t// Setup storage for target texture and bind it to correct framebuffer\n\n\n\t\tfunction setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) {\n\t\t\tconst glFormat = utils.convert(texture.format);\n\t\t\tconst glType = utils.convert(texture.type);\n\t\t\tconst glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType);\n\n\t\t\tif (textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY) {\n\t\t\t\tstate.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null);\n\t\t\t} else {\n\t\t\t\tstate.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n\n\t\t\t_gl.framebufferTexture2D(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, 0);\n\n\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, null);\n\t\t} // Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\n\n\t\tfunction setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n\t\t\t_gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer);\n\n\t\t\tif (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n\t\t\t\tlet glInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t\tif (isMultisample) {\n\t\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\t\tif (depthTexture && depthTexture.isDepthTexture) {\n\t\t\t\t\t\tif (depthTexture.type === FloatType) {\n\t\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t} else if (depthTexture.type === UnsignedIntType) {\n\t\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst samples = getRenderTargetSamples(renderTarget);\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n\t\t\t\t} else {\n\t\t\t\t\t_gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n\t\t\t\t}\n\n\t\t\t\t_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer);\n\t\t\t} else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n\t\t\t\tif (isMultisample) {\n\t\t\t\t\tconst samples = getRenderTargetSamples(renderTarget);\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height);\n\t\t\t\t} else {\n\t\t\t\t\t_gl.renderbufferStorage(_gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height);\n\t\t\t\t}\n\n\t\t\t\t_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer);\n\t\t\t} else {\n\t\t\t\t// Use the first texture for MRT so far\n\t\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[0] : renderTarget.texture;\n\t\t\t\tconst glFormat = utils.convert(texture.format);\n\t\t\t\tconst glType = utils.convert(texture.type);\n\t\t\t\tconst glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType);\n\n\t\t\t\tif (isMultisample) {\n\t\t\t\t\tconst samples = getRenderTargetSamples(renderTarget);\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n\t\t\t\t} else {\n\t\t\t\t\t_gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n\t\t} // Setup resources for a Depth Texture for a FBO (needs an extension)\n\n\n\t\tfunction setupDepthTexture(framebuffer, renderTarget) {\n\t\t\tconst isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n\t\t\tif (isCube) throw new Error('Depth Texture with cube render targets is not supported');\n\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n\n\t\t\tif (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n\t\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\t\t\t} // upload an empty depth texture with framebuffer size\n\n\n\t\t\tif (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n\t\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t\t}\n\n\t\t\tsetTexture2D(renderTarget.depthTexture, 0);\n\n\t\t\tconst webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n\n\t\t\tif (renderTarget.depthTexture.format === DepthFormat) {\n\t\t\t\t_gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n\t\t\t} else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n\t\t\t\t_gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n\t\t\t} else {\n\t\t\t\tthrow new Error('Unknown depthTexture format');\n\t\t\t}\n\t\t} // Setup GL resources for a non-texture depth buffer\n\n\n\t\tfunction setupDepthRenderbuffer(renderTarget) {\n\t\t\tconst renderTargetProperties = properties.get(renderTarget);\n\t\t\tconst isCube = renderTarget.isWebGLCubeRenderTarget === true;\n\n\t\t\tif (renderTarget.depthTexture) {\n\t\t\t\tif (isCube) throw new Error('target.depthTexture not supported in Cube render targets');\n\t\t\t\tsetupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n\t\t\t} else {\n\t\t\t\tif (isCube) {\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i]);\n\t\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, null);\n\t\t} // Set up GL resources for the render target\n\n\n\t\tfunction setupRenderTarget(renderTarget) {\n\t\t\tconst texture = renderTarget.texture;\n\t\t\tconst renderTargetProperties = properties.get(renderTarget);\n\t\t\tconst textureProperties = properties.get(texture);\n\t\t\trenderTarget.addEventListener('dispose', onRenderTargetDispose);\n\n\t\t\tif (renderTarget.isWebGLMultipleRenderTargets !== true) {\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\t\t\t\ttextureProperties.__version = texture.version;\n\t\t\t\tinfo.memory.textures++;\n\t\t\t}\n\n\t\t\tconst isCube = renderTarget.isWebGLCubeRenderTarget === true;\n\t\t\tconst isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n\t\t\tconst isMultisample = renderTarget.isWebGLMultisampleRenderTarget === true;\n\t\t\tconst isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n\t\t\tconst supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2; // Handles WebGL2 RGBFormat fallback - #18858\n\n\t\t\tif (isWebGL2 && texture.format === RGBFormat && (texture.type === FloatType || texture.type === HalfFloatType)) {\n\t\t\t\ttexture.format = RGBAFormat;\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.');\n\t\t\t} // Setup framebuffer\n\n\n\t\t\tif (isCube) {\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t\tif (isMultipleRenderTargets) {\n\t\t\t\t\tif (capabilities.drawBuffers) {\n\t\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\t\tfor (let i = 0, il = textures.length; i < il; i++) {\n\t\t\t\t\t\t\tconst attachmentProperties = properties.get(textures[i]);\n\n\t\t\t\t\t\t\tif (attachmentProperties.__webglTexture === undefined) {\n\t\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\t\t\t\t\t\t\t\tinfo.memory.textures++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.');\n\t\t\t\t\t}\n\t\t\t\t} else if (isMultisample) {\n\t\t\t\t\tif (isWebGL2) {\n\t\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t\t_gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer);\n\n\t\t\t\t\t\tconst glFormat = utils.convert(texture.format);\n\t\t\t\t\t\tconst glType = utils.convert(texture.type);\n\t\t\t\t\t\tconst glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType);\n\t\t\t\t\t\tconst samples = getRenderTargetSamples(renderTarget);\n\n\t\t\t\t\t\t_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n\n\t\t\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n\n\t\t\t\t\t\t_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer);\n\n\t\t\t\t\t\t_gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n\n\t\t\t\t\t\tif (renderTarget.depthBuffer) {\n\t\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\t\tsetupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // Setup color buffer\n\n\n\t\t\tif (isCube) {\n\t\t\t\tstate.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture);\n\t\t\t\tsetTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips);\n\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tsetupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i);\n\t\t\t\t}\n\n\t\t\t\tif (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n\t\t\t\t\tgenerateMipmap(_gl.TEXTURE_CUBE_MAP, texture, renderTarget.width, renderTarget.height);\n\t\t\t\t}\n\n\t\t\t\tstate.unbindTexture();\n\t\t\t} else if (isMultipleRenderTargets) {\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tfor (let i = 0, il = textures.length; i < il; i++) {\n\t\t\t\t\tconst attachment = textures[i];\n\t\t\t\t\tconst attachmentProperties = properties.get(attachment);\n\t\t\t\t\tstate.bindTexture(_gl.TEXTURE_2D, attachmentProperties.__webglTexture);\n\t\t\t\t\tsetTextureParameters(_gl.TEXTURE_2D, attachment, supportsMips);\n\t\t\t\t\tsetupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D);\n\n\t\t\t\t\tif (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n\t\t\t\t\t\tgenerateMipmap(_gl.TEXTURE_2D, attachment, renderTarget.width, renderTarget.height);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstate.unbindTexture();\n\t\t\t} else {\n\t\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\t\tif (isRenderTarget3D) {\n\t\t\t\t\t// Render targets containing layers, i.e: Texture 3D and 2d arrays\n\t\t\t\t\tif (isWebGL2) {\n\t\t\t\t\t\tconst isTexture3D = texture.isDataTexture3D;\n\t\t\t\t\t\tglTextureType = isTexture3D ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstate.bindTexture(glTextureType, textureProperties.__webglTexture);\n\t\t\t\tsetTextureParameters(glTextureType, texture, supportsMips);\n\t\t\t\tsetupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType);\n\n\t\t\t\tif (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n\t\t\t\t\tgenerateMipmap(glTextureType, texture, renderTarget.width, renderTarget.height, renderTarget.depth);\n\t\t\t\t}\n\n\t\t\t\tstate.unbindTexture();\n\t\t\t} // Setup depth and stencil buffers\n\n\n\t\t\tif (renderTarget.depthBuffer) {\n\t\t\t\tsetupDepthRenderbuffer(renderTarget);\n\t\t\t}\n\t\t}\n\n\t\tfunction updateRenderTargetMipmap(renderTarget) {\n\t\t\tconst supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n\n\t\t\tfor (let i = 0, il = textures.length; i < il; i++) {\n\t\t\t\tconst texture = textures[i];\n\n\t\t\t\tif (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n\t\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\n\t\t\t\t\tconst webglTexture = properties.get(texture).__webglTexture;\n\n\t\t\t\t\tstate.bindTexture(target, webglTexture);\n\t\t\t\t\tgenerateMipmap(target, texture, renderTarget.width, renderTarget.height);\n\t\t\t\t\tstate.unbindTexture();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction updateMultisampleRenderTarget(renderTarget) {\n\t\t\tif (renderTarget.isWebGLMultisampleRenderTarget) {\n\t\t\t\tif (isWebGL2) {\n\t\t\t\t\tconst width = renderTarget.width;\n\t\t\t\t\tconst height = renderTarget.height;\n\t\t\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\t\t\tif (renderTarget.depthBuffer) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif (renderTarget.stencilBuffer) mask |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\t\tconst renderTargetProperties = properties.get(renderTarget);\n\t\t\t\t\tstate.bindFramebuffer(_gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n\t\t\t\t\tstate.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n\n\t\t\t\t\t_gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST);\n\n\t\t\t\t\tstate.bindFramebuffer(_gl.READ_FRAMEBUFFER, null);\n\t\t\t\t\tstate.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction getRenderTargetSamples(renderTarget) {\n\t\t\treturn isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ? Math.min(maxSamples, renderTarget.samples) : 0;\n\t\t}\n\n\t\tfunction updateVideoTexture(texture) {\n\t\t\tconst frame = info.render.frame; // Check the last frame we updated the VideoTexture\n\n\t\t\tif (_videoTextures.get(texture) !== frame) {\n\t\t\t\t_videoTextures.set(texture, frame);\n\n\t\t\t\ttexture.update();\n\t\t\t}\n\t\t} // backwards compatibility\n\n\n\t\tlet warnedTexture2D = false;\n\t\tlet warnedTextureCube = false;\n\n\t\tfunction safeSetTexture2D(texture, slot) {\n\t\t\tif (texture && texture.isWebGLRenderTarget) {\n\t\t\t\tif (warnedTexture2D === false) {\n\t\t\t\t\tconsole.warn('THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.');\n\t\t\t\t\twarnedTexture2D = true;\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\t\t\t}\n\n\t\t\tsetTexture2D(texture, slot);\n\t\t}\n\n\t\tfunction safeSetTextureCube(texture, slot) {\n\t\t\tif (texture && texture.isWebGLCubeRenderTarget) {\n\t\t\t\tif (warnedTextureCube === false) {\n\t\t\t\t\tconsole.warn('THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.');\n\t\t\t\t\twarnedTextureCube = true;\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\t\t\t}\n\n\t\t\tsetTextureCube(texture, slot);\n\t\t} //\n\n\n\t\tthis.allocateTextureUnit = allocateTextureUnit;\n\t\tthis.resetTextureUnits = resetTextureUnits;\n\t\tthis.setTexture2D = setTexture2D;\n\t\tthis.setTexture2DArray = setTexture2DArray;\n\t\tthis.setTexture3D = setTexture3D;\n\t\tthis.setTextureCube = setTextureCube;\n\t\tthis.setupRenderTarget = setupRenderTarget;\n\t\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\t\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\t\tthis.safeSetTexture2D = safeSetTexture2D;\n\t\tthis.safeSetTextureCube = safeSetTextureCube;\n\t}\n\n\tfunction WebGLUtils(gl, extensions, capabilities) {\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tfunction convert(p) {\n\t\t\tlet extension;\n\t\t\tif (p === UnsignedByteType) return gl.UNSIGNED_BYTE;\n\t\t\tif (p === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\tif (p === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\tif (p === UnsignedShort565Type) return gl.UNSIGNED_SHORT_5_6_5;\n\t\t\tif (p === ByteType) return gl.BYTE;\n\t\t\tif (p === ShortType) return gl.SHORT;\n\t\t\tif (p === UnsignedShortType) return gl.UNSIGNED_SHORT;\n\t\t\tif (p === IntType) return gl.INT;\n\t\t\tif (p === UnsignedIntType) return gl.UNSIGNED_INT;\n\t\t\tif (p === FloatType) return gl.FLOAT;\n\n\t\t\tif (p === HalfFloatType) {\n\t\t\t\tif (isWebGL2) return gl.HALF_FLOAT;\n\t\t\t\textension = extensions.get('OES_texture_half_float');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\treturn extension.HALF_FLOAT_OES;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === AlphaFormat) return gl.ALPHA;\n\t\t\tif (p === RGBFormat) return gl.RGB;\n\t\t\tif (p === RGBAFormat) return gl.RGBA;\n\t\t\tif (p === LuminanceFormat) return gl.LUMINANCE;\n\t\t\tif (p === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA;\n\t\t\tif (p === DepthFormat) return gl.DEPTH_COMPONENT;\n\t\t\tif (p === DepthStencilFormat) return gl.DEPTH_STENCIL;\n\t\t\tif (p === RedFormat) return gl.RED; // WebGL2 formats.\n\n\t\t\tif (p === RedIntegerFormat) return gl.RED_INTEGER;\n\t\t\tif (p === RGFormat) return gl.RG;\n\t\t\tif (p === RGIntegerFormat) return gl.RG_INTEGER;\n\t\t\tif (p === RGBIntegerFormat) return gl.RGB_INTEGER;\n\t\t\tif (p === RGBAIntegerFormat) return gl.RGBA_INTEGER;\n\n\t\t\tif (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n\t\t\t\textension = extensions.get('WEBGL_compressed_texture_s3tc');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\tif (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n\t\t\t\textension = extensions.get('WEBGL_compressed_texture_pvrtc');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\tif (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\t\tif (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\t\tif (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\t\tif (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === RGB_ETC1_Format) {\n\t\t\t\textension = extensions.get('WEBGL_compressed_texture_etc1');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n\t\t\t\textension = extensions.get('WEBGL_compressed_texture_etc');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\tif (p === RGB_ETC2_Format) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\t\tif (p === RGBA_ETC2_EAC_Format) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format || p === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format || p === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format || p === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format || p === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format || p === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format) {\n\t\t\t\textension = extensions.get('WEBGL_compressed_texture_astc');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\t// TODO Complete?\n\t\t\t\t\treturn p;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === RGBA_BPTC_Format) {\n\t\t\t\textension = extensions.get('EXT_texture_compression_bptc');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\t// TODO Complete?\n\t\t\t\t\treturn p;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (p === UnsignedInt248Type) {\n\t\t\t\tif (isWebGL2) return gl.UNSIGNED_INT_24_8;\n\t\t\t\textension = extensions.get('WEBGL_depth_texture');\n\n\t\t\t\tif (extension !== null) {\n\t\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tconvert: convert\n\t\t};\n\t}\n\n\tclass ArrayCamera extends PerspectiveCamera {\n\t\tconstructor(array = []) {\n\t\t\tsuper();\n\t\t\tthis.cameras = array;\n\t\t}\n\n\t}\n\n\tArrayCamera.prototype.isArrayCamera = true;\n\n\tclass Group extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'Group';\n\t\t}\n\n\t}\n\n\tGroup.prototype.isGroup = true;\n\n\tconst _moveEvent = {\n\t\ttype: 'move'\n\t};\n\n\tclass WebXRController {\n\t\tconstructor() {\n\t\t\tthis._targetRay = null;\n\t\t\tthis._grip = null;\n\t\t\tthis._hand = null;\n\t\t}\n\n\t\tgetHandSpace() {\n\t\t\tif (this._hand === null) {\n\t\t\t\tthis._hand = new Group();\n\t\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\t\tthis._hand.visible = false;\n\t\t\t\tthis._hand.joints = {};\n\t\t\t\tthis._hand.inputState = {\n\t\t\t\t\tpinching: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn this._hand;\n\t\t}\n\n\t\tgetTargetRaySpace() {\n\t\t\tif (this._targetRay === null) {\n\t\t\t\tthis._targetRay = new Group();\n\t\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\t\tthis._targetRay.visible = false;\n\t\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\t\t\t}\n\n\t\t\treturn this._targetRay;\n\t\t}\n\n\t\tgetGripSpace() {\n\t\t\tif (this._grip === null) {\n\t\t\t\tthis._grip = new Group();\n\t\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\t\tthis._grip.visible = false;\n\t\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\t\tthis._grip.angularVelocity = new Vector3();\n\t\t\t}\n\n\t\t\treturn this._grip;\n\t\t}\n\n\t\tdispatchEvent(event) {\n\t\t\tif (this._targetRay !== null) {\n\t\t\t\tthis._targetRay.dispatchEvent(event);\n\t\t\t}\n\n\t\t\tif (this._grip !== null) {\n\t\t\t\tthis._grip.dispatchEvent(event);\n\t\t\t}\n\n\t\t\tif (this._hand !== null) {\n\t\t\t\tthis._hand.dispatchEvent(event);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tdisconnect(inputSource) {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'disconnected',\n\t\t\t\tdata: inputSource\n\t\t\t});\n\n\t\t\tif (this._targetRay !== null) {\n\t\t\t\tthis._targetRay.visible = false;\n\t\t\t}\n\n\t\t\tif (this._grip !== null) {\n\t\t\t\tthis._grip.visible = false;\n\t\t\t}\n\n\t\t\tif (this._hand !== null) {\n\t\t\t\tthis._hand.visible = false;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tupdate(inputSource, frame, referenceSpace) {\n\t\t\tlet inputPose = null;\n\t\t\tlet gripPose = null;\n\t\t\tlet handPose = null;\n\t\t\tconst targetRay = this._targetRay;\n\t\t\tconst grip = this._grip;\n\t\t\tconst hand = this._hand;\n\n\t\t\tif (inputSource && frame.session.visibilityState !== 'visible-blurred') {\n\t\t\t\tif (targetRay !== null) {\n\t\t\t\t\tinputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n\n\t\t\t\t\tif (inputPose !== null) {\n\t\t\t\t\t\ttargetRay.matrix.fromArray(inputPose.transform.matrix);\n\t\t\t\t\t\ttargetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n\n\t\t\t\t\t\tif (inputPose.linearVelocity) {\n\t\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\t\ttargetRay.linearVelocity.copy(inputPose.linearVelocity);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (inputPose.angularVelocity) {\n\t\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\t\ttargetRay.angularVelocity.copy(inputPose.angularVelocity);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.dispatchEvent(_moveEvent);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hand && inputSource.hand) {\n\t\t\t\t\thandPose = true;\n\n\t\t\t\t\tfor (const inputjoint of inputSource.hand.values()) {\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tconst jointPose = frame.getJointPose(inputjoint, referenceSpace);\n\n\t\t\t\t\t\tif (hand.joints[inputjoint.jointName] === undefined) {\n\t\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\t\thand.joints[inputjoint.jointName] = joint; // ??\n\n\t\t\t\t\t\t\thand.add(joint);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst joint = hand.joints[inputjoint.jointName];\n\n\t\t\t\t\t\tif (jointPose !== null) {\n\t\t\t\t\t\t\tjoint.matrix.fromArray(jointPose.transform.matrix);\n\t\t\t\t\t\t\tjoint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\t\t\t\t\t} // Custom events\n\t\t\t\t\t// Check pinchz\n\n\n\t\t\t\t\tconst indexTip = hand.joints['index-finger-tip'];\n\t\t\t\t\tconst thumbTip = hand.joints['thumb-tip'];\n\t\t\t\t\tconst distance = indexTip.position.distanceTo(thumbTip.position);\n\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\tif (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (grip !== null && inputSource.gripSpace) {\n\t\t\t\t\t\tgripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n\n\t\t\t\t\t\tif (gripPose !== null) {\n\t\t\t\t\t\t\tgrip.matrix.fromArray(gripPose.transform.matrix);\n\t\t\t\t\t\t\tgrip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n\n\t\t\t\t\t\t\tif (gripPose.linearVelocity) {\n\t\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\t\tgrip.linearVelocity.copy(gripPose.linearVelocity);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (gripPose.angularVelocity) {\n\t\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\t\tgrip.angularVelocity.copy(gripPose.angularVelocity);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (targetRay !== null) {\n\t\t\t\ttargetRay.visible = inputPose !== null;\n\t\t\t}\n\n\t\t\tif (grip !== null) {\n\t\t\t\tgrip.visible = gripPose !== null;\n\t\t\t}\n\n\t\t\tif (hand !== null) {\n\t\t\t\thand.visible = handPose !== null;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass WebXRManager extends EventDispatcher {\n\t\tconstructor(renderer, gl) {\n\t\t\tsuper();\n\t\t\tconst scope = this;\n\t\t\tconst state = renderer.state;\n\t\t\tlet session = null;\n\t\t\tlet framebufferScaleFactor = 1.0;\n\t\t\tlet referenceSpace = null;\n\t\t\tlet referenceSpaceType = 'local-floor';\n\t\t\tlet pose = null;\n\t\t\tlet glBinding = null;\n\t\t\tlet glFramebuffer = null;\n\t\t\tlet glProjLayer = null;\n\t\t\tlet glBaseLayer = null;\n\t\t\tlet isMultisample = false;\n\t\t\tlet glMultisampledFramebuffer = null;\n\t\t\tlet glColorRenderbuffer = null;\n\t\t\tlet glDepthRenderbuffer = null;\n\t\t\tlet xrFrame = null;\n\t\t\tlet depthStyle = null;\n\t\t\tlet clearStyle = null;\n\t\t\tconst controllers = [];\n\t\t\tconst inputSourcesMap = new Map(); //\n\n\t\t\tconst cameraL = new PerspectiveCamera();\n\t\t\tcameraL.layers.enable(1);\n\t\t\tcameraL.viewport = new Vector4();\n\t\t\tconst cameraR = new PerspectiveCamera();\n\t\t\tcameraR.layers.enable(2);\n\t\t\tcameraR.viewport = new Vector4();\n\t\t\tconst cameras = [cameraL, cameraR];\n\t\t\tconst cameraVR = new ArrayCamera();\n\t\t\tcameraVR.layers.enable(1);\n\t\t\tcameraVR.layers.enable(2);\n\t\t\tlet _currentDepthNear = null;\n\t\t\tlet _currentDepthFar = null; //\n\n\t\t\tthis.cameraAutoUpdate = true;\n\t\t\tthis.enabled = false;\n\t\t\tthis.isPresenting = false;\n\n\t\t\tthis.getController = function (index) {\n\t\t\t\tlet controller = controllers[index];\n\n\t\t\t\tif (controller === undefined) {\n\t\t\t\t\tcontroller = new WebXRController();\n\t\t\t\t\tcontrollers[index] = controller;\n\t\t\t\t}\n\n\t\t\t\treturn controller.getTargetRaySpace();\n\t\t\t};\n\n\t\t\tthis.getControllerGrip = function (index) {\n\t\t\t\tlet controller = controllers[index];\n\n\t\t\t\tif (controller === undefined) {\n\t\t\t\t\tcontroller = new WebXRController();\n\t\t\t\t\tcontrollers[index] = controller;\n\t\t\t\t}\n\n\t\t\t\treturn controller.getGripSpace();\n\t\t\t};\n\n\t\t\tthis.getHand = function (index) {\n\t\t\t\tlet controller = controllers[index];\n\n\t\t\t\tif (controller === undefined) {\n\t\t\t\t\tcontroller = new WebXRController();\n\t\t\t\t\tcontrollers[index] = controller;\n\t\t\t\t}\n\n\t\t\t\treturn controller.getHandSpace();\n\t\t\t}; //\n\n\n\t\t\tfunction onSessionEvent(event) {\n\t\t\t\tconst controller = inputSourcesMap.get(event.inputSource);\n\n\t\t\t\tif (controller) {\n\t\t\t\t\tcontroller.dispatchEvent({\n\t\t\t\t\t\ttype: event.type,\n\t\t\t\t\t\tdata: event.inputSource\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onSessionEnd() {\n\t\t\t\tinputSourcesMap.forEach(function (controller, inputSource) {\n\t\t\t\t\tcontroller.disconnect(inputSource);\n\t\t\t\t});\n\t\t\t\tinputSourcesMap.clear();\n\t\t\t\t_currentDepthNear = null;\n\t\t\t\t_currentDepthFar = null; // restore framebuffer/rendering state\n\n\t\t\t\tstate.bindXRFramebuffer(null);\n\t\t\t\trenderer.setRenderTarget(renderer.getRenderTarget());\n\t\t\t\tif (glFramebuffer) gl.deleteFramebuffer(glFramebuffer);\n\t\t\t\tif (glMultisampledFramebuffer) gl.deleteFramebuffer(glMultisampledFramebuffer);\n\t\t\t\tif (glColorRenderbuffer) gl.deleteRenderbuffer(glColorRenderbuffer);\n\t\t\t\tif (glDepthRenderbuffer) gl.deleteRenderbuffer(glDepthRenderbuffer);\n\t\t\t\tglFramebuffer = null;\n\t\t\t\tglMultisampledFramebuffer = null;\n\t\t\t\tglColorRenderbuffer = null;\n\t\t\t\tglDepthRenderbuffer = null;\n\t\t\t\tglBaseLayer = null;\n\t\t\t\tglProjLayer = null;\n\t\t\t\tglBinding = null;\n\t\t\t\tsession = null; //\n\n\t\t\t\tanimation.stop();\n\t\t\t\tscope.isPresenting = false;\n\t\t\t\tscope.dispatchEvent({\n\t\t\t\t\ttype: 'sessionend'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.setFramebufferScaleFactor = function (value) {\n\t\t\t\tframebufferScaleFactor = value;\n\n\t\t\t\tif (scope.isPresenting === true) {\n\t\t\t\t\tconsole.warn('THREE.WebXRManager: Cannot change framebuffer scale while presenting.');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.setReferenceSpaceType = function (value) {\n\t\t\t\treferenceSpaceType = value;\n\n\t\t\t\tif (scope.isPresenting === true) {\n\t\t\t\t\tconsole.warn('THREE.WebXRManager: Cannot change reference space type while presenting.');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.getReferenceSpace = function () {\n\t\t\t\treturn referenceSpace;\n\t\t\t};\n\n\t\t\tthis.getBaseLayer = function () {\n\t\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\t\t\t};\n\n\t\t\tthis.getBinding = function () {\n\t\t\t\treturn glBinding;\n\t\t\t};\n\n\t\t\tthis.getFrame = function () {\n\t\t\t\treturn xrFrame;\n\t\t\t};\n\n\t\t\tthis.getSession = function () {\n\t\t\t\treturn session;\n\t\t\t};\n\n\t\t\tthis.setSession = async function (value) {\n\t\t\t\tsession = value;\n\n\t\t\t\tif (session !== null) {\n\t\t\t\t\tsession.addEventListener('select', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('selectstart', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('selectend', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('squeeze', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('squeezestart', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('squeezeend', onSessionEvent);\n\t\t\t\t\tsession.addEventListener('end', onSessionEnd);\n\t\t\t\t\tsession.addEventListener('inputsourceschange', onInputSourcesChange);\n\t\t\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\t\t\tif (attributes.xrCompatible !== true) {\n\t\t\t\t\t\tawait gl.makeXRCompatible();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (session.renderState.layers === undefined) {\n\t\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t\t};\n\t\t\t\t\t\tglBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n\t\t\t\t\t\tsession.updateRenderState({\n\t\t\t\t\t\t\tbaseLayer: glBaseLayer\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (gl instanceof WebGLRenderingContext) {\n\t\t\t\t\t\t// Use old style webgl layer because we can't use MSAA\n\t\t\t\t\t\t// WebGL2 support.\n\t\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\t\tantialias: true,\n\t\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t\t};\n\t\t\t\t\t\tglBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n\t\t\t\t\t\tsession.updateRenderState({\n\t\t\t\t\t\t\tlayers: [glBaseLayer]\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisMultisample = attributes.antialias;\n\t\t\t\t\t\tlet depthFormat = null;\n\n\t\t\t\t\t\tif (attributes.depth) {\n\t\t\t\t\t\t\tclearStyle = gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\t\t\tif (attributes.stencil) clearStyle |= gl.STENCIL_BUFFER_BIT;\n\t\t\t\t\t\t\tdepthStyle = attributes.stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\t\tdepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\t\tcolorFormat: attributes.alpha ? gl.RGBA8 : gl.RGB8,\n\t\t\t\t\t\t\tdepthFormat: depthFormat,\n\t\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t\t};\n\t\t\t\t\t\tglBinding = new XRWebGLBinding(session, gl);\n\t\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n\t\t\t\t\t\tglFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tsession.updateRenderState({\n\t\t\t\t\t\t\tlayers: [glProjLayer]\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (isMultisample) {\n\t\t\t\t\t\t\tglMultisampledFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\t\tglColorRenderbuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, glColorRenderbuffer);\n\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, gl.RGBA8, glProjLayer.textureWidth, glProjLayer.textureHeight);\n\t\t\t\t\t\t\tstate.bindFramebuffer(gl.FRAMEBUFFER, glMultisampledFramebuffer);\n\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, glColorRenderbuffer);\n\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\n\t\t\t\t\t\t\tif (depthFormat !== null) {\n\t\t\t\t\t\t\t\tglDepthRenderbuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, glDepthRenderbuffer);\n\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, depthFormat, glProjLayer.textureWidth, glProjLayer.textureHeight);\n\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, depthStyle, gl.RENDERBUFFER, glDepthRenderbuffer);\n\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstate.bindFramebuffer(gl.FRAMEBUFFER, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treferenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n\t\t\t\t\tanimation.setContext(session);\n\t\t\t\t\tanimation.start();\n\t\t\t\t\tscope.isPresenting = true;\n\t\t\t\t\tscope.dispatchEvent({\n\t\t\t\t\t\ttype: 'sessionstart'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfunction onInputSourcesChange(event) {\n\t\t\t\tconst inputSources = session.inputSources; // Assign inputSources to available controllers\n\n\t\t\t\tfor (let i = 0; i < controllers.length; i++) {\n\t\t\t\t\tinputSourcesMap.set(inputSources[i], controllers[i]);\n\t\t\t\t} // Notify disconnected\n\n\n\t\t\t\tfor (let i = 0; i < event.removed.length; i++) {\n\t\t\t\t\tconst inputSource = event.removed[i];\n\t\t\t\t\tconst controller = inputSourcesMap.get(inputSource);\n\n\t\t\t\t\tif (controller) {\n\t\t\t\t\t\tcontroller.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'disconnected',\n\t\t\t\t\t\t\tdata: inputSource\n\t\t\t\t\t\t});\n\t\t\t\t\t\tinputSourcesMap.delete(inputSource);\n\t\t\t\t\t}\n\t\t\t\t} // Notify connected\n\n\n\t\t\t\tfor (let i = 0; i < event.added.length; i++) {\n\t\t\t\t\tconst inputSource = event.added[i];\n\t\t\t\t\tconst controller = inputSourcesMap.get(inputSource);\n\n\t\t\t\t\tif (controller) {\n\t\t\t\t\t\tcontroller.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'connected',\n\t\t\t\t\t\t\tdata: inputSource\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} //\n\n\n\t\t\tconst cameraLPos = new Vector3();\n\t\t\tconst cameraRPos = new Vector3();\n\t\t\t/**\n\t\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t\t * the cameras' projection and world matrices have already been set.\n\t\t\t * And that near and far planes are identical for both cameras.\n\t\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t\t */\n\n\t\t\tfunction setProjectionFromUnion(camera, cameraL, cameraR) {\n\t\t\t\tcameraLPos.setFromMatrixPosition(cameraL.matrixWorld);\n\t\t\t\tcameraRPos.setFromMatrixPosition(cameraR.matrixWorld);\n\t\t\t\tconst ipd = cameraLPos.distanceTo(cameraRPos);\n\t\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\t\tconst projR = cameraR.projectionMatrix.elements; // VR systems will have identical far and near planes, and\n\t\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t\t// Use the left camera for these values.\n\n\t\t\t\tconst near = projL[14] / (projL[10] - 1);\n\t\t\t\tconst far = projL[14] / (projL[10] + 1);\n\t\t\t\tconst topFov = (projL[9] + 1) / projL[5];\n\t\t\t\tconst bottomFov = (projL[9] - 1) / projL[5];\n\t\t\t\tconst leftFov = (projL[8] - 1) / projL[0];\n\t\t\t\tconst rightFov = (projR[8] + 1) / projR[0];\n\t\t\t\tconst left = near * leftFov;\n\t\t\t\tconst right = near * rightFov; // Calculate the new camera's position offset from the\n\t\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\n\t\t\t\tconst zOffset = ipd / (-leftFov + rightFov);\n\t\t\t\tconst xOffset = zOffset * -leftFov; // TODO: Better way to apply this offset?\n\n\t\t\t\tcameraL.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n\t\t\t\tcamera.translateX(xOffset);\n\t\t\t\tcamera.translateZ(zOffset);\n\t\t\t\tcamera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n\t\t\t\tcamera.matrixWorldInverse.copy(camera.matrixWorld).invert(); // Find the union of the frustum values of the cameras and scale\n\t\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t\t// although must now be relative to the new union camera.\n\n\t\t\t\tconst near2 = near + zOffset;\n\t\t\t\tconst far2 = far + zOffset;\n\t\t\t\tconst left2 = left - xOffset;\n\t\t\t\tconst right2 = right + (ipd - xOffset);\n\t\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\t\t\t\tcamera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n\t\t\t}\n\n\t\t\tfunction updateCamera(camera, parent) {\n\t\t\t\tif (parent === null) {\n\t\t\t\t\tcamera.matrixWorld.copy(camera.matrix);\n\t\t\t\t} else {\n\t\t\t\t\tcamera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n\t\t\t\t}\n\n\t\t\t\tcamera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n\t\t\t}\n\n\t\t\tthis.updateCamera = function (camera) {\n\t\t\t\tif (session === null) return;\n\t\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\t\tif (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) {\n\t\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\t\t\t\t\tsession.updateRenderState({\n\t\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t\t});\n\t\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t\t_currentDepthFar = cameraVR.far;\n\t\t\t\t}\n\n\t\t\t\tconst parent = camera.parent;\n\t\t\t\tconst cameras = cameraVR.cameras;\n\t\t\t\tupdateCamera(cameraVR, parent);\n\n\t\t\t\tfor (let i = 0; i < cameras.length; i++) {\n\t\t\t\t\tupdateCamera(cameras[i], parent);\n\t\t\t\t}\n\n\t\t\t\tcameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale); // update user camera and its children\n\n\t\t\t\tcamera.position.copy(cameraVR.position);\n\t\t\t\tcamera.quaternion.copy(cameraVR.quaternion);\n\t\t\t\tcamera.scale.copy(cameraVR.scale);\n\t\t\t\tcamera.matrix.copy(cameraVR.matrix);\n\t\t\t\tcamera.matrixWorld.copy(cameraVR.matrixWorld);\n\t\t\t\tconst children = camera.children;\n\n\t\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tchildren[i].updateMatrixWorld(true);\n\t\t\t\t} // update projection matrix for proper view frustum culling\n\n\n\t\t\t\tif (cameras.length === 2) {\n\t\t\t\t\tsetProjectionFromUnion(cameraVR, cameraL, cameraR);\n\t\t\t\t} else {\n\t\t\t\t\t// assume single camera setup (AR)\n\t\t\t\t\tcameraVR.projectionMatrix.copy(cameraL.projectionMatrix);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.getCamera = function () {\n\t\t\t\treturn cameraVR;\n\t\t\t};\n\n\t\t\tthis.getFoveation = function () {\n\t\t\t\tif (glProjLayer !== null) {\n\t\t\t\t\treturn glProjLayer.fixedFoveation;\n\t\t\t\t}\n\n\t\t\t\tif (glBaseLayer !== null) {\n\t\t\t\t\treturn glBaseLayer.fixedFoveation;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t};\n\n\t\t\tthis.setFoveation = function (foveation) {\n\t\t\t\t// 0 = no foveation = full resolution\n\t\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\t\t\t\tif (glProjLayer !== null) {\n\t\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\t\t\t\t}\n\n\t\t\t\tif (glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined) {\n\t\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\t\t\t\t}\n\t\t\t}; // Animation Loop\n\n\n\t\t\tlet onAnimationFrameCallback = null;\n\n\t\t\tfunction onAnimationFrame(time, frame) {\n\t\t\t\tpose = frame.getViewerPose(referenceSpace);\n\t\t\t\txrFrame = frame;\n\n\t\t\t\tif (pose !== null) {\n\t\t\t\t\tconst views = pose.views;\n\n\t\t\t\t\tif (glBaseLayer !== null) {\n\t\t\t\t\t\tstate.bindXRFramebuffer(glBaseLayer.framebuffer);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet cameraVRNeedsUpdate = false; // check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\t\tif (views.length !== cameraVR.cameras.length) {\n\t\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\t\tcameraVRNeedsUpdate = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = 0; i < views.length; i++) {\n\t\t\t\t\t\tconst view = views[i];\n\t\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\t\tif (glBaseLayer !== null) {\n\t\t\t\t\t\t\tviewport = glBaseLayer.getViewport(view);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n\t\t\t\t\t\t\tstate.bindXRFramebuffer(glFramebuffer);\n\n\t\t\t\t\t\t\tif (glSubImage.depthStencilTexture !== undefined) {\n\t\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, depthStyle, gl.TEXTURE_2D, glSubImage.depthStencilTexture, 0);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, glSubImage.colorTexture, 0);\n\t\t\t\t\t\t\tviewport = glSubImage.viewport;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst camera = cameras[i];\n\t\t\t\t\t\tcamera.matrix.fromArray(view.transform.matrix);\n\t\t\t\t\t\tcamera.projectionMatrix.fromArray(view.projectionMatrix);\n\t\t\t\t\t\tcamera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\tcameraVR.matrix.copy(camera.matrix);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (cameraVRNeedsUpdate === true) {\n\t\t\t\t\t\t\tcameraVR.cameras.push(camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isMultisample) {\n\t\t\t\t\t\tstate.bindXRFramebuffer(glMultisampledFramebuffer);\n\t\t\t\t\t\tif (clearStyle !== null) gl.clear(clearStyle);\n\t\t\t\t\t}\n\t\t\t\t} //\n\n\n\t\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t\tfor (let i = 0; i < controllers.length; i++) {\n\t\t\t\t\tconst controller = controllers[i];\n\t\t\t\t\tconst inputSource = inputSources[i];\n\t\t\t\t\tcontroller.update(inputSource, frame, referenceSpace);\n\t\t\t\t}\n\n\t\t\t\tif (onAnimationFrameCallback) onAnimationFrameCallback(time, frame);\n\n\t\t\t\tif (isMultisample) {\n\t\t\t\t\tconst width = glProjLayer.textureWidth;\n\t\t\t\t\tconst height = glProjLayer.textureHeight;\n\t\t\t\t\tstate.bindFramebuffer(gl.READ_FRAMEBUFFER, glMultisampledFramebuffer);\n\t\t\t\t\tstate.bindFramebuffer(gl.DRAW_FRAMEBUFFER, glFramebuffer); // Invalidate the depth here to avoid flush of the depth data to main memory.\n\n\t\t\t\t\tgl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, [depthStyle]);\n\t\t\t\t\tgl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, [depthStyle]);\n\t\t\t\t\tgl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, gl.COLOR_BUFFER_BIT, gl.NEAREST); // Invalidate the MSAA buffer because it's not needed anymore.\n\n\t\t\t\t\tgl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, [gl.COLOR_ATTACHMENT0]);\n\t\t\t\t\tstate.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n\t\t\t\t\tstate.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n\t\t\t\t\tstate.bindFramebuffer(gl.FRAMEBUFFER, glMultisampledFramebuffer);\n\t\t\t\t}\n\n\t\t\t\txrFrame = null;\n\t\t\t}\n\n\t\t\tconst animation = new WebGLAnimation();\n\t\t\tanimation.setAnimationLoop(onAnimationFrame);\n\n\t\t\tthis.setAnimationLoop = function (callback) {\n\t\t\t\tonAnimationFrameCallback = callback;\n\t\t\t};\n\n\t\t\tthis.dispose = function () {};\n\t\t}\n\n\t}\n\n\tfunction WebGLMaterials(properties) {\n\t\tfunction refreshFogUniforms(uniforms, fog) {\n\t\t\tuniforms.fogColor.value.copy(fog.color);\n\n\t\t\tif (fog.isFog) {\n\t\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\t\tuniforms.fogFar.value = fog.far;\n\t\t\t} else if (fog.isFogExp2) {\n\t\t\t\tuniforms.fogDensity.value = fog.density;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n\t\t\tif (material.isMeshBasicMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t} else if (material.isMeshLambertMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsLambert(uniforms, material);\n\t\t\t} else if (material.isMeshToonMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsToon(uniforms, material);\n\t\t\t} else if (material.isMeshPhongMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsPhong(uniforms, material);\n\t\t\t} else if (material.isMeshStandardMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\n\t\t\t\tif (material.isMeshPhysicalMaterial) {\n\t\t\t\t\trefreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n\t\t\t\t} else {\n\t\t\t\t\trefreshUniformsStandard(uniforms, material);\n\t\t\t\t}\n\t\t\t} else if (material.isMeshMatcapMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsMatcap(uniforms, material);\n\t\t\t} else if (material.isMeshDepthMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsDepth(uniforms, material);\n\t\t\t} else if (material.isMeshDistanceMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsDistance(uniforms, material);\n\t\t\t} else if (material.isMeshNormalMaterial) {\n\t\t\t\trefreshUniformsCommon(uniforms, material);\n\t\t\t\trefreshUniformsNormal(uniforms, material);\n\t\t\t} else if (material.isLineBasicMaterial) {\n\t\t\t\trefreshUniformsLine(uniforms, material);\n\n\t\t\t\tif (material.isLineDashedMaterial) {\n\t\t\t\t\trefreshUniformsDash(uniforms, material);\n\t\t\t\t}\n\t\t\t} else if (material.isPointsMaterial) {\n\t\t\t\trefreshUniformsPoints(uniforms, material, pixelRatio, height);\n\t\t\t} else if (material.isSpriteMaterial) {\n\t\t\t\trefreshUniformsSprites(uniforms, material);\n\t\t\t} else if (material.isShadowMaterial) {\n\t\t\t\tuniforms.color.value.copy(material.color);\n\t\t\t\tuniforms.opacity.value = material.opacity;\n\t\t\t} else if (material.isShaderMaterial) {\n\t\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsCommon(uniforms, material) {\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t\tif (material.color) {\n\t\t\t\tuniforms.diffuse.value.copy(material.color);\n\t\t\t}\n\n\t\t\tif (material.emissive) {\n\t\t\t\tuniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n\t\t\t}\n\n\t\t\tif (material.map) {\n\t\t\t\tuniforms.map.value = material.map;\n\t\t\t}\n\n\t\t\tif (material.alphaMap) {\n\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\t\t\t}\n\n\t\t\tif (material.specularMap) {\n\t\t\t\tuniforms.specularMap.value = material.specularMap;\n\t\t\t}\n\n\t\t\tif (material.alphaTest > 0) {\n\t\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\t\t\t}\n\n\t\t\tconst envMap = properties.get(material).envMap;\n\n\t\t\tif (envMap) {\n\t\t\t\tuniforms.envMap.value = envMap;\n\t\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n\t\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\t\tuniforms.ior.value = material.ior;\n\t\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\t\tconst maxMipLevel = properties.get(envMap).__maxMipLevel;\n\n\t\t\t\tif (maxMipLevel !== undefined) {\n\t\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (material.lightMap) {\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\t\t\t}\n\n\t\t\tif (material.aoMap) {\n\t\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\t\t\t} // uv repeat and offset setting priorities\n\t\t\t// 1. color map\n\t\t\t// 2. specular map\n\t\t\t// 3. displacementMap map\n\t\t\t// 4. normal map\n\t\t\t// 5. bump map\n\t\t\t// 6. roughnessMap map\n\t\t\t// 7. metalnessMap map\n\t\t\t// 8. alphaMap map\n\t\t\t// 9. emissiveMap map\n\t\t\t// 10. clearcoat map\n\t\t\t// 11. clearcoat normal map\n\t\t\t// 12. clearcoat roughnessMap map\n\t\t\t// 13. specular intensity map\n\t\t\t// 14. specular tint map\n\t\t\t// 15. transmission map\n\t\t\t// 16. thickness map\n\n\n\t\t\tlet uvScaleMap;\n\n\t\t\tif (material.map) {\n\t\t\t\tuvScaleMap = material.map;\n\t\t\t} else if (material.specularMap) {\n\t\t\t\tuvScaleMap = material.specularMap;\n\t\t\t} else if (material.displacementMap) {\n\t\t\t\tuvScaleMap = material.displacementMap;\n\t\t\t} else if (material.normalMap) {\n\t\t\t\tuvScaleMap = material.normalMap;\n\t\t\t} else if (material.bumpMap) {\n\t\t\t\tuvScaleMap = material.bumpMap;\n\t\t\t} else if (material.roughnessMap) {\n\t\t\t\tuvScaleMap = material.roughnessMap;\n\t\t\t} else if (material.metalnessMap) {\n\t\t\t\tuvScaleMap = material.metalnessMap;\n\t\t\t} else if (material.alphaMap) {\n\t\t\t\tuvScaleMap = material.alphaMap;\n\t\t\t} else if (material.emissiveMap) {\n\t\t\t\tuvScaleMap = material.emissiveMap;\n\t\t\t} else if (material.clearcoatMap) {\n\t\t\t\tuvScaleMap = material.clearcoatMap;\n\t\t\t} else if (material.clearcoatNormalMap) {\n\t\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\t\t\t} else if (material.clearcoatRoughnessMap) {\n\t\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\t\t\t} else if (material.specularIntensityMap) {\n\t\t\t\tuvScaleMap = material.specularIntensityMap;\n\t\t\t} else if (material.specularTintMap) {\n\t\t\t\tuvScaleMap = material.specularTintMap;\n\t\t\t} else if (material.transmissionMap) {\n\t\t\t\tuvScaleMap = material.transmissionMap;\n\t\t\t} else if (material.thicknessMap) {\n\t\t\t\tuvScaleMap = material.thicknessMap;\n\t\t\t}\n\n\t\t\tif (uvScaleMap !== undefined) {\n\t\t\t\t// backwards compatibility\n\t\t\t\tif (uvScaleMap.isWebGLRenderTarget) {\n\t\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\t\t\t\t}\n\n\t\t\t\tif (uvScaleMap.matrixAutoUpdate === true) {\n\t\t\t\t\tuvScaleMap.updateMatrix();\n\t\t\t\t}\n\n\t\t\t\tuniforms.uvTransform.value.copy(uvScaleMap.matrix);\n\t\t\t} // uv repeat and offset setting priorities for uv2\n\t\t\t// 1. ao map\n\t\t\t// 2. light map\n\n\n\t\t\tlet uv2ScaleMap;\n\n\t\t\tif (material.aoMap) {\n\t\t\t\tuv2ScaleMap = material.aoMap;\n\t\t\t} else if (material.lightMap) {\n\t\t\t\tuv2ScaleMap = material.lightMap;\n\t\t\t}\n\n\t\t\tif (uv2ScaleMap !== undefined) {\n\t\t\t\t// backwards compatibility\n\t\t\t\tif (uv2ScaleMap.isWebGLRenderTarget) {\n\t\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\t\t\t\t}\n\n\t\t\t\tif (uv2ScaleMap.matrixAutoUpdate === true) {\n\t\t\t\t\tuv2ScaleMap.updateMatrix();\n\t\t\t\t}\n\n\t\t\t\tuniforms.uv2Transform.value.copy(uv2ScaleMap.matrix);\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsLine(uniforms, material) {\n\t\t\tuniforms.diffuse.value.copy(material.color);\n\t\t\tuniforms.opacity.value = material.opacity;\n\t\t}\n\n\t\tfunction refreshUniformsDash(uniforms, material) {\n\t\t\tuniforms.dashSize.value = material.dashSize;\n\t\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\t\tuniforms.scale.value = material.scale;\n\t\t}\n\n\t\tfunction refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n\t\t\tuniforms.diffuse.value.copy(material.color);\n\t\t\tuniforms.opacity.value = material.opacity;\n\t\t\tuniforms.size.value = material.size * pixelRatio;\n\t\t\tuniforms.scale.value = height * 0.5;\n\n\t\t\tif (material.map) {\n\t\t\t\tuniforms.map.value = material.map;\n\t\t\t}\n\n\t\t\tif (material.alphaMap) {\n\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\t\t\t}\n\n\t\t\tif (material.alphaTest > 0) {\n\t\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\t\t\t} // uv repeat and offset setting priorities\n\t\t\t// 1. color map\n\t\t\t// 2. alpha map\n\n\n\t\t\tlet uvScaleMap;\n\n\t\t\tif (material.map) {\n\t\t\t\tuvScaleMap = material.map;\n\t\t\t} else if (material.alphaMap) {\n\t\t\t\tuvScaleMap = material.alphaMap;\n\t\t\t}\n\n\t\t\tif (uvScaleMap !== undefined) {\n\t\t\t\tif (uvScaleMap.matrixAutoUpdate === true) {\n\t\t\t\t\tuvScaleMap.updateMatrix();\n\t\t\t\t}\n\n\t\t\t\tuniforms.uvTransform.value.copy(uvScaleMap.matrix);\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsSprites(uniforms, material) {\n\t\t\tuniforms.diffuse.value.copy(material.color);\n\t\t\tuniforms.opacity.value = material.opacity;\n\t\t\tuniforms.rotation.value = material.rotation;\n\n\t\t\tif (material.map) {\n\t\t\t\tuniforms.map.value = material.map;\n\t\t\t}\n\n\t\t\tif (material.alphaMap) {\n\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\t\t\t}\n\n\t\t\tif (material.alphaTest > 0) {\n\t\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\t\t\t} // uv repeat and offset setting priorities\n\t\t\t// 1. color map\n\t\t\t// 2. alpha map\n\n\n\t\t\tlet uvScaleMap;\n\n\t\t\tif (material.map) {\n\t\t\t\tuvScaleMap = material.map;\n\t\t\t} else if (material.alphaMap) {\n\t\t\t\tuvScaleMap = material.alphaMap;\n\t\t\t}\n\n\t\t\tif (uvScaleMap !== undefined) {\n\t\t\t\tif (uvScaleMap.matrixAutoUpdate === true) {\n\t\t\t\t\tuvScaleMap.updateMatrix();\n\t\t\t\t}\n\n\t\t\t\tuniforms.uvTransform.value.copy(uvScaleMap.matrix);\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsLambert(uniforms, material) {\n\t\t\tif (material.emissiveMap) {\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsPhong(uniforms, material) {\n\t\t\tuniforms.specular.value.copy(material.specular);\n\t\t\tuniforms.shininess.value = Math.max(material.shininess, 1e-4); // to prevent pow( 0.0, 0.0 )\n\n\t\t\tif (material.emissiveMap) {\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t}\n\n\t\t\tif (material.bumpMap) {\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\t\tif (material.side === BackSide) uniforms.bumpScale.value *= -1;\n\t\t\t}\n\n\t\t\tif (material.normalMap) {\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy(material.normalScale);\n\t\t\t\tif (material.side === BackSide) uniforms.normalScale.value.negate();\n\t\t\t}\n\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsToon(uniforms, material) {\n\t\t\tif (material.gradientMap) {\n\t\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\t\t\t}\n\n\t\t\tif (material.emissiveMap) {\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t}\n\n\t\t\tif (material.bumpMap) {\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\t\tif (material.side === BackSide) uniforms.bumpScale.value *= -1;\n\t\t\t}\n\n\t\t\tif (material.normalMap) {\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy(material.normalScale);\n\t\t\t\tif (material.side === BackSide) uniforms.normalScale.value.negate();\n\t\t\t}\n\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsStandard(uniforms, material) {\n\t\t\tuniforms.roughness.value = material.roughness;\n\t\t\tuniforms.metalness.value = material.metalness;\n\n\t\t\tif (material.roughnessMap) {\n\t\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\t\t\t}\n\n\t\t\tif (material.metalnessMap) {\n\t\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\t\t\t}\n\n\t\t\tif (material.emissiveMap) {\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t}\n\n\t\t\tif (material.bumpMap) {\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\t\tif (material.side === BackSide) uniforms.bumpScale.value *= -1;\n\t\t\t}\n\n\t\t\tif (material.normalMap) {\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy(material.normalScale);\n\t\t\t\tif (material.side === BackSide) uniforms.normalScale.value.negate();\n\t\t\t}\n\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\n\t\t\tconst envMap = properties.get(material).envMap;\n\n\t\t\tif (envMap) {\n\t\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n\t\t\trefreshUniformsStandard(uniforms, material);\n\t\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\t\tif (material.sheenTint) uniforms.sheenTint.value.copy(material.sheenTint);\n\n\t\t\tif (material.clearcoat > 0) {\n\t\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\t\tif (material.clearcoatMap) {\n\t\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\t\t\t\t}\n\n\t\t\t\tif (material.clearcoatRoughnessMap) {\n\t\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\t\t\t\t}\n\n\t\t\t\tif (material.clearcoatNormalMap) {\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n\t\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\t\tif (material.side === BackSide) {\n\t\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (material.transmission > 0) {\n\t\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\t\tuniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n\n\t\t\t\tif (material.transmissionMap) {\n\t\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\t\t\t\t}\n\n\t\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\t\tif (material.thicknessMap) {\n\t\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\t\t\t\t}\n\n\t\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\t\tuniforms.attenuationTint.value.copy(material.attenuationTint);\n\t\t\t}\n\n\t\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\t\tuniforms.specularTint.value.copy(material.specularTint);\n\n\t\t\tif (material.specularIntensityMap) {\n\t\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\t\t\t}\n\n\t\t\tif (material.specularTintMap) {\n\t\t\t\tuniforms.specularTintMap.value = material.specularTintMap;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsMatcap(uniforms, material) {\n\t\t\tif (material.matcap) {\n\t\t\t\tuniforms.matcap.value = material.matcap;\n\t\t\t}\n\n\t\t\tif (material.bumpMap) {\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\t\tif (material.side === BackSide) uniforms.bumpScale.value *= -1;\n\t\t\t}\n\n\t\t\tif (material.normalMap) {\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy(material.normalScale);\n\t\t\t\tif (material.side === BackSide) uniforms.normalScale.value.negate();\n\t\t\t}\n\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsDepth(uniforms, material) {\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUniformsDistance(uniforms, material) {\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\n\t\t\tuniforms.referencePosition.value.copy(material.referencePosition);\n\t\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\t\tuniforms.farDistance.value = material.farDistance;\n\t\t}\n\n\t\tfunction refreshUniformsNormal(uniforms, material) {\n\t\t\tif (material.bumpMap) {\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\t\tif (material.side === BackSide) uniforms.bumpScale.value *= -1;\n\t\t\t}\n\n\t\t\tif (material.normalMap) {\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy(material.normalScale);\n\t\t\t\tif (material.side === BackSide) uniforms.normalScale.value.negate();\n\t\t\t}\n\n\t\t\tif (material.displacementMap) {\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\trefreshFogUniforms: refreshFogUniforms,\n\t\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t\t};\n\t}\n\n\tfunction createCanvasElement() {\n\t\tconst canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');\n\t\tcanvas.style.display = 'block';\n\t\treturn canvas;\n\t}\n\n\tfunction WebGLRenderer(parameters = {}) {\n\t\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t\t\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\t\t\t\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t\t\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t\t\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t\t\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t\t\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t\t\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t\t\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t\t\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null; // render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = []; // public properties\n\n\t\tthis.domElement = _canvas; // Debug configuration container\n\n\t\tthis.debug = {\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true\n\t\t}; // clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true; // scene graph\n\n\t\tthis.sortObjects = true; // user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false; // physically based shading\n\n\t\tthis.gammaFactor = 2.0; // for backwards compatibility\n\n\t\tthis.outputEncoding = LinearEncoding; // physical lights\n\n\t\tthis.physicallyCorrectLights = false; // tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0; // internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false; // internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\n\t\tlet _currentMaterialId = -1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\n\t\tconst _currentScissor = new Vector4();\n\n\t\tlet _currentScissorTest = null; //\n\n\t\tlet _width = _canvas.width;\n\t\tlet _height = _canvas.height;\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4(0, 0, _width, _height);\n\n\t\tconst _scissor = new Vector4(0, 0, _width, _height);\n\n\t\tlet _scissorTest = false; //\n\n\t\tconst _currentDrawBuffers = []; // frustum\n\n\t\tconst _frustum = new Frustum(); // clipping\n\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false; // transmission\n\n\t\tlet _transmissionRenderTarget = null; // camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = {\n\t\t\tbackground: null,\n\t\t\tfog: null,\n\t\t\tenvironment: null,\n\t\t\toverrideMaterial: null,\n\t\t\tisScene: true\n\t\t};\n\n\t\tfunction getTargetPixelRatio() {\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\t\t} // initialize\n\n\n\t\tlet _gl = _context;\n\n\t\tfunction getContext(contextNames, contextAttributes) {\n\t\t\tfor (let i = 0; i < contextNames.length; i++) {\n\t\t\t\tconst contextName = contextNames[i];\n\n\t\t\t\tconst context = _canvas.getContext(contextName, contextAttributes);\n\n\t\t\t\tif (context !== null) return context;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: _alpha,\n\t\t\t\tdepth: _depth,\n\t\t\t\tstencil: _stencil,\n\t\t\t\tantialias: _antialias,\n\t\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\t\tpowerPreference: _powerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t\t}; // event listeners must be registered before WebGL context is created, see #12753\n\n\t\t\t_canvas.addEventListener('webglcontextlost', onContextLost, false);\n\n\t\t\t_canvas.addEventListener('webglcontextrestored', onContextRestore, false);\n\n\t\t\tif (_gl === null) {\n\t\t\t\tconst contextNames = ['webgl2', 'webgl', 'experimental-webgl'];\n\n\t\t\t\tif (_this.isWebGL1Renderer === true) {\n\t\t\t\t\tcontextNames.shift();\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext(contextNames, contextAttributes);\n\n\t\t\t\tif (_gl === null) {\n\t\t\t\t\tif (getContext(contextNames)) {\n\t\t\t\t\t\tthrow new Error('Error creating WebGL context with your selected attributes.');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error('Error creating WebGL context.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\n\t\t\tif (_gl.getShaderPrecisionFormat === undefined) {\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t'rangeMin': 1,\n\t\t\t\t\t\t'rangeMax': 1,\n\t\t\t\t\t\t'precision': 1\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('THREE.WebGLRenderer: ' + error.message);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\t\tlet utils, bindingStates;\n\n\t\tfunction initGLContext() {\n\t\t\textensions = new WebGLExtensions(_gl);\n\t\t\tcapabilities = new WebGLCapabilities(_gl, extensions, parameters);\n\t\t\textensions.init(capabilities);\n\t\t\tutils = new WebGLUtils(_gl, extensions, capabilities);\n\t\t\tstate = new WebGLState(_gl, extensions, capabilities);\n\t\t\t_currentDrawBuffers[0] = _gl.BACK;\n\t\t\tinfo = new WebGLInfo(_gl);\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n\t\t\tcubemaps = new WebGLCubeMaps(_this);\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps(_this);\n\t\t\tattributes = new WebGLAttributes(_gl, capabilities);\n\t\t\tbindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities);\n\t\t\tgeometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n\t\t\tobjects = new WebGLObjects(_gl, geometries, attributes, info);\n\t\t\tmorphtargets = new WebGLMorphtargets(_gl);\n\t\t\tclipping = new WebGLClipping(properties);\n\t\t\tprogramCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n\t\t\tmaterials = new WebGLMaterials(properties);\n\t\t\trenderLists = new WebGLRenderLists(properties);\n\t\t\trenderStates = new WebGLRenderStates(extensions, capabilities);\n\t\t\tbackground = new WebGLBackground(_this, cubemaps, state, objects, _premultipliedAlpha);\n\t\t\tshadowMap = new WebGLShadowMap(_this, objects, capabilities);\n\t\t\tbufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n\t\t\tinfo.programs = programCache.programs;\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\t\t}\n\n\t\tinitGLContext(); // xr\n\n\t\tconst xr = new WebXRManager(_this, _gl);\n\t\tthis.xr = xr; // API\n\n\t\tthis.getContext = function () {\n\t\t\treturn _gl;\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\t\t\treturn _gl.getContextAttributes();\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\t\t\tconst extension = extensions.get('WEBGL_lose_context');\n\t\t\tif (extension) extension.loseContext();\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\t\t\tconst extension = extensions.get('WEBGL_lose_context');\n\t\t\tif (extension) extension.restoreContext();\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\t\t\treturn _pixelRatio;\n\t\t};\n\n\t\tthis.setPixelRatio = function (value) {\n\t\t\tif (value === undefined) return;\n\t\t\t_pixelRatio = value;\n\t\t\tthis.setSize(_width, _height, false);\n\t\t};\n\n\t\tthis.getSize = function (target) {\n\t\t\treturn target.set(_width, _height);\n\t\t};\n\n\t\tthis.setSize = function (width, height, updateStyle) {\n\t\t\tif (xr.isPresenting) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\t\t\t_canvas.width = Math.floor(width * _pixelRatio);\n\t\t\t_canvas.height = Math.floor(height * _pixelRatio);\n\n\t\t\tif (updateStyle !== false) {\n\t\t\t\t_canvas.style.width = width + 'px';\n\t\t\t\t_canvas.style.height = height + 'px';\n\t\t\t}\n\n\t\t\tthis.setViewport(0, 0, width, height);\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function (target) {\n\t\t\treturn target.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function (width, height, pixelRatio) {\n\t\t\t_width = width;\n\t\t\t_height = height;\n\t\t\t_pixelRatio = pixelRatio;\n\t\t\t_canvas.width = Math.floor(width * pixelRatio);\n\t\t\t_canvas.height = Math.floor(height * pixelRatio);\n\t\t\tthis.setViewport(0, 0, width, height);\n\t\t};\n\n\t\tthis.getCurrentViewport = function (target) {\n\t\t\treturn target.copy(_currentViewport);\n\t\t};\n\n\t\tthis.getViewport = function (target) {\n\t\t\treturn target.copy(_viewport);\n\t\t};\n\n\t\tthis.setViewport = function (x, y, width, height) {\n\t\t\tif (x.isVector4) {\n\t\t\t\t_viewport.set(x.x, x.y, x.z, x.w);\n\t\t\t} else {\n\t\t\t\t_viewport.set(x, y, width, height);\n\t\t\t}\n\n\t\t\tstate.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n\t\t};\n\n\t\tthis.getScissor = function (target) {\n\t\t\treturn target.copy(_scissor);\n\t\t};\n\n\t\tthis.setScissor = function (x, y, width, height) {\n\t\t\tif (x.isVector4) {\n\t\t\t\t_scissor.set(x.x, x.y, x.z, x.w);\n\t\t\t} else {\n\t\t\t\t_scissor.set(x, y, width, height);\n\t\t\t}\n\n\t\t\tstate.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\t\t\treturn _scissorTest;\n\t\t};\n\n\t\tthis.setScissorTest = function (boolean) {\n\t\t\tstate.setScissorTest(_scissorTest = boolean);\n\t\t};\n\n\t\tthis.setOpaqueSort = function (method) {\n\t\t\t_opaqueSort = method;\n\t\t};\n\n\t\tthis.setTransparentSort = function (method) {\n\t\t\t_transparentSort = method;\n\t\t}; // Clearing\n\n\n\t\tthis.getClearColor = function (target) {\n\t\t\treturn target.copy(background.getClearColor());\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\t\t\tbackground.setClearColor.apply(background, arguments);\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\t\t\treturn background.getClearAlpha();\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\t\t\tbackground.setClearAlpha.apply(background, arguments);\n\t\t};\n\n\t\tthis.clear = function (color, depth, stencil) {\n\t\t\tlet bits = 0;\n\t\t\tif (color === undefined || color) bits |= _gl.COLOR_BUFFER_BIT;\n\t\t\tif (depth === undefined || depth) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif (stencil === undefined || stencil) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t_gl.clear(bits);\n\t\t};\n\n\t\tthis.clearColor = function () {\n\t\t\tthis.clear(true, false, false);\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\t\t\tthis.clear(false, true, false);\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\t\t\tthis.clear(false, false, true);\n\t\t}; //\n\n\n\t\tthis.dispose = function () {\n\t\t\t_canvas.removeEventListener('webglcontextlost', onContextLost, false);\n\n\t\t\t_canvas.removeEventListener('webglcontextrestored', onContextRestore, false);\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\txr.dispose();\n\t\t\txr.removeEventListener('sessionstart', onXRSessionStart);\n\t\t\txr.removeEventListener('sessionend', onXRSessionEnd);\n\n\t\t\tif (_transmissionRenderTarget) {\n\t\t\t\t_transmissionRenderTarget.dispose();\n\n\t\t\t\t_transmissionRenderTarget = null;\n\t\t\t}\n\n\t\t\tanimation.stop();\n\t\t}; // Events\n\n\n\t\tfunction onContextLost(event) {\n\t\t\tevent.preventDefault();\n\t\t\tconsole.log('THREE.WebGLRenderer: Context Lost.');\n\t\t\t_isContextLost = true;\n\t\t}\n\n\t\tfunction onContextRestore() {\n\t\t\tconsole.log('THREE.WebGLRenderer: Context Restored.');\n\t\t\t_isContextLost = false;\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\t\t\tinitGLContext();\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\t\t}\n\n\t\tfunction onMaterialDispose(event) {\n\t\t\tconst material = event.target;\n\t\t\tmaterial.removeEventListener('dispose', onMaterialDispose);\n\t\t\tdeallocateMaterial(material);\n\t\t} // Buffer deallocation\n\n\n\t\tfunction deallocateMaterial(material) {\n\t\t\treleaseMaterialProgramReferences(material);\n\t\t\tproperties.remove(material);\n\t\t}\n\n\t\tfunction releaseMaterialProgramReferences(material) {\n\t\t\tconst programs = properties.get(material).programs;\n\n\t\t\tif (programs !== undefined) {\n\t\t\t\tprograms.forEach(function (program) {\n\t\t\t\t\tprogramCache.releaseProgram(program);\n\t\t\t\t});\n\t\t\t}\n\t\t} // Buffer rendering\n\n\n\t\tfunction renderObjectImmediate(object, program) {\n\t\t\tobject.render(function (object) {\n\t\t\t\t_this.renderBufferImmediate(object, program);\n\t\t\t});\n\t\t}\n\n\t\tthis.renderBufferImmediate = function (object, program) {\n\t\t\tbindingStates.initAttributes();\n\t\t\tconst buffers = properties.get(object);\n\t\t\tif (object.hasPositions && !buffers.position) buffers.position = _gl.createBuffer();\n\t\t\tif (object.hasNormals && !buffers.normal) buffers.normal = _gl.createBuffer();\n\t\t\tif (object.hasUvs && !buffers.uv) buffers.uv = _gl.createBuffer();\n\t\t\tif (object.hasColors && !buffers.color) buffers.color = _gl.createBuffer();\n\t\t\tconst programAttributes = program.getAttributes();\n\n\t\t\tif (object.hasPositions) {\n\t\t\t\t_gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.position);\n\n\t\t\t\t_gl.bufferData(_gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW);\n\n\t\t\t\tbindingStates.enableAttribute(programAttributes.position.location);\n\n\t\t\t\t_gl.vertexAttribPointer(programAttributes.position.location, 3, _gl.FLOAT, false, 0, 0);\n\t\t\t}\n\n\t\t\tif (object.hasNormals) {\n\t\t\t\t_gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.normal);\n\n\t\t\t\t_gl.bufferData(_gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW);\n\n\t\t\t\tbindingStates.enableAttribute(programAttributes.normal.location);\n\n\t\t\t\t_gl.vertexAttribPointer(programAttributes.normal.location, 3, _gl.FLOAT, false, 0, 0);\n\t\t\t}\n\n\t\t\tif (object.hasUvs) {\n\t\t\t\t_gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.uv);\n\n\t\t\t\t_gl.bufferData(_gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW);\n\n\t\t\t\tbindingStates.enableAttribute(programAttributes.uv.location);\n\n\t\t\t\t_gl.vertexAttribPointer(programAttributes.uv.location, 2, _gl.FLOAT, false, 0, 0);\n\t\t\t}\n\n\t\t\tif (object.hasColors) {\n\t\t\t\t_gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.color);\n\n\t\t\t\t_gl.bufferData(_gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW);\n\n\t\t\t\tbindingStates.enableAttribute(programAttributes.color.location);\n\n\t\t\t\t_gl.vertexAttribPointer(programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0);\n\t\t\t}\n\n\t\t\tbindingStates.disableUnusedAttributes();\n\n\t\t\t_gl.drawArrays(_gl.TRIANGLES, 0, object.count);\n\n\t\t\tobject.count = 0;\n\t\t};\n\n\t\tthis.renderBufferDirect = function (camera, scene, geometry, material, object, group) {\n\t\t\tif (scene === null) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n\t\t\tconst program = setProgram(camera, scene, material, object);\n\t\t\tstate.setMaterial(material, frontFaceCW); //\n\n\t\t\tlet index = geometry.index;\n\t\t\tconst position = geometry.attributes.position; //\n\n\t\t\tif (index === null) {\n\t\t\t\tif (position === undefined || position.count === 0) return;\n\t\t\t} else if (index.count === 0) {\n\t\t\t\treturn;\n\t\t\t} //\n\n\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif (material.wireframe === true) {\n\t\t\t\tindex = geometries.getWireframeAttribute(geometry);\n\t\t\t\trangeFactor = 2;\n\t\t\t}\n\n\t\t\tif (geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined) {\n\t\t\t\tmorphtargets.update(object, geometry, material, program);\n\t\t\t}\n\n\t\t\tbindingStates.setup(object, material, program, geometry, index);\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif (index !== null) {\n\t\t\t\tattribute = attributes.get(index);\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex(attribute);\n\t\t\t} //\n\n\n\t\t\tconst dataCount = index !== null ? index.count : position.count;\n\t\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\t\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\t\t\tconst drawStart = Math.max(rangeStart, groupStart);\n\t\t\tconst drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n\t\t\tconst drawCount = Math.max(0, drawEnd - drawStart + 1);\n\t\t\tif (drawCount === 0) return; //\n\n\t\t\tif (object.isMesh) {\n\t\t\t\tif (material.wireframe === true) {\n\t\t\t\t\tstate.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n\t\t\t\t\trenderer.setMode(_gl.LINES);\n\t\t\t\t} else {\n\t\t\t\t\trenderer.setMode(_gl.TRIANGLES);\n\t\t\t\t}\n\t\t\t} else if (object.isLine) {\n\t\t\t\tlet lineWidth = material.linewidth;\n\t\t\t\tif (lineWidth === undefined) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth(lineWidth * getTargetPixelRatio());\n\n\t\t\t\tif (object.isLineSegments) {\n\t\t\t\t\trenderer.setMode(_gl.LINES);\n\t\t\t\t} else if (object.isLineLoop) {\n\t\t\t\t\trenderer.setMode(_gl.LINE_LOOP);\n\t\t\t\t} else {\n\t\t\t\t\trenderer.setMode(_gl.LINE_STRIP);\n\t\t\t\t}\n\t\t\t} else if (object.isPoints) {\n\t\t\t\trenderer.setMode(_gl.POINTS);\n\t\t\t} else if (object.isSprite) {\n\t\t\t\trenderer.setMode(_gl.TRIANGLES);\n\t\t\t}\n\n\t\t\tif (object.isInstancedMesh) {\n\t\t\t\trenderer.renderInstances(drawStart, drawCount, object.count);\n\t\t\t} else if (geometry.isInstancedBufferGeometry) {\n\t\t\t\tconst instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount);\n\t\t\t\trenderer.renderInstances(drawStart, drawCount, instanceCount);\n\t\t\t} else {\n\t\t\t\trenderer.render(drawStart, drawCount);\n\t\t\t}\n\t\t}; // Compile\n\n\n\t\tthis.compile = function (scene, camera) {\n\t\t\tcurrentRenderState = renderStates.get(scene);\n\t\t\tcurrentRenderState.init();\n\t\t\trenderStateStack.push(currentRenderState);\n\t\t\tscene.traverseVisible(function (object) {\n\t\t\t\tif (object.isLight && object.layers.test(camera.layers)) {\n\t\t\t\t\tcurrentRenderState.pushLight(object);\n\n\t\t\t\t\tif (object.castShadow) {\n\t\t\t\t\t\tcurrentRenderState.pushShadow(object);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tcurrentRenderState.setupLights(_this.physicallyCorrectLights);\n\t\t\tscene.traverse(function (object) {\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif (material) {\n\t\t\t\t\tif (Array.isArray(material)) {\n\t\t\t\t\t\tfor (let i = 0; i < material.length; i++) {\n\t\t\t\t\t\t\tconst material2 = material[i];\n\t\t\t\t\t\t\tgetProgram(material2, scene, object);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgetProgram(material, scene, object);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\t\t}; // Animation Loop\n\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame(time) {\n\t\t\tif (onAnimationFrameCallback) onAnimationFrameCallback(time);\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\t\t\tanimation.stop();\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\t\t\tanimation.start();\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop(onAnimationFrame);\n\t\tif (typeof window !== 'undefined') animation.setContext(window);\n\n\t\tthis.setAnimationLoop = function (callback) {\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop(callback);\n\t\t\tcallback === null ? animation.stop() : animation.start();\n\t\t};\n\n\t\txr.addEventListener('sessionstart', onXRSessionStart);\n\t\txr.addEventListener('sessionend', onXRSessionEnd); // Rendering\n\n\t\tthis.render = function (scene, camera) {\n\t\t\tif (camera !== undefined && camera.isCamera !== true) {\n\t\t\t\tconsole.error('THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_isContextLost === true) return; // update scene graph\n\n\t\t\tif (scene.autoUpdate === true) scene.updateMatrixWorld(); // update camera matrices and frustum\n\n\t\t\tif (camera.parent === null) camera.updateMatrixWorld();\n\n\t\t\tif (xr.enabled === true && xr.isPresenting === true) {\n\t\t\t\tif (xr.cameraAutoUpdate === true) xr.updateCamera(camera);\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\t\t\t} //\n\n\n\t\t\tif (scene.isScene === true) scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n\t\t\tcurrentRenderState = renderStates.get(scene, renderStateStack.length);\n\t\t\tcurrentRenderState.init();\n\t\t\trenderStateStack.push(currentRenderState);\n\n\t\t\t_projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n\n\t\t\t_frustum.setFromProjectionMatrix(_projScreenMatrix);\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera);\n\t\t\tcurrentRenderList = renderLists.get(scene, renderListStack.length);\n\t\t\tcurrentRenderList.init();\n\t\t\trenderListStack.push(currentRenderList);\n\t\t\tprojectObject(scene, camera, 0, _this.sortObjects);\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif (_this.sortObjects === true) {\n\t\t\t\tcurrentRenderList.sort(_opaqueSort, _transparentSort);\n\t\t\t} //\n\n\n\t\t\tif (_clippingEnabled === true) clipping.beginShadows();\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\t\t\tshadowMap.render(shadowsArray, scene, camera);\n\t\t\tif (_clippingEnabled === true) clipping.endShadows(); //\n\n\t\t\tif (this.info.autoReset === true) this.info.reset(); //\n\n\t\t\tbackground.render(currentRenderList, scene); // render scene\n\n\t\t\tcurrentRenderState.setupLights(_this.physicallyCorrectLights);\n\n\t\t\tif (camera.isArrayCamera) {\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor (let i = 0, l = cameras.length; i < l; i++) {\n\t\t\t\t\tconst camera2 = cameras[i];\n\t\t\t\t\trenderScene(currentRenderList, scene, camera2, camera2.viewport);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trenderScene(currentRenderList, scene, camera);\n\t\t\t} //\n\n\n\t\t\tif (_currentRenderTarget !== null) {\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\t\t\t\ttextures.updateMultisampleRenderTarget(_currentRenderTarget); // Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap(_currentRenderTarget);\n\t\t\t} //\n\n\n\t\t\tif (scene.isScene === true) scene.onAfterRender(_this, scene, camera); // Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest(true);\n\t\t\tstate.buffers.depth.setMask(true);\n\t\t\tstate.buffers.color.setMask(true);\n\t\t\tstate.setPolygonOffset(false); // _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = -1;\n\t\t\t_currentCamera = null;\n\t\t\trenderStateStack.pop();\n\n\t\t\tif (renderStateStack.length > 0) {\n\t\t\t\tcurrentRenderState = renderStateStack[renderStateStack.length - 1];\n\t\t\t} else {\n\t\t\t\tcurrentRenderState = null;\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif (renderListStack.length > 0) {\n\t\t\t\tcurrentRenderList = renderListStack[renderListStack.length - 1];\n\t\t\t} else {\n\t\t\t\tcurrentRenderList = null;\n\t\t\t}\n\t\t};\n\n\t\tfunction projectObject(object, camera, groupOrder, sortObjects) {\n\t\t\tif (object.visible === false) return;\n\t\t\tconst visible = object.layers.test(camera.layers);\n\n\t\t\tif (visible) {\n\t\t\t\tif (object.isGroup) {\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\t\t\t\t} else if (object.isLOD) {\n\t\t\t\t\tif (object.autoUpdate === true) object.update(camera);\n\t\t\t\t} else if (object.isLight) {\n\t\t\t\t\tcurrentRenderState.pushLight(object);\n\n\t\t\t\t\tif (object.castShadow) {\n\t\t\t\t\t\tcurrentRenderState.pushShadow(object);\n\t\t\t\t\t}\n\t\t\t\t} else if (object.isSprite) {\n\t\t\t\t\tif (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n\t\t\t\t\t\tif (sortObjects) {\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update(object);\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif (material.visible) {\n\t\t\t\t\t\t\tcurrentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (object.isImmediateRenderObject) {\n\t\t\t\t\tif (sortObjects) {\n\t\t\t\t\t\t_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentRenderList.push(object, null, object.material, groupOrder, _vector3.z, null);\n\t\t\t\t} else if (object.isMesh || object.isLine || object.isPoints) {\n\t\t\t\t\tif (object.isSkinnedMesh) {\n\t\t\t\t\t\t// update skeleton only once in a frame\n\t\t\t\t\t\tif (object.skeleton.frame !== info.render.frame) {\n\t\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!object.frustumCulled || _frustum.intersectsObject(object)) {\n\t\t\t\t\t\tif (sortObjects) {\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update(object);\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif (Array.isArray(material)) {\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor (let i = 0, l = groups.length; i < l; i++) {\n\t\t\t\t\t\t\t\tconst group = groups[i];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[group.materialIndex];\n\n\t\t\t\t\t\t\t\tif (groupMaterial && groupMaterial.visible) {\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (material.visible) {\n\t\t\t\t\t\t\tcurrentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tprojectObject(children[i], camera, groupOrder, sortObjects);\n\t\t\t}\n\t\t}\n\n\t\tfunction renderScene(currentRenderList, scene, camera, viewport) {\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\t\t\tcurrentRenderState.setupLightsView(camera);\n\t\t\tif (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, scene, camera);\n\t\t\tif (viewport) state.viewport(_currentViewport.copy(viewport));\n\t\t\tif (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera);\n\t\t\tif (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera);\n\t\t\tif (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera);\n\t\t}\n\n\t\tfunction renderTransmissionPass(opaqueObjects, scene, camera) {\n\t\t\tif (_transmissionRenderTarget === null) {\n\t\t\t\tconst needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n\t\t\t\tconst renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n\t\t\t\t_transmissionRenderTarget = new renderTargetType(1024, 1024, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: utils.convert(HalfFloatType) !== null ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\t\twrapS: ClampToEdgeWrapping,\n\t\t\t\t\twrapT: ClampToEdgeWrapping\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\n\t\t\t_this.setRenderTarget(_transmissionRenderTarget);\n\n\t\t\t_this.clear(); // Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\n\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\t\t\trenderObjects(opaqueObjects, scene, camera);\n\t\t\t_this.toneMapping = currentToneMapping;\n\t\t\ttextures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n\t\t\ttextures.updateRenderTargetMipmap(_transmissionRenderTarget);\n\n\t\t\t_this.setRenderTarget(currentRenderTarget);\n\t\t}\n\n\t\tfunction renderObjects(renderList, scene, camera) {\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor (let i = 0, l = renderList.length; i < l; i++) {\n\t\t\t\tconst renderItem = renderList[i];\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif (object.layers.test(camera.layers)) {\n\t\t\t\t\trenderObject(object, scene, camera, geometry, material, group);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction renderObject(object, scene, camera, geometry, material, group) {\n\t\t\tobject.onBeforeRender(_this, scene, camera, geometry, material, group);\n\t\t\tobject.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n\t\t\tobject.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n\n\t\t\tif (object.isImmediateRenderObject) {\n\t\t\t\tconst program = setProgram(camera, scene, material, object);\n\t\t\t\tstate.setMaterial(material);\n\t\t\t\tbindingStates.reset();\n\t\t\t\trenderObjectImmediate(object, program);\n\t\t\t} else {\n\t\t\t\tif (material.transparent === true && material.side === DoubleSide) {\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t_this.renderBufferDirect(camera, scene, geometry, material, object, group);\n\n\t\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t_this.renderBufferDirect(camera, scene, geometry, material, object, group);\n\n\t\t\t\t\tmaterial.side = DoubleSide;\n\t\t\t\t} else {\n\t\t\t\t\t_this.renderBufferDirect(camera, scene, geometry, material, object, group);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tobject.onAfterRender(_this, scene, camera, geometry, material, group);\n\t\t}\n\n\t\tfunction getProgram(material, scene, object) {\n\t\t\tif (scene.isScene !== true) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get(material);\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\t\t\tconst lightsStateVersion = lights.state.version;\n\t\t\tconst parameters = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey(parameters);\n\t\t\tlet programs = materialProperties.programs; // always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n\n\t\t\tif (programs === undefined) {\n\t\t\t\t// new material\n\t\t\t\tmaterial.addEventListener('dispose', onMaterialDispose);\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\t\t\t}\n\n\t\t\tlet program = programs.get(programCacheKey);\n\n\t\t\tif (program !== undefined) {\n\t\t\t\t// early out if program and light state is identical\n\t\t\t\tif (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n\t\t\t\t\tupdateCommonMaterialProperties(material, parameters);\n\t\t\t\t\treturn program;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tparameters.uniforms = programCache.getUniforms(material);\n\t\t\t\tmaterial.onBuild(parameters, _this);\n\t\t\t\tmaterial.onBeforeCompile(parameters, _this);\n\t\t\t\tprogram = programCache.acquireProgram(parameters, programCacheKey);\n\t\t\t\tprograms.set(programCacheKey, program);\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties(material, parameters); // store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights(material);\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif (materialProperties.needsLights) {\n\t\t\t\t// wire up the material to this renderer's lighting state\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; // TODO (abelnation): add area lights shadow info to uniforms\n\t\t\t}\n\n\t\t\tconst progUniforms = program.getUniforms();\n\t\t\tconst uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = uniformsList;\n\t\t\treturn program;\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties(material, parameters) {\n\t\t\tconst materialProperties = properties.get(material);\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t}\n\n\t\tfunction setProgram(camera, scene, material, object) {\n\t\t\tif (scene.isScene !== true) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\t\tconst envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n\t\t\tconst vertexAlphas = material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !!object.geometry && !!object.geometry.attributes.tangent;\n\t\t\tconst morphTargets = !!object.geometry && !!object.geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !!object.geometry && !!object.geometry.morphAttributes.normal;\n\t\t\tconst materialProperties = properties.get(material);\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif (_clippingEnabled === true) {\n\t\t\t\tif (_localClippingEnabled === true || camera !== _currentCamera) {\n\t\t\t\t\tconst useCache = camera === _currentCamera && material.id === _currentMaterialId; // we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\n\t\t\t\t\tclipping.setState(material, camera, useCache);\n\t\t\t\t}\n\t\t\t} //\n\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif (material.version === materialProperties.__version) {\n\t\t\t\tif (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.outputEncoding !== encoding) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (object.isInstancedMesh && materialProperties.instancing === false) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.envMap !== envMap) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (material.fog && materialProperties.fog !== fog) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.numClippingPlanes !== undefined && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.vertexAlphas !== vertexAlphas) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.vertexTangents !== vertexTangents) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.morphTargets !== morphTargets) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t} else if (materialProperties.morphNormals !== morphNormals) {\n\t\t\t\t\tneedsProgramChange = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\t\t\t} //\n\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif (needsProgramChange === true) {\n\t\t\t\tprogram = getProgram(material, scene, object);\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif (state.useProgram(program.program)) {\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\t\t\t}\n\n\t\t\tif (material.id !== _currentMaterialId) {\n\t\t\t\t_currentMaterialId = material.id;\n\t\t\t\trefreshMaterial = true;\n\t\t\t}\n\n\t\t\tif (refreshProgram || _currentCamera !== camera) {\n\t\t\t\tp_uniforms.setValue(_gl, 'projectionMatrix', camera.projectionMatrix);\n\n\t\t\t\tif (capabilities.logarithmicDepthBuffer) {\n\t\t\t\t\tp_uniforms.setValue(_gl, 'logDepthBufFC', 2.0 / (Math.log(camera.far + 1.0) / Math.LN2));\n\t\t\t\t}\n\n\t\t\t\tif (_currentCamera !== camera) {\n\t\t\t\t\t_currentCamera = camera; // lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true; // set to true on material change\n\n\t\t\t\t\trefreshLights = true; // remains set until update done\n\t\t\t\t} // load material specific uniforms\n\t\t\t\t// (shader material also gets them for the sake of genericity)\n\n\n\t\t\t\tif (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) {\n\t\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\t\tif (uCamPos !== undefined) {\n\t\t\t\t\t\tuCamPos.setValue(_gl, _vector3.setFromMatrixPosition(camera.matrixWorld));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n\t\t\t\t\tp_uniforms.setValue(_gl, 'isOrthographic', camera.isOrthographicCamera === true);\n\t\t\t\t}\n\n\t\t\t\tif (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) {\n\t\t\t\t\tp_uniforms.setValue(_gl, 'viewMatrix', camera.matrixWorldInverse);\n\t\t\t\t}\n\t\t\t} // skinning uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\n\t\t\tif (object.isSkinnedMesh) {\n\t\t\t\tp_uniforms.setOptional(_gl, object, 'bindMatrix');\n\t\t\t\tp_uniforms.setOptional(_gl, object, 'bindMatrixInverse');\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif (skeleton) {\n\t\t\t\t\tif (capabilities.floatVertexTextures) {\n\t\t\t\t\t\tif (skeleton.boneTexture === null) skeleton.computeBoneTexture();\n\t\t\t\t\t\tp_uniforms.setValue(_gl, 'boneTexture', skeleton.boneTexture, textures);\n\t\t\t\t\t\tp_uniforms.setValue(_gl, 'boneTextureSize', skeleton.boneTextureSize);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp_uniforms.setOptional(_gl, skeleton, 'boneMatrices');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue(_gl, 'receiveShadow', object.receiveShadow);\n\t\t\t}\n\n\t\t\tif (refreshMaterial) {\n\t\t\t\tp_uniforms.setValue(_gl, 'toneMappingExposure', _this.toneMappingExposure);\n\n\t\t\t\tif (materialProperties.needsLights) {\n\t\t\t\t\t// the current material requires lighting info\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n\t\t\t\t} // refresh uniforms common to several materials\n\n\n\t\t\t\tif (fog && material.fog) {\n\t\t\t\t\tmaterials.refreshFogUniforms(m_uniforms, fog);\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n\t\t\t\tWebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n\t\t\t}\n\n\t\t\tif (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n\t\t\t\tWebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\t\t\t}\n\n\t\t\tif (material.isSpriteMaterial) {\n\t\t\t\tp_uniforms.setValue(_gl, 'center', object.center);\n\t\t\t} // common matrices\n\n\n\t\t\tp_uniforms.setValue(_gl, 'modelViewMatrix', object.modelViewMatrix);\n\t\t\tp_uniforms.setValue(_gl, 'normalMatrix', object.normalMatrix);\n\t\t\tp_uniforms.setValue(_gl, 'modelMatrix', object.matrixWorld);\n\t\t\treturn program;\n\t\t} // If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\n\t\tfunction markUniformsLightsNeedsUpdate(uniforms, value) {\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\t\t}\n\n\t\tfunction materialNeedsLights(material) {\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\t\t\treturn _currentActiveCubeFace;\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\t\t\treturn _currentActiveMipmapLevel;\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\t\t\treturn _currentRenderTarget;\n\t\t};\n\n\t\tthis.setRenderTarget = function (renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tif (renderTarget && properties.get(renderTarget).__webglFramebuffer === undefined) {\n\t\t\t\ttextures.setupRenderTarget(renderTarget);\n\t\t\t}\n\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif (renderTarget) {\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif (texture.isDataTexture3D || texture.isDataTexture2DArray) {\n\t\t\t\t\tisRenderTarget3D = true;\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n\n\t\t\t\tif (renderTarget.isWebGLCubeRenderTarget) {\n\t\t\t\t\tframebuffer = __webglFramebuffer[activeCubeFace];\n\t\t\t\t\tisCube = true;\n\t\t\t\t} else if (renderTarget.isWebGLMultisampleRenderTarget) {\n\t\t\t\t\tframebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n\t\t\t\t} else {\n\t\t\t\t\tframebuffer = __webglFramebuffer;\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy(renderTarget.viewport);\n\n\t\t\t\t_currentScissor.copy(renderTarget.scissor);\n\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\t\t\t} else {\n\t\t\t\t_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n\n\t\t\t\t_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n\n\t\t\t\t_currentScissorTest = _scissorTest;\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n\n\t\t\tif (framebufferBound && capabilities.drawBuffers) {\n\t\t\t\tlet needsUpdate = false;\n\n\t\t\t\tif (renderTarget) {\n\t\t\t\t\tif (renderTarget.isWebGLMultipleRenderTargets) {\n\t\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\t\tif (_currentDrawBuffers.length !== textures.length || _currentDrawBuffers[0] !== _gl.COLOR_ATTACHMENT0) {\n\t\t\t\t\t\t\tfor (let i = 0, il = textures.length; i < il; i++) {\n\t\t\t\t\t\t\t\t_currentDrawBuffers[i] = _gl.COLOR_ATTACHMENT0 + i;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_currentDrawBuffers.length = textures.length;\n\t\t\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== _gl.COLOR_ATTACHMENT0) {\n\t\t\t\t\t\t\t_currentDrawBuffers[0] = _gl.COLOR_ATTACHMENT0;\n\t\t\t\t\t\t\t_currentDrawBuffers.length = 1;\n\t\t\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== _gl.BACK) {\n\t\t\t\t\t\t_currentDrawBuffers[0] = _gl.BACK;\n\t\t\t\t\t\t_currentDrawBuffers.length = 1;\n\t\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (needsUpdate) {\n\t\t\t\t\tif (capabilities.isWebGL2) {\n\t\t\t\t\t\t_gl.drawBuffers(_currentDrawBuffers);\n\t\t\t\t\t} else {\n\t\t\t\t\t\textensions.get('WEBGL_draw_buffers').drawBuffersWEBGL(_currentDrawBuffers);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.viewport(_currentViewport);\n\t\t\tstate.scissor(_currentScissor);\n\t\t\tstate.setScissorTest(_currentScissorTest);\n\n\t\t\tif (isCube) {\n\t\t\t\tconst textureProperties = properties.get(renderTarget.texture);\n\n\t\t\t\t_gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n\t\t\t} else if (isRenderTarget3D) {\n\t\t\t\tconst textureProperties = properties.get(renderTarget.texture);\n\t\t\t\tconst layer = activeCubeFace || 0;\n\n\t\t\t\t_gl.framebufferTextureLayer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n\t\t\t}\n\n\t\t\t_currentMaterialId = -1; // reset current material to ensure correct uniform bindings\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function (renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) {\n\t\t\tif (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n\t\t\t\tconsole.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get(renderTarget).__webglFramebuffer;\n\n\t\t\tif (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined) {\n\t\t\t\tframebuffer = framebuffer[activeCubeFaceIndex];\n\t\t\t}\n\n\t\t\tif (framebuffer) {\n\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)) {\n\t\t\t\t\t\tconsole.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has('EXT_color_buffer_half_float') || capabilities.isWebGL2 && extensions.has('EXT_color_buffer_float'));\n\n\t\t\t\t\tif (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t!(textureType === FloatType && (capabilities.isWebGL2 || extensions.has('OES_texture_float') || extensions.has('WEBGL_color_buffer_float'))) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t!halfFloatSupportedByExt) {\n\t\t\t\t\t\tconsole.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_gl.checkFramebufferStatus(_gl.FRAMEBUFFER) === _gl.FRAMEBUFFER_COMPLETE) {\n\t\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\t\t\t\t\t\tif (x >= 0 && x <= renderTarget.width - width && y >= 0 && y <= renderTarget.height - height) {\n\t\t\t\t\t\t\t_gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.');\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\t\t\t\t\tconst framebuffer = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function (position, texture, level = 0) {\n\t\t\tconst levelScale = Math.pow(2, -level);\n\t\t\tconst width = Math.floor(texture.image.width * levelScale);\n\t\t\tconst height = Math.floor(texture.image.height * levelScale);\n\t\t\tlet glFormat = utils.convert(texture.format);\n\n\t\t\tif (capabilities.isWebGL2) {\n\t\t\t\t// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100\n\t\t\t\t// Not needed in Chrome 93+\n\t\t\t\tif (glFormat === _gl.RGB) glFormat = _gl.RGB8;\n\t\t\t\tif (glFormat === _gl.RGBA) glFormat = _gl.RGBA8;\n\t\t\t}\n\n\t\t\ttextures.setTexture2D(texture, 0);\n\n\t\t\t_gl.copyTexImage2D(_gl.TEXTURE_2D, level, glFormat, position.x, position.y, width, height, 0);\n\n\t\t\tstate.unbindTexture();\n\t\t};\n\n\t\tthis.copyTextureToTexture = function (position, srcTexture, dstTexture, level = 0) {\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert(dstTexture.format);\n\t\t\tconst glType = utils.convert(dstTexture.type);\n\t\t\ttextures.setTexture2D(dstTexture, 0); // As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n\n\t\t\tif (srcTexture.isDataTexture) {\n\t\t\t\t_gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n\t\t\t} else {\n\t\t\t\tif (srcTexture.isCompressedTexture) {\n\t\t\t\t\t_gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n\t\t\t\t} else {\n\t\t\t\t\t_gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image);\n\t\t\t\t}\n\t\t\t} // Generate mipmaps only when copying level 0\n\n\n\t\t\tif (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(_gl.TEXTURE_2D);\n\t\t\tstate.unbindTexture();\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function (sourceBox, position, srcTexture, dstTexture, level = 0) {\n\t\t\tif (_this.isWebGL1Renderer) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert(dstTexture.format);\n\t\t\tconst glType = utils.convert(dstTexture.type);\n\t\t\tlet glTarget;\n\n\t\t\tif (dstTexture.isDataTexture3D) {\n\t\t\t\ttextures.setTexture3D(dstTexture, 0);\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\t\t\t} else if (dstTexture.isDataTexture2DArray) {\n\t\t\t\ttextures.setTexture2DArray(dstTexture, 0);\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\t\t\t} else {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n\n\t\t\tconst unpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH);\n\n\t\t\tconst unpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT);\n\n\t\t\tconst unpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS);\n\n\t\t\tconst unpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS);\n\n\t\t\tconst unpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES);\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, sourceBox.min.x);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, sourceBox.min.y);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, sourceBox.min.z);\n\n\t\t\tif (srcTexture.isDataTexture || srcTexture.isDataTexture3D) {\n\t\t\t\t_gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data);\n\t\t\t} else {\n\t\t\t\tif (srcTexture.isCompressedTexture) {\n\t\t\t\t\tconsole.warn('THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.');\n\n\t\t\t\t\t_gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data);\n\t\t\t\t} else {\n\t\t\t\t\t_gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, unpackRowLen);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, unpackSkipPixels);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, unpackSkipRows);\n\n\t\t\t_gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, unpackSkipImages); // Generate mipmaps only when copying level 0\n\n\n\t\t\tif (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(glTarget);\n\t\t\tstate.unbindTexture();\n\t\t};\n\n\t\tthis.initTexture = function (texture) {\n\t\t\ttextures.setTexture2D(texture, 0);\n\t\t\tstate.unbindTexture();\n\t\t};\n\n\t\tthis.resetState = function () {\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\t\t};\n\n\t\tif (typeof __THREE_DEVTOOLS__ !== 'undefined') {\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('observe', {\n\t\t\t\tdetail: this\n\t\t\t})); // eslint-disable-line no-undef\n\n\t\t}\n\t}\n\n\tclass WebGL1Renderer extends WebGLRenderer {}\n\n\tWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\n\tclass FogExp2 {\n\t\tconstructor(color, density = 0.00025) {\n\t\t\tthis.name = '';\n\t\t\tthis.color = new Color(color);\n\t\t\tthis.density = density;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new FogExp2(this.color, this.density);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn {\n\t\t\t\ttype: 'FogExp2',\n\t\t\t\tcolor: this.color.getHex(),\n\t\t\t\tdensity: this.density\n\t\t\t};\n\t\t}\n\n\t}\n\n\tFogExp2.prototype.isFogExp2 = true;\n\n\tclass Fog {\n\t\tconstructor(color, near = 1, far = 1000) {\n\t\t\tthis.name = '';\n\t\t\tthis.color = new Color(color);\n\t\t\tthis.near = near;\n\t\t\tthis.far = far;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new Fog(this.color, this.near, this.far);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn {\n\t\t\t\ttype: 'Fog',\n\t\t\t\tcolor: this.color.getHex(),\n\t\t\t\tnear: this.near,\n\t\t\t\tfar: this.far\n\t\t\t};\n\t\t}\n\n\t}\n\n\tFog.prototype.isFog = true;\n\n\tclass Scene extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'Scene';\n\t\t\tthis.background = null;\n\t\t\tthis.environment = null;\n\t\t\tthis.fog = null;\n\t\t\tthis.overrideMaterial = null;\n\t\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\t\tif (typeof __THREE_DEVTOOLS__ !== 'undefined') {\n\t\t\t\t__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('observe', {\n\t\t\t\t\tdetail: this\n\t\t\t\t})); // eslint-disable-line no-undef\n\n\t\t\t}\n\t\t}\n\n\t\tcopy(source, recursive) {\n\t\t\tsuper.copy(source, recursive);\n\t\t\tif (source.background !== null) this.background = source.background.clone();\n\t\t\tif (source.environment !== null) this.environment = source.environment.clone();\n\t\t\tif (source.fog !== null) this.fog = source.fog.clone();\n\t\t\tif (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone();\n\t\t\tthis.autoUpdate = source.autoUpdate;\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tif (this.fog !== null) data.object.fog = this.fog.toJSON();\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tScene.prototype.isScene = true;\n\n\tclass InterleavedBuffer {\n\t\tconstructor(array, stride) {\n\t\t\tthis.array = array;\n\t\t\tthis.stride = stride;\n\t\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\t\t\tthis.usage = StaticDrawUsage;\n\t\t\tthis.updateRange = {\n\t\t\t\toffset: 0,\n\t\t\t\tcount: -1\n\t\t\t};\n\t\t\tthis.version = 0;\n\t\t\tthis.uuid = generateUUID();\n\t\t}\n\n\t\tonUploadCallback() {}\n\n\t\tset needsUpdate(value) {\n\t\t\tif (value === true) this.version++;\n\t\t}\n\n\t\tsetUsage(value) {\n\t\t\tthis.usage = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.array = new source.array.constructor(source.array);\n\t\t\tthis.count = source.count;\n\t\t\tthis.stride = source.stride;\n\t\t\tthis.usage = source.usage;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopyAt(index1, attribute, index2) {\n\t\t\tindex1 *= this.stride;\n\t\t\tindex2 *= attribute.stride;\n\n\t\t\tfor (let i = 0, l = this.stride; i < l; i++) {\n\t\t\t\tthis.array[index1 + i] = attribute.array[index2 + i];\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tset(value, offset = 0) {\n\t\t\tthis.array.set(value, offset);\n\t\t\treturn this;\n\t\t}\n\n\t\tclone(data) {\n\t\t\tif (data.arrayBuffers === undefined) {\n\t\t\t\tdata.arrayBuffers = {};\n\t\t\t}\n\n\t\t\tif (this.array.buffer._uuid === undefined) {\n\t\t\t\tthis.array.buffer._uuid = generateUUID();\n\t\t\t}\n\n\t\t\tif (data.arrayBuffers[this.array.buffer._uuid] === undefined) {\n\t\t\t\tdata.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n\t\t\t}\n\n\t\t\tconst array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n\t\t\tconst ib = new this.constructor(array, this.stride);\n\t\t\tib.setUsage(this.usage);\n\t\t\treturn ib;\n\t\t}\n\n\t\tonUpload(callback) {\n\t\t\tthis.onUploadCallback = callback;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(data) {\n\t\t\tif (data.arrayBuffers === undefined) {\n\t\t\t\tdata.arrayBuffers = {};\n\t\t\t} // generate UUID for array buffer if necessary\n\n\n\t\t\tif (this.array.buffer._uuid === undefined) {\n\t\t\t\tthis.array.buffer._uuid = generateUUID();\n\t\t\t}\n\n\t\t\tif (data.arrayBuffers[this.array.buffer._uuid] === undefined) {\n\t\t\t\tdata.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call(new Uint32Array(this.array.buffer));\n\t\t\t} //\n\n\n\t\t\treturn {\n\t\t\t\tuuid: this.uuid,\n\t\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tstride: this.stride\n\t\t\t};\n\t\t}\n\n\t}\n\n\tInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\n\tconst _vector$6 = /*@__PURE__*/new Vector3();\n\n\tclass InterleavedBufferAttribute {\n\t\tconstructor(interleavedBuffer, itemSize, offset, normalized = false) {\n\t\t\tthis.name = '';\n\t\t\tthis.data = interleavedBuffer;\n\t\t\tthis.itemSize = itemSize;\n\t\t\tthis.offset = offset;\n\t\t\tthis.normalized = normalized === true;\n\t\t}\n\n\t\tget count() {\n\t\t\treturn this.data.count;\n\t\t}\n\n\t\tget array() {\n\t\t\treturn this.data.array;\n\t\t}\n\n\t\tset needsUpdate(value) {\n\t\t\tthis.data.needsUpdate = value;\n\t\t}\n\n\t\tapplyMatrix4(m) {\n\t\t\tfor (let i = 0, l = this.data.count; i < l; i++) {\n\t\t\t\t_vector$6.x = this.getX(i);\n\t\t\t\t_vector$6.y = this.getY(i);\n\t\t\t\t_vector$6.z = this.getZ(i);\n\n\t\t\t\t_vector$6.applyMatrix4(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tapplyNormalMatrix(m) {\n\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t_vector$6.x = this.getX(i);\n\t\t\t\t_vector$6.y = this.getY(i);\n\t\t\t\t_vector$6.z = this.getZ(i);\n\n\t\t\t\t_vector$6.applyNormalMatrix(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttransformDirection(m) {\n\t\t\tfor (let i = 0, l = this.count; i < l; i++) {\n\t\t\t\t_vector$6.x = this.getX(i);\n\t\t\t\t_vector$6.y = this.getY(i);\n\t\t\t\t_vector$6.z = this.getZ(i);\n\n\t\t\t\t_vector$6.transformDirection(m);\n\n\t\t\t\tthis.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetX(index, x) {\n\t\t\tthis.data.array[index * this.data.stride + this.offset] = x;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetY(index, y) {\n\t\t\tthis.data.array[index * this.data.stride + this.offset + 1] = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetZ(index, z) {\n\t\t\tthis.data.array[index * this.data.stride + this.offset + 2] = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetW(index, w) {\n\t\t\tthis.data.array[index * this.data.stride + this.offset + 3] = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetX(index) {\n\t\t\treturn this.data.array[index * this.data.stride + this.offset];\n\t\t}\n\n\t\tgetY(index) {\n\t\t\treturn this.data.array[index * this.data.stride + this.offset + 1];\n\t\t}\n\n\t\tgetZ(index) {\n\t\t\treturn this.data.array[index * this.data.stride + this.offset + 2];\n\t\t}\n\n\t\tgetW(index) {\n\t\t\treturn this.data.array[index * this.data.stride + this.offset + 3];\n\t\t}\n\n\t\tsetXY(index, x, y) {\n\t\t\tindex = index * this.data.stride + this.offset;\n\t\t\tthis.data.array[index + 0] = x;\n\t\t\tthis.data.array[index + 1] = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetXYZ(index, x, y, z) {\n\t\t\tindex = index * this.data.stride + this.offset;\n\t\t\tthis.data.array[index + 0] = x;\n\t\t\tthis.data.array[index + 1] = y;\n\t\t\tthis.data.array[index + 2] = z;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetXYZW(index, x, y, z, w) {\n\t\t\tindex = index * this.data.stride + this.offset;\n\t\t\tthis.data.array[index + 0] = x;\n\t\t\tthis.data.array[index + 1] = y;\n\t\t\tthis.data.array[index + 2] = z;\n\t\t\tthis.data.array[index + 3] = w;\n\t\t\treturn this;\n\t\t}\n\n\t\tclone(data) {\n\t\t\tif (data === undefined) {\n\t\t\t\tconsole.log('THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.');\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor (let i = 0; i < this.count; i++) {\n\t\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\t\tfor (let j = 0; j < this.itemSize; j++) {\n\t\t\t\t\t\tarray.push(this.data.array[index + j]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n\t\t\t} else {\n\t\t\t\tif (data.interleavedBuffers === undefined) {\n\t\t\t\t\tdata.interleavedBuffers = {};\n\t\t\t\t}\n\n\t\t\t\tif (data.interleavedBuffers[this.data.uuid] === undefined) {\n\t\t\t\t\tdata.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n\t\t\t\t}\n\n\t\t\t\treturn new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n\t\t\t}\n\t\t}\n\n\t\ttoJSON(data) {\n\t\t\tif (data === undefined) {\n\t\t\t\tconsole.log('THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.');\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor (let i = 0; i < this.count; i++) {\n\t\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\t\tfor (let j = 0; j < this.itemSize; j++) {\n\t\t\t\t\t\tarray.push(this.data.array[index + j]);\n\t\t\t\t\t}\n\t\t\t\t} // deinterleave data and save it as an ordinary buffer attribute for now\n\n\n\t\t\t\treturn {\n\t\t\t\t\titemSize: this.itemSize,\n\t\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\t\tarray: array,\n\t\t\t\t\tnormalized: this.normalized\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// save as true interlaved attribtue\n\t\t\t\tif (data.interleavedBuffers === undefined) {\n\t\t\t\t\tdata.interleavedBuffers = {};\n\t\t\t\t}\n\n\t\t\t\tif (data.interleavedBuffers[this.data.uuid] === undefined) {\n\t\t\t\t\tdata.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\t\titemSize: this.itemSize,\n\t\t\t\t\tdata: this.data.uuid,\n\t\t\t\t\toffset: this.offset,\n\t\t\t\t\tnormalized: this.normalized\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t}\n\n\tInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\tmap: new THREE.Texture( ),\n\t *\talphaMap: new THREE.Texture( ),\n\t *\trotation: ,\n\t *\tsizeAttenuation: \n\t * }\n\t */\n\n\tclass SpriteMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'SpriteMaterial';\n\t\t\tthis.color = new Color(0xffffff);\n\t\t\tthis.map = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.rotation = 0;\n\t\t\tthis.sizeAttenuation = true;\n\t\t\tthis.transparent = true;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.map = source.map;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.rotation = source.rotation;\n\t\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tSpriteMaterial.prototype.isSpriteMaterial = true;\n\n\tlet _geometry;\n\n\tconst _intersectPoint = /*@__PURE__*/new Vector3();\n\n\tconst _worldScale = /*@__PURE__*/new Vector3();\n\n\tconst _mvPosition = /*@__PURE__*/new Vector3();\n\n\tconst _alignedPosition = /*@__PURE__*/new Vector2();\n\n\tconst _rotatedPosition = /*@__PURE__*/new Vector2();\n\n\tconst _viewWorldMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _vA = /*@__PURE__*/new Vector3();\n\n\tconst _vB = /*@__PURE__*/new Vector3();\n\n\tconst _vC = /*@__PURE__*/new Vector3();\n\n\tconst _uvA = /*@__PURE__*/new Vector2();\n\n\tconst _uvB = /*@__PURE__*/new Vector2();\n\n\tconst _uvC = /*@__PURE__*/new Vector2();\n\n\tclass Sprite extends Object3D {\n\t\tconstructor(material) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Sprite';\n\n\t\t\tif (_geometry === undefined) {\n\t\t\t\t_geometry = new BufferGeometry();\n\t\t\t\tconst float32Array = new Float32Array([-0.5, -0.5, 0, 0, 0, 0.5, -0.5, 0, 1, 0, 0.5, 0.5, 0, 1, 1, -0.5, 0.5, 0, 0, 1]);\n\t\t\t\tconst interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n\n\t\t\t\t_geometry.setIndex([0, 1, 2, 0, 2, 3]);\n\n\t\t\t\t_geometry.setAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n\n\t\t\t\t_geometry.setAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n\t\t\t}\n\n\t\t\tthis.geometry = _geometry;\n\t\t\tthis.material = material !== undefined ? material : new SpriteMaterial();\n\t\t\tthis.center = new Vector2(0.5, 0.5);\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tif (raycaster.camera === null) {\n\t\t\t\tconsole.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n\t\t\t}\n\n\t\t\t_worldScale.setFromMatrixScale(this.matrixWorld);\n\n\t\t\t_viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n\n\t\t\tthis.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n\n\t\t\t_mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n\n\t\t\tif (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n\t\t\t\t_worldScale.multiplyScalar(-_mvPosition.z);\n\t\t\t}\n\n\t\t\tconst rotation = this.material.rotation;\n\t\t\tlet sin, cos;\n\n\t\t\tif (rotation !== 0) {\n\t\t\t\tcos = Math.cos(rotation);\n\t\t\t\tsin = Math.sin(rotation);\n\t\t\t}\n\n\t\t\tconst center = this.center;\n\t\t\ttransformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n\t\t\ttransformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n\t\t\ttransformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n\n\t\t\t_uvA.set(0, 0);\n\n\t\t\t_uvB.set(1, 0);\n\n\t\t\t_uvC.set(1, 1); // check first triangle\n\n\n\t\t\tlet intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n\n\t\t\tif (intersect === null) {\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n\n\t\t\t\t_uvB.set(0, 1);\n\n\t\t\t\tintersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n\n\t\t\t\tif (intersect === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: _intersectPoint.clone(),\n\t\t\t\tuv: Triangle.getUV(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\t\t\t});\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tif (source.center !== undefined) this.center.copy(source.center);\n\t\t\tthis.material = source.material;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tSprite.prototype.isSprite = true;\n\n\tfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n\t\t// compute position in camera space\n\t\t_alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale); // to check if rotation is not zero\n\n\n\t\tif (sin !== undefined) {\n\t\t\t_rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n\t\t\t_rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n\t\t} else {\n\t\t\t_rotatedPosition.copy(_alignedPosition);\n\t\t}\n\n\t\tvertexPosition.copy(mvPosition);\n\t\tvertexPosition.x += _rotatedPosition.x;\n\t\tvertexPosition.y += _rotatedPosition.y; // transform to world space\n\n\t\tvertexPosition.applyMatrix4(_viewWorldMatrix);\n\t}\n\n\tconst _v1$2 = /*@__PURE__*/new Vector3();\n\n\tconst _v2$1 = /*@__PURE__*/new Vector3();\n\n\tclass LOD extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis._currentLevel = 0;\n\t\t\tthis.type = 'LOD';\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tlevels: {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: []\n\t\t\t\t},\n\t\t\t\tisLOD: {\n\t\t\t\t\tvalue: true\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.autoUpdate = true;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source, false);\n\t\t\tconst levels = source.levels;\n\n\t\t\tfor (let i = 0, l = levels.length; i < l; i++) {\n\t\t\t\tconst level = levels[i];\n\t\t\t\tthis.addLevel(level.object.clone(), level.distance);\n\t\t\t}\n\n\t\t\tthis.autoUpdate = source.autoUpdate;\n\t\t\treturn this;\n\t\t}\n\n\t\taddLevel(object, distance = 0) {\n\t\t\tdistance = Math.abs(distance);\n\t\t\tconst levels = this.levels;\n\t\t\tlet l;\n\n\t\t\tfor (l = 0; l < levels.length; l++) {\n\t\t\t\tif (distance < levels[l].distance) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlevels.splice(l, 0, {\n\t\t\t\tdistance: distance,\n\t\t\t\tobject: object\n\t\t\t});\n\t\t\tthis.add(object);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetCurrentLevel() {\n\t\t\treturn this._currentLevel;\n\t\t}\n\n\t\tgetObjectForDistance(distance) {\n\t\t\tconst levels = this.levels;\n\n\t\t\tif (levels.length > 0) {\n\t\t\t\tlet i, l;\n\n\t\t\t\tfor (i = 1, l = levels.length; i < l; i++) {\n\t\t\t\t\tif (distance < levels[i].distance) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn levels[i - 1].object;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tconst levels = this.levels;\n\n\t\t\tif (levels.length > 0) {\n\t\t\t\t_v1$2.setFromMatrixPosition(this.matrixWorld);\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo(_v1$2);\n\t\t\t\tthis.getObjectForDistance(distance).raycast(raycaster, intersects);\n\t\t\t}\n\t\t}\n\n\t\tupdate(camera) {\n\t\t\tconst levels = this.levels;\n\n\t\t\tif (levels.length > 1) {\n\t\t\t\t_v1$2.setFromMatrixPosition(camera.matrixWorld);\n\n\t\t\t\t_v2$1.setFromMatrixPosition(this.matrixWorld);\n\n\t\t\t\tconst distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n\t\t\t\tlevels[0].object.visible = true;\n\t\t\t\tlet i, l;\n\n\t\t\t\tfor (i = 1, l = levels.length; i < l; i++) {\n\t\t\t\t\tif (distance >= levels[i].distance) {\n\t\t\t\t\t\tlevels[i - 1].object.visible = false;\n\t\t\t\t\t\tlevels[i].object.visible = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._currentLevel = i - 1;\n\n\t\t\t\tfor (; i < l; i++) {\n\t\t\t\t\tlevels[i].object.visible = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tif (this.autoUpdate === false) data.object.autoUpdate = false;\n\t\t\tdata.object.levels = [];\n\t\t\tconst levels = this.levels;\n\n\t\t\tfor (let i = 0, l = levels.length; i < l; i++) {\n\t\t\t\tconst level = levels[i];\n\t\t\t\tdata.object.levels.push({\n\t\t\t\t\tobject: level.object.uuid,\n\t\t\t\t\tdistance: level.distance\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tconst _basePosition = /*@__PURE__*/new Vector3();\n\n\tconst _skinIndex = /*@__PURE__*/new Vector4();\n\n\tconst _skinWeight = /*@__PURE__*/new Vector4();\n\n\tconst _vector$5 = /*@__PURE__*/new Vector3();\n\n\tconst _matrix = /*@__PURE__*/new Matrix4();\n\n\tclass SkinnedMesh extends Mesh {\n\t\tconstructor(geometry, material) {\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'SkinnedMesh';\n\t\t\tthis.bindMode = 'attached';\n\t\t\tthis.bindMatrix = new Matrix4();\n\t\t\tthis.bindMatrixInverse = new Matrix4();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.bindMode = source.bindMode;\n\t\t\tthis.bindMatrix.copy(source.bindMatrix);\n\t\t\tthis.bindMatrixInverse.copy(source.bindMatrixInverse);\n\t\t\tthis.skeleton = source.skeleton;\n\t\t\treturn this;\n\t\t}\n\n\t\tbind(skeleton, bindMatrix) {\n\t\t\tthis.skeleton = skeleton;\n\n\t\t\tif (bindMatrix === undefined) {\n\t\t\t\tthis.updateMatrixWorld(true);\n\t\t\t\tthis.skeleton.calculateInverses();\n\t\t\t\tbindMatrix = this.matrixWorld;\n\t\t\t}\n\n\t\t\tthis.bindMatrix.copy(bindMatrix);\n\t\t\tthis.bindMatrixInverse.copy(bindMatrix).invert();\n\t\t}\n\n\t\tpose() {\n\t\t\tthis.skeleton.pose();\n\t\t}\n\n\t\tnormalizeSkinWeights() {\n\t\t\tconst vector = new Vector4();\n\t\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor (let i = 0, l = skinWeight.count; i < l; i++) {\n\t\t\t\tvector.x = skinWeight.getX(i);\n\t\t\t\tvector.y = skinWeight.getY(i);\n\t\t\t\tvector.z = skinWeight.getZ(i);\n\t\t\t\tvector.w = skinWeight.getW(i);\n\t\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\t\tif (scale !== Infinity) {\n\t\t\t\t\tvector.multiplyScalar(scale);\n\t\t\t\t} else {\n\t\t\t\t\tvector.set(1, 0, 0, 0); // do something reasonable\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n\t\t\t}\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tsuper.updateMatrixWorld(force);\n\n\t\t\tif (this.bindMode === 'attached') {\n\t\t\t\tthis.bindMatrixInverse.copy(this.matrixWorld).invert();\n\t\t\t} else if (this.bindMode === 'detached') {\n\t\t\t\tthis.bindMatrixInverse.copy(this.bindMatrix).invert();\n\t\t\t} else {\n\t\t\t\tconsole.warn('THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode);\n\t\t\t}\n\t\t}\n\n\t\tboneTransform(index, target) {\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\t_skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n\n\t\t\t_skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n\n\t\t\t_basePosition.fromBufferAttribute(geometry.attributes.position, index).applyMatrix4(this.bindMatrix);\n\n\t\t\ttarget.set(0, 0, 0);\n\n\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\tconst weight = _skinWeight.getComponent(i);\n\n\t\t\t\tif (weight !== 0) {\n\t\t\t\t\tconst boneIndex = _skinIndex.getComponent(i);\n\n\t\t\t\t\t_matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n\n\t\t\t\t\ttarget.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4(this.bindMatrixInverse);\n\t\t}\n\n\t}\n\n\tSkinnedMesh.prototype.isSkinnedMesh = true;\n\n\tclass Bone extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'Bone';\n\t\t}\n\n\t}\n\n\tBone.prototype.isBone = true;\n\n\tclass DataTexture extends Texture {\n\t\tconstructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) {\n\t\t\tsuper(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n\t\t\tthis.image = {\n\t\t\t\tdata: data,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t\tthis.magFilter = magFilter;\n\t\t\tthis.minFilter = minFilter;\n\t\t\tthis.generateMipmaps = false;\n\t\t\tthis.flipY = false;\n\t\t\tthis.unpackAlignment = 1;\n\t\t\tthis.needsUpdate = true;\n\t\t}\n\n\t}\n\n\tDataTexture.prototype.isDataTexture = true;\n\n\tconst _offsetMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _identityMatrix = /*@__PURE__*/new Matrix4();\n\n\tclass Skeleton {\n\t\tconstructor(bones = [], boneInverses = []) {\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.bones = bones.slice(0);\n\t\t\tthis.boneInverses = boneInverses;\n\t\t\tthis.boneMatrices = null;\n\t\t\tthis.boneTexture = null;\n\t\t\tthis.boneTextureSize = 0;\n\t\t\tthis.frame = -1;\n\t\t\tthis.init();\n\t\t}\n\n\t\tinit() {\n\t\t\tconst bones = this.bones;\n\t\t\tconst boneInverses = this.boneInverses;\n\t\t\tthis.boneMatrices = new Float32Array(bones.length * 16); // calculate inverse bone matrices if necessary\n\n\t\t\tif (boneInverses.length === 0) {\n\t\t\t\tthis.calculateInverses();\n\t\t\t} else {\n\t\t\t\t// handle special case\n\t\t\t\tif (bones.length !== boneInverses.length) {\n\t\t\t\t\tconsole.warn('THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.');\n\t\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\t\tfor (let i = 0, il = this.bones.length; i < il; i++) {\n\t\t\t\t\t\tthis.boneInverses.push(new Matrix4());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcalculateInverses() {\n\t\t\tthis.boneInverses.length = 0;\n\n\t\t\tfor (let i = 0, il = this.bones.length; i < il; i++) {\n\t\t\t\tconst inverse = new Matrix4();\n\n\t\t\t\tif (this.bones[i]) {\n\t\t\t\t\tinverse.copy(this.bones[i].matrixWorld).invert();\n\t\t\t\t}\n\n\t\t\t\tthis.boneInverses.push(inverse);\n\t\t\t}\n\t\t}\n\n\t\tpose() {\n\t\t\t// recover the bind-time world matrices\n\t\t\tfor (let i = 0, il = this.bones.length; i < il; i++) {\n\t\t\t\tconst bone = this.bones[i];\n\n\t\t\t\tif (bone) {\n\t\t\t\t\tbone.matrixWorld.copy(this.boneInverses[i]).invert();\n\t\t\t\t}\n\t\t\t} // compute the local matrices, positions, rotations and scales\n\n\n\t\t\tfor (let i = 0, il = this.bones.length; i < il; i++) {\n\t\t\t\tconst bone = this.bones[i];\n\n\t\t\t\tif (bone) {\n\t\t\t\t\tif (bone.parent && bone.parent.isBone) {\n\t\t\t\t\t\tbone.matrix.copy(bone.parent.matrixWorld).invert();\n\t\t\t\t\t\tbone.matrix.multiply(bone.matrixWorld);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbone.matrix.copy(bone.matrixWorld);\n\t\t\t\t\t}\n\n\t\t\t\t\tbone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tupdate() {\n\t\t\tconst bones = this.bones;\n\t\t\tconst boneInverses = this.boneInverses;\n\t\t\tconst boneMatrices = this.boneMatrices;\n\t\t\tconst boneTexture = this.boneTexture; // flatten bone matrices to array\n\n\t\t\tfor (let i = 0, il = bones.length; i < il; i++) {\n\t\t\t\t// compute the offset between the current and the original transform\n\t\t\t\tconst matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix;\n\n\t\t\t\t_offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n\n\t\t\t\t_offsetMatrix.toArray(boneMatrices, i * 16);\n\t\t\t}\n\n\t\t\tif (boneTexture !== null) {\n\t\t\t\tboneTexture.needsUpdate = true;\n\t\t\t}\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new Skeleton(this.bones, this.boneInverses);\n\t\t}\n\n\t\tcomputeBoneTexture() {\n\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t//\t\t\tRGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t//\twith\t8x8\tpixel texture max\t 16 bones * 4 pixels =\t(8 * 8)\n\t\t\t//\t\t\t 16x16 pixel texture max\t 64 bones * 4 pixels = (16 * 16)\n\t\t\t//\t\t\t 32x32 pixel texture max\t256 bones * 4 pixels = (32 * 32)\n\t\t\t//\t\t\t 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\t\t\tlet size = Math.sqrt(this.bones.length * 4); // 4 pixels needed for 1 matrix\n\n\t\t\tsize = ceilPowerOfTwo(size);\n\t\t\tsize = Math.max(size, 4);\n\t\t\tconst boneMatrices = new Float32Array(size * size * 4); // 4 floats per RGBA pixel\n\n\t\t\tboneMatrices.set(this.boneMatrices); // copy current values\n\n\t\t\tconst boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n\t\t\tthis.boneMatrices = boneMatrices;\n\t\t\tthis.boneTexture = boneTexture;\n\t\t\tthis.boneTextureSize = size;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetBoneByName(name) {\n\t\t\tfor (let i = 0, il = this.bones.length; i < il; i++) {\n\t\t\t\tconst bone = this.bones[i];\n\n\t\t\t\tif (bone.name === name) {\n\t\t\t\t\treturn bone;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tdispose() {\n\t\t\tif (this.boneTexture !== null) {\n\t\t\t\tthis.boneTexture.dispose();\n\t\t\t\tthis.boneTexture = null;\n\t\t\t}\n\t\t}\n\n\t\tfromJSON(json, bones) {\n\t\t\tthis.uuid = json.uuid;\n\n\t\t\tfor (let i = 0, l = json.bones.length; i < l; i++) {\n\t\t\t\tconst uuid = json.bones[i];\n\t\t\t\tlet bone = bones[uuid];\n\n\t\t\t\tif (bone === undefined) {\n\t\t\t\t\tconsole.warn('THREE.Skeleton: No bone found with UUID:', uuid);\n\t\t\t\t\tbone = new Bone();\n\t\t\t\t}\n\n\t\t\t\tthis.bones.push(bone);\n\t\t\t\tthis.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i]));\n\t\t\t}\n\n\t\t\tthis.init();\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Skeleton',\n\t\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t\t},\n\t\t\t\tbones: [],\n\t\t\t\tboneInverses: []\n\t\t\t};\n\t\t\tdata.uuid = this.uuid;\n\t\t\tconst bones = this.bones;\n\t\t\tconst boneInverses = this.boneInverses;\n\n\t\t\tfor (let i = 0, l = bones.length; i < l; i++) {\n\t\t\t\tconst bone = bones[i];\n\t\t\t\tdata.bones.push(bone.uuid);\n\t\t\t\tconst boneInverse = boneInverses[i];\n\t\t\t\tdata.boneInverses.push(boneInverse.toArray());\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tclass InstancedBufferAttribute extends BufferAttribute {\n\t\tconstructor(array, itemSize, normalized, meshPerAttribute = 1) {\n\t\t\tif (typeof normalized === 'number') {\n\t\t\t\tmeshPerAttribute = normalized;\n\t\t\t\tnormalized = false;\n\t\t\t\tconsole.error('THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.');\n\t\t\t}\n\n\t\t\tsuper(array, itemSize, normalized);\n\t\t\tthis.meshPerAttribute = meshPerAttribute;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\t\t\tdata.isInstancedBufferAttribute = true;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\n\tconst _instanceLocalMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _instanceWorldMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _instanceIntersects = [];\n\n\tconst _mesh = /*@__PURE__*/new Mesh();\n\n\tclass InstancedMesh extends Mesh {\n\t\tconstructor(geometry, material, count) {\n\t\t\tsuper(geometry, material);\n\t\t\tthis.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n\t\t\tthis.instanceColor = null;\n\t\t\tthis.count = count;\n\t\t\tthis.frustumCulled = false;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.instanceMatrix.copy(source.instanceMatrix);\n\t\t\tif (source.instanceColor !== null) this.instanceColor = source.instanceColor.clone();\n\t\t\tthis.count = source.count;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetColorAt(index, color) {\n\t\t\tcolor.fromArray(this.instanceColor.array, index * 3);\n\t\t}\n\n\t\tgetMatrixAt(index, matrix) {\n\t\t\tmatrix.fromArray(this.instanceMatrix.array, index * 16);\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tconst matrixWorld = this.matrixWorld;\n\t\t\tconst raycastTimes = this.count;\n\t\t\t_mesh.geometry = this.geometry;\n\t\t\t_mesh.material = this.material;\n\t\t\tif (_mesh.material === undefined) return;\n\n\t\t\tfor (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n\t\t\t\t// calculate the world matrix for each instance\n\t\t\t\tthis.getMatrixAt(instanceId, _instanceLocalMatrix);\n\n\t\t\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix); // the mesh represents this single instance\n\n\n\t\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t\t_mesh.raycast(raycaster, _instanceIntersects); // process the result of raycast\n\n\n\t\t\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\t\tintersect.object = this;\n\t\t\t\t\tintersects.push(intersect);\n\t\t\t\t}\n\n\t\t\t\t_instanceIntersects.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tsetColorAt(index, color) {\n\t\t\tif (this.instanceColor === null) {\n\t\t\t\tthis.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n\t\t\t}\n\n\t\t\tcolor.toArray(this.instanceColor.array, index * 3);\n\t\t}\n\n\t\tsetMatrixAt(index, matrix) {\n\t\t\tmatrix.toArray(this.instanceMatrix.array, index * 16);\n\t\t}\n\n\t\tupdateMorphTargets() {}\n\n\t\tdispose() {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'dispose'\n\t\t\t});\n\t\t}\n\n\t}\n\n\tInstancedMesh.prototype.isInstancedMesh = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\n\t *\tlinewidth: ,\n\t *\tlinecap: \"round\",\n\t *\tlinejoin: \"round\"\n\t * }\n\t */\n\n\tclass LineBasicMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'LineBasicMaterial';\n\t\t\tthis.color = new Color(0xffffff);\n\t\t\tthis.linewidth = 1;\n\t\t\tthis.linecap = 'round';\n\t\t\tthis.linejoin = 'round';\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.linewidth = source.linewidth;\n\t\t\tthis.linecap = source.linecap;\n\t\t\tthis.linejoin = source.linejoin;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\n\tconst _start$1 = /*@__PURE__*/new Vector3();\n\n\tconst _end$1 = /*@__PURE__*/new Vector3();\n\n\tconst _inverseMatrix$1 = /*@__PURE__*/new Matrix4();\n\n\tconst _ray$1 = /*@__PURE__*/new Ray();\n\n\tconst _sphere$1 = /*@__PURE__*/new Sphere();\n\n\tclass Line extends Object3D {\n\t\tconstructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Line';\n\t\t\tthis.geometry = geometry;\n\t\t\tthis.material = material;\n\t\t\tthis.updateMorphTargets();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.material = source.material;\n\t\t\tthis.geometry = source.geometry;\n\t\t\treturn this;\n\t\t}\n\n\t\tcomputeLineDistances() {\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\t// we assume non-indexed geometry\n\t\t\t\tif (geometry.index === null) {\n\t\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\t\tconst lineDistances = [0];\n\n\t\t\t\t\tfor (let i = 1, l = positionAttribute.count; i < l; i++) {\n\t\t\t\t\t\t_start$1.fromBufferAttribute(positionAttribute, i - 1);\n\n\t\t\t\t\t\t_end$1.fromBufferAttribute(positionAttribute, i);\n\n\t\t\t\t\t\tlineDistances[i] = lineDistances[i - 1];\n\t\t\t\t\t\tlineDistances[i] += _start$1.distanceTo(_end$1);\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.setAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn('THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.');\n\t\t\t\t}\n\t\t\t} else if (geometry.isGeometry) {\n\t\t\t\tconsole.error('THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tconst geometry = this.geometry;\n\t\t\tconst matrixWorld = this.matrixWorld;\n\t\t\tconst threshold = raycaster.params.Line.threshold;\n\t\t\tconst drawRange = geometry.drawRange; // Checking boundingSphere distance to ray\n\n\t\t\tif (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$1.copy(geometry.boundingSphere);\n\n\t\t\t_sphere$1.applyMatrix4(matrixWorld);\n\n\t\t\t_sphere$1.radius += threshold;\n\t\t\tif (raycaster.ray.intersectsSphere(_sphere$1) === false) return; //\n\n\t\t\t_inverseMatrix$1.copy(matrixWorld).invert();\n\n\t\t\t_ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n\n\t\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\t\tconst vStart = new Vector3();\n\t\t\tconst vEnd = new Vector3();\n\t\t\tconst interSegment = new Vector3();\n\t\t\tconst interRay = new Vector3();\n\t\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst index = geometry.index;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\tconst end = Math.min(index.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\tfor (let i = start, l = end - 1; i < l; i += step) {\n\t\t\t\t\t\tconst a = index.getX(i);\n\t\t\t\t\t\tconst b = index.getX(i + 1);\n\t\t\t\t\t\tvStart.fromBufferAttribute(positionAttribute, a);\n\t\t\t\t\t\tvEnd.fromBufferAttribute(positionAttribute, b);\n\n\t\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n\n\t\t\t\t\t\tif (distSq > localThresholdSq) continue;\n\t\t\t\t\t\tinterRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo(interRay);\n\t\t\t\t\t\tif (distance < raycaster.near || distance > raycaster.far) continue;\n\t\t\t\t\t\tintersects.push({\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4(this.matrixWorld),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\tconst end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\tfor (let i = start, l = end - 1; i < l; i += step) {\n\t\t\t\t\t\tvStart.fromBufferAttribute(positionAttribute, i);\n\t\t\t\t\t\tvEnd.fromBufferAttribute(positionAttribute, i + 1);\n\n\t\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n\n\t\t\t\t\t\tif (distSq > localThresholdSq) continue;\n\t\t\t\t\t\tinterRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo(interRay);\n\t\t\t\t\t\tif (distance < raycaster.near || distance > raycaster.far) continue;\n\t\t\t\t\t\tintersects.push({\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4(this.matrixWorld),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (geometry.isGeometry) {\n\t\t\t\tconsole.error('THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t}\n\t\t}\n\n\t\tupdateMorphTargets() {\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\t\tconst keys = Object.keys(morphAttributes);\n\n\t\t\t\tif (keys.length > 0) {\n\t\t\t\t\tconst morphAttribute = morphAttributes[keys[0]];\n\n\t\t\t\t\tif (morphAttribute !== undefined) {\n\t\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\t\tfor (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n\t\t\t\t\t\t\tconst name = morphAttribute[m].name || String(m);\n\t\t\t\t\t\t\tthis.morphTargetInfluences.push(0);\n\t\t\t\t\t\t\tthis.morphTargetDictionary[name] = m;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\t\tif (morphTargets !== undefined && morphTargets.length > 0) {\n\t\t\t\t\tconsole.error('THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tLine.prototype.isLine = true;\n\n\tconst _start = /*@__PURE__*/new Vector3();\n\n\tconst _end = /*@__PURE__*/new Vector3();\n\n\tclass LineSegments extends Line {\n\t\tconstructor(geometry, material) {\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'LineSegments';\n\t\t}\n\n\t\tcomputeLineDistances() {\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\t// we assume non-indexed geometry\n\t\t\t\tif (geometry.index === null) {\n\t\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\t\tconst lineDistances = [];\n\n\t\t\t\t\tfor (let i = 0, l = positionAttribute.count; i < l; i += 2) {\n\t\t\t\t\t\t_start.fromBufferAttribute(positionAttribute, i);\n\n\t\t\t\t\t\t_end.fromBufferAttribute(positionAttribute, i + 1);\n\n\t\t\t\t\t\tlineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n\t\t\t\t\t\tlineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end);\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.setAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.');\n\t\t\t\t}\n\t\t\t} else if (geometry.isGeometry) {\n\t\t\t\tconsole.error('THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tLineSegments.prototype.isLineSegments = true;\n\n\tclass LineLoop extends Line {\n\t\tconstructor(geometry, material) {\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'LineLoop';\n\t\t}\n\n\t}\n\n\tLineLoop.prototype.isLineLoop = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\tmap: new THREE.Texture( ),\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tsize: ,\n\t *\tsizeAttenuation: \n\t *\n\t * }\n\t */\n\n\tclass PointsMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'PointsMaterial';\n\t\t\tthis.color = new Color(0xffffff);\n\t\t\tthis.map = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.size = 1;\n\t\t\tthis.sizeAttenuation = true;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.map = source.map;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.size = source.size;\n\t\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tPointsMaterial.prototype.isPointsMaterial = true;\n\n\tconst _inverseMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _ray = /*@__PURE__*/new Ray();\n\n\tconst _sphere = /*@__PURE__*/new Sphere();\n\n\tconst _position$2 = /*@__PURE__*/new Vector3();\n\n\tclass Points extends Object3D {\n\t\tconstructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Points';\n\t\t\tthis.geometry = geometry;\n\t\t\tthis.material = material;\n\t\t\tthis.updateMorphTargets();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.material = source.material;\n\t\t\tthis.geometry = source.geometry;\n\t\t\treturn this;\n\t\t}\n\n\t\traycast(raycaster, intersects) {\n\t\t\tconst geometry = this.geometry;\n\t\t\tconst matrixWorld = this.matrixWorld;\n\t\t\tconst threshold = raycaster.params.Points.threshold;\n\t\t\tconst drawRange = geometry.drawRange; // Checking boundingSphere distance to ray\n\n\t\t\tif (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n\n\t\t\t_sphere.copy(geometry.boundingSphere);\n\n\t\t\t_sphere.applyMatrix4(matrixWorld);\n\n\t\t\t_sphere.radius += threshold;\n\t\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return; //\n\n\t\t\t_inverseMatrix.copy(matrixWorld).invert();\n\n\t\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst index = geometry.index;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\tconst end = Math.min(index.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\tfor (let i = start, il = end; i < il; i++) {\n\t\t\t\t\t\tconst a = index.getX(i);\n\n\t\t\t\t\t\t_position$2.fromBufferAttribute(positionAttribute, a);\n\n\t\t\t\t\t\ttestPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst start = Math.max(0, drawRange.start);\n\t\t\t\t\tconst end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n\n\t\t\t\t\tfor (let i = start, l = end; i < l; i++) {\n\t\t\t\t\t\t_position$2.fromBufferAttribute(positionAttribute, i);\n\n\t\t\t\t\t\ttestPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error('THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t}\n\t\t}\n\n\t\tupdateMorphTargets() {\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tif (geometry.isBufferGeometry) {\n\t\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\t\tconst keys = Object.keys(morphAttributes);\n\n\t\t\t\tif (keys.length > 0) {\n\t\t\t\t\tconst morphAttribute = morphAttributes[keys[0]];\n\n\t\t\t\t\tif (morphAttribute !== undefined) {\n\t\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\t\tfor (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n\t\t\t\t\t\t\tconst name = morphAttribute[m].name || String(m);\n\t\t\t\t\t\t\tthis.morphTargetInfluences.push(0);\n\t\t\t\t\t\t\tthis.morphTargetDictionary[name] = m;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\t\tif (morphTargets !== undefined && morphTargets.length > 0) {\n\t\t\t\t\tconsole.error('THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tPoints.prototype.isPoints = true;\n\n\tfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects, object) {\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(point);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new Vector3();\n\n\t\t\t_ray.closestPointToPoint(point, intersectPoint);\n\n\t\t\tintersectPoint.applyMatrix4(matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: index,\n\t\t\t\tface: null,\n\t\t\t\tobject: object\n\t\t\t});\n\t\t}\n\t}\n\n\tclass VideoTexture extends Texture {\n\t\tconstructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n\t\t\tsuper(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\t\t\tthis.format = format !== undefined ? format : RGBFormat;\n\t\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\t\t\tthis.generateMipmaps = false;\n\t\t\tconst scope = this;\n\n\t\t\tfunction updateVideo() {\n\t\t\t\tscope.needsUpdate = true;\n\t\t\t\tvideo.requestVideoFrameCallback(updateVideo);\n\t\t\t}\n\n\t\t\tif ('requestVideoFrameCallback' in video) {\n\t\t\t\tvideo.requestVideoFrameCallback(updateVideo);\n\t\t\t}\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor(this.image).copy(this);\n\t\t}\n\n\t\tupdate() {\n\t\t\tconst video = this.image;\n\t\t\tconst hasVideoFrameCallback = ('requestVideoFrameCallback' in video);\n\n\t\t\tif (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n\t\t\t\tthis.needsUpdate = true;\n\t\t\t}\n\t\t}\n\n\t}\n\n\tVideoTexture.prototype.isVideoTexture = true;\n\n\tclass CompressedTexture extends Texture {\n\t\tconstructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n\t\t\tsuper(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n\t\t\tthis.image = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t\tthis.mipmaps = mipmaps; // no flipping for cube textures\n\t\t\t// (also flipping doesn't work for compressed textures )\n\n\t\t\tthis.flipY = false; // can't generate mipmaps for compressed textures\n\t\t\t// mips must be embedded in DDS files\n\n\t\t\tthis.generateMipmaps = false;\n\t\t}\n\n\t}\n\n\tCompressedTexture.prototype.isCompressedTexture = true;\n\n\tclass CanvasTexture extends Texture {\n\t\tconstructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n\t\t\tsuper(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\t\t\tthis.needsUpdate = true;\n\t\t}\n\n\t}\n\n\tCanvasTexture.prototype.isCanvasTexture = true;\n\n\tclass DepthTexture extends Texture {\n\t\tconstructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n\t\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\t\tif (format !== DepthFormat && format !== DepthStencilFormat) {\n\t\t\t\tthrow new Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');\n\t\t\t}\n\n\t\t\tif (type === undefined && format === DepthFormat) type = UnsignedShortType;\n\t\t\tif (type === undefined && format === DepthStencilFormat) type = UnsignedInt248Type;\n\t\t\tsuper(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\t\t\tthis.image = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\t\t\tthis.flipY = false;\n\t\t\tthis.generateMipmaps = false;\n\t\t}\n\n\t}\n\n\tDepthTexture.prototype.isDepthTexture = true;\n\n\tclass CircleGeometry extends BufferGeometry {\n\t\tconstructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CircleGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\tsegments: segments,\n\t\t\t\tthetaStart: thetaStart,\n\t\t\t\tthetaLength: thetaLength\n\t\t\t};\n\t\t\tsegments = Math.max(3, segments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst uv = new Vector2(); // center point\n\n\t\t\tvertices.push(0, 0, 0);\n\t\t\tnormals.push(0, 0, 1);\n\t\t\tuvs.push(0.5, 0.5);\n\n\t\t\tfor (let s = 0, i = 3; s <= segments; s++, i += 3) {\n\t\t\t\tconst segment = thetaStart + s / segments * thetaLength; // vertex\n\n\t\t\t\tvertex.x = radius * Math.cos(segment);\n\t\t\t\tvertex.y = radius * Math.sin(segment);\n\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\tnormals.push(0, 0, 1); // uvs\n\n\t\t\t\tuv.x = (vertices[i] / radius + 1) / 2;\n\t\t\t\tuv.y = (vertices[i + 1] / radius + 1) / 2;\n\t\t\t\tuvs.push(uv.x, uv.y);\n\t\t\t} // indices\n\n\n\t\t\tfor (let i = 1; i <= segments; i++) {\n\t\t\t\tindices.push(i, i + 1, 0);\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n\t\t}\n\n\t}\n\n\tclass CylinderGeometry extends BufferGeometry {\n\t\tconstructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CylinderGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradiusTop: radiusTop,\n\t\t\t\tradiusBottom: radiusBottom,\n\t\t\t\theight: height,\n\t\t\t\tradialSegments: radialSegments,\n\t\t\t\theightSegments: heightSegments,\n\t\t\t\topenEnded: openEnded,\n\t\t\t\tthetaStart: thetaStart,\n\t\t\t\tthetaLength: thetaLength\n\t\t\t};\n\t\t\tconst scope = this;\n\t\t\tradialSegments = Math.floor(radialSegments);\n\t\t\theightSegments = Math.floor(heightSegments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tlet index = 0;\n\t\t\tconst indexArray = [];\n\t\t\tconst halfHeight = height / 2;\n\t\t\tlet groupStart = 0; // generate geometry\n\n\t\t\tgenerateTorso();\n\n\t\t\tif (openEnded === false) {\n\t\t\t\tif (radiusTop > 0) generateCap(true);\n\t\t\t\tif (radiusBottom > 0) generateCap(false);\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n\t\t\tfunction generateTorso() {\n\t\t\t\tconst normal = new Vector3();\n\t\t\t\tconst vertex = new Vector3();\n\t\t\t\tlet groupCount = 0; // this will be used to calculate the normal\n\n\t\t\t\tconst slope = (radiusBottom - radiusTop) / height; // generate vertices, normals and uvs\n\n\t\t\t\tfor (let y = 0; y <= heightSegments; y++) {\n\t\t\t\t\tconst indexRow = [];\n\t\t\t\t\tconst v = y / heightSegments; // calculate the radius of the current row\n\n\t\t\t\t\tconst radius = v * (radiusBottom - radiusTop) + radiusTop;\n\n\t\t\t\t\tfor (let x = 0; x <= radialSegments; x++) {\n\t\t\t\t\t\tconst u = x / radialSegments;\n\t\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\tconst cosTheta = Math.cos(theta); // vertex\n\n\t\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\t\tvertex.y = -v * height + halfHeight;\n\t\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\t\t\tnormal.set(sinTheta, slope, cosTheta).normalize();\n\t\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // uv\n\n\t\t\t\t\t\tuvs.push(u, 1 - v); // save index of vertex in respective row\n\n\t\t\t\t\t\tindexRow.push(index++);\n\t\t\t\t\t} // now save vertices of the row in our index array\n\n\n\t\t\t\t\tindexArray.push(indexRow);\n\t\t\t\t} // generate indices\n\n\n\t\t\t\tfor (let x = 0; x < radialSegments; x++) {\n\t\t\t\t\tfor (let y = 0; y < heightSegments; y++) {\n\t\t\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\t\t\tconst a = indexArray[y][x];\n\t\t\t\t\t\tconst b = indexArray[y + 1][x];\n\t\t\t\t\t\tconst c = indexArray[y + 1][x + 1];\n\t\t\t\t\t\tconst d = indexArray[y][x + 1]; // faces\n\n\t\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\t\tindices.push(b, c, d); // update group counter\n\n\t\t\t\t\t\tgroupCount += 6;\n\t\t\t\t\t}\n\t\t\t\t} // add a group to the geometry. this will ensure multi material support\n\n\n\t\t\t\tscope.addGroup(groupStart, groupCount, 0); // calculate new start value for groups\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t}\n\n\t\t\tfunction generateCap(top) {\n\t\t\t\t// save the index of the first center vertex\n\t\t\t\tconst centerIndexStart = index;\n\t\t\t\tconst uv = new Vector2();\n\t\t\t\tconst vertex = new Vector3();\n\t\t\t\tlet groupCount = 0;\n\t\t\t\tconst radius = top === true ? radiusTop : radiusBottom;\n\t\t\t\tconst sign = top === true ? 1 : -1; // first we generate the center vertex data of the cap.\n\t\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\t\tfor (let x = 1; x <= radialSegments; x++) {\n\t\t\t\t\t// vertex\n\t\t\t\t\tvertices.push(0, halfHeight * sign, 0); // normal\n\n\t\t\t\t\tnormals.push(0, sign, 0); // uv\n\n\t\t\t\t\tuvs.push(0.5, 0.5); // increase index\n\n\t\t\t\t\tindex++;\n\t\t\t\t} // save the index of the last center vertex\n\n\n\t\t\t\tconst centerIndexEnd = index; // now we generate the surrounding vertices, normals and uvs\n\n\t\t\t\tfor (let x = 0; x <= radialSegments; x++) {\n\t\t\t\t\tconst u = x / radialSegments;\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\tconst sinTheta = Math.sin(theta); // vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\t\tnormals.push(0, sign, 0); // uv\n\n\t\t\t\t\tuv.x = cosTheta * 0.5 + 0.5;\n\t\t\t\t\tuv.y = sinTheta * 0.5 * sign + 0.5;\n\t\t\t\t\tuvs.push(uv.x, uv.y); // increase index\n\n\t\t\t\t\tindex++;\n\t\t\t\t} // generate indices\n\n\n\t\t\t\tfor (let x = 0; x < radialSegments; x++) {\n\t\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\t\tif (top === true) {\n\t\t\t\t\t\t// face top\n\t\t\t\t\t\tindices.push(i, i + 1, c);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// face bottom\n\t\t\t\t\t\tindices.push(i + 1, i, c);\n\t\t\t\t\t}\n\n\t\t\t\t\tgroupCount += 3;\n\t\t\t\t} // add a group to the geometry. this will ensure multi material support\n\n\n\t\t\t\tscope.addGroup(groupStart, groupCount, top === true ? 1 : 2); // calculate new start value for groups\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t}\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n\t\t}\n\n\t}\n\n\tclass ConeGeometry extends CylinderGeometry {\n\t\tconstructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n\t\t\tsuper(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n\t\t\tthis.type = 'ConeGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\theight: height,\n\t\t\t\tradialSegments: radialSegments,\n\t\t\t\theightSegments: heightSegments,\n\t\t\t\topenEnded: openEnded,\n\t\t\t\tthetaStart: thetaStart,\n\t\t\t\tthetaLength: thetaLength\n\t\t\t};\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n\t\t}\n\n\t}\n\n\tclass PolyhedronGeometry extends BufferGeometry {\n\t\tconstructor(vertices, indices, radius = 1, detail = 0) {\n\t\t\tsuper();\n\t\t\tthis.type = 'PolyhedronGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tvertices: vertices,\n\t\t\t\tindices: indices,\n\t\t\t\tradius: radius,\n\t\t\t\tdetail: detail\n\t\t\t}; // default buffer data\n\n\t\t\tconst vertexBuffer = [];\n\t\t\tconst uvBuffer = []; // the subdivision creates the vertex buffer data\n\n\t\t\tsubdivide(detail); // all vertices should lie on a conceptual sphere with a given radius\n\n\t\t\tapplyRadius(radius); // finally, create the uv data\n\n\t\t\tgenerateUVs(); // build non-indexed geometry\n\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertexBuffer, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(vertexBuffer.slice(), 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvBuffer, 2));\n\n\t\t\tif (detail === 0) {\n\t\t\t\tthis.computeVertexNormals(); // flat normals\n\t\t\t} else {\n\t\t\t\tthis.normalizeNormals(); // smooth normals\n\t\t\t} // helper functions\n\n\n\t\t\tfunction subdivide(detail) {\n\t\t\t\tconst a = new Vector3();\n\t\t\t\tconst b = new Vector3();\n\t\t\t\tconst c = new Vector3(); // iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\t\tfor (let i = 0; i < indices.length; i += 3) {\n\t\t\t\t\t// get the vertices of the face\n\t\t\t\t\tgetVertexByIndex(indices[i + 0], a);\n\t\t\t\t\tgetVertexByIndex(indices[i + 1], b);\n\t\t\t\t\tgetVertexByIndex(indices[i + 2], c); // perform subdivision\n\n\t\t\t\t\tsubdivideFace(a, b, c, detail);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction subdivideFace(a, b, c, detail) {\n\t\t\t\tconst cols = detail + 1; // we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\t\tconst v = []; // construct all of the vertices for this subdivision\n\n\t\t\t\tfor (let i = 0; i <= cols; i++) {\n\t\t\t\t\tv[i] = [];\n\t\t\t\t\tconst aj = a.clone().lerp(c, i / cols);\n\t\t\t\t\tconst bj = b.clone().lerp(c, i / cols);\n\t\t\t\t\tconst rows = cols - i;\n\n\t\t\t\t\tfor (let j = 0; j <= rows; j++) {\n\t\t\t\t\t\tif (j === 0 && i === cols) {\n\t\t\t\t\t\t\tv[i][j] = aj;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv[i][j] = aj.clone().lerp(bj, j / rows);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} // construct all of the faces\n\n\n\t\t\t\tfor (let i = 0; i < cols; i++) {\n\t\t\t\t\tfor (let j = 0; j < 2 * (cols - i) - 1; j++) {\n\t\t\t\t\t\tconst k = Math.floor(j / 2);\n\n\t\t\t\t\t\tif (j % 2 === 0) {\n\t\t\t\t\t\t\tpushVertex(v[i][k + 1]);\n\t\t\t\t\t\t\tpushVertex(v[i + 1][k]);\n\t\t\t\t\t\t\tpushVertex(v[i][k]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpushVertex(v[i][k + 1]);\n\t\t\t\t\t\t\tpushVertex(v[i + 1][k + 1]);\n\t\t\t\t\t\t\tpushVertex(v[i + 1][k]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction applyRadius(radius) {\n\t\t\t\tconst vertex = new Vector3(); // iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\t\tfor (let i = 0; i < vertexBuffer.length; i += 3) {\n\t\t\t\t\tvertex.x = vertexBuffer[i + 0];\n\t\t\t\t\tvertex.y = vertexBuffer[i + 1];\n\t\t\t\t\tvertex.z = vertexBuffer[i + 2];\n\t\t\t\t\tvertex.normalize().multiplyScalar(radius);\n\t\t\t\t\tvertexBuffer[i + 0] = vertex.x;\n\t\t\t\t\tvertexBuffer[i + 1] = vertex.y;\n\t\t\t\t\tvertexBuffer[i + 2] = vertex.z;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction generateUVs() {\n\t\t\t\tconst vertex = new Vector3();\n\n\t\t\t\tfor (let i = 0; i < vertexBuffer.length; i += 3) {\n\t\t\t\t\tvertex.x = vertexBuffer[i + 0];\n\t\t\t\t\tvertex.y = vertexBuffer[i + 1];\n\t\t\t\t\tvertex.z = vertexBuffer[i + 2];\n\t\t\t\t\tconst u = azimuth(vertex) / 2 / Math.PI + 0.5;\n\t\t\t\t\tconst v = inclination(vertex) / Math.PI + 0.5;\n\t\t\t\t\tuvBuffer.push(u, 1 - v);\n\t\t\t\t}\n\n\t\t\t\tcorrectUVs();\n\t\t\t\tcorrectSeam();\n\t\t\t}\n\n\t\t\tfunction correctSeam() {\n\t\t\t\t// handle case when face straddles the seam, see #3269\n\t\t\t\tfor (let i = 0; i < uvBuffer.length; i += 6) {\n\t\t\t\t\t// uv data of a single face\n\t\t\t\t\tconst x0 = uvBuffer[i + 0];\n\t\t\t\t\tconst x1 = uvBuffer[i + 2];\n\t\t\t\t\tconst x2 = uvBuffer[i + 4];\n\t\t\t\t\tconst max = Math.max(x0, x1, x2);\n\t\t\t\t\tconst min = Math.min(x0, x1, x2); // 0.9 is somewhat arbitrary\n\n\t\t\t\t\tif (max > 0.9 && min < 0.1) {\n\t\t\t\t\t\tif (x0 < 0.2) uvBuffer[i + 0] += 1;\n\t\t\t\t\t\tif (x1 < 0.2) uvBuffer[i + 2] += 1;\n\t\t\t\t\t\tif (x2 < 0.2) uvBuffer[i + 4] += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushVertex(vertex) {\n\t\t\t\tvertexBuffer.push(vertex.x, vertex.y, vertex.z);\n\t\t\t}\n\n\t\t\tfunction getVertexByIndex(index, vertex) {\n\t\t\t\tconst stride = index * 3;\n\t\t\t\tvertex.x = vertices[stride + 0];\n\t\t\t\tvertex.y = vertices[stride + 1];\n\t\t\t\tvertex.z = vertices[stride + 2];\n\t\t\t}\n\n\t\t\tfunction correctUVs() {\n\t\t\t\tconst a = new Vector3();\n\t\t\t\tconst b = new Vector3();\n\t\t\t\tconst c = new Vector3();\n\t\t\t\tconst centroid = new Vector3();\n\t\t\t\tconst uvA = new Vector2();\n\t\t\t\tconst uvB = new Vector2();\n\t\t\t\tconst uvC = new Vector2();\n\n\t\t\t\tfor (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n\t\t\t\t\ta.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n\t\t\t\t\tb.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n\t\t\t\t\tc.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n\t\t\t\t\tuvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n\t\t\t\t\tuvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n\t\t\t\t\tuvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n\t\t\t\t\tcentroid.copy(a).add(b).add(c).divideScalar(3);\n\t\t\t\t\tconst azi = azimuth(centroid);\n\t\t\t\t\tcorrectUV(uvA, j + 0, a, azi);\n\t\t\t\t\tcorrectUV(uvB, j + 2, b, azi);\n\t\t\t\t\tcorrectUV(uvC, j + 4, c, azi);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction correctUV(uv, stride, vector, azimuth) {\n\t\t\t\tif (azimuth < 0 && uv.x === 1) {\n\t\t\t\t\tuvBuffer[stride] = uv.x - 1;\n\t\t\t\t}\n\n\t\t\t\tif (vector.x === 0 && vector.z === 0) {\n\t\t\t\t\tuvBuffer[stride] = azimuth / 2 / Math.PI + 0.5;\n\t\t\t\t}\n\t\t\t} // Angle around the Y axis, counter-clockwise when looking from above.\n\n\n\t\t\tfunction azimuth(vector) {\n\t\t\t\treturn Math.atan2(vector.z, -vector.x);\n\t\t\t} // Angle above the XZ plane.\n\n\n\t\t\tfunction inclination(vector) {\n\t\t\t\treturn Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n\t\t\t}\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n\t\t}\n\n\t}\n\n\tclass DodecahedronGeometry extends PolyhedronGeometry {\n\t\tconstructor(radius = 1, detail = 0) {\n\t\t\tconst t = (1 + Math.sqrt(5)) / 2;\n\t\t\tconst r = 1 / t;\n\t\t\tconst vertices = [// (±1, ±1, ±1)\n\t\t\t-1, -1, -1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1, // (0, ±1/φ, ±φ)\n\t\t\t0, -r, -t, 0, -r, t, 0, r, -t, 0, r, t, // (±1/φ, ±φ, 0)\n\t\t\t-r, -t, 0, -r, t, 0, r, -t, 0, r, t, 0, // (±φ, 0, ±1/φ)\n\t\t\t-t, 0, -r, t, 0, -r, -t, 0, r, t, 0, r];\n\t\t\tconst indices = [3, 11, 7, 3, 7, 15, 3, 15, 13, 7, 19, 17, 7, 17, 6, 7, 6, 15, 17, 4, 8, 17, 8, 10, 17, 10, 6, 8, 0, 16, 8, 16, 2, 8, 2, 10, 0, 12, 1, 0, 1, 18, 0, 18, 16, 6, 10, 2, 6, 2, 13, 6, 13, 15, 2, 16, 18, 2, 18, 3, 2, 3, 13, 18, 1, 9, 18, 9, 11, 18, 11, 3, 4, 14, 12, 4, 12, 0, 4, 0, 8, 11, 9, 5, 11, 5, 19, 11, 19, 7, 19, 5, 14, 19, 14, 4, 19, 4, 17, 1, 12, 14, 1, 14, 5, 1, 5, 9];\n\t\t\tsuper(vertices, indices, radius, detail);\n\t\t\tthis.type = 'DodecahedronGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\tdetail: detail\n\t\t\t};\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new DodecahedronGeometry(data.radius, data.detail);\n\t\t}\n\n\t}\n\n\tconst _v0 = new Vector3();\n\n\tconst _v1$1 = new Vector3();\n\n\tconst _normal = new Vector3();\n\n\tconst _triangle = new Triangle();\n\n\tclass EdgesGeometry extends BufferGeometry {\n\t\tconstructor(geometry, thresholdAngle) {\n\t\t\tsuper();\n\t\t\tthis.type = 'EdgesGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tthresholdAngle: thresholdAngle\n\t\t\t};\n\t\t\tthresholdAngle = thresholdAngle !== undefined ? thresholdAngle : 1;\n\n\t\t\tif (geometry.isGeometry === true) {\n\t\t\t\tconsole.error('THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow(10, precisionPoints);\n\t\t\tconst thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute('position');\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\t\t\tconst indexArr = [0, 0, 0];\n\t\t\tconst vertKeys = ['a', 'b', 'c'];\n\t\t\tconst hashes = new Array(3);\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\n\t\t\tfor (let i = 0; i < indexCount; i += 3) {\n\t\t\t\tif (indexAttr) {\n\t\t\t\t\tindexArr[0] = indexAttr.getX(i);\n\t\t\t\t\tindexArr[1] = indexAttr.getX(i + 1);\n\t\t\t\t\tindexArr[2] = indexAttr.getX(i + 2);\n\t\t\t\t} else {\n\t\t\t\t\tindexArr[0] = i;\n\t\t\t\t\tindexArr[1] = i + 1;\n\t\t\t\t\tindexArr[2] = i + 2;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\ta,\n\t\t\t\t\tb,\n\t\t\t\t\tc\n\t\t\t\t} = _triangle;\n\t\t\t\ta.fromBufferAttribute(positionAttr, indexArr[0]);\n\t\t\t\tb.fromBufferAttribute(positionAttr, indexArr[1]);\n\t\t\t\tc.fromBufferAttribute(positionAttr, indexArr[2]);\n\n\t\t\t\t_triangle.getNormal(_normal); // create hashes for the edge from the vertices\n\n\n\t\t\t\thashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n\t\t\t\thashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n\t\t\t\thashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`; // skip degenerate triangles\n\n\t\t\t\tif (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} // iterate over every edge\n\n\n\t\t\t\tfor (let j = 0; j < 3; j++) {\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = (j + 1) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[j];\n\t\t\t\t\tconst vecHash1 = hashes[jNext];\n\t\t\t\t\tconst v0 = _triangle[vertKeys[j]];\n\t\t\t\t\tconst v1 = _triangle[vertKeys[jNext]];\n\t\t\t\t\tconst hash = `${vecHash0}_${vecHash1}`;\n\t\t\t\t\tconst reverseHash = `${vecHash1}_${vecHash0}`;\n\n\t\t\t\t\tif (reverseHash in edgeData && edgeData[reverseHash]) {\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n\t\t\t\t\t\t\tvertices.push(v0.x, v0.y, v0.z);\n\t\t\t\t\t\t\tvertices.push(v1.x, v1.y, v1.z);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[reverseHash] = null;\n\t\t\t\t\t} else if (!(hash in edgeData)) {\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[hash] = {\n\t\t\t\t\t\t\tindex0: indexArr[j],\n\t\t\t\t\t\t\tindex1: indexArr[jNext],\n\t\t\t\t\t\t\tnormal: _normal.clone()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // iterate over all remaining, unmatched edges and add them to the vertex array\n\n\n\t\t\tfor (const key in edgeData) {\n\t\t\t\tif (edgeData[key]) {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tindex0,\n\t\t\t\t\t\tindex1\n\t\t\t\t\t} = edgeData[key];\n\n\t\t\t\t\t_v0.fromBufferAttribute(positionAttr, index0);\n\n\t\t\t\t\t_v1$1.fromBufferAttribute(positionAttr, index1);\n\n\t\t\t\t\tvertices.push(_v0.x, _v0.y, _v0.z);\n\t\t\t\t\tvertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t}\n\n\t}\n\n\t/**\n\t * Extensible curve object.\n\t *\n\t * Some common of curve methods:\n\t * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n\t * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n\t * .getPoints(), .getSpacedPoints()\n\t * .getLength()\n\t * .updateArcLengths()\n\t *\n\t * This following curves inherit from THREE.Curve:\n\t *\n\t * -- 2D curves --\n\t * THREE.ArcCurve\n\t * THREE.CubicBezierCurve\n\t * THREE.EllipseCurve\n\t * THREE.LineCurve\n\t * THREE.QuadraticBezierCurve\n\t * THREE.SplineCurve\n\t *\n\t * -- 3D curves --\n\t * THREE.CatmullRomCurve3\n\t * THREE.CubicBezierCurve3\n\t * THREE.LineCurve3\n\t * THREE.QuadraticBezierCurve3\n\t *\n\t * A series of curves can be represented as a THREE.CurvePath.\n\t *\n\t **/\n\n\tclass Curve {\n\t\tconstructor() {\n\t\t\tthis.type = 'Curve';\n\t\t\tthis.arcLengthDivisions = 200;\n\t\t} // Virtual base class method to overwrite and implement in subclasses\n\t\t//\t- t [0 .. 1]\n\n\n\t\tgetPoint() {\n\t\t\tconsole.warn('THREE.Curve: .getPoint() not implemented.');\n\t\t\treturn null;\n\t\t} // Get point at relative position in curve according to arc length\n\t\t// - u [0 .. 1]\n\n\n\t\tgetPointAt(u, optionalTarget) {\n\t\t\tconst t = this.getUtoTmapping(u);\n\t\t\treturn this.getPoint(t, optionalTarget);\n\t\t} // Get sequence of points using getPoint( t )\n\n\n\t\tgetPoints(divisions = 5) {\n\t\t\tconst points = [];\n\n\t\t\tfor (let d = 0; d <= divisions; d++) {\n\t\t\t\tpoints.push(this.getPoint(d / divisions));\n\t\t\t}\n\n\t\t\treturn points;\n\t\t} // Get sequence of points using getPointAt( u )\n\n\n\t\tgetSpacedPoints(divisions = 5) {\n\t\t\tconst points = [];\n\n\t\t\tfor (let d = 0; d <= divisions; d++) {\n\t\t\t\tpoints.push(this.getPointAt(d / divisions));\n\t\t\t}\n\n\t\t\treturn points;\n\t\t} // Get total curve arc length\n\n\n\t\tgetLength() {\n\t\t\tconst lengths = this.getLengths();\n\t\t\treturn lengths[lengths.length - 1];\n\t\t} // Get list of cumulative segment lengths\n\n\n\t\tgetLengths(divisions = this.arcLengthDivisions) {\n\t\t\tif (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n\t\t\t\treturn this.cacheArcLengths;\n\t\t\t}\n\n\t\t\tthis.needsUpdate = false;\n\t\t\tconst cache = [];\n\t\t\tlet current,\n\t\t\t\t\tlast = this.getPoint(0);\n\t\t\tlet sum = 0;\n\t\t\tcache.push(0);\n\n\t\t\tfor (let p = 1; p <= divisions; p++) {\n\t\t\t\tcurrent = this.getPoint(p / divisions);\n\t\t\t\tsum += current.distanceTo(last);\n\t\t\t\tcache.push(sum);\n\t\t\t\tlast = current;\n\t\t\t}\n\n\t\t\tthis.cacheArcLengths = cache;\n\t\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\t\t}\n\n\t\tupdateArcLengths() {\n\t\t\tthis.needsUpdate = true;\n\t\t\tthis.getLengths();\n\t\t} // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\n\t\tgetUtoTmapping(u, distance) {\n\t\t\tconst arcLengths = this.getLengths();\n\t\t\tlet i = 0;\n\t\t\tconst il = arcLengths.length;\n\t\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\t\tif (distance) {\n\t\t\t\ttargetArcLength = distance;\n\t\t\t} else {\n\t\t\t\ttargetArcLength = u * arcLengths[il - 1];\n\t\t\t} // binary search for the index with largest value smaller than target u distance\n\n\n\t\t\tlet low = 0,\n\t\t\t\t\thigh = il - 1,\n\t\t\t\t\tcomparison;\n\n\t\t\twhile (low <= high) {\n\t\t\t\ti = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\t\tcomparison = arcLengths[i] - targetArcLength;\n\n\t\t\t\tif (comparison < 0) {\n\t\t\t\t\tlow = i + 1;\n\t\t\t\t} else if (comparison > 0) {\n\t\t\t\t\thigh = i - 1;\n\t\t\t\t} else {\n\t\t\t\t\thigh = i;\n\t\t\t\t\tbreak; // DONE\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = high;\n\n\t\t\tif (arcLengths[i] === targetArcLength) {\n\t\t\t\treturn i / (il - 1);\n\t\t\t} // we could get finer grain at lengths, or use simple interpolation between two points\n\n\n\t\t\tconst lengthBefore = arcLengths[i];\n\t\t\tconst lengthAfter = arcLengths[i + 1];\n\t\t\tconst segmentLength = lengthAfter - lengthBefore; // determine where we are between the 'before' and 'after' points\n\n\t\t\tconst segmentFraction = (targetArcLength - lengthBefore) / segmentLength; // add that fractional amount to t\n\n\t\t\tconst t = (i + segmentFraction) / (il - 1);\n\t\t\treturn t;\n\t\t} // Returns a unit vector tangent at t\n\t\t// In case any sub curve does not implement its tangent derivation,\n\t\t// 2 points a small delta apart will be used to find its gradient\n\t\t// which seems to give a reasonable approximation\n\n\n\t\tgetTangent(t, optionalTarget) {\n\t\t\tconst delta = 0.0001;\n\t\t\tlet t1 = t - delta;\n\t\t\tlet t2 = t + delta; // Capping in case of danger\n\n\t\t\tif (t1 < 0) t1 = 0;\n\t\t\tif (t2 > 1) t2 = 1;\n\t\t\tconst pt1 = this.getPoint(t1);\n\t\t\tconst pt2 = this.getPoint(t2);\n\t\t\tconst tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n\t\t\ttangent.copy(pt2).sub(pt1).normalize();\n\t\t\treturn tangent;\n\t\t}\n\n\t\tgetTangentAt(u, optionalTarget) {\n\t\t\tconst t = this.getUtoTmapping(u);\n\t\t\treturn this.getTangent(t, optionalTarget);\n\t\t}\n\n\t\tcomputeFrenetFrames(segments, closed) {\n\t\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\t\t\tconst normal = new Vector3();\n\t\t\tconst tangents = [];\n\t\t\tconst normals = [];\n\t\t\tconst binormals = [];\n\t\t\tconst vec = new Vector3();\n\t\t\tconst mat = new Matrix4(); // compute the tangent vectors for each segment on the curve\n\n\t\t\tfor (let i = 0; i <= segments; i++) {\n\t\t\t\tconst u = i / segments;\n\t\t\t\ttangents[i] = this.getTangentAt(u, new Vector3());\n\t\t\t\ttangents[i].normalize();\n\t\t\t} // select an initial normal vector perpendicular to the first tangent vector,\n\t\t\t// and in the direction of the minimum tangent xyz component\n\n\n\t\t\tnormals[0] = new Vector3();\n\t\t\tbinormals[0] = new Vector3();\n\t\t\tlet min = Number.MAX_VALUE;\n\t\t\tconst tx = Math.abs(tangents[0].x);\n\t\t\tconst ty = Math.abs(tangents[0].y);\n\t\t\tconst tz = Math.abs(tangents[0].z);\n\n\t\t\tif (tx <= min) {\n\t\t\t\tmin = tx;\n\t\t\t\tnormal.set(1, 0, 0);\n\t\t\t}\n\n\t\t\tif (ty <= min) {\n\t\t\t\tmin = ty;\n\t\t\t\tnormal.set(0, 1, 0);\n\t\t\t}\n\n\t\t\tif (tz <= min) {\n\t\t\t\tnormal.set(0, 0, 1);\n\t\t\t}\n\n\t\t\tvec.crossVectors(tangents[0], normal).normalize();\n\t\t\tnormals[0].crossVectors(tangents[0], vec);\n\t\t\tbinormals[0].crossVectors(tangents[0], normals[0]); // compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\t\tfor (let i = 1; i <= segments; i++) {\n\t\t\t\tnormals[i] = normals[i - 1].clone();\n\t\t\t\tbinormals[i] = binormals[i - 1].clone();\n\t\t\t\tvec.crossVectors(tangents[i - 1], tangents[i]);\n\n\t\t\t\tif (vec.length() > Number.EPSILON) {\n\t\t\t\t\tvec.normalize();\n\t\t\t\t\tconst theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1)); // clamp for floating pt errors\n\n\t\t\t\t\tnormals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n\t\t\t\t}\n\n\t\t\t\tbinormals[i].crossVectors(tangents[i], normals[i]);\n\t\t\t} // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\n\t\t\tif (closed === true) {\n\t\t\t\tlet theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n\t\t\t\ttheta /= segments;\n\n\t\t\t\tif (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n\t\t\t\t\ttheta = -theta;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 1; i <= segments; i++) {\n\t\t\t\t\t// twist a little...\n\t\t\t\t\tnormals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n\t\t\t\t\tbinormals[i].crossVectors(tangents[i], normals[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttangents: tangents,\n\t\t\t\tnormals: normals,\n\t\t\t\tbinormals: binormals\n\t\t\t};\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Curve',\n\t\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t\t}\n\t\t\t};\n\t\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\t\tdata.type = this.type;\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass EllipseCurve extends Curve {\n\t\tconstructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n\t\t\tsuper();\n\t\t\tthis.type = 'EllipseCurve';\n\t\t\tthis.aX = aX;\n\t\t\tthis.aY = aY;\n\t\t\tthis.xRadius = xRadius;\n\t\t\tthis.yRadius = yRadius;\n\t\t\tthis.aStartAngle = aStartAngle;\n\t\t\tthis.aEndAngle = aEndAngle;\n\t\t\tthis.aClockwise = aClockwise;\n\t\t\tthis.aRotation = aRotation;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget) {\n\t\t\tconst point = optionalTarget || new Vector2();\n\t\t\tconst twoPi = Math.PI * 2;\n\t\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\t\tconst samePoints = Math.abs(deltaAngle) < Number.EPSILON; // ensures that deltaAngle is 0 .. 2 PI\n\n\t\t\twhile (deltaAngle < 0) deltaAngle += twoPi;\n\n\t\t\twhile (deltaAngle > twoPi) deltaAngle -= twoPi;\n\n\t\t\tif (deltaAngle < Number.EPSILON) {\n\t\t\t\tif (samePoints) {\n\t\t\t\t\tdeltaAngle = 0;\n\t\t\t\t} else {\n\t\t\t\t\tdeltaAngle = twoPi;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.aClockwise === true && !samePoints) {\n\t\t\t\tif (deltaAngle === twoPi) {\n\t\t\t\t\tdeltaAngle = -twoPi;\n\t\t\t\t} else {\n\t\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\t\tlet x = this.aX + this.xRadius * Math.cos(angle);\n\t\t\tlet y = this.aY + this.yRadius * Math.sin(angle);\n\n\t\t\tif (this.aRotation !== 0) {\n\t\t\t\tconst cos = Math.cos(this.aRotation);\n\t\t\t\tconst sin = Math.sin(this.aRotation);\n\t\t\t\tconst tx = x - this.aX;\n\t\t\t\tconst ty = y - this.aY; // Rotate the point about the center of the ellipse.\n\n\t\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\t\ty = tx * sin + ty * cos + this.aY;\n\t\t\t}\n\n\t\t\treturn point.set(x, y);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.aX = source.aX;\n\t\t\tthis.aY = source.aY;\n\t\t\tthis.xRadius = source.xRadius;\n\t\t\tthis.yRadius = source.yRadius;\n\t\t\tthis.aStartAngle = source.aStartAngle;\n\t\t\tthis.aEndAngle = source.aEndAngle;\n\t\t\tthis.aClockwise = source.aClockwise;\n\t\t\tthis.aRotation = source.aRotation;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.aX = this.aX;\n\t\t\tdata.aY = this.aY;\n\t\t\tdata.xRadius = this.xRadius;\n\t\t\tdata.yRadius = this.yRadius;\n\t\t\tdata.aStartAngle = this.aStartAngle;\n\t\t\tdata.aEndAngle = this.aEndAngle;\n\t\t\tdata.aClockwise = this.aClockwise;\n\t\t\tdata.aRotation = this.aRotation;\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.aX = json.aX;\n\t\t\tthis.aY = json.aY;\n\t\t\tthis.xRadius = json.xRadius;\n\t\t\tthis.yRadius = json.yRadius;\n\t\t\tthis.aStartAngle = json.aStartAngle;\n\t\t\tthis.aEndAngle = json.aEndAngle;\n\t\t\tthis.aClockwise = json.aClockwise;\n\t\t\tthis.aRotation = json.aRotation;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tEllipseCurve.prototype.isEllipseCurve = true;\n\n\tclass ArcCurve extends EllipseCurve {\n\t\tconstructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n\t\t\tsuper(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n\t\t\tthis.type = 'ArcCurve';\n\t\t}\n\n\t}\n\n\tArcCurve.prototype.isArcCurve = true;\n\n\t/**\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t * cusps and self-intersections in non-uniform catmull rom curves.\n\t * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t *\n\t * curve.type accepts centripetal(default), chordal and catmullrom\n\t * curve.tension is used for catmullrom which defaults to 0.5\n\t */\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {\n\t\tlet c0 = 0,\n\t\t\t\tc1 = 0,\n\t\t\t\tc2 = 0,\n\t\t\t\tc3 = 0;\n\t\t/*\n\t\t * Compute coefficients for a cubic polynomial\n\t\t *\t p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t\t * such that\n\t\t *\t p(0) = x0, p(1) = x1\n\t\t *\tand\n\t\t *\t p'(0) = t0, p'(1) = t1.\n\t\t */\n\n\t\tfunction init(x0, x1, t0, t1) {\n\t\t\tc0 = x0;\n\t\t\tc1 = t0;\n\t\t\tc2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\t\t}\n\n\t\treturn {\n\t\t\tinitCatmullRom: function (x0, x1, x2, x3, tension) {\n\t\t\t\tinit(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n\t\t\t},\n\t\t\tinitNonuniformCatmullRom: function (x0, x1, x2, x3, dt0, dt1, dt2) {\n\t\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\t\tlet t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n\t\t\t\tlet t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2; // rescale tangents for parametrization in [0,1]\n\n\t\t\t\tt1 *= dt1;\n\t\t\t\tt2 *= dt1;\n\t\t\t\tinit(x1, x2, t1, t2);\n\t\t\t},\n\t\t\tcalc: function (t) {\n\t\t\t\tconst t2 = t * t;\n\t\t\t\tconst t3 = t2 * t;\n\t\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\t\t\t}\n\t\t};\n\t} //\n\n\n\tconst tmp = new Vector3();\n\tconst px = new CubicPoly(),\n\t\t\t\tpy = new CubicPoly(),\n\t\t\t\tpz = new CubicPoly();\n\n\tclass CatmullRomCurve3 extends Curve {\n\t\tconstructor(points = [], closed = false, curveType = 'centripetal', tension = 0.5) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CatmullRomCurve3';\n\t\t\tthis.points = points;\n\t\t\tthis.closed = closed;\n\t\t\tthis.curveType = curveType;\n\t\t\tthis.tension = tension;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector3()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst points = this.points;\n\t\t\tconst l = points.length;\n\t\t\tconst p = (l - (this.closed ? 0 : 1)) * t;\n\t\t\tlet intPoint = Math.floor(p);\n\t\t\tlet weight = p - intPoint;\n\n\t\t\tif (this.closed) {\n\t\t\t\tintPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n\t\t\t} else if (weight === 0 && intPoint === l - 1) {\n\t\t\t\tintPoint = l - 2;\n\t\t\t\tweight = 1;\n\t\t\t}\n\n\t\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\t\tif (this.closed || intPoint > 0) {\n\t\t\t\tp0 = points[(intPoint - 1) % l];\n\t\t\t} else {\n\t\t\t\t// extrapolate first point\n\t\t\t\ttmp.subVectors(points[0], points[1]).add(points[0]);\n\t\t\t\tp0 = tmp;\n\t\t\t}\n\n\t\t\tconst p1 = points[intPoint % l];\n\t\t\tconst p2 = points[(intPoint + 1) % l];\n\n\t\t\tif (this.closed || intPoint + 2 < l) {\n\t\t\t\tp3 = points[(intPoint + 2) % l];\n\t\t\t} else {\n\t\t\t\t// extrapolate last point\n\t\t\t\ttmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n\t\t\t\tp3 = tmp;\n\t\t\t}\n\n\t\t\tif (this.curveType === 'centripetal' || this.curveType === 'chordal') {\n\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\t\tlet dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n\t\t\t\tlet dt1 = Math.pow(p1.distanceToSquared(p2), pow);\n\t\t\t\tlet dt2 = Math.pow(p2.distanceToSquared(p3), pow); // safety check for repeated points\n\n\t\t\t\tif (dt1 < 1e-4) dt1 = 1.0;\n\t\t\t\tif (dt0 < 1e-4) dt0 = dt1;\n\t\t\t\tif (dt2 < 1e-4) dt2 = dt1;\n\t\t\t\tpx.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2);\n\t\t\t\tpy.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n\t\t\t\tpz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n\t\t\t} else if (this.curveType === 'catmullrom') {\n\t\t\t\tpx.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n\t\t\t\tpy.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n\t\t\t\tpz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension);\n\t\t\t}\n\n\t\t\tpoint.set(px.calc(weight), py.calc(weight), pz.calc(weight));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.points = [];\n\n\t\t\tfor (let i = 0, l = source.points.length; i < l; i++) {\n\t\t\t\tconst point = source.points[i];\n\t\t\t\tthis.points.push(point.clone());\n\t\t\t}\n\n\t\t\tthis.closed = source.closed;\n\t\t\tthis.curveType = source.curveType;\n\t\t\tthis.tension = source.tension;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.points = [];\n\n\t\t\tfor (let i = 0, l = this.points.length; i < l; i++) {\n\t\t\t\tconst point = this.points[i];\n\t\t\t\tdata.points.push(point.toArray());\n\t\t\t}\n\n\t\t\tdata.closed = this.closed;\n\t\t\tdata.curveType = this.curveType;\n\t\t\tdata.tension = this.tension;\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.points = [];\n\n\t\t\tfor (let i = 0, l = json.points.length; i < l; i++) {\n\t\t\t\tconst point = json.points[i];\n\t\t\t\tthis.points.push(new Vector3().fromArray(point));\n\t\t\t}\n\n\t\t\tthis.closed = json.closed;\n\t\t\tthis.curveType = json.curveType;\n\t\t\tthis.tension = json.tension;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n\t/**\n\t * Bezier Curves formulas obtained from\n\t * http://en.wikipedia.org/wiki/Bézier_curve\n\t */\n\tfunction CatmullRom(t, p0, p1, p2, p3) {\n\t\tconst v0 = (p2 - p0) * 0.5;\n\t\tconst v1 = (p3 - p1) * 0.5;\n\t\tconst t2 = t * t;\n\t\tconst t3 = t * t2;\n\t\treturn (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n\t} //\n\n\n\tfunction QuadraticBezierP0(t, p) {\n\t\tconst k = 1 - t;\n\t\treturn k * k * p;\n\t}\n\n\tfunction QuadraticBezierP1(t, p) {\n\t\treturn 2 * (1 - t) * t * p;\n\t}\n\n\tfunction QuadraticBezierP2(t, p) {\n\t\treturn t * t * p;\n\t}\n\n\tfunction QuadraticBezier(t, p0, p1, p2) {\n\t\treturn QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n\t} //\n\n\n\tfunction CubicBezierP0(t, p) {\n\t\tconst k = 1 - t;\n\t\treturn k * k * k * p;\n\t}\n\n\tfunction CubicBezierP1(t, p) {\n\t\tconst k = 1 - t;\n\t\treturn 3 * k * k * t * p;\n\t}\n\n\tfunction CubicBezierP2(t, p) {\n\t\treturn 3 * (1 - t) * t * t * p;\n\t}\n\n\tfunction CubicBezierP3(t, p) {\n\t\treturn t * t * t * p;\n\t}\n\n\tfunction CubicBezier(t, p0, p1, p2, p3) {\n\t\treturn CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n\t}\n\n\tclass CubicBezierCurve extends Curve {\n\t\tconstructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CubicBezierCurve';\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t\tthis.v3 = v3;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector2()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst v0 = this.v0,\n\t\t\t\t\t\tv1 = this.v1,\n\t\t\t\t\t\tv2 = this.v2,\n\t\t\t\t\t\tv3 = this.v3;\n\t\t\tpoint.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v0.copy(source.v0);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\tthis.v3.copy(source.v3);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v0 = this.v0.toArray();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\tdata.v3 = this.v3.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v0.fromArray(json.v0);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\tthis.v3.fromArray(json.v3);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\n\tclass CubicBezierCurve3 extends Curve {\n\t\tconstructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'CubicBezierCurve3';\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t\tthis.v3 = v3;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector3()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst v0 = this.v0,\n\t\t\t\t\t\tv1 = this.v1,\n\t\t\t\t\t\tv2 = this.v2,\n\t\t\t\t\t\tv3 = this.v3;\n\t\t\tpoint.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y), CubicBezier(t, v0.z, v1.z, v2.z, v3.z));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v0.copy(source.v0);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\tthis.v3.copy(source.v3);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v0 = this.v0.toArray();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\tdata.v3 = this.v3.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v0.fromArray(json.v0);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\tthis.v3.fromArray(json.v3);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\n\tclass LineCurve extends Curve {\n\t\tconstructor(v1 = new Vector2(), v2 = new Vector2()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'LineCurve';\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector2()) {\n\t\t\tconst point = optionalTarget;\n\n\t\t\tif (t === 1) {\n\t\t\t\tpoint.copy(this.v2);\n\t\t\t} else {\n\t\t\t\tpoint.copy(this.v2).sub(this.v1);\n\t\t\t\tpoint.multiplyScalar(t).add(this.v1);\n\t\t\t}\n\n\t\t\treturn point;\n\t\t} // Line curve is linear, so we can overwrite default getPointAt\n\n\n\t\tgetPointAt(u, optionalTarget) {\n\t\t\treturn this.getPoint(u, optionalTarget);\n\t\t}\n\n\t\tgetTangent(t, optionalTarget) {\n\t\t\tconst tangent = optionalTarget || new Vector2();\n\t\t\ttangent.copy(this.v2).sub(this.v1).normalize();\n\t\t\treturn tangent;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tLineCurve.prototype.isLineCurve = true;\n\n\tclass LineCurve3 extends Curve {\n\t\tconstructor(v1 = new Vector3(), v2 = new Vector3()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'LineCurve3';\n\t\t\tthis.isLineCurve3 = true;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector3()) {\n\t\t\tconst point = optionalTarget;\n\n\t\t\tif (t === 1) {\n\t\t\t\tpoint.copy(this.v2);\n\t\t\t} else {\n\t\t\t\tpoint.copy(this.v2).sub(this.v1);\n\t\t\t\tpoint.multiplyScalar(t).add(this.v1);\n\t\t\t}\n\n\t\t\treturn point;\n\t\t} // Line curve is linear, so we can overwrite default getPointAt\n\n\n\t\tgetPointAt(u, optionalTarget) {\n\t\t\treturn this.getPoint(u, optionalTarget);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass QuadraticBezierCurve extends Curve {\n\t\tconstructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'QuadraticBezierCurve';\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector2()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst v0 = this.v0,\n\t\t\t\t\t\tv1 = this.v1,\n\t\t\t\t\t\tv2 = this.v2;\n\t\t\tpoint.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v0.copy(source.v0);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v0 = this.v0.toArray();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v0.fromArray(json.v0);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\n\tclass QuadraticBezierCurve3 extends Curve {\n\t\tconstructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n\t\t\tsuper();\n\t\t\tthis.type = 'QuadraticBezierCurve3';\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector3()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst v0 = this.v0,\n\t\t\t\t\t\tv1 = this.v1,\n\t\t\t\t\t\tv2 = this.v2;\n\t\t\tpoint.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y), QuadraticBezier(t, v0.z, v1.z, v2.z));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.v0.copy(source.v0);\n\t\t\tthis.v1.copy(source.v1);\n\t\t\tthis.v2.copy(source.v2);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.v0 = this.v0.toArray();\n\t\t\tdata.v1 = this.v1.toArray();\n\t\t\tdata.v2 = this.v2.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.v0.fromArray(json.v0);\n\t\t\tthis.v1.fromArray(json.v1);\n\t\t\tthis.v2.fromArray(json.v2);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\n\tclass SplineCurve extends Curve {\n\t\tconstructor(points = []) {\n\t\t\tsuper();\n\t\t\tthis.type = 'SplineCurve';\n\t\t\tthis.points = points;\n\t\t}\n\n\t\tgetPoint(t, optionalTarget = new Vector2()) {\n\t\t\tconst point = optionalTarget;\n\t\t\tconst points = this.points;\n\t\t\tconst p = (points.length - 1) * t;\n\t\t\tconst intPoint = Math.floor(p);\n\t\t\tconst weight = p - intPoint;\n\t\t\tconst p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n\t\t\tconst p1 = points[intPoint];\n\t\t\tconst p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n\t\t\tconst p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\t\t\tpoint.set(CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), CatmullRom(weight, p0.y, p1.y, p2.y, p3.y));\n\t\t\treturn point;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.points = [];\n\n\t\t\tfor (let i = 0, l = source.points.length; i < l; i++) {\n\t\t\t\tconst point = source.points[i];\n\t\t\t\tthis.points.push(point.clone());\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.points = [];\n\n\t\t\tfor (let i = 0, l = this.points.length; i < l; i++) {\n\t\t\t\tconst point = this.points[i];\n\t\t\t\tdata.points.push(point.toArray());\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.points = [];\n\n\t\t\tfor (let i = 0, l = json.points.length; i < l; i++) {\n\t\t\t\tconst point = json.points[i];\n\t\t\t\tthis.points.push(new Vector2().fromArray(point));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tSplineCurve.prototype.isSplineCurve = true;\n\n\tvar Curves = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tArcCurve: ArcCurve,\n\t\tCatmullRomCurve3: CatmullRomCurve3,\n\t\tCubicBezierCurve: CubicBezierCurve,\n\t\tCubicBezierCurve3: CubicBezierCurve3,\n\t\tEllipseCurve: EllipseCurve,\n\t\tLineCurve: LineCurve,\n\t\tLineCurve3: LineCurve3,\n\t\tQuadraticBezierCurve: QuadraticBezierCurve,\n\t\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\t\tSplineCurve: SplineCurve\n\t});\n\n\t/**\n\t * Port from https://github.com/mapbox/earcut (v2.2.2)\n\t */\n\tconst Earcut = {\n\t\ttriangulate: function (data, holeIndices, dim = 2) {\n\t\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\t\tconst outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\t\t\tlet outerNode = linkedList(data, 0, outerLen, dim, true);\n\t\t\tconst triangles = [];\n\t\t\tif (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\t\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\t\t\tif (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\n\t\t\tif (data.length > 80 * dim) {\n\t\t\t\tminX = maxX = data[0];\n\t\t\t\tminY = maxY = data[1];\n\n\t\t\t\tfor (let i = dim; i < outerLen; i += dim) {\n\t\t\t\t\tx = data[i];\n\t\t\t\t\ty = data[i + 1];\n\t\t\t\t\tif (x < minX) minX = x;\n\t\t\t\t\tif (y < minY) minY = y;\n\t\t\t\t\tif (x > maxX) maxX = x;\n\t\t\t\t\tif (y > maxY) maxY = y;\n\t\t\t\t} // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\n\n\t\t\t\tinvSize = Math.max(maxX - minX, maxY - minY);\n\t\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\t\t\t}\n\n\t\t\tearcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\t\t\treturn triangles;\n\t\t}\n\t}; // create a circular doubly linked list from polygon points in the specified winding order\n\n\tfunction linkedList(data, start, end, dim, clockwise) {\n\t\tlet i, last;\n\n\t\tif (clockwise === signedArea(data, start, end, dim) > 0) {\n\t\t\tfor (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n\t\t} else {\n\t\t\tfor (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n\t\t}\n\n\t\tif (last && equals(last, last.next)) {\n\t\t\tremoveNode(last);\n\t\t\tlast = last.next;\n\t\t}\n\n\t\treturn last;\n\t} // eliminate colinear or duplicate points\n\n\n\tfunction filterPoints(start, end) {\n\t\tif (!start) return start;\n\t\tif (!end) end = start;\n\t\tlet p = start,\n\t\t\t\tagain;\n\n\t\tdo {\n\t\t\tagain = false;\n\n\t\t\tif (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n\t\t\t\tremoveNode(p);\n\t\t\t\tp = end = p.prev;\n\t\t\t\tif (p === p.next) break;\n\t\t\t\tagain = true;\n\t\t\t} else {\n\t\t\t\tp = p.next;\n\t\t\t}\n\t\t} while (again || p !== end);\n\n\t\treturn end;\n\t} // main ear slicing loop which triangulates a polygon (given as a linked list)\n\n\n\tfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n\t\tif (!ear) return; // interlink polygon nodes in z-order\n\n\t\tif (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\t\tlet stop = ear,\n\t\t\t\tprev,\n\t\t\t\tnext; // iterate through ears, slicing them one by one\n\n\t\twhile (ear.prev !== ear.next) {\n\t\t\tprev = ear.prev;\n\t\t\tnext = ear.next;\n\n\t\t\tif (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n\t\t\t\t// cut off the triangle\n\t\t\t\ttriangles.push(prev.i / dim);\n\t\t\t\ttriangles.push(ear.i / dim);\n\t\t\t\ttriangles.push(next.i / dim);\n\t\t\t\tremoveNode(ear); // skipping the next vertex leads to less sliver triangles\n\n\t\t\t\tear = next.next;\n\t\t\t\tstop = next.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tear = next; // if we looped through the whole remaining polygon and can't find any more ears\n\n\t\t\tif (ear === stop) {\n\t\t\t\t// try filtering points and slicing again\n\t\t\t\tif (!pass) {\n\t\t\t\t\tearcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); // if this didn't work, try curing all small self-intersections locally\n\t\t\t\t} else if (pass === 1) {\n\t\t\t\t\tear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n\t\t\t\t\tearcutLinked(ear, triangles, dim, minX, minY, invSize, 2); // as a last resort, try splitting the remaining polygon into two\n\t\t\t\t} else if (pass === 2) {\n\t\t\t\t\tsplitEarcut(ear, triangles, dim, minX, minY, invSize);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} // check whether a polygon node forms a valid ear with adjacent nodes\n\n\n\tfunction isEar(ear) {\n\t\tconst a = ear.prev,\n\t\t\t\t\tb = ear,\n\t\t\t\t\tc = ear.next;\n\t\tif (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\t\t// now make sure we don't have other points inside the potential ear\n\n\t\tlet p = ear.next.next;\n\n\t\twhile (p !== ear.prev) {\n\t\t\tif (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n\t\t\tp = p.next;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction isEarHashed(ear, minX, minY, invSize) {\n\t\tconst a = ear.prev,\n\t\t\t\t\tb = ear,\n\t\t\t\t\tc = ear.next;\n\t\tif (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\t\t// triangle bbox; min & max are calculated like this for speed\n\n\t\tconst minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x,\n\t\t\t\t\tminTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y,\n\t\t\t\t\tmaxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x,\n\t\t\t\t\tmaxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y; // z-order range for the current triangle bbox;\n\n\t\tconst minZ = zOrder(minTX, minTY, minX, minY, invSize),\n\t\t\t\t\tmaxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\t\tlet p = ear.prevZ,\n\t\t\t\tn = ear.nextZ; // look for points inside the triangle in both directions\n\n\t\twhile (p && p.z >= minZ && n && n.z <= maxZ) {\n\t\t\tif (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n\t\t\tp = p.prevZ;\n\t\t\tif (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n\t\t\tn = n.nextZ;\n\t\t} // look for remaining points in decreasing z-order\n\n\n\t\twhile (p && p.z >= minZ) {\n\t\t\tif (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n\t\t\tp = p.prevZ;\n\t\t} // look for remaining points in increasing z-order\n\n\n\t\twhile (n && n.z <= maxZ) {\n\t\t\tif (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n\t\t\tn = n.nextZ;\n\t\t}\n\n\t\treturn true;\n\t} // go through all polygon nodes and cure small local self-intersections\n\n\n\tfunction cureLocalIntersections(start, triangles, dim) {\n\t\tlet p = start;\n\n\t\tdo {\n\t\t\tconst a = p.prev,\n\t\t\t\t\t\tb = p.next.next;\n\n\t\t\tif (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\t\t\t\ttriangles.push(a.i / dim);\n\t\t\t\ttriangles.push(p.i / dim);\n\t\t\t\ttriangles.push(b.i / dim); // remove two nodes involved\n\n\t\t\t\tremoveNode(p);\n\t\t\t\tremoveNode(p.next);\n\t\t\t\tp = start = b;\n\t\t\t}\n\n\t\t\tp = p.next;\n\t\t} while (p !== start);\n\n\t\treturn filterPoints(p);\n\t} // try splitting polygon into two and triangulate them independently\n\n\n\tfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n\t\t// look for a valid diagonal that divides the polygon into two\n\t\tlet a = start;\n\n\t\tdo {\n\t\t\tlet b = a.next.next;\n\n\t\t\twhile (b !== a.prev) {\n\t\t\t\tif (a.i !== b.i && isValidDiagonal(a, b)) {\n\t\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\t\tlet c = splitPolygon(a, b); // filter colinear points around the cuts\n\n\t\t\t\t\ta = filterPoints(a, a.next);\n\t\t\t\t\tc = filterPoints(c, c.next); // run earcut on each half\n\n\t\t\t\t\tearcutLinked(a, triangles, dim, minX, minY, invSize);\n\t\t\t\t\tearcutLinked(c, triangles, dim, minX, minY, invSize);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tb = b.next;\n\t\t\t}\n\n\t\t\ta = a.next;\n\t\t} while (a !== start);\n\t} // link every hole into the outer loop, producing a single-ring polygon without holes\n\n\n\tfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n\t\tconst queue = [];\n\t\tlet i, len, start, end, list;\n\n\t\tfor (i = 0, len = holeIndices.length; i < len; i++) {\n\t\t\tstart = holeIndices[i] * dim;\n\t\t\tend = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n\t\t\tlist = linkedList(data, start, end, dim, false);\n\t\t\tif (list === list.next) list.steiner = true;\n\t\t\tqueue.push(getLeftmost(list));\n\t\t}\n\n\t\tqueue.sort(compareX); // process holes from left to right\n\n\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\teliminateHole(queue[i], outerNode);\n\t\t\touterNode = filterPoints(outerNode, outerNode.next);\n\t\t}\n\n\t\treturn outerNode;\n\t}\n\n\tfunction compareX(a, b) {\n\t\treturn a.x - b.x;\n\t} // find a bridge between vertices that connects hole with an outer ring and and link it\n\n\n\tfunction eliminateHole(hole, outerNode) {\n\t\touterNode = findHoleBridge(hole, outerNode);\n\n\t\tif (outerNode) {\n\t\t\tconst b = splitPolygon(outerNode, hole); // filter collinear points around the cuts\n\n\t\t\tfilterPoints(outerNode, outerNode.next);\n\t\t\tfilterPoints(b, b.next);\n\t\t}\n\t} // David Eberly's algorithm for finding a bridge between hole and outer polygon\n\n\n\tfunction findHoleBridge(hole, outerNode) {\n\t\tlet p = outerNode;\n\t\tconst hx = hole.x;\n\t\tconst hy = hole.y;\n\t\tlet qx = -Infinity,\n\t\t\t\tm; // find a segment intersected by a ray from the hole's leftmost point to the left;\n\t\t// segment's endpoint with lesser x will be potential connection point\n\n\t\tdo {\n\t\t\tif (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n\t\t\t\tconst x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n\n\t\t\t\tif (x <= hx && x > qx) {\n\t\t\t\t\tqx = x;\n\n\t\t\t\t\tif (x === hx) {\n\t\t\t\t\t\tif (hy === p.y) return p;\n\t\t\t\t\t\tif (hy === p.next.y) return p.next;\n\t\t\t\t\t}\n\n\t\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tp = p.next;\n\t\t} while (p !== outerNode);\n\n\t\tif (!m) return null;\n\t\tif (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\t\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t\t// if there are no points found, we have a valid connection;\n\t\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\t\tconst stop = m,\n\t\t\t\t\tmx = m.x,\n\t\t\t\t\tmy = m.y;\n\t\tlet tanMin = Infinity,\n\t\t\t\ttan;\n\t\tp = m;\n\n\t\tdo {\n\t\t\tif (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\t\t\t\ttan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n\t\t\t\tif (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n\t\t\t\t\tm = p;\n\t\t\t\t\ttanMin = tan;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tp = p.next;\n\t\t} while (p !== stop);\n\n\t\treturn m;\n\t} // whether sector in vertex m contains sector in vertex p in the same coordinates\n\n\n\tfunction sectorContainsSector(m, p) {\n\t\treturn area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n\t} // interlink polygon nodes in z-order\n\n\n\tfunction indexCurve(start, minX, minY, invSize) {\n\t\tlet p = start;\n\n\t\tdo {\n\t\t\tif (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n\t\t\tp.prevZ = p.prev;\n\t\t\tp.nextZ = p.next;\n\t\t\tp = p.next;\n\t\t} while (p !== start);\n\n\t\tp.prevZ.nextZ = null;\n\t\tp.prevZ = null;\n\t\tsortLinked(p);\n\t} // Simon Tatham's linked list merge sort algorithm\n\t// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\n\n\n\tfunction sortLinked(list) {\n\t\tlet i,\n\t\t\t\tp,\n\t\t\t\tq,\n\t\t\t\te,\n\t\t\t\ttail,\n\t\t\t\tnumMerges,\n\t\t\t\tpSize,\n\t\t\t\tqSize,\n\t\t\t\tinSize = 1;\n\n\t\tdo {\n\t\t\tp = list;\n\t\t\tlist = null;\n\t\t\ttail = null;\n\t\t\tnumMerges = 0;\n\n\t\t\twhile (p) {\n\t\t\t\tnumMerges++;\n\t\t\t\tq = p;\n\t\t\t\tpSize = 0;\n\n\t\t\t\tfor (i = 0; i < inSize; i++) {\n\t\t\t\t\tpSize++;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tif (!q) break;\n\t\t\t\t}\n\n\t\t\t\tqSize = inSize;\n\n\t\t\t\twhile (pSize > 0 || qSize > 0 && q) {\n\t\t\t\t\tif (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n\t\t\t\t\t\te = p;\n\t\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\t\tpSize--;\n\t\t\t\t\t} else {\n\t\t\t\t\t\te = q;\n\t\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\t\tqSize--;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tail) tail.nextZ = e;else list = e;\n\t\t\t\t\te.prevZ = tail;\n\t\t\t\t\ttail = e;\n\t\t\t\t}\n\n\t\t\t\tp = q;\n\t\t\t}\n\n\t\t\ttail.nextZ = null;\n\t\t\tinSize *= 2;\n\t\t} while (numMerges > 1);\n\n\t\treturn list;\n\t} // z-order of a point given coords and inverse of the longer side of data bbox\n\n\n\tfunction zOrder(x, y, minX, minY, invSize) {\n\t\t// coords are transformed into non-negative 15-bit integer range\n\t\tx = 32767 * (x - minX) * invSize;\n\t\ty = 32767 * (y - minY) * invSize;\n\t\tx = (x | x << 8) & 0x00FF00FF;\n\t\tx = (x | x << 4) & 0x0F0F0F0F;\n\t\tx = (x | x << 2) & 0x33333333;\n\t\tx = (x | x << 1) & 0x55555555;\n\t\ty = (y | y << 8) & 0x00FF00FF;\n\t\ty = (y | y << 4) & 0x0F0F0F0F;\n\t\ty = (y | y << 2) & 0x33333333;\n\t\ty = (y | y << 1) & 0x55555555;\n\t\treturn x | y << 1;\n\t} // find the leftmost node of a polygon ring\n\n\n\tfunction getLeftmost(start) {\n\t\tlet p = start,\n\t\t\t\tleftmost = start;\n\n\t\tdo {\n\t\t\tif (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n\t\t\tp = p.next;\n\t\t} while (p !== start);\n\n\t\treturn leftmost;\n\t} // check if a point lies within a convex triangle\n\n\n\tfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n\t\treturn (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n\t} // check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n\n\n\tfunction isValidDiagonal(a, b) {\n\t\treturn a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n\t\tequals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n\t} // signed area of a triangle\n\n\n\tfunction area(p, q, r) {\n\t\treturn (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n\t} // check if two points are equal\n\n\n\tfunction equals(p1, p2) {\n\t\treturn p1.x === p2.x && p1.y === p2.y;\n\t} // check if two segments intersect\n\n\n\tfunction intersects(p1, q1, p2, q2) {\n\t\tconst o1 = sign(area(p1, q1, p2));\n\t\tconst o2 = sign(area(p1, q1, q2));\n\t\tconst o3 = sign(area(p2, q2, p1));\n\t\tconst o4 = sign(area(p2, q2, q1));\n\t\tif (o1 !== o2 && o3 !== o4) return true; // general case\n\n\t\tif (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\n\t\tif (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\n\t\tif (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\n\t\tif (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\t\treturn false;\n\t} // for collinear points p, q, r, check if point q lies on segment pr\n\n\n\tfunction onSegment(p, q, r) {\n\t\treturn q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n\t}\n\n\tfunction sign(num) {\n\t\treturn num > 0 ? 1 : num < 0 ? -1 : 0;\n\t} // check if a polygon diagonal intersects any polygon segments\n\n\n\tfunction intersectsPolygon(a, b) {\n\t\tlet p = a;\n\n\t\tdo {\n\t\t\tif (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n\t\t\tp = p.next;\n\t\t} while (p !== a);\n\n\t\treturn false;\n\t} // check if a polygon diagonal is locally inside the polygon\n\n\n\tfunction locallyInside(a, b) {\n\t\treturn area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n\t} // check if the middle point of a polygon diagonal is inside the polygon\n\n\n\tfunction middleInside(a, b) {\n\t\tlet p = a,\n\t\t\t\tinside = false;\n\t\tconst px = (a.x + b.x) / 2,\n\t\t\t\t\tpy = (a.y + b.y) / 2;\n\n\t\tdo {\n\t\t\tif (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n\t\t\tp = p.next;\n\t\t} while (p !== a);\n\n\t\treturn inside;\n\t} // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n\t// if one belongs to the outer ring and another to a hole, it merges it into a single ring\n\n\n\tfunction splitPolygon(a, b) {\n\t\tconst a2 = new Node(a.i, a.x, a.y),\n\t\t\t\t\tb2 = new Node(b.i, b.x, b.y),\n\t\t\t\t\tan = a.next,\n\t\t\t\t\tbp = b.prev;\n\t\ta.next = b;\n\t\tb.prev = a;\n\t\ta2.next = an;\n\t\tan.prev = a2;\n\t\tb2.next = a2;\n\t\ta2.prev = b2;\n\t\tbp.next = b2;\n\t\tb2.prev = bp;\n\t\treturn b2;\n\t} // create a node and optionally link it with previous one (in a circular doubly linked list)\n\n\n\tfunction insertNode(i, x, y, last) {\n\t\tconst p = new Node(i, x, y);\n\n\t\tif (!last) {\n\t\t\tp.prev = p;\n\t\t\tp.next = p;\n\t\t} else {\n\t\t\tp.next = last.next;\n\t\t\tp.prev = last;\n\t\t\tlast.next.prev = p;\n\t\t\tlast.next = p;\n\t\t}\n\n\t\treturn p;\n\t}\n\n\tfunction removeNode(p) {\n\t\tp.next.prev = p.prev;\n\t\tp.prev.next = p.next;\n\t\tif (p.prevZ) p.prevZ.nextZ = p.nextZ;\n\t\tif (p.nextZ) p.nextZ.prevZ = p.prevZ;\n\t}\n\n\tfunction Node(i, x, y) {\n\t\t// vertex index in coordinates array\n\t\tthis.i = i; // vertex coordinates\n\n\t\tthis.x = x;\n\t\tthis.y = y; // previous and next vertex nodes in a polygon ring\n\n\t\tthis.prev = null;\n\t\tthis.next = null; // z-order curve value\n\n\t\tthis.z = null; // previous and next nodes in z-order\n\n\t\tthis.prevZ = null;\n\t\tthis.nextZ = null; // indicates whether this is a steiner point\n\n\t\tthis.steiner = false;\n\t}\n\n\tfunction signedArea(data, start, end, dim) {\n\t\tlet sum = 0;\n\n\t\tfor (let i = start, j = end - dim; i < end; i += dim) {\n\t\t\tsum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n\t\t\tj = i;\n\t\t}\n\n\t\treturn sum;\n\t}\n\n\tclass ShapeUtils {\n\t\t// calculate area of the contour polygon\n\t\tstatic area(contour) {\n\t\t\tconst n = contour.length;\n\t\t\tlet a = 0.0;\n\n\t\t\tfor (let p = n - 1, q = 0; q < n; p = q++) {\n\t\t\t\ta += contour[p].x * contour[q].y - contour[q].x * contour[p].y;\n\t\t\t}\n\n\t\t\treturn a * 0.5;\n\t\t}\n\n\t\tstatic isClockWise(pts) {\n\t\t\treturn ShapeUtils.area(pts) < 0;\n\t\t}\n\n\t\tstatic triangulateShape(contour, holes) {\n\t\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\n\t\t\tconst holeIndices = []; // array of hole indices\n\n\t\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\t\tremoveDupEndPts(contour);\n\t\t\taddContour(vertices, contour); //\n\n\t\t\tlet holeIndex = contour.length;\n\t\t\tholes.forEach(removeDupEndPts);\n\n\t\t\tfor (let i = 0; i < holes.length; i++) {\n\t\t\t\tholeIndices.push(holeIndex);\n\t\t\t\tholeIndex += holes[i].length;\n\t\t\t\taddContour(vertices, holes[i]);\n\t\t\t} //\n\n\n\t\t\tconst triangles = Earcut.triangulate(vertices, holeIndices); //\n\n\t\t\tfor (let i = 0; i < triangles.length; i += 3) {\n\t\t\t\tfaces.push(triangles.slice(i, i + 3));\n\t\t\t}\n\n\t\t\treturn faces;\n\t\t}\n\n\t}\n\n\tfunction removeDupEndPts(points) {\n\t\tconst l = points.length;\n\n\t\tif (l > 2 && points[l - 1].equals(points[0])) {\n\t\t\tpoints.pop();\n\t\t}\n\t}\n\n\tfunction addContour(vertices, contour) {\n\t\tfor (let i = 0; i < contour.length; i++) {\n\t\t\tvertices.push(contour[i].x);\n\t\t\tvertices.push(contour[i].y);\n\t\t}\n\t}\n\n\t/**\n\t * Creates extruded geometry from a path shape.\n\t *\n\t * parameters = {\n\t *\n\t *\tcurveSegments: , // number of points on the curves\n\t *\tsteps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n\t *\tdepth: , // Depth to extrude the shape\n\t *\n\t *\tbevelEnabled: , // turn on bevel\n\t *\tbevelThickness: , // how deep into the original shape bevel goes\n\t *\tbevelSize: , // how far from shape outline (including bevelOffset) is bevel\n\t *\tbevelOffset: , // how far from shape outline does bevel start\n\t *\tbevelSegments: , // number of bevel layers\n\t *\n\t *\textrudePath: // curve to extrude shape along\n\t *\n\t *\tUVGenerator: // object that provides UV generator functions\n\t *\n\t * }\n\t */\n\n\tclass ExtrudeGeometry extends BufferGeometry {\n\t\tconstructor(shapes, options) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ExtrudeGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tshapes: shapes,\n\t\t\t\toptions: options\n\t\t\t};\n\t\t\tshapes = Array.isArray(shapes) ? shapes : [shapes];\n\t\t\tconst scope = this;\n\t\t\tconst verticesArray = [];\n\t\t\tconst uvArray = [];\n\n\t\t\tfor (let i = 0, l = shapes.length; i < l; i++) {\n\t\t\t\tconst shape = shapes[i];\n\t\t\t\taddShape(shape);\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(verticesArray, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvArray, 2));\n\t\t\tthis.computeVertexNormals(); // functions\n\n\t\t\tfunction addShape(shape) {\n\t\t\t\tconst placeholder = []; // options\n\n\t\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\t\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\t\t\t\tconst extrudePath = options.extrudePath;\n\t\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; // deprecated options\n\n\t\t\t\tif (options.amount !== undefined) {\n\t\t\t\t\tconsole.warn('THREE.ExtrudeBufferGeometry: amount has been renamed to depth.');\n\t\t\t\t\tdepth = options.amount;\n\t\t\t\t} //\n\n\n\t\t\t\tlet extrudePts,\n\t\t\t\t\t\textrudeByPath = false;\n\t\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\t\tif (extrudePath) {\n\t\t\t\t\textrudePts = extrudePath.getSpacedPoints(steps);\n\t\t\t\t\textrudeByPath = true;\n\t\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\t\t\t\t\t// SETUP TNB variables\n\t\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\t\tsplineTube = extrudePath.computeFrenetFrames(steps, false); // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\t\tbinormal = new Vector3();\n\t\t\t\t\tnormal = new Vector3();\n\t\t\t\t\tposition2 = new Vector3();\n\t\t\t\t} // Safeguards if bevels are not enabled\n\n\n\t\t\t\tif (!bevelEnabled) {\n\t\t\t\t\tbevelSegments = 0;\n\t\t\t\t\tbevelThickness = 0;\n\t\t\t\t\tbevelSize = 0;\n\t\t\t\t\tbevelOffset = 0;\n\t\t\t\t} // Variables initialization\n\n\n\t\t\t\tconst shapePoints = shape.extractPoints(curveSegments);\n\t\t\t\tlet vertices = shapePoints.shape;\n\t\t\t\tconst holes = shapePoints.holes;\n\t\t\t\tconst reverse = !ShapeUtils.isClockWise(vertices);\n\n\t\t\t\tif (reverse) {\n\t\t\t\t\tvertices = vertices.reverse(); // Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\t\tconst ahole = holes[h];\n\n\t\t\t\t\t\tif (ShapeUtils.isClockWise(ahole)) {\n\t\t\t\t\t\t\tholes[h] = ahole.reverse();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst faces = ShapeUtils.triangulateShape(vertices, holes);\n\t\t\t\t/* Vertices */\n\n\t\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\tconst ahole = holes[h];\n\t\t\t\t\tvertices = vertices.concat(ahole);\n\t\t\t\t}\n\n\t\t\t\tfunction scalePt2(pt, vec, size) {\n\t\t\t\t\tif (!vec) console.error('THREE.ExtrudeGeometry: vec does not exist');\n\t\t\t\t\treturn vec.clone().multiplyScalar(size).add(pt);\n\t\t\t\t}\n\n\t\t\t\tconst vlen = vertices.length,\n\t\t\t\t\t\t\tflen = faces.length; // Find directions for point movement\n\n\t\t\t\tfunction getBevelVec(inPt, inPrev, inNext) {\n\t\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t\t//\t shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t\t//\n\t\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t\t//\tadjacent edges of inPt at a distance of 1 unit on the left side.\n\t\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\t\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\t\t\t\t\tconst v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y; // check for collinear edges\n\n\t\t\t\t\tconst collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n\n\t\t\t\t\tif (Math.abs(collinear0) > Number.EPSILON) {\n\t\t\t\t\t\t// not collinear\n\t\t\t\t\t\t// length of vectors for normalizing\n\t\t\t\t\t\tconst v_prev_len = Math.sqrt(v_prev_lensq);\n\t\t\t\t\t\tconst v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y); // shift adjacent points by unit vectors to the left\n\n\t\t\t\t\t\tconst ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n\t\t\t\t\t\tconst ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n\t\t\t\t\t\tconst ptNextShift_x = inNext.x - v_next_y / v_next_len;\n\t\t\t\t\t\tconst ptNextShift_y = inNext.y + v_next_x / v_next_len; // scaling factor for v_prev to intersection point\n\n\t\t\t\t\t\tconst sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x); // vector from inPt to intersection point\n\n\t\t\t\t\t\tv_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n\t\t\t\t\t\tv_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y; // Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t\t//\tbut prevent crazy spikes\n\n\t\t\t\t\t\tconst v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n\n\t\t\t\t\t\tif (v_trans_lensq <= 2) {\n\t\t\t\t\t\t\treturn new Vector2(v_trans_x, v_trans_y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tshrink_by = Math.sqrt(v_trans_lensq / 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// handle special case of collinear edges\n\t\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\t\tif (v_prev_x > Number.EPSILON) {\n\t\t\t\t\t\t\tif (v_next_x > Number.EPSILON) {\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (v_prev_x < -Number.EPSILON) {\n\t\t\t\t\t\t\t\tif (v_next_x < -Number.EPSILON) {\n\t\t\t\t\t\t\t\t\tdirection_eq = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n\t\t\t\t\t\t\t\t\tdirection_eq = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (direction_eq) {\n\t\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\t\tv_trans_x = -v_prev_y;\n\t\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\t\tshrink_by = Math.sqrt(v_prev_lensq);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\t\tshrink_by = Math.sqrt(v_prev_lensq / 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n\t\t\t\t}\n\n\t\t\t\tconst contourMovements = [];\n\n\t\t\t\tfor (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n\t\t\t\t\tif (j === il) j = 0;\n\t\t\t\t\tif (k === il) k = 0; //\t(j)---(i)---(k)\n\t\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\t\tcontourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n\t\t\t\t}\n\n\t\t\t\tconst holesMovements = [];\n\t\t\t\tlet oneHoleMovements,\n\t\t\t\t\t\tverticesMovements = contourMovements.concat();\n\n\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\tconst ahole = holes[h];\n\t\t\t\t\toneHoleMovements = [];\n\n\t\t\t\t\tfor (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n\t\t\t\t\t\tif (j === il) j = 0;\n\t\t\t\t\t\tif (k === il) k = 0; //\t(j)---(i)---(k)\n\n\t\t\t\t\t\toneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n\t\t\t\t\t}\n\n\t\t\t\t\tholesMovements.push(oneHoleMovements);\n\t\t\t\t\tverticesMovements = verticesMovements.concat(oneHoleMovements);\n\t\t\t\t} // Loop bevelSegments, 1 for the front, 1 for the back\n\n\n\t\t\t\tfor (let b = 0; b < bevelSegments; b++) {\n\t\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\t\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\t\tconst z = bevelThickness * Math.cos(t * Math.PI / 2);\n\t\t\t\t\tconst bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset; // contract shape\n\n\t\t\t\t\tfor (let i = 0, il = contour.length; i < il; i++) {\n\t\t\t\t\t\tconst vert = scalePt2(contour[i], contourMovements[i], bs);\n\t\t\t\t\t\tv(vert.x, vert.y, -z);\n\t\t\t\t\t} // expand holes\n\n\n\t\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\t\tconst ahole = holes[h];\n\t\t\t\t\t\toneHoleMovements = holesMovements[h];\n\n\t\t\t\t\t\tfor (let i = 0, il = ahole.length; i < il; i++) {\n\t\t\t\t\t\t\tconst vert = scalePt2(ahole[i], oneHoleMovements[i], bs);\n\t\t\t\t\t\t\tv(vert.x, vert.y, -z);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst bs = bevelSize + bevelOffset; // Back facing vertices\n\n\t\t\t\tfor (let i = 0; i < vlen; i++) {\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n\n\t\t\t\t\tif (!extrudeByPath) {\n\t\t\t\t\t\tv(vert.x, vert.y, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\t\t\t\t\t\tnormal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n\t\t\t\t\t\tbinormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n\t\t\t\t\t\tposition2.copy(extrudePts[0]).add(normal).add(binormal);\n\t\t\t\t\t\tv(position2.x, position2.y, position2.z);\n\t\t\t\t\t}\n\t\t\t\t} // Add stepped vertices...\n\t\t\t\t// Including front facing vertices\n\n\n\t\t\t\tfor (let s = 1; s <= steps; s++) {\n\t\t\t\t\tfor (let i = 0; i < vlen; i++) {\n\t\t\t\t\t\tconst vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n\n\t\t\t\t\t\tif (!extrudeByPath) {\n\t\t\t\t\t\t\tv(vert.x, vert.y, depth / steps * s);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\t\t\t\t\t\t\tnormal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n\t\t\t\t\t\t\tbinormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n\t\t\t\t\t\t\tposition2.copy(extrudePts[s]).add(normal).add(binormal);\n\t\t\t\t\t\t\tv(position2.x, position2.y, position2.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} // Add bevel segments planes\n\t\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\n\n\t\t\t\tfor (let b = bevelSegments - 1; b >= 0; b--) {\n\t\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\t\tconst z = bevelThickness * Math.cos(t * Math.PI / 2);\n\t\t\t\t\tconst bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset; // contract shape\n\n\t\t\t\t\tfor (let i = 0, il = contour.length; i < il; i++) {\n\t\t\t\t\t\tconst vert = scalePt2(contour[i], contourMovements[i], bs);\n\t\t\t\t\t\tv(vert.x, vert.y, depth + z);\n\t\t\t\t\t} // expand holes\n\n\n\t\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\t\tconst ahole = holes[h];\n\t\t\t\t\t\toneHoleMovements = holesMovements[h];\n\n\t\t\t\t\t\tfor (let i = 0, il = ahole.length; i < il; i++) {\n\t\t\t\t\t\t\tconst vert = scalePt2(ahole[i], oneHoleMovements[i], bs);\n\n\t\t\t\t\t\t\tif (!extrudeByPath) {\n\t\t\t\t\t\t\t\tv(vert.x, vert.y, depth + z);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/* Faces */\n\t\t\t\t// Top and bottom faces\n\n\n\t\t\t\tbuildLidFaces(); // Sides faces\n\n\t\t\t\tbuildSideFaces(); /////\tInternal functions\n\n\t\t\t\tfunction buildLidFaces() {\n\t\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\t\tif (bevelEnabled) {\n\t\t\t\t\t\tlet layer = 0; // steps + 1\n\n\t\t\t\t\t\tlet offset = vlen * layer; // Bottom faces\n\n\t\t\t\t\t\tfor (let i = 0; i < flen; i++) {\n\t\t\t\t\t\t\tconst face = faces[i];\n\t\t\t\t\t\t\tf3(face[2] + offset, face[1] + offset, face[0] + offset);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\t\toffset = vlen * layer; // Top faces\n\n\t\t\t\t\t\tfor (let i = 0; i < flen; i++) {\n\t\t\t\t\t\t\tconst face = faces[i];\n\t\t\t\t\t\t\tf3(face[0] + offset, face[1] + offset, face[2] + offset);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Bottom faces\n\t\t\t\t\t\tfor (let i = 0; i < flen; i++) {\n\t\t\t\t\t\t\tconst face = faces[i];\n\t\t\t\t\t\t\tf3(face[2], face[1], face[0]);\n\t\t\t\t\t\t} // Top faces\n\n\n\t\t\t\t\t\tfor (let i = 0; i < flen; i++) {\n\t\t\t\t\t\t\tconst face = faces[i];\n\t\t\t\t\t\t\tf3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.addGroup(start, verticesArray.length / 3 - start, 0);\n\t\t\t\t} // Create faces for the z-sides of the shape\n\n\n\t\t\t\tfunction buildSideFaces() {\n\t\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\t\tlet layeroffset = 0;\n\t\t\t\t\tsidewalls(contour, layeroffset);\n\t\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\t\tfor (let h = 0, hl = holes.length; h < hl; h++) {\n\t\t\t\t\t\tconst ahole = holes[h];\n\t\t\t\t\t\tsidewalls(ahole, layeroffset); //, true\n\n\t\t\t\t\t\tlayeroffset += ahole.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.addGroup(start, verticesArray.length / 3 - start, 1);\n\t\t\t\t}\n\n\t\t\t\tfunction sidewalls(contour, layeroffset) {\n\t\t\t\t\tlet i = contour.length;\n\n\t\t\t\t\twhile (--i >= 0) {\n\t\t\t\t\t\tconst j = i;\n\t\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\t\tif (k < 0) k = contour.length - 1; //console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\t\tfor (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n\t\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\t\tconst slen2 = vlen * (s + 1);\n\t\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\t\t\t\t\t\t\tf4(a, b, c, d);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction v(x, y, z) {\n\t\t\t\t\tplaceholder.push(x);\n\t\t\t\t\tplaceholder.push(y);\n\t\t\t\t\tplaceholder.push(z);\n\t\t\t\t}\n\n\t\t\t\tfunction f3(a, b, c) {\n\t\t\t\t\taddVertex(a);\n\t\t\t\t\taddVertex(b);\n\t\t\t\t\taddVertex(c);\n\t\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\t\tconst uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n\t\t\t\t\taddUV(uvs[0]);\n\t\t\t\t\taddUV(uvs[1]);\n\t\t\t\t\taddUV(uvs[2]);\n\t\t\t\t}\n\n\t\t\t\tfunction f4(a, b, c, d) {\n\t\t\t\t\taddVertex(a);\n\t\t\t\t\taddVertex(b);\n\t\t\t\t\taddVertex(d);\n\t\t\t\t\taddVertex(b);\n\t\t\t\t\taddVertex(c);\n\t\t\t\t\taddVertex(d);\n\t\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\t\tconst uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n\t\t\t\t\taddUV(uvs[0]);\n\t\t\t\t\taddUV(uvs[1]);\n\t\t\t\t\taddUV(uvs[3]);\n\t\t\t\t\taddUV(uvs[1]);\n\t\t\t\t\taddUV(uvs[2]);\n\t\t\t\t\taddUV(uvs[3]);\n\t\t\t\t}\n\n\t\t\t\tfunction addVertex(index) {\n\t\t\t\t\tverticesArray.push(placeholder[index * 3 + 0]);\n\t\t\t\t\tverticesArray.push(placeholder[index * 3 + 1]);\n\t\t\t\t\tverticesArray.push(placeholder[index * 3 + 2]);\n\t\t\t\t}\n\n\t\t\t\tfunction addUV(vector2) {\n\t\t\t\t\tuvArray.push(vector2.x);\n\t\t\t\t\tuvArray.push(vector2.y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tconst shapes = this.parameters.shapes;\n\t\t\tconst options = this.parameters.options;\n\t\t\treturn toJSON$1(shapes, options, data);\n\t\t}\n\n\t\tstatic fromJSON(data, shapes) {\n\t\t\tconst geometryShapes = [];\n\n\t\t\tfor (let j = 0, jl = data.shapes.length; j < jl; j++) {\n\t\t\t\tconst shape = shapes[data.shapes[j]];\n\t\t\t\tgeometryShapes.push(shape);\n\t\t\t}\n\n\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\tif (extrudePath !== undefined) {\n\t\t\t\tdata.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n\t\t\t}\n\n\t\t\treturn new ExtrudeGeometry(geometryShapes, data.options);\n\t\t}\n\n\t}\n\n\tconst WorldUVGenerator = {\n\t\tgenerateTopUV: function (geometry, vertices, indexA, indexB, indexC) {\n\t\t\tconst a_x = vertices[indexA * 3];\n\t\t\tconst a_y = vertices[indexA * 3 + 1];\n\t\t\tconst b_x = vertices[indexB * 3];\n\t\t\tconst b_y = vertices[indexB * 3 + 1];\n\t\t\tconst c_x = vertices[indexC * 3];\n\t\t\tconst c_y = vertices[indexC * 3 + 1];\n\t\t\treturn [new Vector2(a_x, a_y), new Vector2(b_x, b_y), new Vector2(c_x, c_y)];\n\t\t},\n\t\tgenerateSideWallUV: function (geometry, vertices, indexA, indexB, indexC, indexD) {\n\t\t\tconst a_x = vertices[indexA * 3];\n\t\t\tconst a_y = vertices[indexA * 3 + 1];\n\t\t\tconst a_z = vertices[indexA * 3 + 2];\n\t\t\tconst b_x = vertices[indexB * 3];\n\t\t\tconst b_y = vertices[indexB * 3 + 1];\n\t\t\tconst b_z = vertices[indexB * 3 + 2];\n\t\t\tconst c_x = vertices[indexC * 3];\n\t\t\tconst c_y = vertices[indexC * 3 + 1];\n\t\t\tconst c_z = vertices[indexC * 3 + 2];\n\t\t\tconst d_x = vertices[indexD * 3];\n\t\t\tconst d_y = vertices[indexD * 3 + 1];\n\t\t\tconst d_z = vertices[indexD * 3 + 2];\n\n\t\t\tif (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n\t\t\t\treturn [new Vector2(a_x, 1 - a_z), new Vector2(b_x, 1 - b_z), new Vector2(c_x, 1 - c_z), new Vector2(d_x, 1 - d_z)];\n\t\t\t} else {\n\t\t\t\treturn [new Vector2(a_y, 1 - a_z), new Vector2(b_y, 1 - b_z), new Vector2(c_y, 1 - c_z), new Vector2(d_y, 1 - d_z)];\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction toJSON$1(shapes, options, data) {\n\t\tdata.shapes = [];\n\n\t\tif (Array.isArray(shapes)) {\n\t\t\tfor (let i = 0, l = shapes.length; i < l; i++) {\n\t\t\t\tconst shape = shapes[i];\n\t\t\t\tdata.shapes.push(shape.uuid);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.shapes.push(shapes.uuid);\n\t\t}\n\n\t\tif (options.extrudePath !== undefined) data.options.extrudePath = options.extrudePath.toJSON();\n\t\treturn data;\n\t}\n\n\tclass IcosahedronGeometry extends PolyhedronGeometry {\n\t\tconstructor(radius = 1, detail = 0) {\n\t\t\tconst t = (1 + Math.sqrt(5)) / 2;\n\t\t\tconst vertices = [-1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, 0, 0, -1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, t, 0, -1, t, 0, 1, -t, 0, -1, -t, 0, 1];\n\t\t\tconst indices = [0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1];\n\t\t\tsuper(vertices, indices, radius, detail);\n\t\t\tthis.type = 'IcosahedronGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\tdetail: detail\n\t\t\t};\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new IcosahedronGeometry(data.radius, data.detail);\n\t\t}\n\n\t}\n\n\tclass LatheGeometry extends BufferGeometry {\n\t\tconstructor(points, segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'LatheGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tpoints: points,\n\t\t\t\tsegments: segments,\n\t\t\t\tphiStart: phiStart,\n\t\t\t\tphiLength: phiLength\n\t\t\t};\n\t\t\tsegments = Math.floor(segments); // clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\t\tphiLength = clamp(phiLength, 0, Math.PI * 2); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tconst inverseSegments = 1.0 / segments;\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst uv = new Vector2(); // generate vertices and uvs\n\n\t\t\tfor (let i = 0; i <= segments; i++) {\n\t\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\t\t\t\tconst sin = Math.sin(phi);\n\t\t\t\tconst cos = Math.cos(phi);\n\n\t\t\t\tfor (let j = 0; j <= points.length - 1; j++) {\n\t\t\t\t\t// vertex\n\t\t\t\t\tvertex.x = points[j].x * sin;\n\t\t\t\t\tvertex.y = points[j].y;\n\t\t\t\t\tvertex.z = points[j].x * cos;\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // uv\n\n\t\t\t\t\tuv.x = i / segments;\n\t\t\t\t\tuv.y = j / (points.length - 1);\n\t\t\t\t\tuvs.push(uv.x, uv.y);\n\t\t\t\t}\n\t\t\t} // indices\n\n\n\t\t\tfor (let i = 0; i < segments; i++) {\n\t\t\t\tfor (let j = 0; j < points.length - 1; j++) {\n\t\t\t\t\tconst base = j + i * points.length;\n\t\t\t\t\tconst a = base;\n\t\t\t\t\tconst b = base + points.length;\n\t\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\t\tconst d = base + 1; // faces\n\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // generate normals\n\n\t\t\tthis.computeVertexNormals(); // if the geometry is closed, we need to average the normals along the seam.\n\t\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\t\tif (phiLength === Math.PI * 2) {\n\t\t\t\tconst normals = this.attributes.normal.array;\n\t\t\t\tconst n1 = new Vector3();\n\t\t\t\tconst n2 = new Vector3();\n\t\t\t\tconst n = new Vector3(); // this is the buffer offset for the last line of vertices\n\n\t\t\t\tconst base = segments * points.length * 3;\n\n\t\t\t\tfor (let i = 0, j = 0; i < points.length; i++, j += 3) {\n\t\t\t\t\t// select the normal of the vertex in the first line\n\t\t\t\t\tn1.x = normals[j + 0];\n\t\t\t\t\tn1.y = normals[j + 1];\n\t\t\t\t\tn1.z = normals[j + 2]; // select the normal of the vertex in the last line\n\n\t\t\t\t\tn2.x = normals[base + j + 0];\n\t\t\t\t\tn2.y = normals[base + j + 1];\n\t\t\t\t\tn2.z = normals[base + j + 2]; // average normals\n\n\t\t\t\t\tn.addVectors(n1, n2).normalize(); // assign the new values to both normals\n\n\t\t\t\t\tnormals[j + 0] = normals[base + j + 0] = n.x;\n\t\t\t\t\tnormals[j + 1] = normals[base + j + 1] = n.y;\n\t\t\t\t\tnormals[j + 2] = normals[base + j + 2] = n.z;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n\t\t}\n\n\t}\n\n\tclass OctahedronGeometry extends PolyhedronGeometry {\n\t\tconstructor(radius = 1, detail = 0) {\n\t\t\tconst vertices = [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1];\n\t\t\tconst indices = [0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2];\n\t\t\tsuper(vertices, indices, radius, detail);\n\t\t\tthis.type = 'OctahedronGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\tdetail: detail\n\t\t\t};\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new OctahedronGeometry(data.radius, data.detail);\n\t\t}\n\n\t}\n\n\t/**\n\t * Parametric Surfaces Geometry\n\t * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n\t */\n\n\tclass ParametricGeometry extends BufferGeometry {\n\t\tconstructor(func, slices, stacks) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ParametricGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tfunc: func,\n\t\t\t\tslices: slices,\n\t\t\t\tstacks: stacks\n\t\t\t}; // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = [];\n\t\t\tconst EPS = 0.00001;\n\t\t\tconst normal = new Vector3();\n\t\t\tconst p0 = new Vector3(),\n\t\t\t\t\t\tp1 = new Vector3();\n\t\t\tconst pu = new Vector3(),\n\t\t\t\t\t\tpv = new Vector3();\n\n\t\t\tif (func.length < 3) {\n\t\t\t\tconsole.error('THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.');\n\t\t\t} // generate vertices, normals and uvs\n\n\n\t\t\tconst sliceCount = slices + 1;\n\n\t\t\tfor (let i = 0; i <= stacks; i++) {\n\t\t\t\tconst v = i / stacks;\n\n\t\t\t\tfor (let j = 0; j <= slices; j++) {\n\t\t\t\t\tconst u = j / slices; // vertex\n\n\t\t\t\t\tfunc(u, v, p0);\n\t\t\t\t\tvertices.push(p0.x, p0.y, p0.z); // normal\n\t\t\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\t\t\tif (u - EPS >= 0) {\n\t\t\t\t\t\tfunc(u - EPS, v, p1);\n\t\t\t\t\t\tpu.subVectors(p0, p1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfunc(u + EPS, v, p1);\n\t\t\t\t\t\tpu.subVectors(p1, p0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v - EPS >= 0) {\n\t\t\t\t\t\tfunc(u, v - EPS, p1);\n\t\t\t\t\t\tpv.subVectors(p0, p1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfunc(u, v + EPS, p1);\n\t\t\t\t\t\tpv.subVectors(p1, p0);\n\t\t\t\t\t} // cross product of tangent vectors returns surface normal\n\n\n\t\t\t\t\tnormal.crossVectors(pu, pv).normalize();\n\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // uv\n\n\t\t\t\t\tuvs.push(u, v);\n\t\t\t\t}\n\t\t\t} // generate indices\n\n\n\t\t\tfor (let i = 0; i < stacks; i++) {\n\t\t\t\tfor (let j = 0; j < slices; j++) {\n\t\t\t\t\tconst a = i * sliceCount + j;\n\t\t\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\t\t\tconst c = (i + 1) * sliceCount + j + 1;\n\t\t\t\t\tconst d = (i + 1) * sliceCount + j; // faces one and two\n\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t}\n\n\tclass RingGeometry extends BufferGeometry {\n\t\tconstructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'RingGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tthetaSegments: thetaSegments,\n\t\t\t\tphiSegments: phiSegments,\n\t\t\t\tthetaStart: thetaStart,\n\t\t\t\tthetaLength: thetaLength\n\t\t\t};\n\t\t\tthetaSegments = Math.max(3, thetaSegments);\n\t\t\tphiSegments = Math.max(1, phiSegments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // some helper variables\n\n\t\t\tlet radius = innerRadius;\n\t\t\tconst radiusStep = (outerRadius - innerRadius) / phiSegments;\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst uv = new Vector2(); // generate vertices, normals and uvs\n\n\t\t\tfor (let j = 0; j <= phiSegments; j++) {\n\t\t\t\tfor (let i = 0; i <= thetaSegments; i++) {\n\t\t\t\t\t// values are generate from the inside of the ring to the outside\n\t\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength; // vertex\n\n\t\t\t\t\tvertex.x = radius * Math.cos(segment);\n\t\t\t\t\tvertex.y = radius * Math.sin(segment);\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\t\tnormals.push(0, 0, 1); // uv\n\n\t\t\t\t\tuv.x = (vertex.x / outerRadius + 1) / 2;\n\t\t\t\t\tuv.y = (vertex.y / outerRadius + 1) / 2;\n\t\t\t\t\tuvs.push(uv.x, uv.y);\n\t\t\t\t} // increase the radius for next row of vertices\n\n\n\t\t\t\tradius += radiusStep;\n\t\t\t} // indices\n\n\n\t\t\tfor (let j = 0; j < phiSegments; j++) {\n\t\t\t\tconst thetaSegmentLevel = j * (thetaSegments + 1);\n\n\t\t\t\tfor (let i = 0; i < thetaSegments; i++) {\n\t\t\t\t\tconst segment = i + thetaSegmentLevel;\n\t\t\t\t\tconst a = segment;\n\t\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\t\tconst d = segment + 1; // faces\n\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n\t\t}\n\n\t}\n\n\tclass ShapeGeometry extends BufferGeometry {\n\t\tconstructor(shapes, curveSegments = 12) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ShapeGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tshapes: shapes,\n\t\t\t\tcurveSegments: curveSegments\n\t\t\t}; // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tlet groupStart = 0;\n\t\t\tlet groupCount = 0; // allow single and array values for \"shapes\" parameter\n\n\t\t\tif (Array.isArray(shapes) === false) {\n\t\t\t\taddShape(shapes);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < shapes.length; i++) {\n\t\t\t\t\taddShape(shapes[i]);\n\t\t\t\t\tthis.addGroup(groupStart, groupCount, i); // enables MultiMaterial support\n\n\t\t\t\t\tgroupStart += groupCount;\n\t\t\t\t\tgroupCount = 0;\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // helper functions\n\n\t\t\tfunction addShape(shape) {\n\t\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\t\tconst points = shape.extractPoints(curveSegments);\n\t\t\t\tlet shapeVertices = points.shape;\n\t\t\t\tconst shapeHoles = points.holes; // check direction of vertices\n\n\t\t\t\tif (ShapeUtils.isClockWise(shapeVertices) === false) {\n\t\t\t\t\tshapeVertices = shapeVertices.reverse();\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0, l = shapeHoles.length; i < l; i++) {\n\t\t\t\t\tconst shapeHole = shapeHoles[i];\n\n\t\t\t\t\tif (ShapeUtils.isClockWise(shapeHole) === true) {\n\t\t\t\t\t\tshapeHoles[i] = shapeHole.reverse();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles); // join vertices of inner and outer paths to a single array\n\n\t\t\t\tfor (let i = 0, l = shapeHoles.length; i < l; i++) {\n\t\t\t\t\tconst shapeHole = shapeHoles[i];\n\t\t\t\t\tshapeVertices = shapeVertices.concat(shapeHole);\n\t\t\t\t} // vertices, normals, uvs\n\n\n\t\t\t\tfor (let i = 0, l = shapeVertices.length; i < l; i++) {\n\t\t\t\t\tconst vertex = shapeVertices[i];\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, 0);\n\t\t\t\t\tnormals.push(0, 0, 1);\n\t\t\t\t\tuvs.push(vertex.x, vertex.y); // world uvs\n\t\t\t\t} // incides\n\n\n\t\t\t\tfor (let i = 0, l = faces.length; i < l; i++) {\n\t\t\t\t\tconst face = faces[i];\n\t\t\t\t\tconst a = face[0] + indexOffset;\n\t\t\t\t\tconst b = face[1] + indexOffset;\n\t\t\t\t\tconst c = face[2] + indexOffset;\n\t\t\t\t\tindices.push(a, b, c);\n\t\t\t\t\tgroupCount += 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tconst shapes = this.parameters.shapes;\n\t\t\treturn toJSON(shapes, data);\n\t\t}\n\n\t\tstatic fromJSON(data, shapes) {\n\t\t\tconst geometryShapes = [];\n\n\t\t\tfor (let j = 0, jl = data.shapes.length; j < jl; j++) {\n\t\t\t\tconst shape = shapes[data.shapes[j]];\n\t\t\t\tgeometryShapes.push(shape);\n\t\t\t}\n\n\t\t\treturn new ShapeGeometry(geometryShapes, data.curveSegments);\n\t\t}\n\n\t}\n\n\tfunction toJSON(shapes, data) {\n\t\tdata.shapes = [];\n\n\t\tif (Array.isArray(shapes)) {\n\t\t\tfor (let i = 0, l = shapes.length; i < l; i++) {\n\t\t\t\tconst shape = shapes[i];\n\t\t\t\tdata.shapes.push(shape.uuid);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.shapes.push(shapes.uuid);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tclass SphereGeometry extends BufferGeometry {\n\t\tconstructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n\t\t\tsuper();\n\t\t\tthis.type = 'SphereGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\twidthSegments: widthSegments,\n\t\t\t\theightSegments: heightSegments,\n\t\t\t\tphiStart: phiStart,\n\t\t\t\tphiLength: phiLength,\n\t\t\t\tthetaStart: thetaStart,\n\t\t\t\tthetaLength: thetaLength\n\t\t\t};\n\t\t\twidthSegments = Math.max(3, Math.floor(widthSegments));\n\t\t\theightSegments = Math.max(2, Math.floor(heightSegments));\n\t\t\tconst thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n\t\t\tlet index = 0;\n\t\t\tconst grid = [];\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst normal = new Vector3(); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // generate vertices, normals and uvs\n\n\t\t\tfor (let iy = 0; iy <= heightSegments; iy++) {\n\t\t\t\tconst verticesRow = [];\n\t\t\t\tconst v = iy / heightSegments; // special case for the poles\n\n\t\t\t\tlet uOffset = 0;\n\n\t\t\t\tif (iy == 0 && thetaStart == 0) {\n\t\t\t\t\tuOffset = 0.5 / widthSegments;\n\t\t\t\t} else if (iy == heightSegments && thetaEnd == Math.PI) {\n\t\t\t\t\tuOffset = -0.5 / widthSegments;\n\t\t\t\t}\n\n\t\t\t\tfor (let ix = 0; ix <= widthSegments; ix++) {\n\t\t\t\t\tconst u = ix / widthSegments; // vertex\n\n\t\t\t\t\tvertex.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n\t\t\t\t\tvertex.y = radius * Math.cos(thetaStart + v * thetaLength);\n\t\t\t\t\tvertex.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\t\tnormal.copy(vertex).normalize();\n\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // uv\n\n\t\t\t\t\tuvs.push(u + uOffset, 1 - v);\n\t\t\t\t\tverticesRow.push(index++);\n\t\t\t\t}\n\n\t\t\t\tgrid.push(verticesRow);\n\t\t\t} // indices\n\n\n\t\t\tfor (let iy = 0; iy < heightSegments; iy++) {\n\t\t\t\tfor (let ix = 0; ix < widthSegments; ix++) {\n\t\t\t\t\tconst a = grid[iy][ix + 1];\n\t\t\t\t\tconst b = grid[iy][ix];\n\t\t\t\t\tconst c = grid[iy + 1][ix];\n\t\t\t\t\tconst d = grid[iy + 1][ix + 1];\n\t\t\t\t\tif (iy !== 0 || thetaStart > 0) indices.push(a, b, d);\n\t\t\t\t\tif (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n\t\t}\n\n\t}\n\n\tclass TetrahedronGeometry extends PolyhedronGeometry {\n\t\tconstructor(radius = 1, detail = 0) {\n\t\t\tconst vertices = [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1];\n\t\t\tconst indices = [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1];\n\t\t\tsuper(vertices, indices, radius, detail);\n\t\t\tthis.type = 'TetrahedronGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\tdetail: detail\n\t\t\t};\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new TetrahedronGeometry(data.radius, data.detail);\n\t\t}\n\n\t}\n\n\t/**\n\t * Text = 3D Text\n\t *\n\t * parameters = {\n\t *\tfont: , // font\n\t *\n\t *\tsize: , // size of the text\n\t *\theight: , // thickness to extrude text\n\t *\tcurveSegments: , // number of points on the curves\n\t *\n\t *\tbevelEnabled: , // turn on bevel\n\t *\tbevelThickness: , // how deep into text bevel goes\n\t *\tbevelSize: , // how far from text outline (including bevelOffset) is bevel\n\t *\tbevelOffset: // how far from text outline does bevel start\n\t * }\n\t */\n\n\tclass TextGeometry extends ExtrudeGeometry {\n\t\tconstructor(text, parameters = {}) {\n\t\t\tconst font = parameters.font;\n\n\t\t\tif (!(font && font.isFont)) {\n\t\t\t\tconsole.error('THREE.TextGeometry: font parameter is not an instance of THREE.Font.');\n\t\t\t\treturn new BufferGeometry();\n\t\t\t}\n\n\t\t\tconst shapes = font.generateShapes(text, parameters.size); // translate parameters to ExtrudeGeometry API\n\n\t\t\tparameters.depth = parameters.height !== undefined ? parameters.height : 50; // defaults\n\n\t\t\tif (parameters.bevelThickness === undefined) parameters.bevelThickness = 10;\n\t\t\tif (parameters.bevelSize === undefined) parameters.bevelSize = 8;\n\t\t\tif (parameters.bevelEnabled === undefined) parameters.bevelEnabled = false;\n\t\t\tsuper(shapes, parameters);\n\t\t\tthis.type = 'TextGeometry';\n\t\t}\n\n\t}\n\n\tclass TorusGeometry extends BufferGeometry {\n\t\tconstructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'TorusGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\ttube: tube,\n\t\t\t\tradialSegments: radialSegments,\n\t\t\t\ttubularSegments: tubularSegments,\n\t\t\t\tarc: arc\n\t\t\t};\n\t\t\tradialSegments = Math.floor(radialSegments);\n\t\t\ttubularSegments = Math.floor(tubularSegments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tconst center = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst normal = new Vector3(); // generate vertices, normals and uvs\n\n\t\t\tfor (let j = 0; j <= radialSegments; j++) {\n\t\t\t\tfor (let i = 0; i <= tubularSegments; i++) {\n\t\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\t\tconst v = j / radialSegments * Math.PI * 2; // vertex\n\n\t\t\t\t\tvertex.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n\t\t\t\t\tvertex.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n\t\t\t\t\tvertex.z = tube * Math.sin(v);\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal\n\n\t\t\t\t\tcenter.x = radius * Math.cos(u);\n\t\t\t\t\tcenter.y = radius * Math.sin(u);\n\t\t\t\t\tnormal.subVectors(vertex, center).normalize();\n\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // uv\n\n\t\t\t\t\tuvs.push(i / tubularSegments);\n\t\t\t\t\tuvs.push(j / radialSegments);\n\t\t\t\t}\n\t\t\t} // generate indices\n\n\n\t\t\tfor (let j = 1; j <= radialSegments; j++) {\n\t\t\t\tfor (let i = 1; i <= tubularSegments; i++) {\n\t\t\t\t\t// indices\n\t\t\t\t\tconst a = (tubularSegments + 1) * j + i - 1;\n\t\t\t\t\tconst b = (tubularSegments + 1) * (j - 1) + i - 1;\n\t\t\t\t\tconst c = (tubularSegments + 1) * (j - 1) + i;\n\t\t\t\t\tconst d = (tubularSegments + 1) * j + i; // faces\n\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n\t\t}\n\n\t}\n\n\tclass TorusKnotGeometry extends BufferGeometry {\n\t\tconstructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {\n\t\t\tsuper();\n\t\t\tthis.type = 'TorusKnotGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tradius: radius,\n\t\t\t\ttube: tube,\n\t\t\t\ttubularSegments: tubularSegments,\n\t\t\t\tradialSegments: radialSegments,\n\t\t\t\tp: p,\n\t\t\t\tq: q\n\t\t\t};\n\t\t\ttubularSegments = Math.floor(tubularSegments);\n\t\t\tradialSegments = Math.floor(radialSegments); // buffers\n\n\t\t\tconst indices = [];\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = []; // helper variables\n\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst normal = new Vector3();\n\t\t\tconst P1 = new Vector3();\n\t\t\tconst P2 = new Vector3();\n\t\t\tconst B = new Vector3();\n\t\t\tconst T = new Vector3();\n\t\t\tconst N = new Vector3(); // generate vertices, normals and uvs\n\n\t\t\tfor (let i = 0; i <= tubularSegments; ++i) {\n\t\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\t\t\t\tconst u = i / tubularSegments * p * Math.PI * 2; // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\t\tcalculatePositionOnCurve(u, p, q, radius, P1);\n\t\t\t\tcalculatePositionOnCurve(u + 0.01, p, q, radius, P2); // calculate orthonormal basis\n\n\t\t\t\tT.subVectors(P2, P1);\n\t\t\t\tN.addVectors(P2, P1);\n\t\t\t\tB.crossVectors(T, N);\n\t\t\t\tN.crossVectors(B, T); // normalize B, N. T can be ignored, we don't use it\n\n\t\t\t\tB.normalize();\n\t\t\t\tN.normalize();\n\n\t\t\t\tfor (let j = 0; j <= radialSegments; ++j) {\n\t\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\t\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\t\tconst cx = -tube * Math.cos(v);\n\t\t\t\t\tconst cy = tube * Math.sin(v); // now calculate the final vertex position.\n\t\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\t\tvertex.x = P1.x + (cx * N.x + cy * B.x);\n\t\t\t\t\tvertex.y = P1.y + (cx * N.y + cy * B.y);\n\t\t\t\t\tvertex.z = P1.z + (cx * N.z + cy * B.z);\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z); // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\t\tnormal.subVectors(vertex, P1).normalize();\n\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // uv\n\n\t\t\t\t\tuvs.push(i / tubularSegments);\n\t\t\t\t\tuvs.push(j / radialSegments);\n\t\t\t\t}\n\t\t\t} // generate indices\n\n\n\t\t\tfor (let j = 1; j <= tubularSegments; j++) {\n\t\t\t\tfor (let i = 1; i <= radialSegments; i++) {\n\t\t\t\t\t// indices\n\t\t\t\t\tconst a = (radialSegments + 1) * (j - 1) + (i - 1);\n\t\t\t\t\tconst b = (radialSegments + 1) * j + (i - 1);\n\t\t\t\t\tconst c = (radialSegments + 1) * j + i;\n\t\t\t\t\tconst d = (radialSegments + 1) * (j - 1) + i; // faces\n\n\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // this function calculates the current position on the torus curve\n\n\t\t\tfunction calculatePositionOnCurve(u, p, q, radius, position) {\n\t\t\t\tconst cu = Math.cos(u);\n\t\t\t\tconst su = Math.sin(u);\n\t\t\t\tconst quOverP = q / p * u;\n\t\t\t\tconst cs = Math.cos(quOverP);\n\t\t\t\tposition.x = radius * (2 + cs) * 0.5 * cu;\n\t\t\t\tposition.y = radius * (2 + cs) * su * 0.5;\n\t\t\t\tposition.z = radius * Math.sin(quOverP) * 0.5;\n\t\t\t}\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\treturn new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n\t\t}\n\n\t}\n\n\tclass TubeGeometry extends BufferGeometry {\n\t\tconstructor(path, tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n\t\t\tsuper();\n\t\t\tthis.type = 'TubeGeometry';\n\t\t\tthis.parameters = {\n\t\t\t\tpath: path,\n\t\t\t\ttubularSegments: tubularSegments,\n\t\t\t\tradius: radius,\n\t\t\t\tradialSegments: radialSegments,\n\t\t\t\tclosed: closed\n\t\t\t};\n\t\t\tconst frames = path.computeFrenetFrames(tubularSegments, closed); // expose internals\n\n\t\t\tthis.tangents = frames.tangents;\n\t\t\tthis.normals = frames.normals;\n\t\t\tthis.binormals = frames.binormals; // helper variables\n\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst normal = new Vector3();\n\t\t\tconst uv = new Vector2();\n\t\t\tlet P = new Vector3(); // buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst uvs = [];\n\t\t\tconst indices = []; // create buffer data\n\n\t\t\tgenerateBufferData(); // build geometry\n\n\t\t\tthis.setIndex(indices);\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tthis.setAttribute('normal', new Float32BufferAttribute(normals, 3));\n\t\t\tthis.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // functions\n\n\t\t\tfunction generateBufferData() {\n\t\t\t\tfor (let i = 0; i < tubularSegments; i++) {\n\t\t\t\t\tgenerateSegment(i);\n\t\t\t\t} // if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t\t// at the regular position on the given path\n\t\t\t\t//\n\t\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\n\t\t\t\tgenerateSegment(closed === false ? tubularSegments : 0); // uvs are generated in a separate function.\n\t\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\t\tgenerateUVs(); // finally create faces\n\n\t\t\t\tgenerateIndices();\n\t\t\t}\n\n\t\t\tfunction generateSegment(i) {\n\t\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\t\t\t\tP = path.getPointAt(i / tubularSegments, P); // retrieve corresponding normal and binormal\n\n\t\t\t\tconst N = frames.normals[i];\n\t\t\t\tconst B = frames.binormals[i]; // generate normals and vertices for the current segment\n\n\t\t\t\tfor (let j = 0; j <= radialSegments; j++) {\n\t\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\t\tconst sin = Math.sin(v);\n\t\t\t\t\tconst cos = -Math.cos(v); // normal\n\n\t\t\t\t\tnormal.x = cos * N.x + sin * B.x;\n\t\t\t\t\tnormal.y = cos * N.y + sin * B.y;\n\t\t\t\t\tnormal.z = cos * N.z + sin * B.z;\n\t\t\t\t\tnormal.normalize();\n\t\t\t\t\tnormals.push(normal.x, normal.y, normal.z); // vertex\n\n\t\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\t\tvertex.z = P.z + radius * normal.z;\n\t\t\t\t\tvertices.push(vertex.x, vertex.y, vertex.z);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction generateIndices() {\n\t\t\t\tfor (let j = 1; j <= tubularSegments; j++) {\n\t\t\t\t\tfor (let i = 1; i <= radialSegments; i++) {\n\t\t\t\t\t\tconst a = (radialSegments + 1) * (j - 1) + (i - 1);\n\t\t\t\t\t\tconst b = (radialSegments + 1) * j + (i - 1);\n\t\t\t\t\t\tconst c = (radialSegments + 1) * j + i;\n\t\t\t\t\t\tconst d = (radialSegments + 1) * (j - 1) + i; // faces\n\n\t\t\t\t\t\tindices.push(a, b, d);\n\t\t\t\t\t\tindices.push(b, c, d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction generateUVs() {\n\t\t\t\tfor (let i = 0; i <= tubularSegments; i++) {\n\t\t\t\t\tfor (let j = 0; j <= radialSegments; j++) {\n\t\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\t\tuv.y = j / radialSegments;\n\t\t\t\t\t\tuvs.push(uv.x, uv.y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.path = this.parameters.path.toJSON();\n\t\t\treturn data;\n\t\t}\n\n\t\tstatic fromJSON(data) {\n\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\treturn new TubeGeometry(new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed);\n\t\t}\n\n\t}\n\n\tclass WireframeGeometry extends BufferGeometry {\n\t\tconstructor(geometry) {\n\t\t\tsuper();\n\t\t\tthis.type = 'WireframeGeometry';\n\n\t\t\tif (geometry.isGeometry === true) {\n\t\t\t\tconsole.error('THREE.WireframeGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n\t\t\t\treturn;\n\t\t\t} // buffer\n\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set(); // helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif (geometry.index !== null) {\n\t\t\t\t// indexed BufferGeometry\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif (groups.length === 0) {\n\t\t\t\t\tgroups = [{\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tcount: indices.count,\n\t\t\t\t\t\tmaterialIndex: 0\n\t\t\t\t\t}];\n\t\t\t\t} // create a data structure that contains all eges without duplicates\n\n\n\t\t\t\tfor (let o = 0, ol = groups.length; o < ol; ++o) {\n\t\t\t\t\tconst group = groups[o];\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n\t\t\t\t\t\tfor (let j = 0; j < 3; j++) {\n\t\t\t\t\t\t\tconst index1 = indices.getX(i + j);\n\t\t\t\t\t\t\tconst index2 = indices.getX(i + (j + 1) % 3);\n\t\t\t\t\t\t\tstart.fromBufferAttribute(position, index1);\n\t\t\t\t\t\t\tend.fromBufferAttribute(position, index2);\n\n\t\t\t\t\t\t\tif (isUniqueEdge(start, end, edges) === true) {\n\t\t\t\t\t\t\t\tvertices.push(start.x, start.y, start.z);\n\t\t\t\t\t\t\t\tvertices.push(end.x, end.y, end.z);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// non-indexed BufferGeometry\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor (let i = 0, l = position.count / 3; i < l; i++) {\n\t\t\t\t\tfor (let j = 0; j < 3; j++) {\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + (j + 1) % 3;\n\t\t\t\t\t\tstart.fromBufferAttribute(position, index1);\n\t\t\t\t\t\tend.fromBufferAttribute(position, index2);\n\n\t\t\t\t\t\tif (isUniqueEdge(start, end, edges) === true) {\n\t\t\t\t\t\t\tvertices.push(start.x, start.y, start.z);\n\t\t\t\t\t\t\tvertices.push(end.x, end.y, end.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // build geometry\n\n\n\t\t\tthis.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t}\n\n\t}\n\n\tfunction isUniqueEdge(start, end, edges) {\n\t\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\t\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\t\tif (edges.has(hash1) === true || edges.has(hash2) === true) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tedges.add(hash1, hash2);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tvar Geometries = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tBoxGeometry: BoxGeometry,\n\t\tBoxBufferGeometry: BoxGeometry,\n\t\tCircleGeometry: CircleGeometry,\n\t\tCircleBufferGeometry: CircleGeometry,\n\t\tConeGeometry: ConeGeometry,\n\t\tConeBufferGeometry: ConeGeometry,\n\t\tCylinderGeometry: CylinderGeometry,\n\t\tCylinderBufferGeometry: CylinderGeometry,\n\t\tDodecahedronGeometry: DodecahedronGeometry,\n\t\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\t\tEdgesGeometry: EdgesGeometry,\n\t\tExtrudeGeometry: ExtrudeGeometry,\n\t\tExtrudeBufferGeometry: ExtrudeGeometry,\n\t\tIcosahedronGeometry: IcosahedronGeometry,\n\t\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\t\tLatheGeometry: LatheGeometry,\n\t\tLatheBufferGeometry: LatheGeometry,\n\t\tOctahedronGeometry: OctahedronGeometry,\n\t\tOctahedronBufferGeometry: OctahedronGeometry,\n\t\tParametricGeometry: ParametricGeometry,\n\t\tParametricBufferGeometry: ParametricGeometry,\n\t\tPlaneGeometry: PlaneGeometry,\n\t\tPlaneBufferGeometry: PlaneGeometry,\n\t\tPolyhedronGeometry: PolyhedronGeometry,\n\t\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\t\tRingGeometry: RingGeometry,\n\t\tRingBufferGeometry: RingGeometry,\n\t\tShapeGeometry: ShapeGeometry,\n\t\tShapeBufferGeometry: ShapeGeometry,\n\t\tSphereGeometry: SphereGeometry,\n\t\tSphereBufferGeometry: SphereGeometry,\n\t\tTetrahedronGeometry: TetrahedronGeometry,\n\t\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\t\tTextGeometry: TextGeometry,\n\t\tTextBufferGeometry: TextGeometry,\n\t\tTorusGeometry: TorusGeometry,\n\t\tTorusBufferGeometry: TorusGeometry,\n\t\tTorusKnotGeometry: TorusKnotGeometry,\n\t\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\t\tTubeGeometry: TubeGeometry,\n\t\tTubeBufferGeometry: TubeGeometry,\n\t\tWireframeGeometry: WireframeGeometry\n\t});\n\n\t/**\n\t * parameters = {\n\t *\tcolor: \n\t * }\n\t */\n\n\tclass ShadowMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ShadowMaterial';\n\t\t\tthis.color = new Color(0x000000);\n\t\t\tthis.transparent = true;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tShadowMaterial.prototype.isShadowMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\troughness: ,\n\t *\tmetalness: ,\n\t *\topacity: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\tlightMap: new THREE.Texture( ),\n\t *\tlightMapIntensity: \n\t *\n\t *\taoMap: new THREE.Texture( ),\n\t *\taoMapIntensity: \n\t *\n\t *\temissive: ,\n\t *\temissiveIntensity: \n\t *\temissiveMap: new THREE.Texture( ),\n\t *\n\t *\tbumpMap: new THREE.Texture( ),\n\t *\tbumpScale: ,\n\t *\n\t *\tnormalMap: new THREE.Texture( ),\n\t *\tnormalMapType: THREE.TangentSpaceNormalMap,\n\t *\tnormalScale: ,\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\troughnessMap: new THREE.Texture( ),\n\t *\n\t *\tmetalnessMap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tenvMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *\tenvMapIntensity: \n\t *\n\t *\trefractionRatio: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t *\n\t *\tflatShading: \n\t * }\n\t */\n\n\tclass MeshStandardMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.defines = {\n\t\t\t\t'STANDARD': ''\n\t\t\t};\n\t\t\tthis.type = 'MeshStandardMaterial';\n\t\t\tthis.color = new Color(0xffffff); // diffuse\n\n\t\t\tthis.roughness = 1.0;\n\t\t\tthis.metalness = 0.0;\n\t\t\tthis.map = null;\n\t\t\tthis.lightMap = null;\n\t\t\tthis.lightMapIntensity = 1.0;\n\t\t\tthis.aoMap = null;\n\t\t\tthis.aoMapIntensity = 1.0;\n\t\t\tthis.emissive = new Color(0x000000);\n\t\t\tthis.emissiveIntensity = 1.0;\n\t\t\tthis.emissiveMap = null;\n\t\t\tthis.bumpMap = null;\n\t\t\tthis.bumpScale = 1;\n\t\t\tthis.normalMap = null;\n\t\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\t\tthis.normalScale = new Vector2(1, 1);\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.roughnessMap = null;\n\t\t\tthis.metalnessMap = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.envMap = null;\n\t\t\tthis.envMapIntensity = 1.0;\n\t\t\tthis.refractionRatio = 0.98;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.wireframeLinecap = 'round';\n\t\t\tthis.wireframeLinejoin = 'round';\n\t\t\tthis.flatShading = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.defines = {\n\t\t\t\t'STANDARD': ''\n\t\t\t};\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.roughness = source.roughness;\n\t\t\tthis.metalness = source.metalness;\n\t\t\tthis.map = source.map;\n\t\t\tthis.lightMap = source.lightMap;\n\t\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\t\t\tthis.aoMap = source.aoMap;\n\t\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\t\t\tthis.emissive.copy(source.emissive);\n\t\t\tthis.emissiveMap = source.emissiveMap;\n\t\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\t\t\tthis.bumpMap = source.bumpMap;\n\t\t\tthis.bumpScale = source.bumpScale;\n\t\t\tthis.normalMap = source.normalMap;\n\t\t\tthis.normalMapType = source.normalMapType;\n\t\t\tthis.normalScale.copy(source.normalScale);\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.roughnessMap = source.roughnessMap;\n\t\t\tthis.metalnessMap = source.metalnessMap;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.envMap = source.envMap;\n\t\t\tthis.envMapIntensity = source.envMapIntensity;\n\t\t\tthis.refractionRatio = source.refractionRatio;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\t\t\tthis.flatShading = source.flatShading;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tclearcoat: ,\n\t *\tclearcoatMap: new THREE.Texture( ),\n\t *\tclearcoatRoughness: ,\n\t *\tclearcoatRoughnessMap: new THREE.Texture( ),\n\t *\tclearcoatNormalScale: ,\n\t *\tclearcoatNormalMap: new THREE.Texture( ),\n\t *\n\t *\tior: ,\n\t *\treflectivity: ,\n\t *\n\t *\tsheenTint: ,\n\t *\n\t *\ttransmission: ,\n\t *\ttransmissionMap: new THREE.Texture( ),\n\t *\n\t *\tthickness: ,\n\t *\tthicknessMap: new THREE.Texture( ),\n\t *\tattenuationDistance: ,\n\t *\tattenuationTint: ,\n\t *\n\t *\tspecularIntensity: ,\n\t *\tspecularIntensityhMap: new THREE.Texture( ),\n\t *\tspecularTint: ,\n\t *\tspecularTintMap: new THREE.Texture( )\n\t * }\n\t */\n\n\tclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.defines = {\n\t\t\t\t'STANDARD': '',\n\t\t\t\t'PHYSICAL': ''\n\t\t\t};\n\t\t\tthis.type = 'MeshPhysicalMaterial';\n\t\t\tthis.clearcoatMap = null;\n\t\t\tthis.clearcoatRoughness = 0.0;\n\t\t\tthis.clearcoatRoughnessMap = null;\n\t\t\tthis.clearcoatNormalScale = new Vector2(1, 1);\n\t\t\tthis.clearcoatNormalMap = null;\n\t\t\tthis.ior = 1.5;\n\t\t\tObject.defineProperty(this, 'reflectivity', {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n\t\t\t\t},\n\t\t\t\tset: function (reflectivity) {\n\t\t\t\t\tthis.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.sheenTint = new Color(0x000000);\n\t\t\tthis.transmission = 0.0;\n\t\t\tthis.transmissionMap = null;\n\t\t\tthis.thickness = 0.01;\n\t\t\tthis.thicknessMap = null;\n\t\t\tthis.attenuationDistance = 0.0;\n\t\t\tthis.attenuationTint = new Color(1, 1, 1);\n\t\t\tthis.specularIntensity = 1.0;\n\t\t\tthis.specularIntensityMap = null;\n\t\t\tthis.specularTint = new Color(1, 1, 1);\n\t\t\tthis.specularTintMap = null;\n\t\t\tthis._clearcoat = 0;\n\t\t\tthis._transmission = 0;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tget clearcoat() {\n\t\t\treturn this._clearcoat;\n\t\t}\n\n\t\tset clearcoat(value) {\n\t\t\tif (this._clearcoat > 0 !== value > 0) {\n\t\t\t\tthis.version++;\n\t\t\t}\n\n\t\t\tthis._clearcoat = value;\n\t\t}\n\n\t\tget transmission() {\n\t\t\treturn this._transmission;\n\t\t}\n\n\t\tset transmission(value) {\n\t\t\tif (this._transmission > 0 !== value > 0) {\n\t\t\t\tthis.version++;\n\t\t\t}\n\n\t\t\tthis._transmission = value;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.defines = {\n\t\t\t\t'STANDARD': '',\n\t\t\t\t'PHYSICAL': ''\n\t\t\t};\n\t\t\tthis.clearcoat = source.clearcoat;\n\t\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\t\tthis.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n\t\t\tthis.ior = source.ior;\n\t\t\tthis.sheenTint.copy(source.sheenTint);\n\t\t\tthis.transmission = source.transmission;\n\t\t\tthis.transmissionMap = source.transmissionMap;\n\t\t\tthis.thickness = source.thickness;\n\t\t\tthis.thicknessMap = source.thicknessMap;\n\t\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\t\tthis.attenuationTint.copy(source.attenuationTint);\n\t\t\tthis.specularIntensity = source.specularIntensity;\n\t\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\t\tthis.specularTint.copy(source.specularTint);\n\t\t\tthis.specularTintMap = source.specularTintMap;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\tspecular: ,\n\t *\tshininess: ,\n\t *\topacity: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\tlightMap: new THREE.Texture( ),\n\t *\tlightMapIntensity: \n\t *\n\t *\taoMap: new THREE.Texture( ),\n\t *\taoMapIntensity: \n\t *\n\t *\temissive: ,\n\t *\temissiveIntensity: \n\t *\temissiveMap: new THREE.Texture( ),\n\t *\n\t *\tbumpMap: new THREE.Texture( ),\n\t *\tbumpScale: ,\n\t *\n\t *\tnormalMap: new THREE.Texture( ),\n\t *\tnormalMapType: THREE.TangentSpaceNormalMap,\n\t *\tnormalScale: ,\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\tspecularMap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tenvMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *\tcombine: THREE.MultiplyOperation,\n\t *\treflectivity: ,\n\t *\trefractionRatio: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t *\n\t *\tflatShading: \n\t * }\n\t */\n\n\tclass MeshPhongMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshPhongMaterial';\n\t\t\tthis.color = new Color(0xffffff); // diffuse\n\n\t\t\tthis.specular = new Color(0x111111);\n\t\t\tthis.shininess = 30;\n\t\t\tthis.map = null;\n\t\t\tthis.lightMap = null;\n\t\t\tthis.lightMapIntensity = 1.0;\n\t\t\tthis.aoMap = null;\n\t\t\tthis.aoMapIntensity = 1.0;\n\t\t\tthis.emissive = new Color(0x000000);\n\t\t\tthis.emissiveIntensity = 1.0;\n\t\t\tthis.emissiveMap = null;\n\t\t\tthis.bumpMap = null;\n\t\t\tthis.bumpScale = 1;\n\t\t\tthis.normalMap = null;\n\t\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\t\tthis.normalScale = new Vector2(1, 1);\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.specularMap = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.envMap = null;\n\t\t\tthis.combine = MultiplyOperation;\n\t\t\tthis.reflectivity = 1;\n\t\t\tthis.refractionRatio = 0.98;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.wireframeLinecap = 'round';\n\t\t\tthis.wireframeLinejoin = 'round';\n\t\t\tthis.flatShading = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.specular.copy(source.specular);\n\t\t\tthis.shininess = source.shininess;\n\t\t\tthis.map = source.map;\n\t\t\tthis.lightMap = source.lightMap;\n\t\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\t\t\tthis.aoMap = source.aoMap;\n\t\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\t\t\tthis.emissive.copy(source.emissive);\n\t\t\tthis.emissiveMap = source.emissiveMap;\n\t\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\t\t\tthis.bumpMap = source.bumpMap;\n\t\t\tthis.bumpScale = source.bumpScale;\n\t\t\tthis.normalMap = source.normalMap;\n\t\t\tthis.normalMapType = source.normalMapType;\n\t\t\tthis.normalScale.copy(source.normalScale);\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.specularMap = source.specularMap;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.envMap = source.envMap;\n\t\t\tthis.combine = source.combine;\n\t\t\tthis.reflectivity = source.reflectivity;\n\t\t\tthis.refractionRatio = source.refractionRatio;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\t\t\tthis.flatShading = source.flatShading;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\tgradientMap: new THREE.Texture( ),\n\t *\n\t *\tlightMap: new THREE.Texture( ),\n\t *\tlightMapIntensity: \n\t *\n\t *\taoMap: new THREE.Texture( ),\n\t *\taoMapIntensity: \n\t *\n\t *\temissive: ,\n\t *\temissiveIntensity: \n\t *\temissiveMap: new THREE.Texture( ),\n\t *\n\t *\tbumpMap: new THREE.Texture( ),\n\t *\tbumpScale: ,\n\t *\n\t *\tnormalMap: new THREE.Texture( ),\n\t *\tnormalMapType: THREE.TangentSpaceNormalMap,\n\t *\tnormalScale: ,\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t *\n\t * }\n\t */\n\n\tclass MeshToonMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.defines = {\n\t\t\t\t'TOON': ''\n\t\t\t};\n\t\t\tthis.type = 'MeshToonMaterial';\n\t\t\tthis.color = new Color(0xffffff);\n\t\t\tthis.map = null;\n\t\t\tthis.gradientMap = null;\n\t\t\tthis.lightMap = null;\n\t\t\tthis.lightMapIntensity = 1.0;\n\t\t\tthis.aoMap = null;\n\t\t\tthis.aoMapIntensity = 1.0;\n\t\t\tthis.emissive = new Color(0x000000);\n\t\t\tthis.emissiveIntensity = 1.0;\n\t\t\tthis.emissiveMap = null;\n\t\t\tthis.bumpMap = null;\n\t\t\tthis.bumpScale = 1;\n\t\t\tthis.normalMap = null;\n\t\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\t\tthis.normalScale = new Vector2(1, 1);\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.wireframeLinecap = 'round';\n\t\t\tthis.wireframeLinejoin = 'round';\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.map = source.map;\n\t\t\tthis.gradientMap = source.gradientMap;\n\t\t\tthis.lightMap = source.lightMap;\n\t\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\t\t\tthis.aoMap = source.aoMap;\n\t\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\t\t\tthis.emissive.copy(source.emissive);\n\t\t\tthis.emissiveMap = source.emissiveMap;\n\t\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\t\t\tthis.bumpMap = source.bumpMap;\n\t\t\tthis.bumpScale = source.bumpScale;\n\t\t\tthis.normalMap = source.normalMap;\n\t\t\tthis.normalMapType = source.normalMapType;\n\t\t\tthis.normalScale.copy(source.normalScale);\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\topacity: ,\n\t *\n\t *\tbumpMap: new THREE.Texture( ),\n\t *\tbumpScale: ,\n\t *\n\t *\tnormalMap: new THREE.Texture( ),\n\t *\tnormalMapType: THREE.TangentSpaceNormalMap,\n\t *\tnormalScale: ,\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: \n\t *\n\t *\tflatShading: \n\t * }\n\t */\n\n\tclass MeshNormalMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshNormalMaterial';\n\t\t\tthis.bumpMap = null;\n\t\t\tthis.bumpScale = 1;\n\t\t\tthis.normalMap = null;\n\t\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\t\tthis.normalScale = new Vector2(1, 1);\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.fog = false;\n\t\t\tthis.flatShading = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.bumpMap = source.bumpMap;\n\t\t\tthis.bumpScale = source.bumpScale;\n\t\t\tthis.normalMap = source.normalMap;\n\t\t\tthis.normalMapType = source.normalMapType;\n\t\t\tthis.normalScale.copy(source.normalScale);\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.flatShading = source.flatShading;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\tlightMap: new THREE.Texture( ),\n\t *\tlightMapIntensity: \n\t *\n\t *\taoMap: new THREE.Texture( ),\n\t *\taoMapIntensity: \n\t *\n\t *\temissive: ,\n\t *\temissiveIntensity: \n\t *\temissiveMap: new THREE.Texture( ),\n\t *\n\t *\tspecularMap: new THREE.Texture( ),\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tenvMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *\tcombine: THREE.Multiply,\n\t *\treflectivity: ,\n\t *\trefractionRatio: ,\n\t *\n\t *\twireframe: ,\n\t *\twireframeLinewidth: ,\n\t *\n\t * }\n\t */\n\n\tclass MeshLambertMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'MeshLambertMaterial';\n\t\t\tthis.color = new Color(0xffffff); // diffuse\n\n\t\t\tthis.map = null;\n\t\t\tthis.lightMap = null;\n\t\t\tthis.lightMapIntensity = 1.0;\n\t\t\tthis.aoMap = null;\n\t\t\tthis.aoMapIntensity = 1.0;\n\t\t\tthis.emissive = new Color(0x000000);\n\t\t\tthis.emissiveIntensity = 1.0;\n\t\t\tthis.emissiveMap = null;\n\t\t\tthis.specularMap = null;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.envMap = null;\n\t\t\tthis.combine = MultiplyOperation;\n\t\t\tthis.reflectivity = 1;\n\t\t\tthis.refractionRatio = 0.98;\n\t\t\tthis.wireframe = false;\n\t\t\tthis.wireframeLinewidth = 1;\n\t\t\tthis.wireframeLinecap = 'round';\n\t\t\tthis.wireframeLinejoin = 'round';\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.map = source.map;\n\t\t\tthis.lightMap = source.lightMap;\n\t\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\t\t\tthis.aoMap = source.aoMap;\n\t\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\t\t\tthis.emissive.copy(source.emissive);\n\t\t\tthis.emissiveMap = source.emissiveMap;\n\t\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\t\t\tthis.specularMap = source.specularMap;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.envMap = source.envMap;\n\t\t\tthis.combine = source.combine;\n\t\t\tthis.reflectivity = source.reflectivity;\n\t\t\tthis.refractionRatio = source.refractionRatio;\n\t\t\tthis.wireframe = source.wireframe;\n\t\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\n\t *\tmatcap: new THREE.Texture( ),\n\t *\n\t *\tmap: new THREE.Texture( ),\n\t *\n\t *\tbumpMap: new THREE.Texture( ),\n\t *\tbumpScale: ,\n\t *\n\t *\tnormalMap: new THREE.Texture( ),\n\t *\tnormalMapType: THREE.TangentSpaceNormalMap,\n\t *\tnormalScale: ,\n\t *\n\t *\tdisplacementMap: new THREE.Texture( ),\n\t *\tdisplacementScale: ,\n\t *\tdisplacementBias: ,\n\t *\n\t *\talphaMap: new THREE.Texture( ),\n\t *\n\t *\tflatShading: \n\t * }\n\t */\n\n\tclass MeshMatcapMaterial extends Material {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.defines = {\n\t\t\t\t'MATCAP': ''\n\t\t\t};\n\t\t\tthis.type = 'MeshMatcapMaterial';\n\t\t\tthis.color = new Color(0xffffff); // diffuse\n\n\t\t\tthis.matcap = null;\n\t\t\tthis.map = null;\n\t\t\tthis.bumpMap = null;\n\t\t\tthis.bumpScale = 1;\n\t\t\tthis.normalMap = null;\n\t\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\t\tthis.normalScale = new Vector2(1, 1);\n\t\t\tthis.displacementMap = null;\n\t\t\tthis.displacementScale = 1;\n\t\t\tthis.displacementBias = 0;\n\t\t\tthis.alphaMap = null;\n\t\t\tthis.flatShading = false;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.defines = {\n\t\t\t\t'MATCAP': ''\n\t\t\t};\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.matcap = source.matcap;\n\t\t\tthis.map = source.map;\n\t\t\tthis.bumpMap = source.bumpMap;\n\t\t\tthis.bumpScale = source.bumpScale;\n\t\t\tthis.normalMap = source.normalMap;\n\t\t\tthis.normalMapType = source.normalMapType;\n\t\t\tthis.normalScale.copy(source.normalScale);\n\t\t\tthis.displacementMap = source.displacementMap;\n\t\t\tthis.displacementScale = source.displacementScale;\n\t\t\tthis.displacementBias = source.displacementBias;\n\t\t\tthis.alphaMap = source.alphaMap;\n\t\t\tthis.flatShading = source.flatShading;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\n\t/**\n\t * parameters = {\n\t *\tcolor: ,\n\t *\topacity: ,\n\t *\n\t *\tlinewidth: ,\n\t *\n\t *\tscale: ,\n\t *\tdashSize: ,\n\t *\tgapSize: \n\t * }\n\t */\n\n\tclass LineDashedMaterial extends LineBasicMaterial {\n\t\tconstructor(parameters) {\n\t\t\tsuper();\n\t\t\tthis.type = 'LineDashedMaterial';\n\t\t\tthis.scale = 1;\n\t\t\tthis.dashSize = 3;\n\t\t\tthis.gapSize = 1;\n\t\t\tthis.setValues(parameters);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.scale = source.scale;\n\t\t\tthis.dashSize = source.dashSize;\n\t\t\tthis.gapSize = source.gapSize;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\n\tvar Materials = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tShadowMaterial: ShadowMaterial,\n\t\tSpriteMaterial: SpriteMaterial,\n\t\tRawShaderMaterial: RawShaderMaterial,\n\t\tShaderMaterial: ShaderMaterial,\n\t\tPointsMaterial: PointsMaterial,\n\t\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\t\tMeshStandardMaterial: MeshStandardMaterial,\n\t\tMeshPhongMaterial: MeshPhongMaterial,\n\t\tMeshToonMaterial: MeshToonMaterial,\n\t\tMeshNormalMaterial: MeshNormalMaterial,\n\t\tMeshLambertMaterial: MeshLambertMaterial,\n\t\tMeshDepthMaterial: MeshDepthMaterial,\n\t\tMeshDistanceMaterial: MeshDistanceMaterial,\n\t\tMeshBasicMaterial: MeshBasicMaterial,\n\t\tMeshMatcapMaterial: MeshMatcapMaterial,\n\t\tLineDashedMaterial: LineDashedMaterial,\n\t\tLineBasicMaterial: LineBasicMaterial,\n\t\tMaterial: Material\n\t});\n\n\tconst AnimationUtils = {\n\t\t// same as Array.prototype.slice, but also works on typed arrays\n\t\tarraySlice: function (array, from, to) {\n\t\t\tif (AnimationUtils.isTypedArray(array)) {\n\t\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\t\treturn new array.constructor(array.subarray(from, to !== undefined ? to : array.length));\n\t\t\t}\n\n\t\t\treturn array.slice(from, to);\n\t\t},\n\t\t// converts an array to a specific type\n\t\tconvertArray: function (array, type, forceClone) {\n\t\t\tif (!array || // let 'undefined' and 'null' pass\n\t\t\t!forceClone && array.constructor === type) return array;\n\n\t\t\tif (typeof type.BYTES_PER_ELEMENT === 'number') {\n\t\t\t\treturn new type(array); // create typed array\n\t\t\t}\n\n\t\t\treturn Array.prototype.slice.call(array); // create Array\n\t\t},\n\t\tisTypedArray: function (object) {\n\t\t\treturn ArrayBuffer.isView(object) && !(object instanceof DataView);\n\t\t},\n\t\t// returns an array by which times and values can be sorted\n\t\tgetKeyframeOrder: function (times) {\n\t\t\tfunction compareTime(i, j) {\n\t\t\t\treturn times[i] - times[j];\n\t\t\t}\n\n\t\t\tconst n = times.length;\n\t\t\tconst result = new Array(n);\n\n\t\t\tfor (let i = 0; i !== n; ++i) result[i] = i;\n\n\t\t\tresult.sort(compareTime);\n\t\t\treturn result;\n\t\t},\n\t\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\t\tsortedArray: function (values, stride, order) {\n\t\t\tconst nValues = values.length;\n\t\t\tconst result = new values.constructor(nValues);\n\n\t\t\tfor (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n\t\t\t\tconst srcOffset = order[i] * stride;\n\n\t\t\t\tfor (let j = 0; j !== stride; ++j) {\n\t\t\t\t\tresult[dstOffset++] = values[srcOffset + j];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\t// function for parsing AOS keyframe formats\n\t\tflattenJSON: function (jsonKeys, times, values, valuePropertyName) {\n\t\t\tlet i = 1,\n\t\t\t\t\tkey = jsonKeys[0];\n\n\t\t\twhile (key !== undefined && key[valuePropertyName] === undefined) {\n\t\t\t\tkey = jsonKeys[i++];\n\t\t\t}\n\n\t\t\tif (key === undefined) return; // no data\n\n\t\t\tlet value = key[valuePropertyName];\n\t\t\tif (value === undefined) return; // no data\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tdo {\n\t\t\t\t\tvalue = key[valuePropertyName];\n\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\ttimes.push(key.time);\n\t\t\t\t\t\tvalues.push.apply(values, value); // push all elements\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[i++];\n\t\t\t\t} while (key !== undefined);\n\t\t\t} else if (value.toArray !== undefined) {\n\t\t\t\t// ...assume THREE.Math-ish\n\t\t\t\tdo {\n\t\t\t\t\tvalue = key[valuePropertyName];\n\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\ttimes.push(key.time);\n\t\t\t\t\t\tvalue.toArray(values, values.length);\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[i++];\n\t\t\t\t} while (key !== undefined);\n\t\t\t} else {\n\t\t\t\t// otherwise push as-is\n\t\t\t\tdo {\n\t\t\t\t\tvalue = key[valuePropertyName];\n\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\ttimes.push(key.time);\n\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[i++];\n\t\t\t\t} while (key !== undefined);\n\t\t\t}\n\t\t},\n\t\tsubclip: function (sourceClip, name, startFrame, endFrame, fps = 30) {\n\t\t\tconst clip = sourceClip.clone();\n\t\t\tclip.name = name;\n\t\t\tconst tracks = [];\n\n\t\t\tfor (let i = 0; i < clip.tracks.length; ++i) {\n\t\t\t\tconst track = clip.tracks[i];\n\t\t\t\tconst valueSize = track.getValueSize();\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tfor (let j = 0; j < track.times.length; ++j) {\n\t\t\t\t\tconst frame = track.times[j] * fps;\n\t\t\t\t\tif (frame < startFrame || frame >= endFrame) continue;\n\t\t\t\t\ttimes.push(track.times[j]);\n\n\t\t\t\t\tfor (let k = 0; k < valueSize; ++k) {\n\t\t\t\t\t\tvalues.push(track.values[j * valueSize + k]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (times.length === 0) continue;\n\t\t\t\ttrack.times = AnimationUtils.convertArray(times, track.times.constructor);\n\t\t\t\ttrack.values = AnimationUtils.convertArray(values, track.values.constructor);\n\t\t\t\ttracks.push(track);\n\t\t\t}\n\n\t\t\tclip.tracks = tracks; // find minimum .times value across all tracks in the trimmed clip\n\n\t\t\tlet minStartTime = Infinity;\n\n\t\t\tfor (let i = 0; i < clip.tracks.length; ++i) {\n\t\t\t\tif (minStartTime > clip.tracks[i].times[0]) {\n\t\t\t\t\tminStartTime = clip.tracks[i].times[0];\n\t\t\t\t}\n\t\t\t} // shift all tracks such that clip begins at t=0\n\n\n\t\t\tfor (let i = 0; i < clip.tracks.length; ++i) {\n\t\t\t\tclip.tracks[i].shift(-1 * minStartTime);\n\t\t\t}\n\n\t\t\tclip.resetDuration();\n\t\t\treturn clip;\n\t\t},\n\t\tmakeClipAdditive: function (targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n\t\t\tif (fps <= 0) fps = 30;\n\t\t\tconst numTracks = referenceClip.tracks.length;\n\t\t\tconst referenceTime = referenceFrame / fps; // Make each track's values relative to the values at the reference frame\n\n\t\t\tfor (let i = 0; i < numTracks; ++i) {\n\t\t\t\tconst referenceTrack = referenceClip.tracks[i];\n\t\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName; // Skip this track if it's non-numeric\n\n\t\t\t\tif (referenceTrackType === 'bool' || referenceTrackType === 'string') continue; // Find the track in the target clip whose name and type matches the reference track\n\n\t\t\t\tconst targetTrack = targetClip.tracks.find(function (track) {\n\t\t\t\t\treturn track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n\t\t\t\t});\n\t\t\t\tif (targetTrack === undefined) continue;\n\t\t\t\tlet referenceOffset = 0;\n\t\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\t\tif (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n\t\t\t\t\treferenceOffset = referenceValueSize / 3;\n\t\t\t\t}\n\n\t\t\t\tlet targetOffset = 0;\n\t\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\t\tif (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n\t\t\t\t\ttargetOffset = targetValueSize / 3;\n\t\t\t\t}\n\n\t\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\t\tlet referenceValue; // Find the value to subtract out of the track\n\n\t\t\t\tif (referenceTime <= referenceTrack.times[0]) {\n\t\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\t\treferenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n\t\t\t\t} else if (referenceTime >= referenceTrack.times[lastIndex]) {\n\t\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\t\treferenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n\t\t\t\t} else {\n\t\t\t\t\t// Interpolate to the reference value\n\t\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\t\tinterpolant.evaluate(referenceTime);\n\t\t\t\t\treferenceValue = AnimationUtils.arraySlice(interpolant.resultBuffer, startIndex, endIndex);\n\t\t\t\t} // Conjugate the quaternion\n\n\n\t\t\t\tif (referenceTrackType === 'quaternion') {\n\t\t\t\t\tconst referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n\t\t\t\t\treferenceQuat.toArray(referenceValue);\n\t\t\t\t} // Subtract the reference value from all of the track values\n\n\n\t\t\t\tconst numTimes = targetTrack.times.length;\n\n\t\t\t\tfor (let j = 0; j < numTimes; ++j) {\n\t\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\t\tif (referenceTrackType === 'quaternion') {\n\t\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(targetTrack.values, valueStart, referenceValue, 0, targetTrack.values, valueStart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2; // Subtract each value for all other numeric track types\n\n\t\t\t\t\t\tfor (let k = 0; k < valueEnd; ++k) {\n\t\t\t\t\t\t\ttargetTrack.values[valueStart + k] -= referenceValue[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\t\t\treturn targetClip;\n\t\t}\n\t};\n\n\t/**\n\t * Abstract base class of interpolants over parametric samples.\n\t *\n\t * The parameter domain is one dimensional, typically the time or a path\n\t * along a curve defined by the data.\n\t *\n\t * The sample values can have any dimensionality and derived classes may\n\t * apply special interpretations to the data.\n\t *\n\t * This class provides the interval seek in a Template Method, deferring\n\t * the actual interpolation to derived classes.\n\t *\n\t * Time complexity is O(1) for linear access crossing at most two points\n\t * and O(log N) for random access, where N is the number of positions.\n\t *\n\t * References:\n\t *\n\t * \t\thttp://www.oodesign.com/template-method-pattern.html\n\t *\n\t */\n\tclass Interpolant {\n\t\tconstructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n\t\t\tthis.parameterPositions = parameterPositions;\n\t\t\tthis._cachedIndex = 0;\n\t\t\tthis.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor(sampleSize);\n\t\t\tthis.sampleValues = sampleValues;\n\t\t\tthis.valueSize = sampleSize;\n\t\t\tthis.settings = null;\n\t\t\tthis.DefaultSettings_ = {};\n\t\t}\n\n\t\tevaluate(t) {\n\t\t\tconst pp = this.parameterPositions;\n\t\t\tlet i1 = this._cachedIndex,\n\t\t\t\t\tt1 = pp[i1],\n\t\t\t\t\tt0 = pp[i1 - 1];\n\n\t\t\tvalidate_interval: {\n\t\t\t\tseek: {\n\t\t\t\t\tlet right;\n\n\t\t\t\t\tlinear_scan: {\n\t\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t\t//- slower code:\n\t\t\t\t\t\t//-\n\t\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\t\tforward_scan: if (!(t < t1)) {\n\t\t\t\t\t\t\tfor (let giveUpAt = i1 + 2;;) {\n\t\t\t\t\t\t\t\tif (t1 === undefined) {\n\t\t\t\t\t\t\t\t\tif (t < t0) break forward_scan; // after end\n\n\t\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\t\treturn this.afterEnd_(i1 - 1, t, t0);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (i1 === giveUpAt) break; // this loop\n\n\t\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\t\tt1 = pp[++i1];\n\n\t\t\t\t\t\t\t\tif (t < t1) {\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} // prepare binary search on the right side of the index\n\n\n\t\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\t\tbreak linear_scan;\n\t\t\t\t\t\t} //- slower code:\n\t\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\n\n\t\t\t\t\t\tif (!(t >= t0)) {\n\t\t\t\t\t\t\t// looping?\n\t\t\t\t\t\t\tconst t1global = pp[1];\n\n\t\t\t\t\t\t\tif (t < t1global) {\n\t\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\n\t\t\t\t\t\t\t\tt0 = t1global;\n\t\t\t\t\t\t\t} // linear reverse scan\n\n\n\t\t\t\t\t\t\tfor (let giveUpAt = i1 - 2;;) {\n\t\t\t\t\t\t\t\tif (t0 === undefined) {\n\t\t\t\t\t\t\t\t\t// before start\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\t\treturn this.beforeStart_(0, t, t1);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (i1 === giveUpAt) break; // this loop\n\n\t\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\t\tt0 = pp[--i1 - 1];\n\n\t\t\t\t\t\t\t\tif (t >= t0) {\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} // prepare binary search on the left side of the index\n\n\n\t\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\t\tbreak linear_scan;\n\t\t\t\t\t\t} // the interval is valid\n\n\n\t\t\t\t\t\tbreak validate_interval;\n\t\t\t\t\t} // linear scan\n\t\t\t\t\t// binary search\n\n\n\t\t\t\t\twhile (i1 < right) {\n\t\t\t\t\t\tconst mid = i1 + right >>> 1;\n\n\t\t\t\t\t\tif (t < pp[mid]) {\n\t\t\t\t\t\t\tright = mid;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ti1 = mid + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tt1 = pp[i1];\n\t\t\t\t\tt0 = pp[i1 - 1]; // check boundary cases, again\n\n\t\t\t\t\tif (t0 === undefined) {\n\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\treturn this.beforeStart_(0, t, t1);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t1 === undefined) {\n\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\treturn this.afterEnd_(i1 - 1, t0, t);\n\t\t\t\t\t}\n\t\t\t\t} // seek\n\n\n\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\tthis.intervalChanged_(i1, t0, t1);\n\t\t\t} // validate_interval\n\n\n\t\t\treturn this.interpolate_(i1, t0, t, t1);\n\t\t}\n\n\t\tgetSettings_() {\n\t\t\treturn this.settings || this.DefaultSettings_;\n\t\t}\n\n\t\tcopySampleValue_(index) {\n\t\t\t// copies a sample value to the result buffer\n\t\t\tconst result = this.resultBuffer,\n\t\t\t\t\t\tvalues = this.sampleValues,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\toffset = index * stride;\n\n\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\tresult[i] = values[offset + i];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} // Template methods for derived classes:\n\n\n\t\tinterpolate_() {\n\t\t\tthrow new Error('call to abstract method'); // implementations shall return this.resultBuffer\n\t\t}\n\n\t\tintervalChanged_() {// empty\n\t\t}\n\n\t} // ALIAS DEFINITIONS\n\n\n\tInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\n\tInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\n\n\t/**\n\t * Fast and simple cubic spline interpolant.\n\t *\n\t * It was derived from a Hermitian construction setting the first derivative\n\t * at each sample position to the linear slope between neighboring positions\n\t * over their parameter interval.\n\t */\n\n\tclass CubicInterpolant extends Interpolant {\n\t\tconstructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n\t\t\tsuper(parameterPositions, sampleValues, sampleSize, resultBuffer);\n\t\t\tthis._weightPrev = -0;\n\t\t\tthis._offsetPrev = -0;\n\t\t\tthis._weightNext = -0;\n\t\t\tthis._offsetNext = -0;\n\t\t\tthis.DefaultSettings_ = {\n\t\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t\t};\n\t\t}\n\n\t\tintervalChanged_(i1, t0, t1) {\n\t\t\tconst pp = this.parameterPositions;\n\t\t\tlet iPrev = i1 - 2,\n\t\t\t\t\tiNext = i1 + 1,\n\t\t\t\t\ttPrev = pp[iPrev],\n\t\t\t\t\ttNext = pp[iNext];\n\n\t\t\tif (tPrev === undefined) {\n\t\t\t\tswitch (this.getSettings_().endingStart) {\n\t\t\t\t\tcase ZeroSlopeEnding:\n\t\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = 2 * t0 - t1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase WrapAroundEnding:\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\t\ttPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// ZeroCurvatureEnding\n\t\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = t1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tNext === undefined) {\n\t\t\t\tswitch (this.getSettings_().endingEnd) {\n\t\t\t\t\tcase ZeroSlopeEnding:\n\t\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\t\tiNext = i1;\n\t\t\t\t\t\ttNext = 2 * t1 - t0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase WrapAroundEnding:\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiNext = 1;\n\t\t\t\t\t\ttNext = t1 + pp[1] - pp[0];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// ZeroCurvatureEnding\n\t\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\t\ttNext = t0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst halfDt = (t1 - t0) * 0.5,\n\t\t\t\t\t\tstride = this.valueSize;\n\t\t\tthis._weightPrev = halfDt / (t0 - tPrev);\n\t\t\tthis._weightNext = halfDt / (tNext - t1);\n\t\t\tthis._offsetPrev = iPrev * stride;\n\t\t\tthis._offsetNext = iNext * stride;\n\t\t}\n\n\t\tinterpolate_(i1, t0, t, t1) {\n\t\t\tconst result = this.resultBuffer,\n\t\t\t\t\t\tvalues = this.sampleValues,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\to1 = i1 * stride,\n\t\t\t\t\t\to0 = o1 - stride,\n\t\t\t\t\t\toP = this._offsetPrev,\n\t\t\t\t\t\toN = this._offsetNext,\n\t\t\t\t\t\twP = this._weightPrev,\n\t\t\t\t\t\twN = this._weightNext,\n\t\t\t\t\t\tp = (t - t0) / (t1 - t0),\n\t\t\t\t\t\tpp = p * p,\n\t\t\t\t\t\tppp = pp * p; // evaluate polynomials\n\n\t\t\tconst sP = -wP * ppp + 2 * wP * pp - wP * p;\n\t\t\tconst s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n\t\t\tconst s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n\t\t\tconst sN = wN * ppp - wN * pp; // combine data linearly\n\n\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\tresult[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t}\n\n\tclass LinearInterpolant extends Interpolant {\n\t\tconstructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n\t\t\tsuper(parameterPositions, sampleValues, sampleSize, resultBuffer);\n\t\t}\n\n\t\tinterpolate_(i1, t0, t, t1) {\n\t\t\tconst result = this.resultBuffer,\n\t\t\t\t\t\tvalues = this.sampleValues,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\toffset1 = i1 * stride,\n\t\t\t\t\t\toffset0 = offset1 - stride,\n\t\t\t\t\t\tweight1 = (t - t0) / (t1 - t0),\n\t\t\t\t\t\tweight0 = 1 - weight1;\n\n\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\tresult[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t}\n\n\t/**\n\t *\n\t * Interpolant that evaluates to the sample value at the position preceeding\n\t * the parameter.\n\t */\n\n\tclass DiscreteInterpolant extends Interpolant {\n\t\tconstructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n\t\t\tsuper(parameterPositions, sampleValues, sampleSize, resultBuffer);\n\t\t}\n\n\t\tinterpolate_(i1\n\t\t/*, t0, t, t1 */\n\t\t) {\n\t\t\treturn this.copySampleValue_(i1 - 1);\n\t\t}\n\n\t}\n\n\tclass KeyframeTrack {\n\t\tconstructor(name, times, values, interpolation) {\n\t\t\tif (name === undefined) throw new Error('THREE.KeyframeTrack: track name is undefined');\n\t\t\tif (times === undefined || times.length === 0) throw new Error('THREE.KeyframeTrack: no keyframes in track named ' + name);\n\t\t\tthis.name = name;\n\t\t\tthis.times = AnimationUtils.convertArray(times, this.TimeBufferType);\n\t\t\tthis.values = AnimationUtils.convertArray(values, this.ValueBufferType);\n\t\t\tthis.setInterpolation(interpolation || this.DefaultInterpolation);\n\t\t} // Serialization (in static context, because of constructor invocation\n\t\t// and automatic invocation of .toJSON):\n\n\n\t\tstatic toJSON(track) {\n\t\t\tconst trackType = track.constructor;\n\t\t\tlet json; // derived classes can define a static toJSON method\n\n\t\t\tif (trackType.toJSON !== this.toJSON) {\n\t\t\t\tjson = trackType.toJSON(track);\n\t\t\t} else {\n\t\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\t\tjson = {\n\t\t\t\t\t'name': track.name,\n\t\t\t\t\t'times': AnimationUtils.convertArray(track.times, Array),\n\t\t\t\t\t'values': AnimationUtils.convertArray(track.values, Array)\n\t\t\t\t};\n\t\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\t\tif (interpolation !== track.DefaultInterpolation) {\n\t\t\t\t\tjson.interpolation = interpolation;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\t\treturn json;\n\t\t}\n\n\t\tInterpolantFactoryMethodDiscrete(result) {\n\t\t\treturn new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n\t\t}\n\n\t\tInterpolantFactoryMethodLinear(result) {\n\t\t\treturn new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n\t\t}\n\n\t\tInterpolantFactoryMethodSmooth(result) {\n\t\t\treturn new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n\t\t}\n\n\t\tsetInterpolation(interpolation) {\n\t\t\tlet factoryMethod;\n\n\t\t\tswitch (interpolation) {\n\t\t\t\tcase InterpolateDiscrete:\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase InterpolateLinear:\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase InterpolateSmooth:\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (factoryMethod === undefined) {\n\t\t\t\tconst message = 'unsupported interpolation for ' + this.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\t\tif (this.createInterpolant === undefined) {\n\t\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\t\tif (interpolation !== this.DefaultInterpolation) {\n\t\t\t\t\t\tthis.setInterpolation(this.DefaultInterpolation);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(message); // fatal, in this case\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconsole.warn('THREE.KeyframeTrack:', message);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tthis.createInterpolant = factoryMethod;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetInterpolation() {\n\t\t\tswitch (this.createInterpolant) {\n\t\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\t\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\t\tcase this.InterpolantFactoryMethodLinear:\n\t\t\t\t\treturn InterpolateLinear;\n\n\t\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\t\t\t\t\treturn InterpolateSmooth;\n\t\t\t}\n\t\t}\n\n\t\tgetValueSize() {\n\t\t\treturn this.values.length / this.times.length;\n\t\t} // move all keyframes either forwards or backwards in time\n\n\n\t\tshift(timeOffset) {\n\t\t\tif (timeOffset !== 0.0) {\n\t\t\t\tconst times = this.times;\n\n\t\t\t\tfor (let i = 0, n = times.length; i !== n; ++i) {\n\t\t\t\t\ttimes[i] += timeOffset;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\n\n\t\tscale(timeScale) {\n\t\t\tif (timeScale !== 1.0) {\n\t\t\t\tconst times = this.times;\n\n\t\t\t\tfor (let i = 0, n = times.length; i !== n; ++i) {\n\t\t\t\t\ttimes[i] *= timeScale;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\n\n\t\ttrim(startTime, endTime) {\n\t\t\tconst times = this.times,\n\t\t\t\t\t\tnKeys = times.length;\n\t\t\tlet from = 0,\n\t\t\t\t\tto = nKeys - 1;\n\n\t\t\twhile (from !== nKeys && times[from] < startTime) {\n\t\t\t\t++from;\n\t\t\t}\n\n\t\t\twhile (to !== -1 && times[to] > endTime) {\n\t\t\t\t--to;\n\t\t\t}\n\n\t\t\t++to; // inclusive -> exclusive bound\n\n\t\t\tif (from !== 0 || to !== nKeys) {\n\t\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\t\tif (from >= to) {\n\t\t\t\t\tto = Math.max(to, 1);\n\t\t\t\t\tfrom = to - 1;\n\t\t\t\t}\n\n\t\t\t\tconst stride = this.getValueSize();\n\t\t\t\tthis.times = AnimationUtils.arraySlice(times, from, to);\n\t\t\t\tthis.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\n\n\t\tvalidate() {\n\t\t\tlet valid = true;\n\t\t\tconst valueSize = this.getValueSize();\n\n\t\t\tif (valueSize - Math.floor(valueSize) !== 0) {\n\t\t\t\tconsole.error('THREE.KeyframeTrack: Invalid value size in track.', this);\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\tconst times = this.times,\n\t\t\t\t\t\tvalues = this.values,\n\t\t\t\t\t\tnKeys = times.length;\n\n\t\t\tif (nKeys === 0) {\n\t\t\t\tconsole.error('THREE.KeyframeTrack: Track is empty.', this);\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\tlet prevTime = null;\n\n\t\t\tfor (let i = 0; i !== nKeys; i++) {\n\t\t\t\tconst currTime = times[i];\n\n\t\t\t\tif (typeof currTime === 'number' && isNaN(currTime)) {\n\t\t\t\t\tconsole.error('THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime);\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (prevTime !== null && prevTime > currTime) {\n\t\t\t\t\tconsole.error('THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime);\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tprevTime = currTime;\n\t\t\t}\n\n\t\t\tif (values !== undefined) {\n\t\t\t\tif (AnimationUtils.isTypedArray(values)) {\n\t\t\t\t\tfor (let i = 0, n = values.length; i !== n; ++i) {\n\t\t\t\t\t\tconst value = values[i];\n\n\t\t\t\t\t\tif (isNaN(value)) {\n\t\t\t\t\t\t\tconsole.error('THREE.KeyframeTrack: Value is not a valid number.', this, i, value);\n\t\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn valid;\n\t\t} // removes equivalent sequential keys as common in morph target sequences\n\t\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\n\n\t\toptimize() {\n\t\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\t\tconst times = AnimationUtils.arraySlice(this.times),\n\t\t\t\t\t\tvalues = AnimationUtils.arraySlice(this.values),\n\t\t\t\t\t\tstride = this.getValueSize(),\n\t\t\t\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\t\t\t\t\t\tlastIndex = times.length - 1;\n\t\t\tlet writeIndex = 1;\n\n\t\t\tfor (let i = 1; i < lastIndex; ++i) {\n\t\t\t\tlet keep = false;\n\t\t\t\tconst time = times[i];\n\t\t\t\tconst timeNext = times[i + 1]; // remove adjacent keyframes scheduled at the same time\n\n\t\t\t\tif (time !== timeNext && (i !== 1 || time !== times[0])) {\n\t\t\t\t\tif (!smoothInterpolation) {\n\t\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\t\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\t\tfor (let j = 0; j !== stride; ++j) {\n\t\t\t\t\t\t\tconst value = values[offset + j];\n\n\t\t\t\t\t\t\tif (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n\t\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t}\n\t\t\t\t} // in-place compaction\n\n\n\t\t\t\tif (keep) {\n\t\t\t\t\tif (i !== writeIndex) {\n\t\t\t\t\t\ttimes[writeIndex] = times[i];\n\t\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\t\tfor (let j = 0; j !== stride; ++j) {\n\t\t\t\t\t\t\tvalues[writeOffset + j] = values[readOffset + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t++writeIndex;\n\t\t\t\t}\n\t\t\t} // flush last keyframe (compaction looks ahead)\n\n\n\t\t\tif (lastIndex > 0) {\n\t\t\t\ttimes[writeIndex] = times[lastIndex];\n\n\t\t\t\tfor (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n\t\t\t\t\tvalues[writeOffset + j] = values[readOffset + j];\n\t\t\t\t}\n\n\t\t\t\t++writeIndex;\n\t\t\t}\n\n\t\t\tif (writeIndex !== times.length) {\n\t\t\t\tthis.times = AnimationUtils.arraySlice(times, 0, writeIndex);\n\t\t\t\tthis.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride);\n\t\t\t} else {\n\t\t\t\tthis.times = times;\n\t\t\t\tthis.values = values;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\tconst times = AnimationUtils.arraySlice(this.times, 0);\n\t\t\tconst values = AnimationUtils.arraySlice(this.values, 0);\n\t\t\tconst TypedKeyframeTrack = this.constructor;\n\t\t\tconst track = new TypedKeyframeTrack(this.name, times, values); // Interpolant argument to constructor is not saved, so copy the factory method directly.\n\n\t\t\ttrack.createInterpolant = this.createInterpolant;\n\t\t\treturn track;\n\t\t}\n\n\t}\n\n\tKeyframeTrack.prototype.TimeBufferType = Float32Array;\n\tKeyframeTrack.prototype.ValueBufferType = Float32Array;\n\tKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n\t/**\n\t * A Track of Boolean keyframe values.\n\t */\n\n\tclass BooleanKeyframeTrack extends KeyframeTrack {}\n\n\tBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\n\tBooleanKeyframeTrack.prototype.ValueBufferType = Array;\n\tBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\n\tBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\n\tBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; // Note: Actually this track could have a optimized / compressed\n\n\t/**\n\t * A Track of keyframe values that represent color.\n\t */\n\n\tclass ColorKeyframeTrack extends KeyframeTrack {}\n\n\tColorKeyframeTrack.prototype.ValueTypeName = 'color'; // ValueBufferType is inherited\n\n\t/**\n\t * A Track of numeric keyframe values.\n\t */\n\n\tclass NumberKeyframeTrack extends KeyframeTrack {}\n\n\tNumberKeyframeTrack.prototype.ValueTypeName = 'number'; // ValueBufferType is inherited\n\n\t/**\n\t * Spherical linear unit quaternion interpolant.\n\t */\n\n\tclass QuaternionLinearInterpolant extends Interpolant {\n\t\tconstructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n\t\t\tsuper(parameterPositions, sampleValues, sampleSize, resultBuffer);\n\t\t}\n\n\t\tinterpolate_(i1, t0, t, t1) {\n\t\t\tconst result = this.resultBuffer,\n\t\t\t\t\t\tvalues = this.sampleValues,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\talpha = (t - t0) / (t1 - t0);\n\t\t\tlet offset = i1 * stride;\n\n\t\t\tfor (let end = offset + stride; offset !== end; offset += 4) {\n\t\t\t\tQuaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t}\n\n\t/**\n\t * A Track of quaternion keyframe values.\n\t */\n\n\tclass QuaternionKeyframeTrack extends KeyframeTrack {\n\t\tInterpolantFactoryMethodLinear(result) {\n\t\t\treturn new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n\t\t}\n\n\t}\n\n\tQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion'; // ValueBufferType is inherited\n\n\tQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\tQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n\t/**\n\t * A Track that interpolates Strings\n\t */\n\n\tclass StringKeyframeTrack extends KeyframeTrack {}\n\n\tStringKeyframeTrack.prototype.ValueTypeName = 'string';\n\tStringKeyframeTrack.prototype.ValueBufferType = Array;\n\tStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\n\tStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\n\tStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n\t/**\n\t * A Track of vectored keyframe values.\n\t */\n\n\tclass VectorKeyframeTrack extends KeyframeTrack {}\n\n\tVectorKeyframeTrack.prototype.ValueTypeName = 'vector'; // ValueBufferType is inherited\n\n\tclass AnimationClip {\n\t\tconstructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n\t\t\tthis.name = name;\n\t\t\tthis.tracks = tracks;\n\t\t\tthis.duration = duration;\n\t\t\tthis.blendMode = blendMode;\n\t\t\tthis.uuid = generateUUID(); // this means it should figure out its duration by scanning the tracks\n\n\t\t\tif (this.duration < 0) {\n\t\t\t\tthis.resetDuration();\n\t\t\t}\n\t\t}\n\n\t\tstatic parse(json) {\n\t\t\tconst tracks = [],\n\t\t\t\t\t\tjsonTracks = json.tracks,\n\t\t\t\t\t\tframeTime = 1.0 / (json.fps || 1.0);\n\n\t\t\tfor (let i = 0, n = jsonTracks.length; i !== n; ++i) {\n\t\t\t\ttracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n\t\t\t}\n\n\t\t\tconst clip = new this(json.name, json.duration, tracks, json.blendMode);\n\t\t\tclip.uuid = json.uuid;\n\t\t\treturn clip;\n\t\t}\n\n\t\tstatic toJSON(clip) {\n\t\t\tconst tracks = [],\n\t\t\t\t\t\tclipTracks = clip.tracks;\n\t\t\tconst json = {\n\t\t\t\t'name': clip.name,\n\t\t\t\t'duration': clip.duration,\n\t\t\t\t'tracks': tracks,\n\t\t\t\t'uuid': clip.uuid,\n\t\t\t\t'blendMode': clip.blendMode\n\t\t\t};\n\n\t\t\tfor (let i = 0, n = clipTracks.length; i !== n; ++i) {\n\t\t\t\ttracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n\t\t\t}\n\n\t\t\treturn json;\n\t\t}\n\n\t\tstatic CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n\t\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\t\tconst tracks = [];\n\n\t\t\tfor (let i = 0; i < numMorphTargets; i++) {\n\t\t\t\tlet times = [];\n\t\t\t\tlet values = [];\n\t\t\t\ttimes.push((i + numMorphTargets - 1) % numMorphTargets, i, (i + 1) % numMorphTargets);\n\t\t\t\tvalues.push(0, 1, 0);\n\t\t\t\tconst order = AnimationUtils.getKeyframeOrder(times);\n\t\t\t\ttimes = AnimationUtils.sortedArray(times, 1, order);\n\t\t\t\tvalues = AnimationUtils.sortedArray(values, 1, order); // if there is a key at the first frame, duplicate it as the\n\t\t\t\t// last frame as well for perfect loop.\n\n\t\t\t\tif (!noLoop && times[0] === 0) {\n\t\t\t\t\ttimes.push(numMorphTargets);\n\t\t\t\t\tvalues.push(values[0]);\n\t\t\t\t}\n\n\t\t\t\ttracks.push(new NumberKeyframeTrack('.morphTargetInfluences[' + morphTargetSequence[i].name + ']', times, values).scale(1.0 / fps));\n\t\t\t}\n\n\t\t\treturn new this(name, -1, tracks);\n\t\t}\n\n\t\tstatic findByName(objectOrClipArray, name) {\n\t\t\tlet clipArray = objectOrClipArray;\n\n\t\t\tif (!Array.isArray(objectOrClipArray)) {\n\t\t\t\tconst o = objectOrClipArray;\n\t\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < clipArray.length; i++) {\n\t\t\t\tif (clipArray[i].name === name) {\n\t\t\t\t\treturn clipArray[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tstatic CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n\t\t\tconst animationToMorphTargets = {}; // tested with https://regex101.com/ on trick sequences\n\t\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\n\t\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/; // sort morph target names into animation groups based\n\t\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\n\t\t\tfor (let i = 0, il = morphTargets.length; i < il; i++) {\n\t\t\t\tconst morphTarget = morphTargets[i];\n\t\t\t\tconst parts = morphTarget.name.match(pattern);\n\n\t\t\t\tif (parts && parts.length > 1) {\n\t\t\t\t\tconst name = parts[1];\n\t\t\t\t\tlet animationMorphTargets = animationToMorphTargets[name];\n\n\t\t\t\t\tif (!animationMorphTargets) {\n\t\t\t\t\t\tanimationToMorphTargets[name] = animationMorphTargets = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tanimationMorphTargets.push(morphTarget);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst clips = [];\n\n\t\t\tfor (const name in animationToMorphTargets) {\n\t\t\t\tclips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n\t\t\t}\n\n\t\t\treturn clips;\n\t\t} // parse the animation.hierarchy format\n\n\n\t\tstatic parseAnimation(animation, bones) {\n\t\t\tif (!animation) {\n\t\t\t\tconsole.error('THREE.AnimationClip: No animation in JSONLoader data.');\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst addNonemptyTrack = function (trackType, trackName, animationKeys, propertyName, destTracks) {\n\t\t\t\t// only return track if there are actually keys.\n\t\t\t\tif (animationKeys.length !== 0) {\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\t\t\t\t\tAnimationUtils.flattenJSON(animationKeys, times, values, propertyName); // empty keys are filtered out, so check again\n\n\t\t\t\t\tif (times.length !== 0) {\n\t\t\t\t\t\tdestTracks.push(new trackType(trackName, times, values));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst tracks = [];\n\t\t\tconst clipName = animation.name || 'default';\n\t\t\tconst fps = animation.fps || 30;\n\t\t\tconst blendMode = animation.blendMode; // automatic length determination in AnimationClip.\n\n\t\t\tlet duration = animation.length || -1;\n\t\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\t\tfor (let h = 0; h < hierarchyTracks.length; h++) {\n\t\t\t\tconst animationKeys = hierarchyTracks[h].keys; // skip empty tracks\n\n\t\t\t\tif (!animationKeys || animationKeys.length === 0) continue; // process morph targets\n\n\t\t\t\tif (animationKeys[0].morphTargets) {\n\t\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\t\tconst morphTargetNames = {};\n\t\t\t\t\tlet k;\n\n\t\t\t\t\tfor (k = 0; k < animationKeys.length; k++) {\n\t\t\t\t\t\tif (animationKeys[k].morphTargets) {\n\t\t\t\t\t\t\tfor (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n\t\t\t\t\t\t\t\tmorphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} // create a track for each morph target with all zero\n\t\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t\t// the morphTarget is named.\n\n\n\t\t\t\t\tfor (const morphTargetName in morphTargetNames) {\n\t\t\t\t\t\tconst times = [];\n\t\t\t\t\t\tconst values = [];\n\n\t\t\t\t\t\tfor (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n\t\t\t\t\t\t\tconst animationKey = animationKeys[k];\n\t\t\t\t\t\t\ttimes.push(animationKey.time);\n\t\t\t\t\t\t\tvalues.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttracks.push(new NumberKeyframeTrack('.morphTargetInfluence[' + morphTargetName + ']', times, values));\n\t\t\t\t\t}\n\n\t\t\t\t\tduration = morphTargetNames.length * (fps || 1.0);\n\t\t\t\t} else {\n\t\t\t\t\t// ...assume skeletal animation\n\t\t\t\t\tconst boneName = '.bones[' + bones[h].name + ']';\n\t\t\t\t\taddNonemptyTrack(VectorKeyframeTrack, boneName + '.position', animationKeys, 'pos', tracks);\n\t\t\t\t\taddNonemptyTrack(QuaternionKeyframeTrack, boneName + '.quaternion', animationKeys, 'rot', tracks);\n\t\t\t\t\taddNonemptyTrack(VectorKeyframeTrack, boneName + '.scale', animationKeys, 'scl', tracks);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tracks.length === 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst clip = new this(clipName, duration, tracks, blendMode);\n\t\t\treturn clip;\n\t\t}\n\n\t\tresetDuration() {\n\t\t\tconst tracks = this.tracks;\n\t\t\tlet duration = 0;\n\n\t\t\tfor (let i = 0, n = tracks.length; i !== n; ++i) {\n\t\t\t\tconst track = this.tracks[i];\n\t\t\t\tduration = Math.max(duration, track.times[track.times.length - 1]);\n\t\t\t}\n\n\t\t\tthis.duration = duration;\n\t\t\treturn this;\n\t\t}\n\n\t\ttrim() {\n\t\t\tfor (let i = 0; i < this.tracks.length; i++) {\n\t\t\t\tthis.tracks[i].trim(0, this.duration);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidate() {\n\t\t\tlet valid = true;\n\n\t\t\tfor (let i = 0; i < this.tracks.length; i++) {\n\t\t\t\tvalid = valid && this.tracks[i].validate();\n\t\t\t}\n\n\t\t\treturn valid;\n\t\t}\n\n\t\toptimize() {\n\t\t\tfor (let i = 0; i < this.tracks.length; i++) {\n\t\t\t\tthis.tracks[i].optimize();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\tconst tracks = [];\n\n\t\t\tfor (let i = 0; i < this.tracks.length; i++) {\n\t\t\t\ttracks.push(this.tracks[i].clone());\n\t\t\t}\n\n\t\t\treturn new this.constructor(this.name, this.duration, tracks, this.blendMode);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.constructor.toJSON(this);\n\t\t}\n\n\t}\n\n\tfunction getTrackTypeForValueTypeName(typeName) {\n\t\tswitch (typeName.toLowerCase()) {\n\t\t\tcase 'scalar':\n\t\t\tcase 'double':\n\t\t\tcase 'float':\n\t\t\tcase 'number':\n\t\t\tcase 'integer':\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase 'vector':\n\t\t\tcase 'vector2':\n\t\t\tcase 'vector3':\n\t\t\tcase 'vector4':\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase 'color':\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase 'quaternion':\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase 'bool':\n\t\t\tcase 'boolean':\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase 'string':\n\t\t\t\treturn StringKeyframeTrack;\n\t\t}\n\n\t\tthrow new Error('THREE.KeyframeTrack: Unsupported typeName: ' + typeName);\n\t}\n\n\tfunction parseKeyframeTrack(json) {\n\t\tif (json.type === undefined) {\n\t\t\tthrow new Error('THREE.KeyframeTrack: track type undefined, can not parse');\n\t\t}\n\n\t\tconst trackType = getTrackTypeForValueTypeName(json.type);\n\n\t\tif (json.times === undefined) {\n\t\t\tconst times = [],\n\t\t\t\t\t\tvalues = [];\n\t\t\tAnimationUtils.flattenJSON(json.keys, times, values, 'value');\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\t\t} // derived classes can define a static parse method\n\n\n\t\tif (trackType.parse !== undefined) {\n\t\t\treturn trackType.parse(json);\n\t\t} else {\n\t\t\t// by default, we assume a constructor compatible with the base\n\t\t\treturn new trackType(json.name, json.times, json.values, json.interpolation);\n\t\t}\n\t}\n\n\tconst Cache = {\n\t\tenabled: false,\n\t\tfiles: {},\n\t\tadd: function (key, file) {\n\t\t\tif (this.enabled === false) return; // console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\t\tthis.files[key] = file;\n\t\t},\n\t\tget: function (key) {\n\t\t\tif (this.enabled === false) return; // console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\t\treturn this.files[key];\n\t\t},\n\t\tremove: function (key) {\n\t\t\tdelete this.files[key];\n\t\t},\n\t\tclear: function () {\n\t\t\tthis.files = {};\n\t\t}\n\t};\n\n\tclass LoadingManager {\n\t\tconstructor(onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tlet isLoading = false;\n\t\t\tlet itemsLoaded = 0;\n\t\t\tlet itemsTotal = 0;\n\t\t\tlet urlModifier = undefined;\n\t\t\tconst handlers = []; // Refer to #5689 for the reason why we don't set .onStart\n\t\t\t// in the constructor\n\n\t\t\tthis.onStart = undefined;\n\t\t\tthis.onLoad = onLoad;\n\t\t\tthis.onProgress = onProgress;\n\t\t\tthis.onError = onError;\n\n\t\t\tthis.itemStart = function (url) {\n\t\t\t\titemsTotal++;\n\n\t\t\t\tif (isLoading === false) {\n\t\t\t\t\tif (scope.onStart !== undefined) {\n\t\t\t\t\t\tscope.onStart(url, itemsLoaded, itemsTotal);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tisLoading = true;\n\t\t\t};\n\n\t\t\tthis.itemEnd = function (url) {\n\t\t\t\titemsLoaded++;\n\n\t\t\t\tif (scope.onProgress !== undefined) {\n\t\t\t\t\tscope.onProgress(url, itemsLoaded, itemsTotal);\n\t\t\t\t}\n\n\t\t\t\tif (itemsLoaded === itemsTotal) {\n\t\t\t\t\tisLoading = false;\n\n\t\t\t\t\tif (scope.onLoad !== undefined) {\n\t\t\t\t\t\tscope.onLoad();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.itemError = function (url) {\n\t\t\t\tif (scope.onError !== undefined) {\n\t\t\t\t\tscope.onError(url);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.resolveURL = function (url) {\n\t\t\t\tif (urlModifier) {\n\t\t\t\t\treturn urlModifier(url);\n\t\t\t\t}\n\n\t\t\t\treturn url;\n\t\t\t};\n\n\t\t\tthis.setURLModifier = function (transform) {\n\t\t\t\turlModifier = transform;\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\tthis.addHandler = function (regex, loader) {\n\t\t\t\thandlers.push(regex, loader);\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\tthis.removeHandler = function (regex) {\n\t\t\t\tconst index = handlers.indexOf(regex);\n\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\thandlers.splice(index, 2);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\tthis.getHandler = function (file) {\n\t\t\t\tfor (let i = 0, l = handlers.length; i < l; i += 2) {\n\t\t\t\t\tconst regex = handlers[i];\n\t\t\t\t\tconst loader = handlers[i + 1];\n\t\t\t\t\tif (regex.global) regex.lastIndex = 0; // see #17920\n\n\t\t\t\t\tif (regex.test(file)) {\n\t\t\t\t\t\treturn loader;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t}\n\n\tconst DefaultLoadingManager = new LoadingManager();\n\n\tclass Loader {\n\t\tconstructor(manager) {\n\t\t\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\t\t\tthis.crossOrigin = 'anonymous';\n\t\t\tthis.withCredentials = false;\n\t\t\tthis.path = '';\n\t\t\tthis.resourcePath = '';\n\t\t\tthis.requestHeader = {};\n\t\t}\n\n\t\tload() {}\n\n\t\tloadAsync(url, onProgress) {\n\t\t\tconst scope = this;\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tscope.load(url, resolve, onProgress, reject);\n\t\t\t});\n\t\t}\n\n\t\tparse() {}\n\n\t\tsetCrossOrigin(crossOrigin) {\n\t\t\tthis.crossOrigin = crossOrigin;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetWithCredentials(value) {\n\t\t\tthis.withCredentials = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetPath(path) {\n\t\t\tthis.path = path;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetResourcePath(resourcePath) {\n\t\t\tthis.resourcePath = resourcePath;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetRequestHeader(requestHeader) {\n\t\t\tthis.requestHeader = requestHeader;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tconst loading = {};\n\n\tclass FileLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tif (url === undefined) url = '';\n\t\t\tif (this.path !== undefined) url = this.path + url;\n\t\t\turl = this.manager.resolveURL(url);\n\t\t\tconst scope = this;\n\t\t\tconst cached = Cache.get(url);\n\n\t\t\tif (cached !== undefined) {\n\t\t\t\tscope.manager.itemStart(url);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (onLoad) onLoad(cached);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, 0);\n\t\t\t\treturn cached;\n\t\t\t} // Check if request is duplicate\n\n\n\t\t\tif (loading[url] !== undefined) {\n\t\t\t\tloading[url].push({\n\t\t\t\t\tonLoad: onLoad,\n\t\t\t\t\tonProgress: onProgress,\n\t\t\t\t\tonError: onError\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t} // Check for data: URI\n\n\n\t\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\t\tconst dataUriRegexResult = url.match(dataUriRegex);\n\t\t\tlet request; // Safari can not handle Data URIs through XMLHttpRequest so process manually\n\n\t\t\tif (dataUriRegexResult) {\n\t\t\t\tconst mimeType = dataUriRegexResult[1];\n\t\t\t\tconst isBase64 = !!dataUriRegexResult[2];\n\t\t\t\tlet data = dataUriRegexResult[3];\n\t\t\t\tdata = decodeURIComponent(data);\n\t\t\t\tif (isBase64) data = atob(data);\n\n\t\t\t\ttry {\n\t\t\t\t\tlet response;\n\t\t\t\t\tconst responseType = (this.responseType || '').toLowerCase();\n\n\t\t\t\t\tswitch (responseType) {\n\t\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\t\tcase 'blob':\n\t\t\t\t\t\t\tconst view = new Uint8Array(data.length);\n\n\t\t\t\t\t\t\tfor (let i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tview[i] = data.charCodeAt(i);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (responseType === 'blob') {\n\t\t\t\t\t\t\t\tresponse = new Blob([view.buffer], {\n\t\t\t\t\t\t\t\t\ttype: mimeType\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponse = view.buffer;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'document':\n\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\tresponse = parser.parseFromString(data, mimeType);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'json':\n\t\t\t\t\t\t\tresponse = JSON.parse(data);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// 'text' or other\n\t\t\t\t\t\t\tresponse = data;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t} // Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tif (onLoad) onLoad(response);\n\t\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t\t}, 0);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tif (onError) onError(error);\n\t\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Initialise array for duplicate requests\n\t\t\t\tloading[url] = [];\n\t\t\t\tloading[url].push({\n\t\t\t\t\tonLoad: onLoad,\n\t\t\t\t\tonProgress: onProgress,\n\t\t\t\t\tonError: onError\n\t\t\t\t});\n\t\t\t\trequest = new XMLHttpRequest();\n\t\t\t\trequest.open('GET', url, true);\n\t\t\t\trequest.addEventListener('load', function (event) {\n\t\t\t\t\tconst response = this.response;\n\t\t\t\t\tconst callbacks = loading[url];\n\t\t\t\t\tdelete loading[url];\n\n\t\t\t\t\tif (this.status === 200 || this.status === 0) {\n\t\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\t\t\t\t\t\tif (this.status === 0) console.warn('THREE.FileLoader: HTTP Status 0 received.'); // Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t\t// error response bodies as proper responses to requests.\n\n\t\t\t\t\t\tCache.add(url, response);\n\n\t\t\t\t\t\tfor (let i = 0, il = callbacks.length; i < il; i++) {\n\t\t\t\t\t\t\tconst callback = callbacks[i];\n\t\t\t\t\t\t\tif (callback.onLoad) callback.onLoad(response);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, il = callbacks.length; i < il; i++) {\n\t\t\t\t\t\t\tconst callback = callbacks[i];\n\t\t\t\t\t\t\tif (callback.onError) callback.onError(event);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t\t}\n\t\t\t\t}, false);\n\t\t\t\trequest.addEventListener('progress', function (event) {\n\t\t\t\t\tconst callbacks = loading[url];\n\n\t\t\t\t\tfor (let i = 0, il = callbacks.length; i < il; i++) {\n\t\t\t\t\t\tconst callback = callbacks[i];\n\t\t\t\t\t\tif (callback.onProgress) callback.onProgress(event);\n\t\t\t\t\t}\n\t\t\t\t}, false);\n\t\t\t\trequest.addEventListener('error', function (event) {\n\t\t\t\t\tconst callbacks = loading[url];\n\t\t\t\t\tdelete loading[url];\n\n\t\t\t\t\tfor (let i = 0, il = callbacks.length; i < il; i++) {\n\t\t\t\t\t\tconst callback = callbacks[i];\n\t\t\t\t\t\tif (callback.onError) callback.onError(event);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, false);\n\t\t\t\trequest.addEventListener('abort', function (event) {\n\t\t\t\t\tconst callbacks = loading[url];\n\t\t\t\t\tdelete loading[url];\n\n\t\t\t\t\tfor (let i = 0, il = callbacks.length; i < il; i++) {\n\t\t\t\t\t\tconst callback = callbacks[i];\n\t\t\t\t\t\tif (callback.onError) callback.onError(event);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, false);\n\t\t\t\tif (this.responseType !== undefined) request.responseType = this.responseType;\n\t\t\t\tif (this.withCredentials !== undefined) request.withCredentials = this.withCredentials;\n\t\t\t\tif (request.overrideMimeType) request.overrideMimeType(this.mimeType !== undefined ? this.mimeType : 'text/plain');\n\n\t\t\t\tfor (const header in this.requestHeader) {\n\t\t\t\t\trequest.setRequestHeader(header, this.requestHeader[header]);\n\t\t\t\t}\n\n\t\t\t\trequest.send(null);\n\t\t\t}\n\n\t\t\tscope.manager.itemStart(url);\n\t\t\treturn request;\n\t\t}\n\n\t\tsetResponseType(value) {\n\t\t\tthis.responseType = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetMimeType(value) {\n\t\t\tthis.mimeType = value;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass AnimationLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(this.withCredentials);\n\t\t\tloader.load(url, function (text) {\n\t\t\t\ttry {\n\t\t\t\t\tonLoad(scope.parse(JSON.parse(text)));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (onError) {\n\t\t\t\t\t\tonError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t}\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t\tparse(json) {\n\t\t\tconst animations = [];\n\n\t\t\tfor (let i = 0; i < json.length; i++) {\n\t\t\t\tconst clip = AnimationClip.parse(json[i]);\n\t\t\t\tanimations.push(clip);\n\t\t\t}\n\n\t\t\treturn animations;\n\t\t}\n\n\t}\n\n\t/**\n\t * Abstract Base class to block based textures loader (dds, pvr, ...)\n\t *\n\t * Sub classes have to implement the parse() method which will be used in load().\n\t */\n\n\tclass CompressedTextureLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst images = [];\n\t\t\tconst texture = new CompressedTexture();\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setResponseType('arraybuffer');\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(scope.withCredentials);\n\t\t\tlet loaded = 0;\n\n\t\t\tfunction loadTexture(i) {\n\t\t\t\tloader.load(url[i], function (buffer) {\n\t\t\t\t\tconst texDatas = scope.parse(buffer, true);\n\t\t\t\t\timages[i] = {\n\t\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t\t};\n\t\t\t\t\tloaded += 1;\n\n\t\t\t\t\tif (loaded === 6) {\n\t\t\t\t\t\tif (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.image = images;\n\t\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\t\t\t\t\t\tif (onLoad) onLoad(texture);\n\t\t\t\t\t}\n\t\t\t\t}, onProgress, onError);\n\t\t\t}\n\n\t\t\tif (Array.isArray(url)) {\n\t\t\t\tfor (let i = 0, il = url.length; i < il; ++i) {\n\t\t\t\t\tloadTexture(i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// compressed cubemap texture stored in a single DDS file\n\t\t\t\tloader.load(url, function (buffer) {\n\t\t\t\t\tconst texDatas = scope.parse(buffer, true);\n\n\t\t\t\t\tif (texDatas.isCubemap) {\n\t\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\t\tfor (let f = 0; f < faces; f++) {\n\t\t\t\t\t\t\timages[f] = {\n\t\t\t\t\t\t\t\tmipmaps: []\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let i = 0; i < texDatas.mipmapCount; i++) {\n\t\t\t\t\t\t\t\timages[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n\t\t\t\t\t\t\t\timages[f].format = texDatas.format;\n\t\t\t\t\t\t\t\timages[f].width = texDatas.width;\n\t\t\t\t\t\t\t\timages[f].height = texDatas.height;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttexture.image = images;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (texDatas.mipmapCount === 1) {\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\t\t\t\t\tif (onLoad) onLoad(texture);\n\t\t\t\t}, onProgress, onError);\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t}\n\n\tclass ImageLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tif (this.path !== undefined) url = this.path + url;\n\t\t\turl = this.manager.resolveURL(url);\n\t\t\tconst scope = this;\n\t\t\tconst cached = Cache.get(url);\n\n\t\t\tif (cached !== undefined) {\n\t\t\t\tscope.manager.itemStart(url);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (onLoad) onLoad(cached);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, 0);\n\t\t\t\treturn cached;\n\t\t\t}\n\n\t\t\tconst image = document.createElementNS('http://www.w3.org/1999/xhtml', 'img');\n\n\t\t\tfunction onImageLoad() {\n\t\t\t\timage.removeEventListener('load', onImageLoad, false);\n\t\t\t\timage.removeEventListener('error', onImageError, false);\n\t\t\t\tCache.add(url, this);\n\t\t\t\tif (onLoad) onLoad(this);\n\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t}\n\n\t\t\tfunction onImageError(event) {\n\t\t\t\timage.removeEventListener('load', onImageLoad, false);\n\t\t\t\timage.removeEventListener('error', onImageError, false);\n\t\t\t\tif (onError) onError(event);\n\t\t\t\tscope.manager.itemError(url);\n\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t}\n\n\t\t\timage.addEventListener('load', onImageLoad, false);\n\t\t\timage.addEventListener('error', onImageError, false);\n\n\t\t\tif (url.substr(0, 5) !== 'data:') {\n\t\t\t\tif (this.crossOrigin !== undefined) image.crossOrigin = this.crossOrigin;\n\t\t\t}\n\n\t\t\tscope.manager.itemStart(url);\n\t\t\timage.src = url;\n\t\t\treturn image;\n\t\t}\n\n\t}\n\n\tclass CubeTextureLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(urls, onLoad, onProgress, onError) {\n\t\t\tconst texture = new CubeTexture();\n\t\t\tconst loader = new ImageLoader(this.manager);\n\t\t\tloader.setCrossOrigin(this.crossOrigin);\n\t\t\tloader.setPath(this.path);\n\t\t\tlet loaded = 0;\n\n\t\t\tfunction loadTexture(i) {\n\t\t\t\tloader.load(urls[i], function (image) {\n\t\t\t\t\ttexture.images[i] = image;\n\t\t\t\t\tloaded++;\n\n\t\t\t\t\tif (loaded === 6) {\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\t\t\t\t\t\tif (onLoad) onLoad(texture);\n\t\t\t\t\t}\n\t\t\t\t}, undefined, onError);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < urls.length; ++i) {\n\t\t\t\tloadTexture(i);\n\t\t\t}\n\n\t\t\treturn texture;\n\t\t}\n\n\t}\n\n\t/**\n\t * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n\t *\n\t * Sub classes have to implement the parse() method which will be used in load().\n\t */\n\n\tclass DataTextureLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst texture = new DataTexture();\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setResponseType('arraybuffer');\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setWithCredentials(scope.withCredentials);\n\t\t\tloader.load(url, function (buffer) {\n\t\t\t\tconst texData = scope.parse(buffer);\n\t\t\t\tif (!texData) return;\n\n\t\t\t\tif (texData.image !== undefined) {\n\t\t\t\t\ttexture.image = texData.image;\n\t\t\t\t} else if (texData.data !== undefined) {\n\t\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\t\ttexture.image.data = texData.data;\n\t\t\t\t}\n\n\t\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\t\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\t\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\t\tif (texData.encoding !== undefined) {\n\t\t\t\t\ttexture.encoding = texData.encoding;\n\t\t\t\t}\n\n\t\t\t\tif (texData.flipY !== undefined) {\n\t\t\t\t\ttexture.flipY = texData.flipY;\n\t\t\t\t}\n\n\t\t\t\tif (texData.format !== undefined) {\n\t\t\t\t\ttexture.format = texData.format;\n\t\t\t\t}\n\n\t\t\t\tif (texData.type !== undefined) {\n\t\t\t\t\ttexture.type = texData.type;\n\t\t\t\t}\n\n\t\t\t\tif (texData.mipmaps !== undefined) {\n\t\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\t\t\t\t}\n\n\t\t\t\tif (texData.mipmapCount === 1) {\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t}\n\n\t\t\t\tif (texData.generateMipmaps !== undefined) {\n\t\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\t\t\t\tif (onLoad) onLoad(texture, texData);\n\t\t\t}, onProgress, onError);\n\t\t\treturn texture;\n\t\t}\n\n\t}\n\n\tclass TextureLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst texture = new Texture();\n\t\t\tconst loader = new ImageLoader(this.manager);\n\t\t\tloader.setCrossOrigin(this.crossOrigin);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.load(url, function (image) {\n\t\t\t\ttexture.image = image; // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\n\t\t\t\tconst isJPEG = url.search(/\\.jpe?g($|\\?)/i) > 0 || url.search(/^data\\:image\\/jpeg/) === 0;\n\t\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif (onLoad !== undefined) {\n\t\t\t\t\tonLoad(texture);\n\t\t\t\t}\n\t\t\t}, onProgress, onError);\n\t\t\treturn texture;\n\t\t}\n\n\t}\n\n\t/**************************************************************\n\t *\tCurved Path - a curve path is simply a array of connected\n\t *\tcurves, but retains the api of a curve\n\t **************************************************************/\n\n\tclass CurvePath extends Curve {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'CurvePath';\n\t\t\tthis.curves = [];\n\t\t\tthis.autoClose = false; // Automatically closes the path\n\t\t}\n\n\t\tadd(curve) {\n\t\t\tthis.curves.push(curve);\n\t\t}\n\n\t\tclosePath() {\n\t\t\t// Add a line curve if start and end of lines are not connected\n\t\t\tconst startPoint = this.curves[0].getPoint(0);\n\t\t\tconst endPoint = this.curves[this.curves.length - 1].getPoint(1);\n\n\t\t\tif (!startPoint.equals(endPoint)) {\n\t\t\t\tthis.curves.push(new LineCurve(endPoint, startPoint));\n\t\t\t}\n\t\t} // To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\n\t\tgetPoint(t) {\n\t\t\tconst d = t * this.getLength();\n\t\t\tconst curveLengths = this.getCurveLengths();\n\t\t\tlet i = 0; // To think about boundaries points.\n\n\t\t\twhile (i < curveLengths.length) {\n\t\t\t\tif (curveLengths[i] >= d) {\n\t\t\t\t\tconst diff = curveLengths[i] - d;\n\t\t\t\t\tconst curve = this.curves[i];\n\t\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\t\t\t\t\treturn curve.getPointAt(u);\n\t\t\t\t}\n\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\treturn null; // loop where sum != 0, sum > d , sum+1 1 && !points[points.length - 1].equals(points[0])) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\n\t\t\treturn points;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.curves = [];\n\n\t\t\tfor (let i = 0, l = source.curves.length; i < l; i++) {\n\t\t\t\tconst curve = source.curves[i];\n\t\t\t\tthis.curves.push(curve.clone());\n\t\t\t}\n\n\t\t\tthis.autoClose = source.autoClose;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.autoClose = this.autoClose;\n\t\t\tdata.curves = [];\n\n\t\t\tfor (let i = 0, l = this.curves.length; i < l; i++) {\n\t\t\t\tconst curve = this.curves[i];\n\t\t\t\tdata.curves.push(curve.toJSON());\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.autoClose = json.autoClose;\n\t\t\tthis.curves = [];\n\n\t\t\tfor (let i = 0, l = json.curves.length; i < l; i++) {\n\t\t\t\tconst curve = json.curves[i];\n\t\t\t\tthis.curves.push(new Curves[curve.type]().fromJSON(curve));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass Path extends CurvePath {\n\t\tconstructor(points) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Path';\n\t\t\tthis.currentPoint = new Vector2();\n\n\t\t\tif (points) {\n\t\t\t\tthis.setFromPoints(points);\n\t\t\t}\n\t\t}\n\n\t\tsetFromPoints(points) {\n\t\t\tthis.moveTo(points[0].x, points[0].y);\n\n\t\t\tfor (let i = 1, l = points.length; i < l; i++) {\n\t\t\t\tthis.lineTo(points[i].x, points[i].y);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tmoveTo(x, y) {\n\t\t\tthis.currentPoint.set(x, y); // TODO consider referencing vectors instead of copying?\n\n\t\t\treturn this;\n\t\t}\n\n\t\tlineTo(x, y) {\n\t\t\tconst curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n\t\t\tthis.curves.push(curve);\n\t\t\tthis.currentPoint.set(x, y);\n\t\t\treturn this;\n\t\t}\n\n\t\tquadraticCurveTo(aCPx, aCPy, aX, aY) {\n\t\t\tconst curve = new QuadraticBezierCurve(this.currentPoint.clone(), new Vector2(aCPx, aCPy), new Vector2(aX, aY));\n\t\t\tthis.curves.push(curve);\n\t\t\tthis.currentPoint.set(aX, aY);\n\t\t\treturn this;\n\t\t}\n\n\t\tbezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n\t\t\tconst curve = new CubicBezierCurve(this.currentPoint.clone(), new Vector2(aCP1x, aCP1y), new Vector2(aCP2x, aCP2y), new Vector2(aX, aY));\n\t\t\tthis.curves.push(curve);\n\t\t\tthis.currentPoint.set(aX, aY);\n\t\t\treturn this;\n\t\t}\n\n\t\tsplineThru(pts\n\t\t/*Array of Vector*/\n\t\t) {\n\t\t\tconst npts = [this.currentPoint.clone()].concat(pts);\n\t\t\tconst curve = new SplineCurve(npts);\n\t\t\tthis.curves.push(curve);\n\t\t\tthis.currentPoint.copy(pts[pts.length - 1]);\n\t\t\treturn this;\n\t\t}\n\n\t\tarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n\t\t\tconst x0 = this.currentPoint.x;\n\t\t\tconst y0 = this.currentPoint.y;\n\t\t\tthis.absarc(aX + x0, aY + y0, aRadius, aStartAngle, aEndAngle, aClockwise);\n\t\t\treturn this;\n\t\t}\n\n\t\tabsarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n\t\t\tthis.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n\t\t\treturn this;\n\t\t}\n\n\t\tellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n\t\t\tconst x0 = this.currentPoint.x;\n\t\t\tconst y0 = this.currentPoint.y;\n\t\t\tthis.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n\t\t\treturn this;\n\t\t}\n\n\t\tabsellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n\t\t\tconst curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n\n\t\t\tif (this.curves.length > 0) {\n\t\t\t\t// if a previous curve is present, attempt to join\n\t\t\t\tconst firstPoint = curve.getPoint(0);\n\n\t\t\t\tif (!firstPoint.equals(this.currentPoint)) {\n\t\t\t\t\tthis.lineTo(firstPoint.x, firstPoint.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.curves.push(curve);\n\t\t\tconst lastPoint = curve.getPoint(1);\n\t\t\tthis.currentPoint.copy(lastPoint);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.currentPoint.copy(source.currentPoint);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.currentPoint = this.currentPoint.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.currentPoint.fromArray(json.currentPoint);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass Shape extends Path {\n\t\tconstructor(points) {\n\t\t\tsuper(points);\n\t\t\tthis.uuid = generateUUID();\n\t\t\tthis.type = 'Shape';\n\t\t\tthis.holes = [];\n\t\t}\n\n\t\tgetPointsHoles(divisions) {\n\t\t\tconst holesPts = [];\n\n\t\t\tfor (let i = 0, l = this.holes.length; i < l; i++) {\n\t\t\t\tholesPts[i] = this.holes[i].getPoints(divisions);\n\t\t\t}\n\n\t\t\treturn holesPts;\n\t\t} // get points of shape and holes (keypoints based on segments parameter)\n\n\n\t\textractPoints(divisions) {\n\t\t\treturn {\n\t\t\t\tshape: this.getPoints(divisions),\n\t\t\t\tholes: this.getPointsHoles(divisions)\n\t\t\t};\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.holes = [];\n\n\t\t\tfor (let i = 0, l = source.holes.length; i < l; i++) {\n\t\t\t\tconst hole = source.holes[i];\n\t\t\t\tthis.holes.push(hole.clone());\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON();\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.holes = [];\n\n\t\t\tfor (let i = 0, l = this.holes.length; i < l; i++) {\n\t\t\t\tconst hole = this.holes[i];\n\t\t\t\tdata.holes.push(hole.toJSON());\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tsuper.fromJSON(json);\n\t\t\tthis.uuid = json.uuid;\n\t\t\tthis.holes = [];\n\n\t\t\tfor (let i = 0, l = json.holes.length; i < l; i++) {\n\t\t\t\tconst hole = json.holes[i];\n\t\t\t\tthis.holes.push(new Path().fromJSON(hole));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass Light extends Object3D {\n\t\tconstructor(color, intensity = 1) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Light';\n\t\t\tthis.color = new Color(color);\n\t\t\tthis.intensity = intensity;\n\t\t}\n\n\t\tdispose() {// Empty here in base class; some subclasses override.\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.color.copy(source.color);\n\t\t\tthis.intensity = source.intensity;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.object.color = this.color.getHex();\n\t\t\tdata.object.intensity = this.intensity;\n\t\t\tif (this.groundColor !== undefined) data.object.groundColor = this.groundColor.getHex();\n\t\t\tif (this.distance !== undefined) data.object.distance = this.distance;\n\t\t\tif (this.angle !== undefined) data.object.angle = this.angle;\n\t\t\tif (this.decay !== undefined) data.object.decay = this.decay;\n\t\t\tif (this.penumbra !== undefined) data.object.penumbra = this.penumbra;\n\t\t\tif (this.shadow !== undefined) data.object.shadow = this.shadow.toJSON();\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tLight.prototype.isLight = true;\n\n\tclass HemisphereLight extends Light {\n\t\tconstructor(skyColor, groundColor, intensity) {\n\t\t\tsuper(skyColor, intensity);\n\t\t\tthis.type = 'HemisphereLight';\n\t\t\tthis.position.copy(Object3D.DefaultUp);\n\t\t\tthis.updateMatrix();\n\t\t\tthis.groundColor = new Color(groundColor);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tLight.prototype.copy.call(this, source);\n\t\t\tthis.groundColor.copy(source.groundColor);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tHemisphereLight.prototype.isHemisphereLight = true;\n\n\tconst _projScreenMatrix$1 = /*@__PURE__*/new Matrix4();\n\n\tconst _lightPositionWorld$1 = /*@__PURE__*/new Vector3();\n\n\tconst _lookTarget$1 = /*@__PURE__*/new Vector3();\n\n\tclass LightShadow {\n\t\tconstructor(camera) {\n\t\t\tthis.camera = camera;\n\t\t\tthis.bias = 0;\n\t\t\tthis.normalBias = 0;\n\t\t\tthis.radius = 1;\n\t\t\tthis.blurSamples = 8;\n\t\t\tthis.mapSize = new Vector2(512, 512);\n\t\t\tthis.map = null;\n\t\t\tthis.mapPass = null;\n\t\t\tthis.matrix = new Matrix4();\n\t\t\tthis.autoUpdate = true;\n\t\t\tthis.needsUpdate = false;\n\t\t\tthis._frustum = new Frustum();\n\t\t\tthis._frameExtents = new Vector2(1, 1);\n\t\t\tthis._viewportCount = 1;\n\t\t\tthis._viewports = [new Vector4(0, 0, 1, 1)];\n\t\t}\n\n\t\tgetViewportCount() {\n\t\t\treturn this._viewportCount;\n\t\t}\n\n\t\tgetFrustum() {\n\t\t\treturn this._frustum;\n\t\t}\n\n\t\tupdateMatrices(light) {\n\t\t\tconst shadowCamera = this.camera;\n\t\t\tconst shadowMatrix = this.matrix;\n\n\t\t\t_lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n\n\t\t\tshadowCamera.position.copy(_lightPositionWorld$1);\n\n\t\t\t_lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n\n\t\t\tshadowCamera.lookAt(_lookTarget$1);\n\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t_projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n\n\t\t\tthis._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n\n\t\t\tshadowMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n\t\t\tshadowMatrix.multiply(shadowCamera.projectionMatrix);\n\t\t\tshadowMatrix.multiply(shadowCamera.matrixWorldInverse);\n\t\t}\n\n\t\tgetViewport(viewportIndex) {\n\t\t\treturn this._viewports[viewportIndex];\n\t\t}\n\n\t\tgetFrameExtents() {\n\t\t\treturn this._frameExtents;\n\t\t}\n\n\t\tdispose() {\n\t\t\tif (this.map) {\n\t\t\t\tthis.map.dispose();\n\t\t\t}\n\n\t\t\tif (this.mapPass) {\n\t\t\t\tthis.mapPass.dispose();\n\t\t\t}\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tthis.camera = source.camera.clone();\n\t\t\tthis.bias = source.bias;\n\t\t\tthis.radius = source.radius;\n\t\t\tthis.mapSize.copy(source.mapSize);\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst object = {};\n\t\t\tif (this.bias !== 0) object.bias = this.bias;\n\t\t\tif (this.normalBias !== 0) object.normalBias = this.normalBias;\n\t\t\tif (this.radius !== 1) object.radius = this.radius;\n\t\t\tif (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray();\n\t\t\tobject.camera = this.camera.toJSON(false).object;\n\t\t\tdelete object.camera.matrix;\n\t\t\treturn object;\n\t\t}\n\n\t}\n\n\tclass SpotLightShadow extends LightShadow {\n\t\tconstructor() {\n\t\t\tsuper(new PerspectiveCamera(50, 1, 0.5, 500));\n\t\t\tthis.focus = 1;\n\t\t}\n\n\t\tupdateMatrices(light) {\n\t\t\tconst camera = this.camera;\n\t\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\t\tconst far = light.distance || camera.far;\n\n\t\t\tif (fov !== camera.fov || aspect !== camera.aspect || far !== camera.far) {\n\t\t\t\tcamera.fov = fov;\n\t\t\t\tcamera.aspect = aspect;\n\t\t\t\tcamera.far = far;\n\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t}\n\n\t\t\tsuper.updateMatrices(light);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.focus = source.focus;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tSpotLightShadow.prototype.isSpotLightShadow = true;\n\n\tclass SpotLight extends Light {\n\t\tconstructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) {\n\t\t\tsuper(color, intensity);\n\t\t\tthis.type = 'SpotLight';\n\t\t\tthis.position.copy(Object3D.DefaultUp);\n\t\t\tthis.updateMatrix();\n\t\t\tthis.target = new Object3D();\n\t\t\tthis.distance = distance;\n\t\t\tthis.angle = angle;\n\t\t\tthis.penumbra = penumbra;\n\t\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\t\tthis.shadow = new SpotLightShadow();\n\t\t}\n\n\t\tget power() {\n\t\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\t\treturn this.intensity * Math.PI;\n\t\t}\n\n\t\tset power(power) {\n\t\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\t\tthis.intensity = power / Math.PI;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.shadow.dispose();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.angle = source.angle;\n\t\t\tthis.penumbra = source.penumbra;\n\t\t\tthis.decay = source.decay;\n\t\t\tthis.target = source.target.clone();\n\t\t\tthis.shadow = source.shadow.clone();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tSpotLight.prototype.isSpotLight = true;\n\n\tconst _projScreenMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _lightPositionWorld = /*@__PURE__*/new Vector3();\n\n\tconst _lookTarget = /*@__PURE__*/new Vector3();\n\n\tclass PointLightShadow extends LightShadow {\n\t\tconstructor() {\n\t\t\tsuper(new PerspectiveCamera(90, 1, 0.5, 500));\n\t\t\tthis._frameExtents = new Vector2(4, 2);\n\t\t\tthis._viewportCount = 6;\n\t\t\tthis._viewports = [// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t//\txzXZ\n\t\t\t//\t y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\t\t\t// positive X\n\t\t\tnew Vector4(2, 1, 1, 1), // negative X\n\t\t\tnew Vector4(0, 1, 1, 1), // positive Z\n\t\t\tnew Vector4(3, 1, 1, 1), // negative Z\n\t\t\tnew Vector4(1, 1, 1, 1), // positive Y\n\t\t\tnew Vector4(3, 0, 1, 1), // negative Y\n\t\t\tnew Vector4(1, 0, 1, 1)];\n\t\t\tthis._cubeDirections = [new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1), new Vector3(0, 1, 0), new Vector3(0, -1, 0)];\n\t\t\tthis._cubeUps = [new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1)];\n\t\t}\n\n\t\tupdateMatrices(light, viewportIndex = 0) {\n\t\t\tconst camera = this.camera;\n\t\t\tconst shadowMatrix = this.matrix;\n\t\t\tconst far = light.distance || camera.far;\n\n\t\t\tif (far !== camera.far) {\n\t\t\t\tcamera.far = far;\n\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t}\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n\n\t\t\tcamera.position.copy(_lightPositionWorld);\n\n\t\t\t_lookTarget.copy(camera.position);\n\n\t\t\t_lookTarget.add(this._cubeDirections[viewportIndex]);\n\n\t\t\tcamera.up.copy(this._cubeUps[viewportIndex]);\n\t\t\tcamera.lookAt(_lookTarget);\n\t\t\tcamera.updateMatrixWorld();\n\t\t\tshadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n\n\t\t\t_projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n\n\t\t\tthis._frustum.setFromProjectionMatrix(_projScreenMatrix);\n\t\t}\n\n\t}\n\n\tPointLightShadow.prototype.isPointLightShadow = true;\n\n\tclass PointLight extends Light {\n\t\tconstructor(color, intensity, distance = 0, decay = 1) {\n\t\t\tsuper(color, intensity);\n\t\t\tthis.type = 'PointLight';\n\t\t\tthis.distance = distance;\n\t\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\t\tthis.shadow = new PointLightShadow();\n\t\t}\n\n\t\tget power() {\n\t\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\t\treturn this.intensity * 4 * Math.PI;\n\t\t}\n\n\t\tset power(power) {\n\t\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\t\tthis.intensity = power / (4 * Math.PI);\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.shadow.dispose();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.decay = source.decay;\n\t\t\tthis.shadow = source.shadow.clone();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tPointLight.prototype.isPointLight = true;\n\n\tclass DirectionalLightShadow extends LightShadow {\n\t\tconstructor() {\n\t\t\tsuper(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n\t\t}\n\n\t}\n\n\tDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\n\tclass DirectionalLight extends Light {\n\t\tconstructor(color, intensity) {\n\t\t\tsuper(color, intensity);\n\t\t\tthis.type = 'DirectionalLight';\n\t\t\tthis.position.copy(Object3D.DefaultUp);\n\t\t\tthis.updateMatrix();\n\t\t\tthis.target = new Object3D();\n\t\t\tthis.shadow = new DirectionalLightShadow();\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.shadow.dispose();\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.target = source.target.clone();\n\t\t\tthis.shadow = source.shadow.clone();\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tDirectionalLight.prototype.isDirectionalLight = true;\n\n\tclass AmbientLight extends Light {\n\t\tconstructor(color, intensity) {\n\t\t\tsuper(color, intensity);\n\t\t\tthis.type = 'AmbientLight';\n\t\t}\n\n\t}\n\n\tAmbientLight.prototype.isAmbientLight = true;\n\n\tclass RectAreaLight extends Light {\n\t\tconstructor(color, intensity, width = 10, height = 10) {\n\t\t\tsuper(color, intensity);\n\t\t\tthis.type = 'RectAreaLight';\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t}\n\n\t\tget power() {\n\t\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\t\treturn this.intensity * this.width * this.height * Math.PI;\n\t\t}\n\n\t\tset power(power) {\n\t\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\t\tthis.intensity = power / (this.width * this.height * Math.PI);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.object.width = this.width;\n\t\t\tdata.object.height = this.height;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tRectAreaLight.prototype.isRectAreaLight = true;\n\n\t/**\n\t * Primary reference:\n\t *\t https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\t *\n\t * Secondary reference:\n\t *\t https://www.ppsloan.org/publications/StupidSH36.pdf\n\t */\n\t// 3-band SH defined by 9 coefficients\n\n\tclass SphericalHarmonics3 {\n\t\tconstructor() {\n\t\t\tthis.coefficients = [];\n\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients.push(new Vector3());\n\t\t\t}\n\t\t}\n\n\t\tset(coefficients) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].copy(coefficients[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tzero() {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].set(0, 0, 0);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // get the radiance in the direction of the normal\n\t\t// target is a Vector3\n\n\n\t\tgetAt(normal, target) {\n\t\t\t// normal is assumed to be unit length\n\t\t\tconst x = normal.x,\n\t\t\t\t\t\ty = normal.y,\n\t\t\t\t\t\tz = normal.z;\n\t\t\tconst coeff = this.coefficients; // band 0\n\n\t\t\ttarget.copy(coeff[0]).multiplyScalar(0.282095); // band 1\n\n\t\t\ttarget.addScaledVector(coeff[1], 0.488603 * y);\n\t\t\ttarget.addScaledVector(coeff[2], 0.488603 * z);\n\t\t\ttarget.addScaledVector(coeff[3], 0.488603 * x); // band 2\n\n\t\t\ttarget.addScaledVector(coeff[4], 1.092548 * (x * y));\n\t\t\ttarget.addScaledVector(coeff[5], 1.092548 * (y * z));\n\t\t\ttarget.addScaledVector(coeff[6], 0.315392 * (3.0 * z * z - 1.0));\n\t\t\ttarget.addScaledVector(coeff[7], 1.092548 * (x * z));\n\t\t\ttarget.addScaledVector(coeff[8], 0.546274 * (x * x - y * y));\n\t\t\treturn target;\n\t\t} // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t\t// target is a Vector3\n\t\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\n\n\t\tgetIrradianceAt(normal, target) {\n\t\t\t// normal is assumed to be unit length\n\t\t\tconst x = normal.x,\n\t\t\t\t\t\ty = normal.y,\n\t\t\t\t\t\tz = normal.z;\n\t\t\tconst coeff = this.coefficients; // band 0\n\n\t\t\ttarget.copy(coeff[0]).multiplyScalar(0.886227); // π * 0.282095\n\t\t\t// band 1\n\n\t\t\ttarget.addScaledVector(coeff[1], 2.0 * 0.511664 * y); // ( 2 * π / 3 ) * 0.488603\n\n\t\t\ttarget.addScaledVector(coeff[2], 2.0 * 0.511664 * z);\n\t\t\ttarget.addScaledVector(coeff[3], 2.0 * 0.511664 * x); // band 2\n\n\t\t\ttarget.addScaledVector(coeff[4], 2.0 * 0.429043 * x * y); // ( π / 4 ) * 1.092548\n\n\t\t\ttarget.addScaledVector(coeff[5], 2.0 * 0.429043 * y * z);\n\t\t\ttarget.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708); // ( π / 4 ) * 0.315392 * 3\n\n\t\t\ttarget.addScaledVector(coeff[7], 2.0 * 0.429043 * x * z);\n\t\t\ttarget.addScaledVector(coeff[8], 0.429043 * (x * x - y * y)); // ( π / 4 ) * 0.546274\n\n\t\t\treturn target;\n\t\t}\n\n\t\tadd(sh) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].add(sh.coefficients[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\taddScaledSH(sh, s) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].addScaledVector(sh.coefficients[i], s);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tscale(s) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].multiplyScalar(s);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tlerp(sh, alpha) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tthis.coefficients[i].lerp(sh.coefficients[i], alpha);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(sh) {\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tif (!this.coefficients[i].equals(sh.coefficients[i])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcopy(sh) {\n\t\t\treturn this.set(sh.coefficients);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tfromArray(array, offset = 0) {\n\t\t\tconst coefficients = this.coefficients;\n\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tcoefficients[i].fromArray(array, offset + i * 3);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\ttoArray(array = [], offset = 0) {\n\t\t\tconst coefficients = this.coefficients;\n\n\t\t\tfor (let i = 0; i < 9; i++) {\n\t\t\t\tcoefficients[i].toArray(array, offset + i * 3);\n\t\t\t}\n\n\t\t\treturn array;\n\t\t} // evaluate the basis functions\n\t\t// shBasis is an Array[ 9 ]\n\n\n\t\tstatic getBasisAt(normal, shBasis) {\n\t\t\t// normal is assumed to be unit length\n\t\t\tconst x = normal.x,\n\t\t\t\t\t\ty = normal.y,\n\t\t\t\t\t\tz = normal.z; // band 0\n\n\t\t\tshBasis[0] = 0.282095; // band 1\n\n\t\t\tshBasis[1] = 0.488603 * y;\n\t\t\tshBasis[2] = 0.488603 * z;\n\t\t\tshBasis[3] = 0.488603 * x; // band 2\n\n\t\t\tshBasis[4] = 1.092548 * x * y;\n\t\t\tshBasis[5] = 1.092548 * y * z;\n\t\t\tshBasis[6] = 0.315392 * (3 * z * z - 1);\n\t\t\tshBasis[7] = 1.092548 * x * z;\n\t\t\tshBasis[8] = 0.546274 * (x * x - y * y);\n\t\t}\n\n\t}\n\n\tSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\n\tclass LightProbe extends Light {\n\t\tconstructor(sh = new SphericalHarmonics3(), intensity = 1) {\n\t\t\tsuper(undefined, intensity);\n\t\t\tthis.sh = sh;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.sh.copy(source.sh);\n\t\t\treturn this;\n\t\t}\n\n\t\tfromJSON(json) {\n\t\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\n\t\t\tthis.sh.fromArray(json.sh);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON(meta) {\n\t\t\tconst data = super.toJSON(meta);\n\t\t\tdata.object.sh = this.sh.toArray();\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tLightProbe.prototype.isLightProbe = true;\n\n\tclass MaterialLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t\tthis.textures = {};\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst loader = new FileLoader(scope.manager);\n\t\t\tloader.setPath(scope.path);\n\t\t\tloader.setRequestHeader(scope.requestHeader);\n\t\t\tloader.setWithCredentials(scope.withCredentials);\n\t\t\tloader.load(url, function (text) {\n\t\t\t\ttry {\n\t\t\t\t\tonLoad(scope.parse(JSON.parse(text)));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (onError) {\n\t\t\t\t\t\tonError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t}\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t\tparse(json) {\n\t\t\tconst textures = this.textures;\n\n\t\t\tfunction getTexture(name) {\n\t\t\t\tif (textures[name] === undefined) {\n\t\t\t\t\tconsole.warn('THREE.MaterialLoader: Undefined texture', name);\n\t\t\t\t}\n\n\t\t\t\treturn textures[name];\n\t\t\t}\n\n\t\t\tconst material = new Materials[json.type]();\n\t\t\tif (json.uuid !== undefined) material.uuid = json.uuid;\n\t\t\tif (json.name !== undefined) material.name = json.name;\n\t\t\tif (json.color !== undefined && material.color !== undefined) material.color.setHex(json.color);\n\t\t\tif (json.roughness !== undefined) material.roughness = json.roughness;\n\t\t\tif (json.metalness !== undefined) material.metalness = json.metalness;\n\t\t\tif (json.sheenTint !== undefined) material.sheenTint = new Color().setHex(json.sheenTint);\n\t\t\tif (json.emissive !== undefined && material.emissive !== undefined) material.emissive.setHex(json.emissive);\n\t\t\tif (json.specular !== undefined && material.specular !== undefined) material.specular.setHex(json.specular);\n\t\t\tif (json.specularIntensity !== undefined) material.specularIntensity = json.specularIntensity;\n\t\t\tif (json.specularTint !== undefined && material.specularTint !== undefined) material.specularTint.setHex(json.specularTint);\n\t\t\tif (json.shininess !== undefined) material.shininess = json.shininess;\n\t\t\tif (json.clearcoat !== undefined) material.clearcoat = json.clearcoat;\n\t\t\tif (json.clearcoatRoughness !== undefined) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\t\tif (json.transmission !== undefined) material.transmission = json.transmission;\n\t\t\tif (json.thickness !== undefined) material.thickness = json.thickness;\n\t\t\tif (json.attenuationDistance !== undefined) material.attenuationDistance = json.attenuationDistance;\n\t\t\tif (json.attenuationTint !== undefined && material.attenuationTint !== undefined) material.attenuationTint.setHex(json.attenuationTint);\n\t\t\tif (json.fog !== undefined) material.fog = json.fog;\n\t\t\tif (json.flatShading !== undefined) material.flatShading = json.flatShading;\n\t\t\tif (json.blending !== undefined) material.blending = json.blending;\n\t\t\tif (json.combine !== undefined) material.combine = json.combine;\n\t\t\tif (json.side !== undefined) material.side = json.side;\n\t\t\tif (json.shadowSide !== undefined) material.shadowSide = json.shadowSide;\n\t\t\tif (json.opacity !== undefined) material.opacity = json.opacity;\n\t\t\tif (json.format !== undefined) material.format = json.format;\n\t\t\tif (json.transparent !== undefined) material.transparent = json.transparent;\n\t\t\tif (json.alphaTest !== undefined) material.alphaTest = json.alphaTest;\n\t\t\tif (json.depthTest !== undefined) material.depthTest = json.depthTest;\n\t\t\tif (json.depthWrite !== undefined) material.depthWrite = json.depthWrite;\n\t\t\tif (json.colorWrite !== undefined) material.colorWrite = json.colorWrite;\n\t\t\tif (json.stencilWrite !== undefined) material.stencilWrite = json.stencilWrite;\n\t\t\tif (json.stencilWriteMask !== undefined) material.stencilWriteMask = json.stencilWriteMask;\n\t\t\tif (json.stencilFunc !== undefined) material.stencilFunc = json.stencilFunc;\n\t\t\tif (json.stencilRef !== undefined) material.stencilRef = json.stencilRef;\n\t\t\tif (json.stencilFuncMask !== undefined) material.stencilFuncMask = json.stencilFuncMask;\n\t\t\tif (json.stencilFail !== undefined) material.stencilFail = json.stencilFail;\n\t\t\tif (json.stencilZFail !== undefined) material.stencilZFail = json.stencilZFail;\n\t\t\tif (json.stencilZPass !== undefined) material.stencilZPass = json.stencilZPass;\n\t\t\tif (json.wireframe !== undefined) material.wireframe = json.wireframe;\n\t\t\tif (json.wireframeLinewidth !== undefined) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\t\tif (json.wireframeLinecap !== undefined) material.wireframeLinecap = json.wireframeLinecap;\n\t\t\tif (json.wireframeLinejoin !== undefined) material.wireframeLinejoin = json.wireframeLinejoin;\n\t\t\tif (json.rotation !== undefined) material.rotation = json.rotation;\n\t\t\tif (json.linewidth !== 1) material.linewidth = json.linewidth;\n\t\t\tif (json.dashSize !== undefined) material.dashSize = json.dashSize;\n\t\t\tif (json.gapSize !== undefined) material.gapSize = json.gapSize;\n\t\t\tif (json.scale !== undefined) material.scale = json.scale;\n\t\t\tif (json.polygonOffset !== undefined) material.polygonOffset = json.polygonOffset;\n\t\t\tif (json.polygonOffsetFactor !== undefined) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\t\tif (json.polygonOffsetUnits !== undefined) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\t\t\tif (json.dithering !== undefined) material.dithering = json.dithering;\n\t\t\tif (json.alphaToCoverage !== undefined) material.alphaToCoverage = json.alphaToCoverage;\n\t\t\tif (json.premultipliedAlpha !== undefined) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\t\tif (json.visible !== undefined) material.visible = json.visible;\n\t\t\tif (json.toneMapped !== undefined) material.toneMapped = json.toneMapped;\n\t\t\tif (json.userData !== undefined) material.userData = json.userData;\n\n\t\t\tif (json.vertexColors !== undefined) {\n\t\t\t\tif (typeof json.vertexColors === 'number') {\n\t\t\t\t\tmaterial.vertexColors = json.vertexColors > 0 ? true : false;\n\t\t\t\t} else {\n\t\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\t\t\t\t}\n\t\t\t} // Shader Material\n\n\n\t\t\tif (json.uniforms !== undefined) {\n\t\t\t\tfor (const name in json.uniforms) {\n\t\t\t\t\tconst uniform = json.uniforms[name];\n\t\t\t\t\tmaterial.uniforms[name] = {};\n\n\t\t\t\t\tswitch (uniform.type) {\n\t\t\t\t\t\tcase 't':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = getTexture(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'c':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Color().setHex(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Vector2().fromArray(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Vector3().fromArray(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Vector4().fromArray(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmaterial.uniforms[name].value = uniform.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (json.defines !== undefined) material.defines = json.defines;\n\t\t\tif (json.vertexShader !== undefined) material.vertexShader = json.vertexShader;\n\t\t\tif (json.fragmentShader !== undefined) material.fragmentShader = json.fragmentShader;\n\n\t\t\tif (json.extensions !== undefined) {\n\t\t\t\tfor (const key in json.extensions) {\n\t\t\t\t\tmaterial.extensions[key] = json.extensions[key];\n\t\t\t\t}\n\t\t\t} // Deprecated\n\n\n\t\t\tif (json.shading !== undefined) material.flatShading = json.shading === 1; // THREE.FlatShading\n\t\t\t// for PointsMaterial\n\n\t\t\tif (json.size !== undefined) material.size = json.size;\n\t\t\tif (json.sizeAttenuation !== undefined) material.sizeAttenuation = json.sizeAttenuation; // maps\n\n\t\t\tif (json.map !== undefined) material.map = getTexture(json.map);\n\t\t\tif (json.matcap !== undefined) material.matcap = getTexture(json.matcap);\n\t\t\tif (json.alphaMap !== undefined) material.alphaMap = getTexture(json.alphaMap);\n\t\t\tif (json.bumpMap !== undefined) material.bumpMap = getTexture(json.bumpMap);\n\t\t\tif (json.bumpScale !== undefined) material.bumpScale = json.bumpScale;\n\t\t\tif (json.normalMap !== undefined) material.normalMap = getTexture(json.normalMap);\n\t\t\tif (json.normalMapType !== undefined) material.normalMapType = json.normalMapType;\n\n\t\t\tif (json.normalScale !== undefined) {\n\t\t\t\tlet normalScale = json.normalScale;\n\n\t\t\t\tif (Array.isArray(normalScale) === false) {\n\t\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\t\t\t\t\tnormalScale = [normalScale, normalScale];\n\t\t\t\t}\n\n\t\t\t\tmaterial.normalScale = new Vector2().fromArray(normalScale);\n\t\t\t}\n\n\t\t\tif (json.displacementMap !== undefined) material.displacementMap = getTexture(json.displacementMap);\n\t\t\tif (json.displacementScale !== undefined) material.displacementScale = json.displacementScale;\n\t\t\tif (json.displacementBias !== undefined) material.displacementBias = json.displacementBias;\n\t\t\tif (json.roughnessMap !== undefined) material.roughnessMap = getTexture(json.roughnessMap);\n\t\t\tif (json.metalnessMap !== undefined) material.metalnessMap = getTexture(json.metalnessMap);\n\t\t\tif (json.emissiveMap !== undefined) material.emissiveMap = getTexture(json.emissiveMap);\n\t\t\tif (json.emissiveIntensity !== undefined) material.emissiveIntensity = json.emissiveIntensity;\n\t\t\tif (json.specularMap !== undefined) material.specularMap = getTexture(json.specularMap);\n\t\t\tif (json.specularIntensityMap !== undefined) material.specularIntensityMap = getTexture(json.specularIntensityMap);\n\t\t\tif (json.specularTintMap !== undefined) material.specularTintMap = getTexture(json.specularTintMap);\n\t\t\tif (json.envMap !== undefined) material.envMap = getTexture(json.envMap);\n\t\t\tif (json.envMapIntensity !== undefined) material.envMapIntensity = json.envMapIntensity;\n\t\t\tif (json.reflectivity !== undefined) material.reflectivity = json.reflectivity;\n\t\t\tif (json.refractionRatio !== undefined) material.refractionRatio = json.refractionRatio;\n\t\t\tif (json.lightMap !== undefined) material.lightMap = getTexture(json.lightMap);\n\t\t\tif (json.lightMapIntensity !== undefined) material.lightMapIntensity = json.lightMapIntensity;\n\t\t\tif (json.aoMap !== undefined) material.aoMap = getTexture(json.aoMap);\n\t\t\tif (json.aoMapIntensity !== undefined) material.aoMapIntensity = json.aoMapIntensity;\n\t\t\tif (json.gradientMap !== undefined) material.gradientMap = getTexture(json.gradientMap);\n\t\t\tif (json.clearcoatMap !== undefined) material.clearcoatMap = getTexture(json.clearcoatMap);\n\t\t\tif (json.clearcoatRoughnessMap !== undefined) material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n\t\t\tif (json.clearcoatNormalMap !== undefined) material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n\t\t\tif (json.clearcoatNormalScale !== undefined) material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n\t\t\tif (json.transmissionMap !== undefined) material.transmissionMap = getTexture(json.transmissionMap);\n\t\t\tif (json.thicknessMap !== undefined) material.thicknessMap = getTexture(json.thicknessMap);\n\t\t\treturn material;\n\t\t}\n\n\t\tsetTextures(value) {\n\t\t\tthis.textures = value;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass LoaderUtils {\n\t\tstatic decodeText(array) {\n\t\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\t\treturn new TextDecoder().decode(array);\n\t\t\t} // Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\n\t\t\tlet s = '';\n\n\t\t\tfor (let i = 0, il = array.length; i < il; i++) {\n\t\t\t\t// Implicitly assumes little-endian.\n\t\t\t\ts += String.fromCharCode(array[i]);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// merges multi-byte utf-8 characters.\n\t\t\t\treturn decodeURIComponent(escape(s));\n\t\t\t} catch (e) {\n\t\t\t\t// see #16358\n\t\t\t\treturn s;\n\t\t\t}\n\t\t}\n\n\t\tstatic extractUrlBase(url) {\n\t\t\tconst index = url.lastIndexOf('/');\n\t\t\tif (index === -1) return './';\n\t\t\treturn url.substr(0, index + 1);\n\t\t}\n\n\t}\n\n\tclass InstancedBufferGeometry extends BufferGeometry {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'InstancedBufferGeometry';\n\t\t\tthis.instanceCount = Infinity;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.instanceCount = source.instanceCount;\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\ttoJSON() {\n\t\t\tconst data = super.toJSON(this);\n\t\t\tdata.instanceCount = this.instanceCount;\n\t\t\tdata.isInstancedBufferGeometry = true;\n\t\t\treturn data;\n\t\t}\n\n\t}\n\n\tInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\n\tclass BufferGeometryLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst loader = new FileLoader(scope.manager);\n\t\t\tloader.setPath(scope.path);\n\t\t\tloader.setRequestHeader(scope.requestHeader);\n\t\t\tloader.setWithCredentials(scope.withCredentials);\n\t\t\tloader.load(url, function (text) {\n\t\t\t\ttry {\n\t\t\t\t\tonLoad(scope.parse(JSON.parse(text)));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (onError) {\n\t\t\t\t\t\tonError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t}\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t\tparse(json) {\n\t\t\tconst interleavedBufferMap = {};\n\t\t\tconst arrayBufferMap = {};\n\n\t\t\tfunction getInterleavedBuffer(json, uuid) {\n\t\t\t\tif (interleavedBufferMap[uuid] !== undefined) return interleavedBufferMap[uuid];\n\t\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\t\tconst interleavedBuffer = interleavedBuffers[uuid];\n\t\t\t\tconst buffer = getArrayBuffer(json, interleavedBuffer.buffer);\n\t\t\t\tconst array = getTypedArray(interleavedBuffer.type, buffer);\n\t\t\t\tconst ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n\t\t\t\tib.uuid = interleavedBuffer.uuid;\n\t\t\t\tinterleavedBufferMap[uuid] = ib;\n\t\t\t\treturn ib;\n\t\t\t}\n\n\t\t\tfunction getArrayBuffer(json, uuid) {\n\t\t\t\tif (arrayBufferMap[uuid] !== undefined) return arrayBufferMap[uuid];\n\t\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\t\tconst arrayBuffer = arrayBuffers[uuid];\n\t\t\t\tconst ab = new Uint32Array(arrayBuffer).buffer;\n\t\t\t\tarrayBufferMap[uuid] = ab;\n\t\t\t\treturn ab;\n\t\t\t}\n\n\t\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\t\t\tconst index = json.data.index;\n\n\t\t\tif (index !== undefined) {\n\t\t\t\tconst typedArray = getTypedArray(index.type, index.array);\n\t\t\t\tgeometry.setIndex(new BufferAttribute(typedArray, 1));\n\t\t\t}\n\n\t\t\tconst attributes = json.data.attributes;\n\n\t\t\tfor (const key in attributes) {\n\t\t\t\tconst attribute = attributes[key];\n\t\t\t\tlet bufferAttribute;\n\n\t\t\t\tif (attribute.isInterleavedBufferAttribute) {\n\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n\t\t\t\t} else {\n\t\t\t\t\tconst typedArray = getTypedArray(attribute.type, attribute.array);\n\t\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\t\tbufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n\t\t\t\t}\n\n\t\t\t\tif (attribute.name !== undefined) bufferAttribute.name = attribute.name;\n\t\t\t\tif (attribute.usage !== undefined) bufferAttribute.setUsage(attribute.usage);\n\n\t\t\t\tif (attribute.updateRange !== undefined) {\n\t\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute(key, bufferAttribute);\n\t\t\t}\n\n\t\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\t\tif (morphAttributes) {\n\t\t\t\tfor (const key in morphAttributes) {\n\t\t\t\t\tconst attributeArray = morphAttributes[key];\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor (let i = 0, il = attributeArray.length; i < il; i++) {\n\t\t\t\t\t\tconst attribute = attributeArray[i];\n\t\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\t\tif (attribute.isInterleavedBufferAttribute) {\n\t\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n\t\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst typedArray = getTypedArray(attribute.type, attribute.array);\n\t\t\t\t\t\t\tbufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (attribute.name !== undefined) bufferAttribute.name = attribute.name;\n\t\t\t\t\t\tarray.push(bufferAttribute);\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.morphAttributes[key] = array;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\t\tif (morphTargetsRelative) {\n\t\t\t\tgeometry.morphTargetsRelative = true;\n\t\t\t}\n\n\t\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\t\tif (groups !== undefined) {\n\t\t\t\tfor (let i = 0, n = groups.length; i !== n; ++i) {\n\t\t\t\t\tconst group = groups[i];\n\t\t\t\t\tgeometry.addGroup(group.start, group.count, group.materialIndex);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\t\tif (boundingSphere !== undefined) {\n\t\t\t\tconst center = new Vector3();\n\n\t\t\t\tif (boundingSphere.center !== undefined) {\n\t\t\t\t\tcenter.fromArray(boundingSphere.center);\n\t\t\t\t}\n\n\t\t\t\tgeometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n\t\t\t}\n\n\t\t\tif (json.name) geometry.name = json.name;\n\t\t\tif (json.userData) geometry.userData = json.userData;\n\t\t\treturn geometry;\n\t\t}\n\n\t}\n\n\tclass ObjectLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst path = this.path === '' ? LoaderUtils.extractUrlBase(url) : this.path;\n\t\t\tthis.resourcePath = this.resourcePath || path;\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(this.withCredentials);\n\t\t\tloader.load(url, function (text) {\n\t\t\t\tlet json = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tjson = JSON.parse(text);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (onError !== undefined) onError(error);\n\t\t\t\t\tconsole.error('THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst metadata = json.metadata;\n\n\t\t\t\tif (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') {\n\t\t\t\t\tconsole.error('THREE.ObjectLoader: Can\\'t load ' + url);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tscope.parse(json, onLoad);\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t\tasync loadAsync(url, onProgress) {\n\t\t\tconst scope = this;\n\t\t\tconst path = this.path === '' ? LoaderUtils.extractUrlBase(url) : this.path;\n\t\t\tthis.resourcePath = this.resourcePath || path;\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(this.withCredentials);\n\t\t\tconst text = await loader.loadAsync(url, onProgress);\n\t\t\tconst json = JSON.parse(text);\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') {\n\t\t\t\tthrow new Error('THREE.ObjectLoader: Can\\'t load ' + url);\n\t\t\t}\n\n\t\t\treturn await scope.parseAsync(json);\n\t\t}\n\n\t\tparse(json, onLoad) {\n\t\t\tconst animations = this.parseAnimations(json.animations);\n\t\t\tconst shapes = this.parseShapes(json.shapes);\n\t\t\tconst geometries = this.parseGeometries(json.geometries, shapes);\n\t\t\tconst images = this.parseImages(json.images, function () {\n\t\t\t\tif (onLoad !== undefined) onLoad(object);\n\t\t\t});\n\t\t\tconst textures = this.parseTextures(json.textures, images);\n\t\t\tconst materials = this.parseMaterials(json.materials, textures);\n\t\t\tconst object = this.parseObject(json.object, geometries, materials, textures, animations);\n\t\t\tconst skeletons = this.parseSkeletons(json.skeletons, object);\n\t\t\tthis.bindSkeletons(object, skeletons); //\n\n\t\t\tif (onLoad !== undefined) {\n\t\t\t\tlet hasImages = false;\n\n\t\t\t\tfor (const uuid in images) {\n\t\t\t\t\tif (images[uuid] instanceof HTMLImageElement) {\n\t\t\t\t\t\thasImages = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasImages === false) onLoad(object);\n\t\t\t}\n\n\t\t\treturn object;\n\t\t}\n\n\t\tasync parseAsync(json) {\n\t\t\tconst animations = this.parseAnimations(json.animations);\n\t\t\tconst shapes = this.parseShapes(json.shapes);\n\t\t\tconst geometries = this.parseGeometries(json.geometries, shapes);\n\t\t\tconst images = await this.parseImagesAsync(json.images);\n\t\t\tconst textures = this.parseTextures(json.textures, images);\n\t\t\tconst materials = this.parseMaterials(json.materials, textures);\n\t\t\tconst object = this.parseObject(json.object, geometries, materials, textures, animations);\n\t\t\tconst skeletons = this.parseSkeletons(json.skeletons, object);\n\t\t\tthis.bindSkeletons(object, skeletons);\n\t\t\treturn object;\n\t\t}\n\n\t\tparseShapes(json) {\n\t\t\tconst shapes = {};\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tfor (let i = 0, l = json.length; i < l; i++) {\n\t\t\t\t\tconst shape = new Shape().fromJSON(json[i]);\n\t\t\t\t\tshapes[shape.uuid] = shape;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn shapes;\n\t\t}\n\n\t\tparseSkeletons(json, object) {\n\t\t\tconst skeletons = {};\n\t\t\tconst bones = {}; // generate bone lookup table\n\n\t\t\tobject.traverse(function (child) {\n\t\t\t\tif (child.isBone) bones[child.uuid] = child;\n\t\t\t}); // create skeletons\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tfor (let i = 0, l = json.length; i < l; i++) {\n\t\t\t\t\tconst skeleton = new Skeleton().fromJSON(json[i], bones);\n\t\t\t\t\tskeletons[skeleton.uuid] = skeleton;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn skeletons;\n\t\t}\n\n\t\tparseGeometries(json, shapes) {\n\t\t\tconst geometries = {};\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\t\tfor (let i = 0, l = json.length; i < l; i++) {\n\t\t\t\t\tlet geometry;\n\t\t\t\t\tconst data = json[i];\n\n\t\t\t\t\tswitch (data.type) {\n\t\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\t\tcase 'InstancedBufferGeometry':\n\t\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse(data);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'Geometry':\n\t\t\t\t\t\t\tconsole.error('THREE.ObjectLoader: The legacy Geometry type is no longer supported.');\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif (data.type in Geometries) {\n\t\t\t\t\t\t\t\tgeometry = Geometries[data.type].fromJSON(data, shapes);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.uuid = data.uuid;\n\t\t\t\t\tif (data.name !== undefined) geometry.name = data.name;\n\t\t\t\t\tif (geometry.isBufferGeometry === true && data.userData !== undefined) geometry.userData = data.userData;\n\t\t\t\t\tgeometries[data.uuid] = geometry;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn geometries;\n\t\t}\n\n\t\tparseMaterials(json, textures) {\n\t\t\tconst cache = {}; // MultiMaterial\n\n\t\t\tconst materials = {};\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tconst loader = new MaterialLoader();\n\t\t\t\tloader.setTextures(textures);\n\n\t\t\t\tfor (let i = 0, l = json.length; i < l; i++) {\n\t\t\t\t\tconst data = json[i];\n\n\t\t\t\t\tif (data.type === 'MultiMaterial') {\n\t\t\t\t\t\t// Deprecated\n\t\t\t\t\t\tconst array = [];\n\n\t\t\t\t\t\tfor (let j = 0; j < data.materials.length; j++) {\n\t\t\t\t\t\t\tconst material = data.materials[j];\n\n\t\t\t\t\t\t\tif (cache[material.uuid] === undefined) {\n\t\t\t\t\t\t\t\tcache[material.uuid] = loader.parse(material);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tarray.push(cache[material.uuid]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterials[data.uuid] = array;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (cache[data.uuid] === undefined) {\n\t\t\t\t\t\t\tcache[data.uuid] = loader.parse(data);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterials[data.uuid] = cache[data.uuid];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn materials;\n\t\t}\n\n\t\tparseAnimations(json) {\n\t\t\tconst animations = {};\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tfor (let i = 0; i < json.length; i++) {\n\t\t\t\t\tconst data = json[i];\n\t\t\t\t\tconst clip = AnimationClip.parse(data);\n\t\t\t\t\tanimations[clip.uuid] = clip;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn animations;\n\t\t}\n\n\t\tparseImages(json, onLoad) {\n\t\t\tconst scope = this;\n\t\t\tconst images = {};\n\t\t\tlet loader;\n\n\t\t\tfunction loadImage(url) {\n\t\t\t\tscope.manager.itemStart(url);\n\t\t\t\treturn loader.load(url, function () {\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, undefined, function () {\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction deserializeImage(image) {\n\t\t\t\tif (typeof image === 'string') {\n\t\t\t\t\tconst url = image;\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n\t\t\t\t\treturn loadImage(path);\n\t\t\t\t} else {\n\t\t\t\t\tif (image.data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: getTypedArray(image.type, image.data),\n\t\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\t\theight: image.height\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (json !== undefined && json.length > 0) {\n\t\t\t\tconst manager = new LoadingManager(onLoad);\n\t\t\t\tloader = new ImageLoader(manager);\n\t\t\t\tloader.setCrossOrigin(this.crossOrigin);\n\n\t\t\t\tfor (let i = 0, il = json.length; i < il; i++) {\n\t\t\t\t\tconst image = json[i];\n\t\t\t\t\tconst url = image.url;\n\n\t\t\t\t\tif (Array.isArray(url)) {\n\t\t\t\t\t\t// load array of images e.g CubeTexture\n\t\t\t\t\t\timages[image.uuid] = [];\n\n\t\t\t\t\t\tfor (let j = 0, jl = url.length; j < jl; j++) {\n\t\t\t\t\t\t\tconst currentUrl = url[j];\n\t\t\t\t\t\t\tconst deserializedImage = deserializeImage(currentUrl);\n\n\t\t\t\t\t\t\tif (deserializedImage !== null) {\n\t\t\t\t\t\t\t\tif (deserializedImage instanceof HTMLImageElement) {\n\t\t\t\t\t\t\t\t\timages[image.uuid].push(deserializedImage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\t\t\t\t\t\t\t\t\timages[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// load single image\n\t\t\t\t\t\tconst deserializedImage = deserializeImage(image.url);\n\n\t\t\t\t\t\tif (deserializedImage !== null) {\n\t\t\t\t\t\t\timages[image.uuid] = deserializedImage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn images;\n\t\t}\n\n\t\tasync parseImagesAsync(json) {\n\t\t\tconst scope = this;\n\t\t\tconst images = {};\n\t\t\tlet loader;\n\n\t\t\tasync function deserializeImage(image) {\n\t\t\t\tif (typeof image === 'string') {\n\t\t\t\t\tconst url = image;\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n\t\t\t\t\treturn await loader.loadAsync(path);\n\t\t\t\t} else {\n\t\t\t\t\tif (image.data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: getTypedArray(image.type, image.data),\n\t\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\t\theight: image.height\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (json !== undefined && json.length > 0) {\n\t\t\t\tloader = new ImageLoader(this.manager);\n\t\t\t\tloader.setCrossOrigin(this.crossOrigin);\n\n\t\t\t\tfor (let i = 0, il = json.length; i < il; i++) {\n\t\t\t\t\tconst image = json[i];\n\t\t\t\t\tconst url = image.url;\n\n\t\t\t\t\tif (Array.isArray(url)) {\n\t\t\t\t\t\t// load array of images e.g CubeTexture\n\t\t\t\t\t\timages[image.uuid] = [];\n\n\t\t\t\t\t\tfor (let j = 0, jl = url.length; j < jl; j++) {\n\t\t\t\t\t\t\tconst currentUrl = url[j];\n\t\t\t\t\t\t\tconst deserializedImage = await deserializeImage(currentUrl);\n\n\t\t\t\t\t\t\tif (deserializedImage !== null) {\n\t\t\t\t\t\t\t\tif (deserializedImage instanceof HTMLImageElement) {\n\t\t\t\t\t\t\t\t\timages[image.uuid].push(deserializedImage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\t\t\t\t\t\t\t\t\timages[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// load single image\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage(image.url);\n\n\t\t\t\t\t\tif (deserializedImage !== null) {\n\t\t\t\t\t\t\timages[image.uuid] = deserializedImage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn images;\n\t\t}\n\n\t\tparseTextures(json, images) {\n\t\t\tfunction parseConstant(value, type) {\n\t\t\t\tif (typeof value === 'number') return value;\n\t\t\t\tconsole.warn('THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value);\n\t\t\t\treturn type[value];\n\t\t\t}\n\n\t\t\tconst textures = {};\n\n\t\t\tif (json !== undefined) {\n\t\t\t\tfor (let i = 0, l = json.length; i < l; i++) {\n\t\t\t\t\tconst data = json[i];\n\n\t\t\t\t\tif (data.image === undefined) {\n\t\t\t\t\t\tconsole.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (images[data.image] === undefined) {\n\t\t\t\t\t\tconsole.warn('THREE.ObjectLoader: Undefined image', data.image);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet texture;\n\t\t\t\t\tconst image = images[data.image];\n\n\t\t\t\t\tif (Array.isArray(image)) {\n\t\t\t\t\t\ttexture = new CubeTexture(image);\n\t\t\t\t\t\tif (image.length === 6) texture.needsUpdate = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (image && image.data) {\n\t\t\t\t\t\t\ttexture = new DataTexture(image.data, image.width, image.height);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttexture = new Texture(image);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (image) texture.needsUpdate = true; // textures can have undefined image data\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.uuid = data.uuid;\n\t\t\t\t\tif (data.name !== undefined) texture.name = data.name;\n\t\t\t\t\tif (data.mapping !== undefined) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n\t\t\t\t\tif (data.offset !== undefined) texture.offset.fromArray(data.offset);\n\t\t\t\t\tif (data.repeat !== undefined) texture.repeat.fromArray(data.repeat);\n\t\t\t\t\tif (data.center !== undefined) texture.center.fromArray(data.center);\n\t\t\t\t\tif (data.rotation !== undefined) texture.rotation = data.rotation;\n\n\t\t\t\t\tif (data.wrap !== undefined) {\n\t\t\t\t\t\ttexture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n\t\t\t\t\t\ttexture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.format !== undefined) texture.format = data.format;\n\t\t\t\t\tif (data.type !== undefined) texture.type = data.type;\n\t\t\t\t\tif (data.encoding !== undefined) texture.encoding = data.encoding;\n\t\t\t\t\tif (data.minFilter !== undefined) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n\t\t\t\t\tif (data.magFilter !== undefined) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n\t\t\t\t\tif (data.anisotropy !== undefined) texture.anisotropy = data.anisotropy;\n\t\t\t\t\tif (data.flipY !== undefined) texture.flipY = data.flipY;\n\t\t\t\t\tif (data.premultiplyAlpha !== undefined) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\t\tif (data.unpackAlignment !== undefined) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\t\ttextures[data.uuid] = texture;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn textures;\n\t\t}\n\n\t\tparseObject(data, geometries, materials, textures, animations) {\n\t\t\tlet object;\n\n\t\t\tfunction getGeometry(name) {\n\t\t\t\tif (geometries[name] === undefined) {\n\t\t\t\t\tconsole.warn('THREE.ObjectLoader: Undefined geometry', name);\n\t\t\t\t}\n\n\t\t\t\treturn geometries[name];\n\t\t\t}\n\n\t\t\tfunction getMaterial(name) {\n\t\t\t\tif (name === undefined) return undefined;\n\n\t\t\t\tif (Array.isArray(name)) {\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor (let i = 0, l = name.length; i < l; i++) {\n\t\t\t\t\t\tconst uuid = name[i];\n\n\t\t\t\t\t\tif (materials[uuid] === undefined) {\n\t\t\t\t\t\t\tconsole.warn('THREE.ObjectLoader: Undefined material', uuid);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push(materials[uuid]);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn array;\n\t\t\t\t}\n\n\t\t\t\tif (materials[name] === undefined) {\n\t\t\t\t\tconsole.warn('THREE.ObjectLoader: Undefined material', name);\n\t\t\t\t}\n\n\t\t\t\treturn materials[name];\n\t\t\t}\n\n\t\t\tfunction getTexture(uuid) {\n\t\t\t\tif (textures[uuid] === undefined) {\n\t\t\t\t\tconsole.warn('THREE.ObjectLoader: Undefined texture', uuid);\n\t\t\t\t}\n\n\t\t\t\treturn textures[uuid];\n\t\t\t}\n\n\t\t\tlet geometry, material;\n\n\t\t\tswitch (data.type) {\n\t\t\t\tcase 'Scene':\n\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\tif (data.background !== undefined) {\n\t\t\t\t\t\tif (Number.isInteger(data.background)) {\n\t\t\t\t\t\t\tobject.background = new Color(data.background);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobject.background = getTexture(data.background);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.environment !== undefined) {\n\t\t\t\t\t\tobject.environment = getTexture(data.environment);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.fog !== undefined) {\n\t\t\t\t\t\tif (data.fog.type === 'Fog') {\n\t\t\t\t\t\t\tobject.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n\t\t\t\t\t\t} else if (data.fog.type === 'FogExp2') {\n\t\t\t\t\t\t\tobject.fog = new FogExp2(data.fog.color, data.fog.density);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PerspectiveCamera':\n\t\t\t\t\tobject = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n\t\t\t\t\tif (data.focus !== undefined) object.focus = data.focus;\n\t\t\t\t\tif (data.zoom !== undefined) object.zoom = data.zoom;\n\t\t\t\t\tif (data.filmGauge !== undefined) object.filmGauge = data.filmGauge;\n\t\t\t\t\tif (data.filmOffset !== undefined) object.filmOffset = data.filmOffset;\n\t\t\t\t\tif (data.view !== undefined) object.view = Object.assign({}, data.view);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'OrthographicCamera':\n\t\t\t\t\tobject = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n\t\t\t\t\tif (data.zoom !== undefined) object.zoom = data.zoom;\n\t\t\t\t\tif (data.view !== undefined) object.view = Object.assign({}, data.view);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientLight':\n\t\t\t\t\tobject = new AmbientLight(data.color, data.intensity);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tobject = new DirectionalLight(data.color, data.intensity);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tobject = new PointLight(data.color, data.intensity, data.distance, data.decay);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tobject = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tobject = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tobject = new HemisphereLight(data.color, data.groundColor, data.intensity);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LightProbe':\n\t\t\t\t\tobject = new LightProbe().fromJSON(data);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SkinnedMesh':\n\t\t\t\t\tgeometry = getGeometry(data.geometry);\n\t\t\t\t\tmaterial = getMaterial(data.material);\n\t\t\t\t\tobject = new SkinnedMesh(geometry, material);\n\t\t\t\t\tif (data.bindMode !== undefined) object.bindMode = data.bindMode;\n\t\t\t\t\tif (data.bindMatrix !== undefined) object.bindMatrix.fromArray(data.bindMatrix);\n\t\t\t\t\tif (data.skeleton !== undefined) object.skeleton = data.skeleton;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Mesh':\n\t\t\t\t\tgeometry = getGeometry(data.geometry);\n\t\t\t\t\tmaterial = getMaterial(data.material);\n\t\t\t\t\tobject = new Mesh(geometry, material);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'InstancedMesh':\n\t\t\t\t\tgeometry = getGeometry(data.geometry);\n\t\t\t\t\tmaterial = getMaterial(data.material);\n\t\t\t\t\tconst count = data.count;\n\t\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\t\tconst instanceColor = data.instanceColor;\n\t\t\t\t\tobject = new InstancedMesh(geometry, material, count);\n\t\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n\t\t\t\t\tif (instanceColor !== undefined) object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LOD':\n\t\t\t\t\tobject = new LOD();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Line':\n\t\t\t\t\tobject = new Line(getGeometry(data.geometry), getMaterial(data.material));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineLoop':\n\t\t\t\t\tobject = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineSegments':\n\t\t\t\t\tobject = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointCloud':\n\t\t\t\tcase 'Points':\n\t\t\t\t\tobject = new Points(getGeometry(data.geometry), getMaterial(data.material));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sprite':\n\t\t\t\t\tobject = new Sprite(getMaterial(data.material));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Group':\n\t\t\t\t\tobject = new Group();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Bone':\n\t\t\t\t\tobject = new Bone();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tobject = new Object3D();\n\t\t\t}\n\n\t\t\tobject.uuid = data.uuid;\n\t\t\tif (data.name !== undefined) object.name = data.name;\n\n\t\t\tif (data.matrix !== undefined) {\n\t\t\t\tobject.matrix.fromArray(data.matrix);\n\t\t\t\tif (data.matrixAutoUpdate !== undefined) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\t\tif (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale);\n\t\t\t} else {\n\t\t\t\tif (data.position !== undefined) object.position.fromArray(data.position);\n\t\t\t\tif (data.rotation !== undefined) object.rotation.fromArray(data.rotation);\n\t\t\t\tif (data.quaternion !== undefined) object.quaternion.fromArray(data.quaternion);\n\t\t\t\tif (data.scale !== undefined) object.scale.fromArray(data.scale);\n\t\t\t}\n\n\t\t\tif (data.castShadow !== undefined) object.castShadow = data.castShadow;\n\t\t\tif (data.receiveShadow !== undefined) object.receiveShadow = data.receiveShadow;\n\n\t\t\tif (data.shadow) {\n\t\t\t\tif (data.shadow.bias !== undefined) object.shadow.bias = data.shadow.bias;\n\t\t\t\tif (data.shadow.normalBias !== undefined) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\t\tif (data.shadow.radius !== undefined) object.shadow.radius = data.shadow.radius;\n\t\t\t\tif (data.shadow.mapSize !== undefined) object.shadow.mapSize.fromArray(data.shadow.mapSize);\n\t\t\t\tif (data.shadow.camera !== undefined) object.shadow.camera = this.parseObject(data.shadow.camera);\n\t\t\t}\n\n\t\t\tif (data.visible !== undefined) object.visible = data.visible;\n\t\t\tif (data.frustumCulled !== undefined) object.frustumCulled = data.frustumCulled;\n\t\t\tif (data.renderOrder !== undefined) object.renderOrder = data.renderOrder;\n\t\t\tif (data.userData !== undefined) object.userData = data.userData;\n\t\t\tif (data.layers !== undefined) object.layers.mask = data.layers;\n\n\t\t\tif (data.children !== undefined) {\n\t\t\t\tconst children = data.children;\n\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tobject.add(this.parseObject(children[i], geometries, materials, textures, animations));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (data.animations !== undefined) {\n\t\t\t\tconst objectAnimations = data.animations;\n\n\t\t\t\tfor (let i = 0; i < objectAnimations.length; i++) {\n\t\t\t\t\tconst uuid = objectAnimations[i];\n\t\t\t\t\tobject.animations.push(animations[uuid]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (data.type === 'LOD') {\n\t\t\t\tif (data.autoUpdate !== undefined) object.autoUpdate = data.autoUpdate;\n\t\t\t\tconst levels = data.levels;\n\n\t\t\t\tfor (let l = 0; l < levels.length; l++) {\n\t\t\t\t\tconst level = levels[l];\n\t\t\t\t\tconst child = object.getObjectByProperty('uuid', level.object);\n\n\t\t\t\t\tif (child !== undefined) {\n\t\t\t\t\t\tobject.addLevel(child, level.distance);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn object;\n\t\t}\n\n\t\tbindSkeletons(object, skeletons) {\n\t\t\tif (Object.keys(skeletons).length === 0) return;\n\t\t\tobject.traverse(function (child) {\n\t\t\t\tif (child.isSkinnedMesh === true && child.skeleton !== undefined) {\n\t\t\t\t\tconst skeleton = skeletons[child.skeleton];\n\n\t\t\t\t\tif (skeleton === undefined) {\n\t\t\t\t\t\tconsole.warn('THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.bind(skeleton, child.bindMatrix);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t/* DEPRECATED */\n\n\n\t\tsetTexturePath(value) {\n\t\t\tconsole.warn('THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().');\n\t\t\treturn this.setResourcePath(value);\n\t\t}\n\n\t}\n\n\tconst TEXTURE_MAPPING = {\n\t\tUVMapping: UVMapping,\n\t\tCubeReflectionMapping: CubeReflectionMapping,\n\t\tCubeRefractionMapping: CubeRefractionMapping,\n\t\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\t\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\t\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\t\tCubeUVRefractionMapping: CubeUVRefractionMapping\n\t};\n\tconst TEXTURE_WRAPPING = {\n\t\tRepeatWrapping: RepeatWrapping,\n\t\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\t\tMirroredRepeatWrapping: MirroredRepeatWrapping\n\t};\n\tconst TEXTURE_FILTER = {\n\t\tNearestFilter: NearestFilter,\n\t\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\t\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\t\tLinearFilter: LinearFilter,\n\t\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\t\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n\t};\n\n\tclass ImageBitmapLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\n\t\t\tif (typeof createImageBitmap === 'undefined') {\n\t\t\t\tconsole.warn('THREE.ImageBitmapLoader: createImageBitmap() not supported.');\n\t\t\t}\n\n\t\t\tif (typeof fetch === 'undefined') {\n\t\t\t\tconsole.warn('THREE.ImageBitmapLoader: fetch() not supported.');\n\t\t\t}\n\n\t\t\tthis.options = {\n\t\t\t\tpremultiplyAlpha: 'none'\n\t\t\t};\n\t\t}\n\n\t\tsetOptions(options) {\n\t\t\tthis.options = options;\n\t\t\treturn this;\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tif (url === undefined) url = '';\n\t\t\tif (this.path !== undefined) url = this.path + url;\n\t\t\turl = this.manager.resolveURL(url);\n\t\t\tconst scope = this;\n\t\t\tconst cached = Cache.get(url);\n\n\t\t\tif (cached !== undefined) {\n\t\t\t\tscope.manager.itemStart(url);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (onLoad) onLoad(cached);\n\t\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t\t}, 0);\n\t\t\t\treturn cached;\n\t\t\t}\n\n\t\t\tconst fetchOptions = {};\n\t\t\tfetchOptions.credentials = this.crossOrigin === 'anonymous' ? 'same-origin' : 'include';\n\t\t\tfetchOptions.headers = this.requestHeader;\n\t\t\tfetch(url, fetchOptions).then(function (res) {\n\t\t\t\treturn res.blob();\n\t\t\t}).then(function (blob) {\n\t\t\t\treturn createImageBitmap(blob, Object.assign(scope.options, {\n\t\t\t\t\tcolorSpaceConversion: 'none'\n\t\t\t\t}));\n\t\t\t}).then(function (imageBitmap) {\n\t\t\t\tCache.add(url, imageBitmap);\n\t\t\t\tif (onLoad) onLoad(imageBitmap);\n\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t}).catch(function (e) {\n\t\t\t\tif (onError) onError(e);\n\t\t\t\tscope.manager.itemError(url);\n\t\t\t\tscope.manager.itemEnd(url);\n\t\t\t});\n\t\t\tscope.manager.itemStart(url);\n\t\t}\n\n\t}\n\n\tImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\n\tclass ShapePath {\n\t\tconstructor() {\n\t\t\tthis.type = 'ShapePath';\n\t\t\tthis.color = new Color();\n\t\t\tthis.subPaths = [];\n\t\t\tthis.currentPath = null;\n\t\t}\n\n\t\tmoveTo(x, y) {\n\t\t\tthis.currentPath = new Path();\n\t\t\tthis.subPaths.push(this.currentPath);\n\t\t\tthis.currentPath.moveTo(x, y);\n\t\t\treturn this;\n\t\t}\n\n\t\tlineTo(x, y) {\n\t\t\tthis.currentPath.lineTo(x, y);\n\t\t\treturn this;\n\t\t}\n\n\t\tquadraticCurveTo(aCPx, aCPy, aX, aY) {\n\t\t\tthis.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n\t\t\treturn this;\n\t\t}\n\n\t\tbezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n\t\t\tthis.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n\t\t\treturn this;\n\t\t}\n\n\t\tsplineThru(pts) {\n\t\t\tthis.currentPath.splineThru(pts);\n\t\t\treturn this;\n\t\t}\n\n\t\ttoShapes(isCCW, noHoles) {\n\t\t\tfunction toShapesNoHoles(inSubpaths) {\n\t\t\t\tconst shapes = [];\n\n\t\t\t\tfor (let i = 0, l = inSubpaths.length; i < l; i++) {\n\t\t\t\t\tconst tmpPath = inSubpaths[i];\n\t\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\t\t\tshapes.push(tmpShape);\n\t\t\t\t}\n\n\t\t\t\treturn shapes;\n\t\t\t}\n\n\t\t\tfunction isPointInsidePolygon(inPt, inPolygon) {\n\t\t\t\tconst polyLen = inPolygon.length; // inPt on polygon contour => immediate success\t\tor\n\t\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t\t//\twith the horizontal line through inPt, left of inPt\n\t\t\t\t//\tnot counting lowerY endpoints of edges and whole edges on that line\n\n\t\t\t\tlet inside = false;\n\n\t\t\t\tfor (let p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n\t\t\t\t\tlet edgeLowPt = inPolygon[p];\n\t\t\t\t\tlet edgeHighPt = inPolygon[q];\n\t\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\t\tif (Math.abs(edgeDy) > Number.EPSILON) {\n\t\t\t\t\t\t// not parallel\n\t\t\t\t\t\tif (edgeDy < 0) {\n\t\t\t\t\t\t\tedgeLowPt = inPolygon[q];\n\t\t\t\t\t\t\tedgeDx = -edgeDx;\n\t\t\t\t\t\t\tedgeHighPt = inPolygon[p];\n\t\t\t\t\t\t\tedgeDy = -edgeDy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y) continue;\n\n\t\t\t\t\t\tif (inPt.y === edgeLowPt.y) {\n\t\t\t\t\t\t\tif (inPt.x === edgeLowPt.x) return true; // inPt is on contour ?\n\t\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n\t\t\t\t\t\t\tif (perpEdge === 0) return true; // inPt is on contour ?\n\n\t\t\t\t\t\t\tif (perpEdge < 0) continue;\n\t\t\t\t\t\t\tinside = !inside; // true intersection left of inPt\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// parallel or collinear\n\t\t\t\t\t\tif (inPt.y !== edgeLowPt.y) continue; // parallel\n\t\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\n\t\t\t\t\t\tif (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x) return true; // inPt: Point on contour !\n\t\t\t\t\t\t// continue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn inside;\n\t\t\t}\n\n\t\t\tconst isClockWise = ShapeUtils.isClockWise;\n\t\t\tconst subPaths = this.subPaths;\n\t\t\tif (subPaths.length === 0) return [];\n\t\t\tif (noHoles === true) return toShapesNoHoles(subPaths);\n\t\t\tlet solid, tmpPath, tmpShape;\n\t\t\tconst shapes = [];\n\n\t\t\tif (subPaths.length === 1) {\n\t\t\t\ttmpPath = subPaths[0];\n\t\t\t\ttmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\t\tshapes.push(tmpShape);\n\t\t\t\treturn shapes;\n\t\t\t}\n\n\t\t\tlet holesFirst = !isClockWise(subPaths[0].getPoints());\n\t\t\tholesFirst = isCCW ? !holesFirst : holesFirst; // console.log(\"Holes first\", holesFirst);\n\n\t\t\tconst betterShapeHoles = [];\n\t\t\tconst newShapes = [];\n\t\t\tlet newShapeHoles = [];\n\t\t\tlet mainIdx = 0;\n\t\t\tlet tmpPoints;\n\t\t\tnewShapes[mainIdx] = undefined;\n\t\t\tnewShapeHoles[mainIdx] = [];\n\n\t\t\tfor (let i = 0, l = subPaths.length; i < l; i++) {\n\t\t\t\ttmpPath = subPaths[i];\n\t\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\t\tsolid = isClockWise(tmpPoints);\n\t\t\t\tsolid = isCCW ? !solid : solid;\n\n\t\t\t\tif (solid) {\n\t\t\t\t\tif (!holesFirst && newShapes[mainIdx]) mainIdx++;\n\t\t\t\t\tnewShapes[mainIdx] = {\n\t\t\t\t\t\ts: new Shape(),\n\t\t\t\t\t\tp: tmpPoints\n\t\t\t\t\t};\n\t\t\t\t\tnewShapes[mainIdx].s.curves = tmpPath.curves;\n\t\t\t\t\tif (holesFirst) mainIdx++;\n\t\t\t\t\tnewShapeHoles[mainIdx] = []; //console.log('cw', i);\n\t\t\t\t} else {\n\t\t\t\t\tnewShapeHoles[mainIdx].push({\n\t\t\t\t\t\th: tmpPath,\n\t\t\t\t\t\tp: tmpPoints[0]\n\t\t\t\t\t}); //console.log('ccw', i);\n\t\t\t\t}\n\t\t\t} // only Holes? -> probably all Shapes with wrong orientation\n\n\n\t\t\tif (!newShapes[0]) return toShapesNoHoles(subPaths);\n\n\t\t\tif (newShapes.length > 1) {\n\t\t\t\tlet ambiguous = false;\n\t\t\t\tconst toChange = [];\n\n\t\t\t\tfor (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n\t\t\t\t\tbetterShapeHoles[sIdx] = [];\n\t\t\t\t}\n\n\t\t\t\tfor (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n\t\t\t\t\tconst sho = newShapeHoles[sIdx];\n\n\t\t\t\t\tfor (let hIdx = 0; hIdx < sho.length; hIdx++) {\n\t\t\t\t\t\tconst ho = sho[hIdx];\n\t\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\t\tfor (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n\t\t\t\t\t\t\tif (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n\t\t\t\t\t\t\t\tif (sIdx !== s2Idx) toChange.push({\n\t\t\t\t\t\t\t\t\tfroms: sIdx,\n\t\t\t\t\t\t\t\t\ttos: s2Idx,\n\t\t\t\t\t\t\t\t\thole: hIdx\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (hole_unassigned) {\n\t\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\t\tbetterShapeHoles[s2Idx].push(ho);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tambiguous = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (hole_unassigned) {\n\t\t\t\t\t\t\tbetterShapeHoles[sIdx].push(ho);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} // console.log(\"ambiguous: \", ambiguous);\n\n\n\t\t\t\tif (toChange.length > 0) {\n\t\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\t\tif (!ambiguous) newShapeHoles = betterShapeHoles;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet tmpHoles;\n\n\t\t\tfor (let i = 0, il = newShapes.length; i < il; i++) {\n\t\t\t\ttmpShape = newShapes[i].s;\n\t\t\t\tshapes.push(tmpShape);\n\t\t\t\ttmpHoles = newShapeHoles[i];\n\n\t\t\t\tfor (let j = 0, jl = tmpHoles.length; j < jl; j++) {\n\t\t\t\t\ttmpShape.holes.push(tmpHoles[j].h);\n\t\t\t\t}\n\t\t\t} //console.log(\"shape\", shapes);\n\n\n\t\t\treturn shapes;\n\t\t}\n\n\t}\n\n\tclass Font {\n\t\tconstructor(data) {\n\t\t\tthis.type = 'Font';\n\t\t\tthis.data = data;\n\t\t}\n\n\t\tgenerateShapes(text, size = 100) {\n\t\t\tconst shapes = [];\n\t\t\tconst paths = createPaths(text, size, this.data);\n\n\t\t\tfor (let p = 0, pl = paths.length; p < pl; p++) {\n\t\t\t\tArray.prototype.push.apply(shapes, paths[p].toShapes());\n\t\t\t}\n\n\t\t\treturn shapes;\n\t\t}\n\n\t}\n\n\tfunction createPaths(text, size, data) {\n\t\tconst chars = Array.from(text);\n\t\tconst scale = size / data.resolution;\n\t\tconst line_height = (data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness) * scale;\n\t\tconst paths = [];\n\t\tlet offsetX = 0,\n\t\t\t\toffsetY = 0;\n\n\t\tfor (let i = 0; i < chars.length; i++) {\n\t\t\tconst char = chars[i];\n\n\t\t\tif (char === '\\n') {\n\t\t\t\toffsetX = 0;\n\t\t\t\toffsetY -= line_height;\n\t\t\t} else {\n\t\t\t\tconst ret = createPath(char, scale, offsetX, offsetY, data);\n\t\t\t\toffsetX += ret.offsetX;\n\t\t\t\tpaths.push(ret.path);\n\t\t\t}\n\t\t}\n\n\t\treturn paths;\n\t}\n\n\tfunction createPath(char, scale, offsetX, offsetY, data) {\n\t\tconst glyph = data.glyphs[char] || data.glyphs['?'];\n\n\t\tif (!glyph) {\n\t\t\tconsole.error('THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst path = new ShapePath();\n\t\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\t\tif (glyph.o) {\n\t\t\tconst outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' '));\n\n\t\t\tfor (let i = 0, l = outline.length; i < l;) {\n\t\t\t\tconst action = outline[i++];\n\n\t\t\t\tswitch (action) {\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t// moveTo\n\t\t\t\t\t\tx = outline[i++] * scale + offsetX;\n\t\t\t\t\t\ty = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tpath.moveTo(x, y);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'l':\n\t\t\t\t\t\t// lineTo\n\t\t\t\t\t\tx = outline[i++] * scale + offsetX;\n\t\t\t\t\t\ty = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tpath.lineTo(x, y);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\t// quadraticCurveTo\n\t\t\t\t\t\tcpx = outline[i++] * scale + offsetX;\n\t\t\t\t\t\tcpy = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tcpx1 = outline[i++] * scale + offsetX;\n\t\t\t\t\t\tcpy1 = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tpath.quadraticCurveTo(cpx1, cpy1, cpx, cpy);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t// bezierCurveTo\n\t\t\t\t\t\tcpx = outline[i++] * scale + offsetX;\n\t\t\t\t\t\tcpy = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tcpx1 = outline[i++] * scale + offsetX;\n\t\t\t\t\t\tcpy1 = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tcpx2 = outline[i++] * scale + offsetX;\n\t\t\t\t\t\tcpy2 = outline[i++] * scale + offsetY;\n\t\t\t\t\t\tpath.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, cpx, cpy);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\toffsetX: glyph.ha * scale,\n\t\t\tpath: path\n\t\t};\n\t}\n\n\tFont.prototype.isFont = true;\n\n\tclass FontLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(scope.withCredentials);\n\t\t\tloader.load(url, function (text) {\n\t\t\t\tlet json;\n\n\t\t\t\ttry {\n\t\t\t\t\tjson = JSON.parse(text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn('THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.');\n\t\t\t\t\tjson = JSON.parse(text.substring(65, text.length - 2));\n\t\t\t\t}\n\n\t\t\t\tconst font = scope.parse(json);\n\t\t\t\tif (onLoad) onLoad(font);\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t\tparse(json) {\n\t\t\treturn new Font(json);\n\t\t}\n\n\t}\n\n\tlet _context;\n\n\tconst AudioContext = {\n\t\tgetContext: function () {\n\t\t\tif (_context === undefined) {\n\t\t\t\t_context = new (window.AudioContext || window.webkitAudioContext)();\n\t\t\t}\n\n\t\t\treturn _context;\n\t\t},\n\t\tsetContext: function (value) {\n\t\t\t_context = value;\n\t\t}\n\t};\n\n\tclass AudioLoader extends Loader {\n\t\tconstructor(manager) {\n\t\t\tsuper(manager);\n\t\t}\n\n\t\tload(url, onLoad, onProgress, onError) {\n\t\t\tconst scope = this;\n\t\t\tconst loader = new FileLoader(this.manager);\n\t\t\tloader.setResponseType('arraybuffer');\n\t\t\tloader.setPath(this.path);\n\t\t\tloader.setRequestHeader(this.requestHeader);\n\t\t\tloader.setWithCredentials(this.withCredentials);\n\t\t\tloader.load(url, function (buffer) {\n\t\t\t\ttry {\n\t\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\t\tconst bufferCopy = buffer.slice(0);\n\t\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\t\tcontext.decodeAudioData(bufferCopy, function (audioBuffer) {\n\t\t\t\t\t\tonLoad(audioBuffer);\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (onError) {\n\t\t\t\t\t\tonError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError(url);\n\t\t\t\t}\n\t\t\t}, onProgress, onError);\n\t\t}\n\n\t}\n\n\tclass HemisphereLightProbe extends LightProbe {\n\t\tconstructor(skyColor, groundColor, intensity = 1) {\n\t\t\tsuper(undefined, intensity);\n\t\t\tconst color1 = new Color().set(skyColor);\n\t\t\tconst color2 = new Color().set(groundColor);\n\t\t\tconst sky = new Vector3(color1.r, color1.g, color1.b);\n\t\t\tconst ground = new Vector3(color2.r, color2.g, color2.b); // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\n\t\t\tconst c0 = Math.sqrt(Math.PI);\n\t\t\tconst c1 = c0 * Math.sqrt(0.75);\n\t\t\tthis.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);\n\t\t\tthis.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);\n\t\t}\n\n\t}\n\n\tHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\n\tclass AmbientLightProbe extends LightProbe {\n\t\tconstructor(color, intensity = 1) {\n\t\t\tsuper(undefined, intensity);\n\t\t\tconst color1 = new Color().set(color); // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\n\t\t\tthis.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI));\n\t\t}\n\n\t}\n\n\tAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\n\tconst _eyeRight = /*@__PURE__*/new Matrix4();\n\n\tconst _eyeLeft = /*@__PURE__*/new Matrix4();\n\n\tclass StereoCamera {\n\t\tconstructor() {\n\t\t\tthis.type = 'StereoCamera';\n\t\t\tthis.aspect = 1;\n\t\t\tthis.eyeSep = 0.064;\n\t\t\tthis.cameraL = new PerspectiveCamera();\n\t\t\tthis.cameraL.layers.enable(1);\n\t\t\tthis.cameraL.matrixAutoUpdate = false;\n\t\t\tthis.cameraR = new PerspectiveCamera();\n\t\t\tthis.cameraR.layers.enable(2);\n\t\t\tthis.cameraR.matrixAutoUpdate = false;\n\t\t\tthis._cache = {\n\t\t\t\tfocus: null,\n\t\t\t\tfov: null,\n\t\t\t\taspect: null,\n\t\t\t\tnear: null,\n\t\t\t\tfar: null,\n\t\t\t\tzoom: null,\n\t\t\t\teyeSep: null\n\t\t\t};\n\t\t}\n\n\t\tupdate(camera) {\n\t\t\tconst cache = this._cache;\n\t\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\t\tif (needsUpdate) {\n\t\t\t\tcache.focus = camera.focus;\n\t\t\t\tcache.fov = camera.fov;\n\t\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\t\tcache.near = camera.near;\n\t\t\t\tcache.far = camera.far;\n\t\t\t\tcache.zoom = camera.zoom;\n\t\t\t\tcache.eyeSep = this.eyeSep; // Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\t\tconst ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n\t\t\t\tlet xmin, xmax; // translate xOffset\n\n\t\t\t\t_eyeLeft.elements[12] = -eyeSepHalf;\n\t\t\t\t_eyeRight.elements[12] = eyeSepHalf; // for left eye\n\n\t\t\t\txmin = -ymax * cache.aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\t\t\t\tprojectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n\t\t\t\tprojectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n\t\t\t\tthis.cameraL.projectionMatrix.copy(projectionMatrix); // for right eye\n\n\t\t\t\txmin = -ymax * cache.aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\t\t\t\tprojectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n\t\t\t\tprojectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n\t\t\t\tthis.cameraR.projectionMatrix.copy(projectionMatrix);\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n\t\t\tthis.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n\t\t}\n\n\t}\n\n\tclass Clock {\n\t\tconstructor(autoStart = true) {\n\t\t\tthis.autoStart = autoStart;\n\t\t\tthis.startTime = 0;\n\t\t\tthis.oldTime = 0;\n\t\t\tthis.elapsedTime = 0;\n\t\t\tthis.running = false;\n\t\t}\n\n\t\tstart() {\n\t\t\tthis.startTime = now();\n\t\t\tthis.oldTime = this.startTime;\n\t\t\tthis.elapsedTime = 0;\n\t\t\tthis.running = true;\n\t\t}\n\n\t\tstop() {\n\t\t\tthis.getElapsedTime();\n\t\t\tthis.running = false;\n\t\t\tthis.autoStart = false;\n\t\t}\n\n\t\tgetElapsedTime() {\n\t\t\tthis.getDelta();\n\t\t\treturn this.elapsedTime;\n\t\t}\n\n\t\tgetDelta() {\n\t\t\tlet diff = 0;\n\n\t\t\tif (this.autoStart && !this.running) {\n\t\t\t\tthis.start();\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (this.running) {\n\t\t\t\tconst newTime = now();\n\t\t\t\tdiff = (newTime - this.oldTime) / 1000;\n\t\t\t\tthis.oldTime = newTime;\n\t\t\t\tthis.elapsedTime += diff;\n\t\t\t}\n\n\t\t\treturn diff;\n\t\t}\n\n\t}\n\n\tfunction now() {\n\t\treturn (typeof performance === 'undefined' ? Date : performance).now(); // see #10732\n\t}\n\n\tconst _position$1 = /*@__PURE__*/new Vector3();\n\n\tconst _quaternion$1 = /*@__PURE__*/new Quaternion();\n\n\tconst _scale$1 = /*@__PURE__*/new Vector3();\n\n\tconst _orientation$1 = /*@__PURE__*/new Vector3();\n\n\tclass AudioListener extends Object3D {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = 'AudioListener';\n\t\t\tthis.context = AudioContext.getContext();\n\t\t\tthis.gain = this.context.createGain();\n\t\t\tthis.gain.connect(this.context.destination);\n\t\t\tthis.filter = null;\n\t\t\tthis.timeDelta = 0; // private\n\n\t\t\tthis._clock = new Clock();\n\t\t}\n\n\t\tgetInput() {\n\t\t\treturn this.gain;\n\t\t}\n\n\t\tremoveFilter() {\n\t\t\tif (this.filter !== null) {\n\t\t\t\tthis.gain.disconnect(this.filter);\n\t\t\t\tthis.filter.disconnect(this.context.destination);\n\t\t\t\tthis.gain.connect(this.context.destination);\n\t\t\t\tthis.filter = null;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetFilter() {\n\t\t\treturn this.filter;\n\t\t}\n\n\t\tsetFilter(value) {\n\t\t\tif (this.filter !== null) {\n\t\t\t\tthis.gain.disconnect(this.filter);\n\t\t\t\tthis.filter.disconnect(this.context.destination);\n\t\t\t} else {\n\t\t\t\tthis.gain.disconnect(this.context.destination);\n\t\t\t}\n\n\t\t\tthis.filter = value;\n\t\t\tthis.gain.connect(this.filter);\n\t\t\tthis.filter.connect(this.context.destination);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetMasterVolume() {\n\t\t\treturn this.gain.gain.value;\n\t\t}\n\n\t\tsetMasterVolume(value) {\n\t\t\tthis.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n\t\t\treturn this;\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t\tconst listener = this.context.listener;\n\t\t\tconst up = this.up;\n\t\t\tthis.timeDelta = this._clock.getDelta();\n\t\t\tthis.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n\n\t\t\t_orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n\n\t\t\tif (listener.positionX) {\n\t\t\t\t// code path for Chrome (see #14393)\n\t\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\t\t\t\tlistener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n\t\t\t\tlistener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n\t\t\t\tlistener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n\t\t\t\tlistener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n\t\t\t\tlistener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n\t\t\t\tlistener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n\t\t\t\tlistener.upX.linearRampToValueAtTime(up.x, endTime);\n\t\t\t\tlistener.upY.linearRampToValueAtTime(up.y, endTime);\n\t\t\t\tlistener.upZ.linearRampToValueAtTime(up.z, endTime);\n\t\t\t} else {\n\t\t\t\tlistener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n\t\t\t\tlistener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tclass Audio extends Object3D {\n\t\tconstructor(listener) {\n\t\t\tsuper();\n\t\t\tthis.type = 'Audio';\n\t\t\tthis.listener = listener;\n\t\t\tthis.context = listener.context;\n\t\t\tthis.gain = this.context.createGain();\n\t\t\tthis.gain.connect(listener.getInput());\n\t\t\tthis.autoplay = false;\n\t\t\tthis.buffer = null;\n\t\t\tthis.detune = 0;\n\t\t\tthis.loop = false;\n\t\t\tthis.loopStart = 0;\n\t\t\tthis.loopEnd = 0;\n\t\t\tthis.offset = 0;\n\t\t\tthis.duration = undefined;\n\t\t\tthis.playbackRate = 1;\n\t\t\tthis.isPlaying = false;\n\t\t\tthis.hasPlaybackControl = true;\n\t\t\tthis.source = null;\n\t\t\tthis.sourceType = 'empty';\n\t\t\tthis._startedAt = 0;\n\t\t\tthis._progress = 0;\n\t\t\tthis._connected = false;\n\t\t\tthis.filters = [];\n\t\t}\n\n\t\tgetOutput() {\n\t\t\treturn this.gain;\n\t\t}\n\n\t\tsetNodeSource(audioNode) {\n\t\t\tthis.hasPlaybackControl = false;\n\t\t\tthis.sourceType = 'audioNode';\n\t\t\tthis.source = audioNode;\n\t\t\tthis.connect();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetMediaElementSource(mediaElement) {\n\t\t\tthis.hasPlaybackControl = false;\n\t\t\tthis.sourceType = 'mediaNode';\n\t\t\tthis.source = this.context.createMediaElementSource(mediaElement);\n\t\t\tthis.connect();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetMediaStreamSource(mediaStream) {\n\t\t\tthis.hasPlaybackControl = false;\n\t\t\tthis.sourceType = 'mediaStreamNode';\n\t\t\tthis.source = this.context.createMediaStreamSource(mediaStream);\n\t\t\tthis.connect();\n\t\t\treturn this;\n\t\t}\n\n\t\tsetBuffer(audioBuffer) {\n\t\t\tthis.buffer = audioBuffer;\n\t\t\tthis.sourceType = 'buffer';\n\t\t\tif (this.autoplay) this.play();\n\t\t\treturn this;\n\t\t}\n\n\t\tplay(delay = 0) {\n\t\t\tif (this.isPlaying === true) {\n\t\t\t\tconsole.warn('THREE.Audio: Audio is already playing.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._startedAt = this.context.currentTime + delay;\n\t\t\tconst source = this.context.createBufferSource();\n\t\t\tsource.buffer = this.buffer;\n\t\t\tsource.loop = this.loop;\n\t\t\tsource.loopStart = this.loopStart;\n\t\t\tsource.loopEnd = this.loopEnd;\n\t\t\tsource.onended = this.onEnded.bind(this);\n\t\t\tsource.start(this._startedAt, this._progress + this.offset, this.duration);\n\t\t\tthis.isPlaying = true;\n\t\t\tthis.source = source;\n\t\t\tthis.setDetune(this.detune);\n\t\t\tthis.setPlaybackRate(this.playbackRate);\n\t\t\treturn this.connect();\n\t\t}\n\n\t\tpause() {\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.isPlaying === true) {\n\t\t\t\t// update current progress\n\t\t\t\tthis._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n\n\t\t\t\tif (this.loop === true) {\n\t\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\t\t\t\t\tthis._progress = this._progress % (this.duration || this.buffer.duration);\n\t\t\t\t}\n\n\t\t\t\tthis.source.stop();\n\t\t\t\tthis.source.onended = null;\n\t\t\t\tthis.isPlaying = false;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tstop() {\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._progress = 0;\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\t\t\tthis.isPlaying = false;\n\t\t\treturn this;\n\t\t}\n\n\t\tconnect() {\n\t\t\tif (this.filters.length > 0) {\n\t\t\t\tthis.source.connect(this.filters[0]);\n\n\t\t\t\tfor (let i = 1, l = this.filters.length; i < l; i++) {\n\t\t\t\t\tthis.filters[i - 1].connect(this.filters[i]);\n\t\t\t\t}\n\n\t\t\t\tthis.filters[this.filters.length - 1].connect(this.getOutput());\n\t\t\t} else {\n\t\t\t\tthis.source.connect(this.getOutput());\n\t\t\t}\n\n\t\t\tthis._connected = true;\n\t\t\treturn this;\n\t\t}\n\n\t\tdisconnect() {\n\t\t\tif (this.filters.length > 0) {\n\t\t\t\tthis.source.disconnect(this.filters[0]);\n\n\t\t\t\tfor (let i = 1, l = this.filters.length; i < l; i++) {\n\t\t\t\t\tthis.filters[i - 1].disconnect(this.filters[i]);\n\t\t\t\t}\n\n\t\t\t\tthis.filters[this.filters.length - 1].disconnect(this.getOutput());\n\t\t\t} else {\n\t\t\t\tthis.source.disconnect(this.getOutput());\n\t\t\t}\n\n\t\t\tthis._connected = false;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetFilters() {\n\t\t\treturn this.filters;\n\t\t}\n\n\t\tsetFilters(value) {\n\t\t\tif (!value) value = [];\n\n\t\t\tif (this._connected === true) {\n\t\t\t\tthis.disconnect();\n\t\t\t\tthis.filters = value.slice();\n\t\t\t\tthis.connect();\n\t\t\t} else {\n\t\t\t\tthis.filters = value.slice();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetDetune(value) {\n\t\t\tthis.detune = value;\n\t\t\tif (this.source.detune === undefined) return; // only set detune when available\n\n\t\t\tif (this.isPlaying === true) {\n\t\t\t\tthis.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetDetune() {\n\t\t\treturn this.detune;\n\t\t}\n\n\t\tgetFilter() {\n\t\t\treturn this.getFilters()[0];\n\t\t}\n\n\t\tsetFilter(filter) {\n\t\t\treturn this.setFilters(filter ? [filter] : []);\n\t\t}\n\n\t\tsetPlaybackRate(value) {\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.playbackRate = value;\n\n\t\t\tif (this.isPlaying === true) {\n\t\t\t\tthis.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tgetPlaybackRate() {\n\t\t\treturn this.playbackRate;\n\t\t}\n\n\t\tonEnded() {\n\t\t\tthis.isPlaying = false;\n\t\t}\n\n\t\tgetLoop() {\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.loop;\n\t\t}\n\n\t\tsetLoop(value) {\n\t\t\tif (this.hasPlaybackControl === false) {\n\t\t\t\tconsole.warn('THREE.Audio: this Audio has no playback control.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.loop = value;\n\n\t\t\tif (this.isPlaying === true) {\n\t\t\t\tthis.source.loop = this.loop;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetLoopStart(value) {\n\t\t\tthis.loopStart = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetLoopEnd(value) {\n\t\t\tthis.loopEnd = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetVolume() {\n\t\t\treturn this.gain.gain.value;\n\t\t}\n\n\t\tsetVolume(value) {\n\t\t\tthis.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tconst _position = /*@__PURE__*/new Vector3();\n\n\tconst _quaternion = /*@__PURE__*/new Quaternion();\n\n\tconst _scale = /*@__PURE__*/new Vector3();\n\n\tconst _orientation = /*@__PURE__*/new Vector3();\n\n\tclass PositionalAudio extends Audio {\n\t\tconstructor(listener) {\n\t\t\tsuper(listener);\n\t\t\tthis.panner = this.context.createPanner();\n\t\t\tthis.panner.panningModel = 'HRTF';\n\t\t\tthis.panner.connect(this.gain);\n\t\t}\n\n\t\tgetOutput() {\n\t\t\treturn this.panner;\n\t\t}\n\n\t\tgetRefDistance() {\n\t\t\treturn this.panner.refDistance;\n\t\t}\n\n\t\tsetRefDistance(value) {\n\t\t\tthis.panner.refDistance = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetRolloffFactor() {\n\t\t\treturn this.panner.rolloffFactor;\n\t\t}\n\n\t\tsetRolloffFactor(value) {\n\t\t\tthis.panner.rolloffFactor = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetDistanceModel() {\n\t\t\treturn this.panner.distanceModel;\n\t\t}\n\n\t\tsetDistanceModel(value) {\n\t\t\tthis.panner.distanceModel = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tgetMaxDistance() {\n\t\t\treturn this.panner.maxDistance;\n\t\t}\n\n\t\tsetMaxDistance(value) {\n\t\t\tthis.panner.maxDistance = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n\t\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\t\tthis.panner.coneOuterGain = coneOuterGain;\n\t\t\treturn this;\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t\tif (this.hasPlaybackControl === true && this.isPlaying === false) return;\n\t\t\tthis.matrixWorld.decompose(_position, _quaternion, _scale);\n\n\t\t\t_orientation.set(0, 0, 1).applyQuaternion(_quaternion);\n\n\t\t\tconst panner = this.panner;\n\n\t\t\tif (panner.positionX) {\n\t\t\t\t// code path for Chrome and Firefox (see #14393)\n\t\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\t\t\t\tpanner.positionX.linearRampToValueAtTime(_position.x, endTime);\n\t\t\t\tpanner.positionY.linearRampToValueAtTime(_position.y, endTime);\n\t\t\t\tpanner.positionZ.linearRampToValueAtTime(_position.z, endTime);\n\t\t\t\tpanner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n\t\t\t\tpanner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n\t\t\t\tpanner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n\t\t\t} else {\n\t\t\t\tpanner.setPosition(_position.x, _position.y, _position.z);\n\t\t\t\tpanner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tclass AudioAnalyser {\n\t\tconstructor(audio, fftSize = 2048) {\n\t\t\tthis.analyser = audio.context.createAnalyser();\n\t\t\tthis.analyser.fftSize = fftSize;\n\t\t\tthis.data = new Uint8Array(this.analyser.frequencyBinCount);\n\t\t\taudio.getOutput().connect(this.analyser);\n\t\t}\n\n\t\tgetFrequencyData() {\n\t\t\tthis.analyser.getByteFrequencyData(this.data);\n\t\t\treturn this.data;\n\t\t}\n\n\t\tgetAverageFrequency() {\n\t\t\tlet value = 0;\n\t\t\tconst data = this.getFrequencyData();\n\n\t\t\tfor (let i = 0; i < data.length; i++) {\n\t\t\t\tvalue += data[i];\n\t\t\t}\n\n\t\t\treturn value / data.length;\n\t\t}\n\n\t}\n\n\tclass PropertyMixer {\n\t\tconstructor(binding, typeName, valueSize) {\n\t\t\tthis.binding = binding;\n\t\t\tthis.valueSize = valueSize;\n\t\t\tlet mixFunction, mixFunctionAdditive, setIdentity; // buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t\t//\n\t\t\t// interpolators can use .buffer as their .result\n\t\t\t// the data then goes to 'incoming'\n\t\t\t//\n\t\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t\t// the cumulative result and are compared to detect\n\t\t\t// changes\n\t\t\t//\n\t\t\t// 'orig' stores the original state of the property\n\t\t\t//\n\t\t\t// 'add' is used for additive cumulative results\n\t\t\t//\n\t\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t\t// to store intermediate quaternion multiplication results\n\n\t\t\tswitch (typeName) {\n\t\t\t\tcase 'quaternion':\n\t\t\t\t\tmixFunction = this._slerp;\n\t\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\t\t\t\t\tthis.buffer = new Float64Array(valueSize * 6);\n\t\t\t\t\tthis._workIndex = 5;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'string':\n\t\t\t\tcase 'bool':\n\t\t\t\t\tmixFunction = this._select; // Use the regular mix function and for additive on these types,\n\t\t\t\t\t// additive is not relevant for non-numeric types\n\n\t\t\t\t\tmixFunctionAdditive = this._select;\n\t\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\t\t\t\t\tthis.buffer = new Array(valueSize * 5);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmixFunction = this._lerp;\n\t\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\t\t\t\t\tthis.buffer = new Float64Array(valueSize * 5);\n\t\t\t}\n\n\t\t\tthis._mixBufferRegion = mixFunction;\n\t\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\t\tthis._setIdentity = setIdentity;\n\t\t\tthis._origIndex = 3;\n\t\t\tthis._addIndex = 4;\n\t\t\tthis.cumulativeWeight = 0;\n\t\t\tthis.cumulativeWeightAdditive = 0;\n\t\t\tthis.useCount = 0;\n\t\t\tthis.referenceCount = 0;\n\t\t} // accumulate data in the 'incoming' region into 'accu'\n\n\n\t\taccumulate(accuIndex, weight) {\n\t\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t\t// the weight and shouldn't have made the call in the first place\n\t\t\tconst buffer = this.buffer,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\toffset = accuIndex * stride + stride;\n\t\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\t\tif (currentWeight === 0) {\n\t\t\t\t// accuN := incoming * weight\n\t\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\t\tbuffer[offset + i] = buffer[i];\n\t\t\t\t}\n\n\t\t\t\tcurrentWeight = weight;\n\t\t\t} else {\n\t\t\t\t// accuN := accuN + incoming * weight\n\t\t\t\tcurrentWeight += weight;\n\t\t\t\tconst mix = weight / currentWeight;\n\n\t\t\t\tthis._mixBufferRegion(buffer, offset, 0, mix, stride);\n\t\t\t}\n\n\t\t\tthis.cumulativeWeight = currentWeight;\n\t\t} // accumulate data in the 'incoming' region into 'add'\n\n\n\t\taccumulateAdditive(weight) {\n\t\t\tconst buffer = this.buffer,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\toffset = stride * this._addIndex;\n\n\t\t\tif (this.cumulativeWeightAdditive === 0) {\n\t\t\t\t// add = identity\n\t\t\t\tthis._setIdentity();\n\t\t\t} // add := add + incoming * weight\n\n\n\t\t\tthis._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n\n\t\t\tthis.cumulativeWeightAdditive += weight;\n\t\t} // apply the state of 'accu' to the binding when accus differ\n\n\n\t\tapply(accuIndex) {\n\t\t\tconst stride = this.valueSize,\n\t\t\t\t\t\tbuffer = this.buffer,\n\t\t\t\t\t\toffset = accuIndex * stride + stride,\n\t\t\t\t\t\tweight = this.cumulativeWeight,\n\t\t\t\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\t\t\t\t\t\tbinding = this.binding;\n\t\t\tthis.cumulativeWeight = 0;\n\t\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\t\tif (weight < 1) {\n\t\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\t\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\t\tthis._mixBufferRegion(buffer, offset, originalValueOffset, 1 - weight, stride);\n\t\t\t}\n\n\t\t\tif (weightAdditive > 0) {\n\t\t\t\t// accuN := accuN + additive accuN\n\t\t\t\tthis._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n\t\t\t}\n\n\t\t\tfor (let i = stride, e = stride + stride; i !== e; ++i) {\n\t\t\t\tif (buffer[i] !== buffer[i + stride]) {\n\t\t\t\t\t// value has changed -> update scene graph\n\t\t\t\t\tbinding.setValue(buffer, offset);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} // remember the state of the bound property and copy it to both accus\n\n\n\t\tsaveOriginalState() {\n\t\t\tconst binding = this.binding;\n\t\t\tconst buffer = this.buffer,\n\t\t\t\t\t\tstride = this.valueSize,\n\t\t\t\t\t\toriginalValueOffset = stride * this._origIndex;\n\t\t\tbinding.getValue(buffer, originalValueOffset); // accu[0..1] := orig -- initially detect changes against the original\n\n\t\t\tfor (let i = stride, e = originalValueOffset; i !== e; ++i) {\n\t\t\t\tbuffer[i] = buffer[originalValueOffset + i % stride];\n\t\t\t} // Add to identity for additive\n\n\n\t\t\tthis._setIdentity();\n\n\t\t\tthis.cumulativeWeight = 0;\n\t\t\tthis.cumulativeWeightAdditive = 0;\n\t\t} // apply the state previously taken via 'saveOriginalState' to the binding\n\n\n\t\trestoreOriginalState() {\n\t\t\tconst originalValueOffset = this.valueSize * 3;\n\t\t\tthis.binding.setValue(this.buffer, originalValueOffset);\n\t\t}\n\n\t\t_setAdditiveIdentityNumeric() {\n\t\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\t\tthis.buffer[i] = 0;\n\t\t\t}\n\t\t}\n\n\t\t_setAdditiveIdentityQuaternion() {\n\t\t\tthis._setAdditiveIdentityNumeric();\n\n\t\t\tthis.buffer[this._addIndex * this.valueSize + 3] = 1;\n\t\t}\n\n\t\t_setAdditiveIdentityOther() {\n\t\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\t\tfor (let i = 0; i < this.valueSize; i++) {\n\t\t\t\tthis.buffer[targetIndex + i] = this.buffer[startIndex + i];\n\t\t\t}\n\t\t} // mix functions\n\n\n\t\t_select(buffer, dstOffset, srcOffset, t, stride) {\n\t\t\tif (t >= 0.5) {\n\t\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\t\tbuffer[dstOffset + i] = buffer[srcOffset + i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_slerp(buffer, dstOffset, srcOffset, t) {\n\t\t\tQuaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n\t\t}\n\n\t\t_slerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n\t\t\tconst workOffset = this._workIndex * stride; // Store result in intermediate buffer offset\n\n\t\t\tQuaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset); // Slerp to the intermediate result\n\n\t\t\tQuaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t);\n\t\t}\n\n\t\t_lerp(buffer, dstOffset, srcOffset, t, stride) {\n\t\t\tconst s = 1 - t;\n\n\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\tconst j = dstOffset + i;\n\t\t\t\tbuffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n\t\t\t}\n\t\t}\n\n\t\t_lerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n\t\t\tfor (let i = 0; i !== stride; ++i) {\n\t\t\t\tconst j = dstOffset + i;\n\t\t\t\tbuffer[j] = buffer[j] + buffer[srcOffset + i] * t;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Characters [].:/ are reserved for track binding syntax.\n\tconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\n\tconst _reservedRe = new RegExp('[' + _RESERVED_CHARS_RE + ']', 'g'); // Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t// instead, we exclude reserved characters and match everything else.\n\n\n\tconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\n\n\tconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace('\\\\.', '') + ']'; // Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t// be matched to parse the rest of the track name.\n\n\n\tconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace('WC', _wordChar); // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\n\n\tconst _nodeRe = /(WCOD+)?/.source.replace('WCOD', _wordCharOrDot); // Object on target node, and accessor. May not contain reserved\n\t// characters. Accessor may contain any character except closing bracket.\n\n\n\tconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace('WC', _wordChar); // Property and accessor. May not contain reserved characters. Accessor may\n\t// contain any non-bracket characters.\n\n\n\tconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace('WC', _wordChar);\n\n\tconst _trackRe = new RegExp('' + '^' + _directoryRe + _nodeRe + _objectRe + _propertyRe + '$');\n\n\tconst _supportedObjectNames = ['material', 'materials', 'bones'];\n\n\tclass Composite {\n\t\tconstructor(targetGroup, path, optionalParsedPath) {\n\t\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n\t\t\tthis._targetGroup = targetGroup;\n\t\t\tthis._bindings = targetGroup.subscribe_(path, parsedPath);\n\t\t}\n\n\t\tgetValue(array, offset) {\n\t\t\tthis.bind(); // bind all binding\n\n\t\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\t\t\t\tbinding = this._bindings[firstValidIndex]; // and only call .getValue on the first\n\n\t\t\tif (binding !== undefined) binding.getValue(array, offset);\n\t\t}\n\n\t\tsetValue(array, offset) {\n\t\t\tconst bindings = this._bindings;\n\n\t\t\tfor (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n\t\t\t\tbindings[i].setValue(array, offset);\n\t\t\t}\n\t\t}\n\n\t\tbind() {\n\t\t\tconst bindings = this._bindings;\n\n\t\t\tfor (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n\t\t\t\tbindings[i].bind();\n\t\t\t}\n\t\t}\n\n\t\tunbind() {\n\t\t\tconst bindings = this._bindings;\n\n\t\t\tfor (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n\t\t\t\tbindings[i].unbind();\n\t\t\t}\n\t\t}\n\n\t} // Note: This class uses a State pattern on a per-method basis:\n\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t// prototype version of these methods with one that represents\n\t// the bound state. When the property is not found, the methods\n\t// become no-ops.\n\n\n\tclass PropertyBinding {\n\t\tconstructor(rootNode, path, parsedPath) {\n\t\t\tthis.path = path;\n\t\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n\t\t\tthis.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n\t\t\tthis.rootNode = rootNode; // initial state of these methods that calls 'bind'\n\n\t\t\tthis.getValue = this._getValue_unbound;\n\t\t\tthis.setValue = this._setValue_unbound;\n\t\t}\n\n\t\tstatic create(root, path, parsedPath) {\n\t\t\tif (!(root && root.isAnimationObjectGroup)) {\n\t\t\t\treturn new PropertyBinding(root, path, parsedPath);\n\t\t\t} else {\n\t\t\t\treturn new PropertyBinding.Composite(root, path, parsedPath);\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * Replaces spaces with underscores and removes unsupported characters from\n\t\t * node names, to ensure compatibility with parseTrackName().\n\t\t *\n\t\t * @param {string} name Node name to be sanitized.\n\t\t * @return {string}\n\t\t */\n\n\n\t\tstatic sanitizeNodeName(name) {\n\t\t\treturn name.replace(/\\s/g, '_').replace(_reservedRe, '');\n\t\t}\n\n\t\tstatic parseTrackName(trackName) {\n\t\t\tconst matches = _trackRe.exec(trackName);\n\n\t\t\tif (!matches) {\n\t\t\t\tthrow new Error('PropertyBinding: Cannot parse trackName: ' + trackName);\n\t\t\t}\n\n\t\t\tconst results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[2],\n\t\t\t\tobjectName: matches[3],\n\t\t\t\tobjectIndex: matches[4],\n\t\t\t\tpropertyName: matches[5],\n\t\t\t\t// required\n\t\t\t\tpropertyIndex: matches[6]\n\t\t\t};\n\t\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf('.');\n\n\t\t\tif (lastDot !== undefined && lastDot !== -1) {\n\t\t\t\tconst objectName = results.nodeName.substring(lastDot + 1); // Object names must be checked against an allowlist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\n\t\t\t\tif (_supportedObjectNames.indexOf(objectName) !== -1) {\n\t\t\t\t\tresults.nodeName = results.nodeName.substring(0, lastDot);\n\t\t\t\t\tresults.objectName = objectName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (results.propertyName === null || results.propertyName.length === 0) {\n\t\t\t\tthrow new Error('PropertyBinding: can not parse propertyName from trackName: ' + trackName);\n\t\t\t}\n\n\t\t\treturn results;\n\t\t}\n\n\t\tstatic findNode(root, nodeName) {\n\t\t\tif (!nodeName || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n\t\t\t\treturn root;\n\t\t\t} // search into skeleton bones.\n\n\n\t\t\tif (root.skeleton) {\n\t\t\t\tconst bone = root.skeleton.getBoneByName(nodeName);\n\n\t\t\t\tif (bone !== undefined) {\n\t\t\t\t\treturn bone;\n\t\t\t\t}\n\t\t\t} // search into node subtree.\n\n\n\t\t\tif (root.children) {\n\t\t\t\tconst searchNodeSubtree = function (children) {\n\t\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\t\tconst childNode = children[i];\n\n\t\t\t\t\t\tif (childNode.name === nodeName || childNode.uuid === nodeName) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst result = searchNodeSubtree(childNode.children);\n\t\t\t\t\t\tif (result) return result;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\n\t\t\t\tconst subTreeNode = searchNodeSubtree(root.children);\n\n\t\t\t\tif (subTreeNode) {\n\t\t\t\t\treturn subTreeNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} // these are used to \"bind\" a nonexistent property\n\n\n\t\t_getValue_unavailable() {}\n\n\t\t_setValue_unavailable() {} // Getters\n\n\n\t\t_getValue_direct(buffer, offset) {\n\t\t\tbuffer[offset] = this.targetObject[this.propertyName];\n\t\t}\n\n\t\t_getValue_array(buffer, offset) {\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor (let i = 0, n = source.length; i !== n; ++i) {\n\t\t\t\tbuffer[offset++] = source[i];\n\t\t\t}\n\t\t}\n\n\t\t_getValue_arrayElement(buffer, offset) {\n\t\t\tbuffer[offset] = this.resolvedProperty[this.propertyIndex];\n\t\t}\n\n\t\t_getValue_toArray(buffer, offset) {\n\t\t\tthis.resolvedProperty.toArray(buffer, offset);\n\t\t} // Direct\n\n\n\t\t_setValue_direct(buffer, offset) {\n\t\t\tthis.targetObject[this.propertyName] = buffer[offset];\n\t\t}\n\n\t\t_setValue_direct_setNeedsUpdate(buffer, offset) {\n\t\t\tthis.targetObject[this.propertyName] = buffer[offset];\n\t\t\tthis.targetObject.needsUpdate = true;\n\t\t}\n\n\t\t_setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n\t\t\tthis.targetObject[this.propertyName] = buffer[offset];\n\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\t\t} // EntireArray\n\n\n\t\t_setValue_array(buffer, offset) {\n\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\tfor (let i = 0, n = dest.length; i !== n; ++i) {\n\t\t\t\tdest[i] = buffer[offset++];\n\t\t\t}\n\t\t}\n\n\t\t_setValue_array_setNeedsUpdate(buffer, offset) {\n\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\tfor (let i = 0, n = dest.length; i !== n; ++i) {\n\t\t\t\tdest[i] = buffer[offset++];\n\t\t\t}\n\n\t\t\tthis.targetObject.needsUpdate = true;\n\t\t}\n\n\t\t_setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\tfor (let i = 0, n = dest.length; i !== n; ++i) {\n\t\t\t\tdest[i] = buffer[offset++];\n\t\t\t}\n\n\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\t\t} // ArrayElement\n\n\n\t\t_setValue_arrayElement(buffer, offset) {\n\t\t\tthis.resolvedProperty[this.propertyIndex] = buffer[offset];\n\t\t}\n\n\t\t_setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n\t\t\tthis.resolvedProperty[this.propertyIndex] = buffer[offset];\n\t\t\tthis.targetObject.needsUpdate = true;\n\t\t}\n\n\t\t_setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n\t\t\tthis.resolvedProperty[this.propertyIndex] = buffer[offset];\n\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\t\t} // HasToFromArray\n\n\n\t\t_setValue_fromArray(buffer, offset) {\n\t\t\tthis.resolvedProperty.fromArray(buffer, offset);\n\t\t}\n\n\t\t_setValue_fromArray_setNeedsUpdate(buffer, offset) {\n\t\t\tthis.resolvedProperty.fromArray(buffer, offset);\n\t\t\tthis.targetObject.needsUpdate = true;\n\t\t}\n\n\t\t_setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n\t\t\tthis.resolvedProperty.fromArray(buffer, offset);\n\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\t\t}\n\n\t\t_getValue_unbound(targetArray, offset) {\n\t\t\tthis.bind();\n\t\t\tthis.getValue(targetArray, offset);\n\t\t}\n\n\t\t_setValue_unbound(sourceArray, offset) {\n\t\t\tthis.bind();\n\t\t\tthis.setValue(sourceArray, offset);\n\t\t} // create getter / setter pair for a property in the scene graph\n\n\n\t\tbind() {\n\t\t\tlet targetObject = this.node;\n\t\t\tconst parsedPath = this.parsedPath;\n\t\t\tconst objectName = parsedPath.objectName;\n\t\t\tconst propertyName = parsedPath.propertyName;\n\t\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\t\tif (!targetObject) {\n\t\t\t\ttargetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n\t\t\t\tthis.node = targetObject;\n\t\t\t} // set fail state so we can just 'return' on error\n\n\n\t\t\tthis.getValue = this._getValue_unavailable;\n\t\t\tthis.setValue = this._setValue_unavailable; // ensure there is a value node\n\n\t\t\tif (!targetObject) {\n\t\t\t\tconsole.error('THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (objectName) {\n\t\t\t\tlet objectIndex = parsedPath.objectIndex; // special cases were we need to reach deeper into the hierarchy to get the face materials....\n\n\t\t\t\tswitch (objectName) {\n\t\t\t\t\tcase 'materials':\n\t\t\t\t\t\tif (!targetObject.material) {\n\t\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to material as node does not have a material.', this);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!targetObject.material.materials) {\n\t\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject.material.materials;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bones':\n\t\t\t\t\t\tif (!targetObject.skeleton) {\n\t\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} // potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t\t// and convert the integer string to a true integer.\n\n\n\t\t\t\t\t\ttargetObject = targetObject.skeleton.bones; // support resolving morphTarget names into indices.\n\n\t\t\t\t\t\tfor (let i = 0; i < targetObject.length; i++) {\n\t\t\t\t\t\t\tif (targetObject[i].name === objectIndex) {\n\t\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (targetObject[objectName] === undefined) {\n\t\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to objectName of node undefined.', this);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject[objectName];\n\t\t\t\t}\n\n\t\t\t\tif (objectIndex !== undefined) {\n\t\t\t\t\tif (targetObject[objectIndex] === undefined) {\n\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[objectIndex];\n\t\t\t\t}\n\t\t\t} // resolve property\n\n\n\t\t\tconst nodeProperty = targetObject[propertyName];\n\n\t\t\tif (nodeProperty === undefined) {\n\t\t\t\tconst nodeName = parsedPath.nodeName;\n\t\t\t\tconsole.error('THREE.PropertyBinding: Trying to update property for track: ' + nodeName + '.' + propertyName + ' but it wasn\\'t found.', targetObject);\n\t\t\t\treturn;\n\t\t\t} // determine versioning scheme\n\n\n\t\t\tlet versioning = this.Versioning.None;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t\tif (targetObject.needsUpdate !== undefined) {\n\t\t\t\t// material\n\t\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\t} else if (targetObject.matrixWorldNeedsUpdate !== undefined) {\n\t\t\t\t// node transform\n\t\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\t} // determine how the property gets bound\n\n\n\t\t\tlet bindingType = this.BindingType.Direct;\n\n\t\t\tif (propertyIndex !== undefined) {\n\t\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\t\t\t\tif (propertyName === 'morphTargetInfluences') {\n\t\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tif (!targetObject.geometry) {\n\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (targetObject.geometry.isBufferGeometry) {\n\t\t\t\t\t\tif (!targetObject.geometry.morphAttributes) {\n\t\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (targetObject.morphTargetDictionary[propertyIndex] !== undefined) {\n\t\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbindingType = this.BindingType.ArrayElement;\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\t\tthis.propertyIndex = propertyIndex;\n\t\t\t} else if (nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined) {\n\t\t\t\t// must use copy for Object3D.Euler/Quaternion\n\t\t\t\tbindingType = this.BindingType.HasFromToArray;\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\t} else if (Array.isArray(nodeProperty)) {\n\t\t\t\tbindingType = this.BindingType.EntireArray;\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\t} else {\n\t\t\t\tthis.propertyName = propertyName;\n\t\t\t} // select getter / setter\n\n\n\t\t\tthis.getValue = this.GetterByBindingType[bindingType];\n\t\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n\t\t}\n\n\t\tunbind() {\n\t\t\tthis.node = null; // back to the prototype version of getValue / setValue\n\t\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\n\t\t\tthis.getValue = this._getValue_unbound;\n\t\t\tthis.setValue = this._setValue_unbound;\n\t\t}\n\n\t}\n\n\tPropertyBinding.Composite = Composite;\n\tPropertyBinding.prototype.BindingType = {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t};\n\tPropertyBinding.prototype.Versioning = {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t};\n\tPropertyBinding.prototype.GetterByBindingType = [PropertyBinding.prototype._getValue_direct, PropertyBinding.prototype._getValue_array, PropertyBinding.prototype._getValue_arrayElement, PropertyBinding.prototype._getValue_toArray];\n\tPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [[// Direct\n\tPropertyBinding.prototype._setValue_direct, PropertyBinding.prototype._setValue_direct_setNeedsUpdate, PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate], [// EntireArray\n\tPropertyBinding.prototype._setValue_array, PropertyBinding.prototype._setValue_array_setNeedsUpdate, PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate], [// ArrayElement\n\tPropertyBinding.prototype._setValue_arrayElement, PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate, PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate], [// HasToFromArray\n\tPropertyBinding.prototype._setValue_fromArray, PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate, PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];\n\n\t/**\n\t *\n\t * A group of objects that receives a shared animation state.\n\t *\n\t * Usage:\n\t *\n\t *\t- Add objects you would otherwise pass as 'root' to the\n\t *\t\tconstructor or the .clipAction method of AnimationMixer.\n\t *\n\t *\t- Instead pass this object as 'root'.\n\t *\n\t *\t- You can also add and remove objects later when the mixer\n\t *\t\tis running.\n\t *\n\t * Note:\n\t *\n\t *\t\tObjects of this class appear as one object to the mixer,\n\t *\t\tso cache control of the individual objects must be done\n\t *\t\ton the group.\n\t *\n\t * Limitation:\n\t *\n\t *\t- The animated properties must be compatible among the\n\t *\t\tall objects in the group.\n\t *\n\t *\t- A single property can either be controlled through a\n\t *\t\ttarget group or directly, but not both.\n\t */\n\n\tclass AnimationObjectGroup {\n\t\tconstructor() {\n\t\t\tthis.uuid = generateUUID(); // cached objects followed by the active ones\n\n\t\t\tthis._objects = Array.prototype.slice.call(arguments);\n\t\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t\t// note: read by PropertyBinding.Composite\n\n\t\t\tconst indices = {};\n\t\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\t\tfor (let i = 0, n = arguments.length; i !== n; ++i) {\n\t\t\t\tindices[arguments[i].uuid] = i;\n\t\t\t}\n\n\t\t\tthis._paths = []; // inside: string\n\n\t\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\n\t\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\n\t\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\t\tconst scope = this;\n\t\t\tthis.stats = {\n\t\t\t\tobjects: {\n\t\t\t\t\tget total() {\n\t\t\t\t\t\treturn scope._objects.length;\n\t\t\t\t\t},\n\n\t\t\t\t\tget inUse() {\n\t\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tget bindingsPerObject() {\n\t\t\t\t\treturn scope._bindings.length;\n\t\t\t\t}\n\n\t\t\t};\n\t\t}\n\n\t\tadd() {\n\t\t\tconst objects = this._objects,\n\t\t\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\t\t\tpaths = this._paths,\n\t\t\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\t\tnBindings = bindings.length;\n\t\t\tlet knownObject = undefined,\n\t\t\t\t\tnObjects = objects.length,\n\t\t\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\t\tfor (let i = 0, n = arguments.length; i !== n; ++i) {\n\t\t\t\tconst object = arguments[i],\n\t\t\t\t\t\t\tuuid = object.uuid;\n\t\t\t\tlet index = indicesByUUID[uuid];\n\n\t\t\t\tif (index === undefined) {\n\t\t\t\t\t// unknown object -> add it to the ACTIVE region\n\t\t\t\t\tindex = nObjects++;\n\t\t\t\t\tindicesByUUID[uuid] = index;\n\t\t\t\t\tobjects.push(object); // accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor (let j = 0, m = nBindings; j !== m; ++j) {\n\t\t\t\t\t\tbindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\n\t\t\t\t\t}\n\t\t\t\t} else if (index < nCachedObjects) {\n\t\t\t\t\tknownObject = objects[index]; // move existing object to the ACTIVE region\n\n\t\t\t\t\tconst firstActiveIndex = --nCachedObjects,\n\t\t\t\t\t\t\t\tlastCachedObject = objects[firstActiveIndex];\n\t\t\t\t\tindicesByUUID[lastCachedObject.uuid] = index;\n\t\t\t\t\tobjects[index] = lastCachedObject;\n\t\t\t\t\tindicesByUUID[uuid] = firstActiveIndex;\n\t\t\t\t\tobjects[firstActiveIndex] = object; // accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor (let j = 0, m = nBindings; j !== m; ++j) {\n\t\t\t\t\t\tconst bindingsForPath = bindings[j],\n\t\t\t\t\t\t\t\t\tlastCached = bindingsForPath[firstActiveIndex];\n\t\t\t\t\t\tlet binding = bindingsForPath[index];\n\t\t\t\t\t\tbindingsForPath[index] = lastCached;\n\n\t\t\t\t\t\tif (binding === undefined) {\n\t\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t\t// or may not exist\n\t\t\t\t\t\t\tbinding = new PropertyBinding(object, paths[j], parsedPaths[j]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbindingsForPath[firstActiveIndex] = binding;\n\t\t\t\t\t}\n\t\t\t\t} else if (objects[index] !== knownObject) {\n\t\t\t\t\tconsole.error('THREE.AnimationObjectGroup: Different objects with the same UUID ' + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.');\n\t\t\t\t} // else the object is already where we want it to be\n\n\t\t\t} // for arguments\n\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\t\t}\n\n\t\tremove() {\n\t\t\tconst objects = this._objects,\n\t\t\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\t\tnBindings = bindings.length;\n\t\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\t\tfor (let i = 0, n = arguments.length; i !== n; ++i) {\n\t\t\t\tconst object = arguments[i],\n\t\t\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\t\t\tindex = indicesByUUID[uuid];\n\n\t\t\t\tif (index !== undefined && index >= nCachedObjects) {\n\t\t\t\t\t// move existing object into the CACHED region\n\t\t\t\t\tconst lastCachedIndex = nCachedObjects++,\n\t\t\t\t\t\t\t\tfirstActiveObject = objects[lastCachedIndex];\n\t\t\t\t\tindicesByUUID[firstActiveObject.uuid] = index;\n\t\t\t\t\tobjects[index] = firstActiveObject;\n\t\t\t\t\tindicesByUUID[uuid] = lastCachedIndex;\n\t\t\t\t\tobjects[lastCachedIndex] = object; // accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor (let j = 0, m = nBindings; j !== m; ++j) {\n\t\t\t\t\t\tconst bindingsForPath = bindings[j],\n\t\t\t\t\t\t\t\t\tfirstActive = bindingsForPath[lastCachedIndex],\n\t\t\t\t\t\t\t\t\tbinding = bindingsForPath[index];\n\t\t\t\t\t\tbindingsForPath[index] = firstActive;\n\t\t\t\t\t\tbindingsForPath[lastCachedIndex] = binding;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // for arguments\n\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\t\t} // remove & forget\n\n\n\t\tuncache() {\n\t\t\tconst objects = this._objects,\n\t\t\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\t\tnBindings = bindings.length;\n\t\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\t\t\tnObjects = objects.length;\n\n\t\t\tfor (let i = 0, n = arguments.length; i !== n; ++i) {\n\t\t\t\tconst object = arguments[i],\n\t\t\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\t\t\tindex = indicesByUUID[uuid];\n\n\t\t\t\tif (index !== undefined) {\n\t\t\t\t\tdelete indicesByUUID[uuid];\n\n\t\t\t\t\tif (index < nCachedObjects) {\n\t\t\t\t\t\t// object is cached, shrink the CACHED region\n\t\t\t\t\t\tconst firstActiveIndex = --nCachedObjects,\n\t\t\t\t\t\t\t\t\tlastCachedObject = objects[firstActiveIndex],\n\t\t\t\t\t\t\t\t\tlastIndex = --nObjects,\n\t\t\t\t\t\t\t\t\tlastObject = objects[lastIndex]; // last cached object takes this object's place\n\n\t\t\t\t\t\tindicesByUUID[lastCachedObject.uuid] = index;\n\t\t\t\t\t\tobjects[index] = lastCachedObject; // last object goes to the activated slot and pop\n\n\t\t\t\t\t\tindicesByUUID[lastObject.uuid] = firstActiveIndex;\n\t\t\t\t\t\tobjects[firstActiveIndex] = lastObject;\n\t\t\t\t\t\tobjects.pop(); // accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor (let j = 0, m = nBindings; j !== m; ++j) {\n\t\t\t\t\t\t\tconst bindingsForPath = bindings[j],\n\t\t\t\t\t\t\t\t\t\tlastCached = bindingsForPath[firstActiveIndex],\n\t\t\t\t\t\t\t\t\t\tlast = bindingsForPath[lastIndex];\n\t\t\t\t\t\t\tbindingsForPath[index] = lastCached;\n\t\t\t\t\t\t\tbindingsForPath[firstActiveIndex] = last;\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// object is active, just swap with the last and pop\n\t\t\t\t\t\tconst lastIndex = --nObjects,\n\t\t\t\t\t\t\t\t\tlastObject = objects[lastIndex];\n\n\t\t\t\t\t\tif (lastIndex > 0) {\n\t\t\t\t\t\t\tindicesByUUID[lastObject.uuid] = index;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tobjects[index] = lastObject;\n\t\t\t\t\t\tobjects.pop(); // accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor (let j = 0, m = nBindings; j !== m; ++j) {\n\t\t\t\t\t\t\tconst bindingsForPath = bindings[j];\n\t\t\t\t\t\t\tbindingsForPath[index] = bindingsForPath[lastIndex];\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\t\t\t\t\t\t}\n\t\t\t\t\t} // cached or active\n\n\t\t\t\t} // if object is known\n\n\t\t\t} // for arguments\n\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\t\t} // Internal interface used by befriended PropertyBinding.Composite:\n\n\n\t\tsubscribe_(path, parsedPath) {\n\t\t\t// returns an array of bindings for the given path that is changed\n\t\t\t// according to the contained objects in the group\n\t\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\t\tlet index = indicesByPath[path];\n\t\t\tconst bindings = this._bindings;\n\t\t\tif (index !== undefined) return bindings[index];\n\t\t\tconst paths = this._paths,\n\t\t\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\t\t\tobjects = this._objects,\n\t\t\t\t\t\tnObjects = objects.length,\n\t\t\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\t\t\tbindingsForPath = new Array(nObjects);\n\t\t\tindex = bindings.length;\n\t\t\tindicesByPath[path] = index;\n\t\t\tpaths.push(path);\n\t\t\tparsedPaths.push(parsedPath);\n\t\t\tbindings.push(bindingsForPath);\n\n\t\t\tfor (let i = nCachedObjects, n = objects.length; i !== n; ++i) {\n\t\t\t\tconst object = objects[i];\n\t\t\t\tbindingsForPath[i] = new PropertyBinding(object, path, parsedPath);\n\t\t\t}\n\n\t\t\treturn bindingsForPath;\n\t\t}\n\n\t\tunsubscribe_(path) {\n\t\t\t// tells the group to forget about a property path and no longer\n\t\t\t// update the array previously obtained with 'subscribe_'\n\t\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\t\t\t\tindex = indicesByPath[path];\n\n\t\t\tif (index !== undefined) {\n\t\t\t\tconst paths = this._paths,\n\t\t\t\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\t\t\t\tlastBindings = bindings[lastBindingsIndex],\n\t\t\t\t\t\t\tlastBindingsPath = path[lastBindingsIndex];\n\t\t\t\tindicesByPath[lastBindingsPath] = index;\n\t\t\t\tbindings[index] = lastBindings;\n\t\t\t\tbindings.pop();\n\t\t\t\tparsedPaths[index] = parsedPaths[lastBindingsIndex];\n\t\t\t\tparsedPaths.pop();\n\t\t\t\tpaths[index] = paths[lastBindingsIndex];\n\t\t\t\tpaths.pop();\n\t\t\t}\n\t\t}\n\n\t}\n\n\tAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\n\tclass AnimationAction {\n\t\tconstructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n\t\t\tthis._mixer = mixer;\n\t\t\tthis._clip = clip;\n\t\t\tthis._localRoot = localRoot;\n\t\t\tthis.blendMode = blendMode;\n\t\t\tconst tracks = clip.tracks,\n\t\t\t\t\t\tnTracks = tracks.length,\n\t\t\t\t\t\tinterpolants = new Array(nTracks);\n\t\t\tconst interpolantSettings = {\n\t\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t\t};\n\n\t\t\tfor (let i = 0; i !== nTracks; ++i) {\n\t\t\t\tconst interpolant = tracks[i].createInterpolant(null);\n\t\t\t\tinterpolants[i] = interpolant;\n\t\t\t\tinterpolant.settings = interpolantSettings;\n\t\t\t}\n\n\t\t\tthis._interpolantSettings = interpolantSettings;\n\t\t\tthis._interpolants = interpolants; // bound by the mixer\n\t\t\t// inside: PropertyMixer (managed by the mixer)\n\n\t\t\tthis._propertyBindings = new Array(nTracks);\n\t\t\tthis._cacheIndex = null; // for the memory manager\n\n\t\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis.loop = LoopRepeat;\n\t\t\tthis._loopCount = -1; // global mixer time when the action is to be started\n\t\t\t// it's set back to 'null' upon start of the action\n\n\t\t\tthis._startTime = null; // scaled local time of the action\n\t\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\n\t\t\tthis.time = 0;\n\t\t\tthis.timeScale = 1;\n\t\t\tthis._effectiveTimeScale = 1;\n\t\t\tthis.weight = 1;\n\t\t\tthis._effectiveWeight = 1;\n\t\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\t\tthis.paused = false; // true -> zero effective time scale\n\n\t\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\t\tthis.clampWhenFinished = false; // keep feeding the last frame?\n\n\t\t\tthis.zeroSlopeAtStart = true; // for smooth interpolation w/o separate\n\n\t\t\tthis.zeroSlopeAtEnd = true; // clips for start, loop and end\n\t\t} // State & Scheduling\n\n\n\t\tplay() {\n\t\t\tthis._mixer._activateAction(this);\n\n\t\t\treturn this;\n\t\t}\n\n\t\tstop() {\n\t\t\tthis._mixer._deactivateAction(this);\n\n\t\t\treturn this.reset();\n\t\t}\n\n\t\treset() {\n\t\t\tthis.paused = false;\n\t\t\tthis.enabled = true;\n\t\t\tthis.time = 0; // restart clip\n\n\t\t\tthis._loopCount = -1; // forget previous loops\n\n\t\t\tthis._startTime = null; // forget scheduling\n\n\t\t\treturn this.stopFading().stopWarping();\n\t\t}\n\n\t\tisRunning() {\n\t\t\treturn this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n\t\t} // return true when play has been called\n\n\n\t\tisScheduled() {\n\t\t\treturn this._mixer._isActiveAction(this);\n\t\t}\n\n\t\tstartAt(time) {\n\t\t\tthis._startTime = time;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetLoop(mode, repetitions) {\n\t\t\tthis.loop = mode;\n\t\t\tthis.repetitions = repetitions;\n\t\t\treturn this;\n\t\t} // Weight\n\t\t// set the weight stopping any scheduled fading\n\t\t// although .enabled = false yields an effective weight of zero, this\n\t\t// method does *not* change .enabled, because it would be confusing\n\n\n\t\tsetEffectiveWeight(weight) {\n\t\t\tthis.weight = weight; // note: same logic as when updated at runtime\n\n\t\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\t\t\treturn this.stopFading();\n\t\t} // return the weight considering fading and .enabled\n\n\n\t\tgetEffectiveWeight() {\n\t\t\treturn this._effectiveWeight;\n\t\t}\n\n\t\tfadeIn(duration) {\n\t\t\treturn this._scheduleFading(duration, 0, 1);\n\t\t}\n\n\t\tfadeOut(duration) {\n\t\t\treturn this._scheduleFading(duration, 1, 0);\n\t\t}\n\n\t\tcrossFadeFrom(fadeOutAction, duration, warp) {\n\t\t\tfadeOutAction.fadeOut(duration);\n\t\t\tthis.fadeIn(duration);\n\n\t\t\tif (warp) {\n\t\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\t\t\t\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\t\t\t\tfadeOutAction.warp(1.0, startEndRatio, duration);\n\t\t\t\tthis.warp(endStartRatio, 1.0, duration);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tcrossFadeTo(fadeInAction, duration, warp) {\n\t\t\treturn fadeInAction.crossFadeFrom(this, duration, warp);\n\t\t}\n\n\t\tstopFading() {\n\t\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\t\tif (weightInterpolant !== null) {\n\t\t\t\tthis._weightInterpolant = null;\n\n\t\t\t\tthis._mixer._takeBackControlInterpolant(weightInterpolant);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // Time Scale Control\n\t\t// set the time scale stopping any scheduled warping\n\t\t// although .paused = true yields an effective time scale of zero, this\n\t\t// method does *not* change .paused, because it would be confusing\n\n\n\t\tsetEffectiveTimeScale(timeScale) {\n\t\t\tthis.timeScale = timeScale;\n\t\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\t\t\treturn this.stopWarping();\n\t\t} // return the time scale considering warping and .paused\n\n\n\t\tgetEffectiveTimeScale() {\n\t\t\treturn this._effectiveTimeScale;\n\t\t}\n\n\t\tsetDuration(duration) {\n\t\t\tthis.timeScale = this._clip.duration / duration;\n\t\t\treturn this.stopWarping();\n\t\t}\n\n\t\tsyncWith(action) {\n\t\t\tthis.time = action.time;\n\t\t\tthis.timeScale = action.timeScale;\n\t\t\treturn this.stopWarping();\n\t\t}\n\n\t\thalt(duration) {\n\t\t\treturn this.warp(this._effectiveTimeScale, 0, duration);\n\t\t}\n\n\t\twarp(startTimeScale, endTimeScale, duration) {\n\t\t\tconst mixer = this._mixer,\n\t\t\t\t\t\tnow = mixer.time,\n\t\t\t\t\t\ttimeScale = this.timeScale;\n\t\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\t\tif (interpolant === null) {\n\t\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\t\tthis._timeScaleInterpolant = interpolant;\n\t\t\t}\n\n\t\t\tconst times = interpolant.parameterPositions,\n\t\t\t\t\t\tvalues = interpolant.sampleValues;\n\t\t\ttimes[0] = now;\n\t\t\ttimes[1] = now + duration;\n\t\t\tvalues[0] = startTimeScale / timeScale;\n\t\t\tvalues[1] = endTimeScale / timeScale;\n\t\t\treturn this;\n\t\t}\n\n\t\tstopWarping() {\n\t\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\t\tif (timeScaleInterpolant !== null) {\n\t\t\t\tthis._timeScaleInterpolant = null;\n\n\t\t\t\tthis._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // Object Accessors\n\n\n\t\tgetMixer() {\n\t\t\treturn this._mixer;\n\t\t}\n\n\t\tgetClip() {\n\t\t\treturn this._clip;\n\t\t}\n\n\t\tgetRoot() {\n\t\t\treturn this._localRoot || this._mixer._root;\n\t\t} // Interna\n\n\n\t\t_update(time, deltaTime, timeDirection, accuIndex) {\n\t\t\t// called by the mixer\n\t\t\tif (!this.enabled) {\n\t\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\t\t\t\tthis._updateWeight(time);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst startTime = this._startTime;\n\n\t\t\tif (startTime !== null) {\n\t\t\t\t// check for scheduled start of action\n\t\t\t\tconst timeRunning = (time - startTime) * timeDirection;\n\n\t\t\t\tif (timeRunning < 0 || timeDirection === 0) {\n\t\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\t\t\t\t} // start\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\t\t\t} // apply time scale and advance time\n\n\n\t\t\tdeltaTime *= this._updateTimeScale(time);\n\n\t\t\tconst clipTime = this._updateTime(deltaTime); // note: _updateTime may disable the action resulting in\n\t\t\t// an effective weight of 0\n\n\n\t\t\tconst weight = this._updateWeight(time);\n\n\t\t\tif (weight > 0) {\n\t\t\t\tconst interpolants = this._interpolants;\n\t\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\t\tswitch (this.blendMode) {\n\t\t\t\t\tcase AdditiveAnimationBlendMode:\n\t\t\t\t\t\tfor (let j = 0, m = interpolants.length; j !== m; ++j) {\n\t\t\t\t\t\t\tinterpolants[j].evaluate(clipTime);\n\t\t\t\t\t\t\tpropertyMixers[j].accumulateAdditive(weight);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tfor (let j = 0, m = interpolants.length; j !== m; ++j) {\n\t\t\t\t\t\t\tinterpolants[j].evaluate(clipTime);\n\t\t\t\t\t\t\tpropertyMixers[j].accumulate(accuIndex, weight);\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_updateWeight(time) {\n\t\t\tlet weight = 0;\n\n\t\t\tif (this.enabled) {\n\t\t\t\tweight = this.weight;\n\t\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\t\tif (interpolant !== null) {\n\t\t\t\t\tconst interpolantValue = interpolant.evaluate(time)[0];\n\t\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\t\tif (time > interpolant.parameterPositions[1]) {\n\t\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\t\tif (interpolantValue === 0) {\n\t\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\t\tthis.enabled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._effectiveWeight = weight;\n\t\t\treturn weight;\n\t\t}\n\n\t\t_updateTimeScale(time) {\n\t\t\tlet timeScale = 0;\n\n\t\t\tif (!this.paused) {\n\t\t\t\ttimeScale = this.timeScale;\n\t\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\t\tif (interpolant !== null) {\n\t\t\t\t\tconst interpolantValue = interpolant.evaluate(time)[0];\n\t\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\t\tif (time > interpolant.parameterPositions[1]) {\n\t\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\t\tif (timeScale === 0) {\n\t\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\t\tthis.paused = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\t\tthis.timeScale = timeScale;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._effectiveTimeScale = timeScale;\n\t\t\treturn timeScale;\n\t\t}\n\n\t\t_updateTime(deltaTime) {\n\t\t\tconst duration = this._clip.duration;\n\t\t\tconst loop = this.loop;\n\t\t\tlet time = this.time + deltaTime;\n\t\t\tlet loopCount = this._loopCount;\n\t\t\tconst pingPong = loop === LoopPingPong;\n\n\t\t\tif (deltaTime === 0) {\n\t\t\t\tif (loopCount === -1) return time;\n\t\t\t\treturn pingPong && (loopCount & 1) === 1 ? duration - time : time;\n\t\t\t}\n\n\t\t\tif (loop === LoopOnce) {\n\t\t\t\tif (loopCount === -1) {\n\t\t\t\t\t// just started\n\t\t\t\t\tthis._loopCount = 0;\n\n\t\t\t\t\tthis._setEndings(true, true, false);\n\t\t\t\t}\n\n\t\t\t\thandle_stop: {\n\t\t\t\t\tif (time >= duration) {\n\t\t\t\t\t\ttime = duration;\n\t\t\t\t\t} else if (time < 0) {\n\t\t\t\t\t\ttime = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.time = time;\n\t\t\t\t\t\tbreak handle_stop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.clampWhenFinished) this.paused = true;else this.enabled = false;\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent({\n\t\t\t\t\t\ttype: 'finished',\n\t\t\t\t\t\taction: this,\n\t\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// repetitive Repeat or PingPong\n\t\t\t\tif (loopCount === -1) {\n\t\t\t\t\t// just started\n\t\t\t\t\tif (deltaTime >= 0) {\n\t\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\t\tthis._setEndings(true, this.repetitions === 0, pingPong);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t\t// so leave loopCount at -1\n\t\t\t\t\t\tthis._setEndings(this.repetitions === 0, true, pingPong);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (time >= duration || time < 0) {\n\t\t\t\t\t// wrap around\n\t\t\t\t\tconst loopDelta = Math.floor(time / duration); // signed\n\n\t\t\t\t\ttime -= duration * loopDelta;\n\t\t\t\t\tloopCount += Math.abs(loopDelta);\n\t\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\t\tif (pending <= 0) {\n\t\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\t\t\t\t\t\tif (this.clampWhenFinished) this.paused = true;else this.enabled = false;\n\t\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\t\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'finished',\n\t\t\t\t\t\t\taction: this,\n\t\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// keep running\n\t\t\t\t\t\tif (pending === 1) {\n\t\t\t\t\t\t\t// entering the last round\n\t\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\n\t\t\t\t\t\t\tthis._setEndings(atStart, !atStart, pingPong);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._setEndings(false, false, pingPong);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._loopCount = loopCount;\n\t\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent({\n\t\t\t\t\t\t\ttype: 'loop',\n\t\t\t\t\t\t\taction: this,\n\t\t\t\t\t\t\tloopDelta: loopDelta\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.time = time;\n\t\t\t\t}\n\n\t\t\t\tif (pingPong && (loopCount & 1) === 1) {\n\t\t\t\t\t// invert time for the \"pong round\"\n\t\t\t\t\treturn duration - time;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn time;\n\t\t}\n\n\t\t_setEndings(atStart, atEnd, pingPong) {\n\t\t\tconst settings = this._interpolantSettings;\n\n\t\t\tif (pingPong) {\n\t\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\t\t\t} else {\n\t\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\t\t\t\tif (atStart) {\n\t\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\t\t\t\t} else {\n\t\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\t\t\t\t}\n\n\t\t\t\tif (atEnd) {\n\t\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\t\t\t\t} else {\n\t\t\t\t\tsettings.endingEnd = WrapAroundEnding;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_scheduleFading(duration, weightNow, weightThen) {\n\t\t\tconst mixer = this._mixer,\n\t\t\t\t\t\tnow = mixer.time;\n\t\t\tlet interpolant = this._weightInterpolant;\n\n\t\t\tif (interpolant === null) {\n\t\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\t\tthis._weightInterpolant = interpolant;\n\t\t\t}\n\n\t\t\tconst times = interpolant.parameterPositions,\n\t\t\t\t\t\tvalues = interpolant.sampleValues;\n\t\t\ttimes[0] = now;\n\t\t\tvalues[0] = weightNow;\n\t\t\ttimes[1] = now + duration;\n\t\t\tvalues[1] = weightThen;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass AnimationMixer extends EventDispatcher {\n\t\tconstructor(root) {\n\t\t\tsuper();\n\t\t\tthis._root = root;\n\n\t\t\tthis._initMemoryManager();\n\n\t\t\tthis._accuIndex = 0;\n\t\t\tthis.time = 0;\n\t\t\tthis.timeScale = 1.0;\n\t\t}\n\n\t\t_bindAction(action, prototypeAction) {\n\t\t\tconst root = action._localRoot || this._root,\n\t\t\t\t\t\ttracks = action._clip.tracks,\n\t\t\t\t\t\tnTracks = tracks.length,\n\t\t\t\t\t\tbindings = action._propertyBindings,\n\t\t\t\t\t\tinterpolants = action._interpolants,\n\t\t\t\t\t\trootUuid = root.uuid,\n\t\t\t\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\t\t\tlet bindingsByName = bindingsByRoot[rootUuid];\n\n\t\t\tif (bindingsByName === undefined) {\n\t\t\t\tbindingsByName = {};\n\t\t\t\tbindingsByRoot[rootUuid] = bindingsByName;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i !== nTracks; ++i) {\n\t\t\t\tconst track = tracks[i],\n\t\t\t\t\t\t\ttrackName = track.name;\n\t\t\t\tlet binding = bindingsByName[trackName];\n\n\t\t\t\tif (binding !== undefined) {\n\t\t\t\t\tbindings[i] = binding;\n\t\t\t\t} else {\n\t\t\t\t\tbinding = bindings[i];\n\n\t\t\t\t\tif (binding !== undefined) {\n\t\t\t\t\t\t// existing binding, make sure the cache knows\n\t\t\t\t\t\tif (binding._cacheIndex === null) {\n\t\t\t\t\t\t\t++binding.referenceCount;\n\n\t\t\t\t\t\t\tthis._addInactiveBinding(binding, rootUuid, trackName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n\t\t\t\t\tbinding = new PropertyMixer(PropertyBinding.create(root, trackName, path), track.ValueTypeName, track.getValueSize());\n\t\t\t\t\t++binding.referenceCount;\n\n\t\t\t\t\tthis._addInactiveBinding(binding, rootUuid, trackName);\n\n\t\t\t\t\tbindings[i] = binding;\n\t\t\t\t}\n\n\t\t\t\tinterpolants[i].resultBuffer = binding.buffer;\n\t\t\t}\n\t\t}\n\n\t\t_activateAction(action) {\n\t\t\tif (!this._isActiveAction(action)) {\n\t\t\t\tif (action._cacheIndex === null) {\n\t\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t\t// appears to be still using it -> rebind\n\t\t\t\t\tconst rootUuid = (action._localRoot || this._root).uuid,\n\t\t\t\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\t\t\t\tactionsForClip = this._actionsByClip[clipUuid];\n\n\t\t\t\t\tthis._bindAction(action, actionsForClip && actionsForClip.knownActions[0]);\n\n\t\t\t\t\tthis._addInactiveAction(action, clipUuid, rootUuid);\n\t\t\t\t}\n\n\t\t\t\tconst bindings = action._propertyBindings; // increment reference counts / sort out state\n\n\t\t\t\tfor (let i = 0, n = bindings.length; i !== n; ++i) {\n\t\t\t\t\tconst binding = bindings[i];\n\n\t\t\t\t\tif (binding.useCount++ === 0) {\n\t\t\t\t\t\tthis._lendBinding(binding);\n\n\t\t\t\t\t\tbinding.saveOriginalState();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._lendAction(action);\n\t\t\t}\n\t\t}\n\n\t\t_deactivateAction(action) {\n\t\t\tif (this._isActiveAction(action)) {\n\t\t\t\tconst bindings = action._propertyBindings; // decrement reference counts / sort out state\n\n\t\t\t\tfor (let i = 0, n = bindings.length; i !== n; ++i) {\n\t\t\t\t\tconst binding = bindings[i];\n\n\t\t\t\t\tif (--binding.useCount === 0) {\n\t\t\t\t\t\tbinding.restoreOriginalState();\n\n\t\t\t\t\t\tthis._takeBackBinding(binding);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._takeBackAction(action);\n\t\t\t}\n\t\t} // Memory manager\n\n\n\t\t_initMemoryManager() {\n\t\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\n\t\t\tthis._nActiveActions = 0;\n\t\t\tthis._actionsByClip = {}; // inside:\n\t\t\t// {\n\t\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t\t// }\n\n\t\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\n\t\t\tthis._nActiveBindings = 0;\n\t\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\t\t\tthis._controlInterpolants = []; // same game as above\n\n\t\t\tthis._nActiveControlInterpolants = 0;\n\t\t\tconst scope = this;\n\t\t\tthis.stats = {\n\t\t\t\tactions: {\n\t\t\t\t\tget total() {\n\t\t\t\t\t\treturn scope._actions.length;\n\t\t\t\t\t},\n\n\t\t\t\t\tget inUse() {\n\t\t\t\t\t\treturn scope._nActiveActions;\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\tbindings: {\n\t\t\t\t\tget total() {\n\t\t\t\t\t\treturn scope._bindings.length;\n\t\t\t\t\t},\n\n\t\t\t\t\tget inUse() {\n\t\t\t\t\t\treturn scope._nActiveBindings;\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\tcontrolInterpolants: {\n\t\t\t\t\tget total() {\n\t\t\t\t\t\treturn scope._controlInterpolants.length;\n\t\t\t\t\t},\n\n\t\t\t\t\tget inUse() {\n\t\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\t\t} // Memory management for AnimationAction objects\n\n\n\t\t_isActiveAction(action) {\n\t\t\tconst index = action._cacheIndex;\n\t\t\treturn index !== null && index < this._nActiveActions;\n\t\t}\n\n\t\t_addInactiveAction(action, clipUuid, rootUuid) {\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tactionsByClip = this._actionsByClip;\n\t\t\tlet actionsForClip = actionsByClip[clipUuid];\n\n\t\t\tif (actionsForClip === undefined) {\n\t\t\t\tactionsForClip = {\n\t\t\t\t\tknownActions: [action],\n\t\t\t\t\tactionByRoot: {}\n\t\t\t\t};\n\t\t\t\taction._byClipCacheIndex = 0;\n\t\t\t\tactionsByClip[clipUuid] = actionsForClip;\n\t\t\t} else {\n\t\t\t\tconst knownActions = actionsForClip.knownActions;\n\t\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\t\tknownActions.push(action);\n\t\t\t}\n\n\t\t\taction._cacheIndex = actions.length;\n\t\t\tactions.push(action);\n\t\t\tactionsForClip.actionByRoot[rootUuid] = action;\n\t\t}\n\n\t\t_removeInactiveAction(action) {\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tlastInactiveAction = actions[actions.length - 1],\n\t\t\t\t\t\tcacheIndex = action._cacheIndex;\n\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\tactions[cacheIndex] = lastInactiveAction;\n\t\t\tactions.pop();\n\t\t\taction._cacheIndex = null;\n\t\t\tconst clipUuid = action._clip.uuid,\n\t\t\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\t\t\tactionsForClip = actionsByClip[clipUuid],\n\t\t\t\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\t\t\t\t\t\tlastKnownAction = knownActionsForClip[knownActionsForClip.length - 1],\n\t\t\t\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\t\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\t\tknownActionsForClip[byClipCacheIndex] = lastKnownAction;\n\t\t\tknownActionsForClip.pop();\n\t\t\taction._byClipCacheIndex = null;\n\t\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\t\t\t\trootUuid = (action._localRoot || this._root).uuid;\n\t\t\tdelete actionByRoot[rootUuid];\n\n\t\t\tif (knownActionsForClip.length === 0) {\n\t\t\t\tdelete actionsByClip[clipUuid];\n\t\t\t}\n\n\t\t\tthis._removeInactiveBindingsForAction(action);\n\t\t}\n\n\t\t_removeInactiveBindingsForAction(action) {\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\tfor (let i = 0, n = bindings.length; i !== n; ++i) {\n\t\t\t\tconst binding = bindings[i];\n\n\t\t\t\tif (--binding.referenceCount === 0) {\n\t\t\t\t\tthis._removeInactiveBinding(binding);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_lendAction(action) {\n\t\t\t// [ active actions |\tinactive actions\t]\n\t\t\t// [\tactive actions >| inactive actions ]\n\t\t\t//\t\t\t\t\t\t\t\t s\t\t\t\ta\n\t\t\t//\t\t\t\t\t\t\t\t\t<-swap->\n\t\t\t//\t\t\t\t\t\t\t\t a\t\t\t\ts\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tprevIndex = action._cacheIndex,\n\t\t\t\t\t\tlastActiveIndex = this._nActiveActions++,\n\t\t\t\t\t\tfirstInactiveAction = actions[lastActiveIndex];\n\t\t\taction._cacheIndex = lastActiveIndex;\n\t\t\tactions[lastActiveIndex] = action;\n\t\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\t\tactions[prevIndex] = firstInactiveAction;\n\t\t}\n\n\t\t_takeBackAction(action) {\n\t\t\t// [\tactive actions\t| inactive actions ]\n\t\t\t// [ active actions |< inactive actions\t]\n\t\t\t//\t\t\t\ta\t\t\t\ts\n\t\t\t//\t\t\t\t <-swap->\n\t\t\t//\t\t\t\ts\t\t\t\ta\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tprevIndex = action._cacheIndex,\n\t\t\t\t\t\tfirstInactiveIndex = --this._nActiveActions,\n\t\t\t\t\t\tlastActiveAction = actions[firstInactiveIndex];\n\t\t\taction._cacheIndex = firstInactiveIndex;\n\t\t\tactions[firstInactiveIndex] = action;\n\t\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\t\tactions[prevIndex] = lastActiveAction;\n\t\t} // Memory management for PropertyMixer objects\n\n\n\t\t_addInactiveBinding(binding, rootUuid, trackName) {\n\t\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\t\t\tbindings = this._bindings;\n\t\t\tlet bindingByName = bindingsByRoot[rootUuid];\n\n\t\t\tif (bindingByName === undefined) {\n\t\t\t\tbindingByName = {};\n\t\t\t\tbindingsByRoot[rootUuid] = bindingByName;\n\t\t\t}\n\n\t\t\tbindingByName[trackName] = binding;\n\t\t\tbinding._cacheIndex = bindings.length;\n\t\t\tbindings.push(binding);\n\t\t}\n\n\t\t_removeInactiveBinding(binding) {\n\t\t\tconst bindings = this._bindings,\n\t\t\t\t\t\tpropBinding = binding.binding,\n\t\t\t\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\t\t\t\ttrackName = propBinding.path,\n\t\t\t\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\t\t\tbindingByName = bindingsByRoot[rootUuid],\n\t\t\t\t\t\tlastInactiveBinding = bindings[bindings.length - 1],\n\t\t\t\t\t\tcacheIndex = binding._cacheIndex;\n\t\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\t\tbindings[cacheIndex] = lastInactiveBinding;\n\t\t\tbindings.pop();\n\t\t\tdelete bindingByName[trackName];\n\n\t\t\tif (Object.keys(bindingByName).length === 0) {\n\t\t\t\tdelete bindingsByRoot[rootUuid];\n\t\t\t}\n\t\t}\n\n\t\t_lendBinding(binding) {\n\t\t\tconst bindings = this._bindings,\n\t\t\t\t\t\tprevIndex = binding._cacheIndex,\n\t\t\t\t\t\tlastActiveIndex = this._nActiveBindings++,\n\t\t\t\t\t\tfirstInactiveBinding = bindings[lastActiveIndex];\n\t\t\tbinding._cacheIndex = lastActiveIndex;\n\t\t\tbindings[lastActiveIndex] = binding;\n\t\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[prevIndex] = firstInactiveBinding;\n\t\t}\n\n\t\t_takeBackBinding(binding) {\n\t\t\tconst bindings = this._bindings,\n\t\t\t\t\t\tprevIndex = binding._cacheIndex,\n\t\t\t\t\t\tfirstInactiveIndex = --this._nActiveBindings,\n\t\t\t\t\t\tlastActiveBinding = bindings[firstInactiveIndex];\n\t\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\t\tbindings[firstInactiveIndex] = binding;\n\t\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[prevIndex] = lastActiveBinding;\n\t\t} // Memory management of Interpolants for weight and time scale\n\n\n\t\t_lendControlInterpolant() {\n\t\t\tconst interpolants = this._controlInterpolants,\n\t\t\t\t\t\tlastActiveIndex = this._nActiveControlInterpolants++;\n\t\t\tlet interpolant = interpolants[lastActiveIndex];\n\n\t\t\tif (interpolant === undefined) {\n\t\t\t\tinterpolant = new LinearInterpolant(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer);\n\t\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\t\tinterpolants[lastActiveIndex] = interpolant;\n\t\t\t}\n\n\t\t\treturn interpolant;\n\t\t}\n\n\t\t_takeBackControlInterpolant(interpolant) {\n\t\t\tconst interpolants = this._controlInterpolants,\n\t\t\t\t\t\tprevIndex = interpolant.__cacheIndex,\n\t\t\t\t\t\tfirstInactiveIndex = --this._nActiveControlInterpolants,\n\t\t\t\t\t\tlastActiveInterpolant = interpolants[firstInactiveIndex];\n\t\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\t\tinterpolants[firstInactiveIndex] = interpolant;\n\t\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\t\tinterpolants[prevIndex] = lastActiveInterpolant;\n\t\t} // return an action for a clip optionally using a custom root target\n\t\t// object (this method allocates a lot of dynamic memory in case a\n\t\t// previously unknown clip/root combination is specified)\n\n\n\t\tclipAction(clip, optionalRoot, blendMode) {\n\t\t\tconst root = optionalRoot || this._root,\n\t\t\t\t\t\trootUuid = root.uuid;\n\t\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip;\n\t\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\t\t\tconst actionsForClip = this._actionsByClip[clipUuid];\n\t\t\tlet prototypeAction = null;\n\n\t\t\tif (blendMode === undefined) {\n\t\t\t\tif (clipObject !== null) {\n\t\t\t\t\tblendMode = clipObject.blendMode;\n\t\t\t\t} else {\n\t\t\t\t\tblendMode = NormalAnimationBlendMode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (actionsForClip !== undefined) {\n\t\t\t\tconst existingAction = actionsForClip.actionByRoot[rootUuid];\n\n\t\t\t\tif (existingAction !== undefined && existingAction.blendMode === blendMode) {\n\t\t\t\t\treturn existingAction;\n\t\t\t\t} // we know the clip, so we don't have to parse all\n\t\t\t\t// the bindings again but can just copy\n\n\n\t\t\t\tprototypeAction = actionsForClip.knownActions[0]; // also, take the clip from the prototype action\n\n\t\t\t\tif (clipObject === null) clipObject = prototypeAction._clip;\n\t\t\t} // clip must be known when specified via string\n\n\n\t\t\tif (clipObject === null) return null; // allocate all resources required to run it\n\n\t\t\tconst newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n\n\t\t\tthis._bindAction(newAction, prototypeAction); // and make the action known to the memory manager\n\n\n\t\t\tthis._addInactiveAction(newAction, clipUuid, rootUuid);\n\n\t\t\treturn newAction;\n\t\t} // get an existing action\n\n\n\t\texistingAction(clip, optionalRoot) {\n\t\t\tconst root = optionalRoot || this._root,\n\t\t\t\t\t\trootUuid = root.uuid,\n\t\t\t\t\t\tclipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip,\n\t\t\t\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\t\t\t\t\t\tactionsForClip = this._actionsByClip[clipUuid];\n\n\t\t\tif (actionsForClip !== undefined) {\n\t\t\t\treturn actionsForClip.actionByRoot[rootUuid] || null;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} // deactivates all previously scheduled actions\n\n\n\t\tstopAllAction() {\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tnActions = this._nActiveActions;\n\n\t\t\tfor (let i = nActions - 1; i >= 0; --i) {\n\t\t\t\tactions[i].stop();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // advance the time and update apply the animation\n\n\n\t\tupdate(deltaTime) {\n\t\t\tdeltaTime *= this.timeScale;\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tnActions = this._nActiveActions,\n\t\t\t\t\t\ttime = this.time += deltaTime,\n\t\t\t\t\t\ttimeDirection = Math.sign(deltaTime),\n\t\t\t\t\t\taccuIndex = this._accuIndex ^= 1; // run active actions\n\n\t\t\tfor (let i = 0; i !== nActions; ++i) {\n\t\t\t\tconst action = actions[i];\n\n\t\t\t\taction._update(time, deltaTime, timeDirection, accuIndex);\n\t\t\t} // update scene graph\n\n\n\t\t\tconst bindings = this._bindings,\n\t\t\t\t\t\tnBindings = this._nActiveBindings;\n\n\t\t\tfor (let i = 0; i !== nBindings; ++i) {\n\t\t\t\tbindings[i].apply(accuIndex);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t} // Allows you to seek to a specific time in an animation.\n\n\n\t\tsetTime(timeInSeconds) {\n\t\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\n\t\t\tfor (let i = 0; i < this._actions.length; i++) {\n\t\t\t\tthis._actions[i].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\t\t\t}\n\n\t\t\treturn this.update(timeInSeconds); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\t\t} // return this mixer's root target object\n\n\n\t\tgetRoot() {\n\t\t\treturn this._root;\n\t\t} // free all resources specific to a particular clip\n\n\n\t\tuncacheClip(clip) {\n\t\t\tconst actions = this._actions,\n\t\t\t\t\t\tclipUuid = clip.uuid,\n\t\t\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\t\t\tactionsForClip = actionsByClip[clipUuid];\n\n\t\t\tif (actionsForClip !== undefined) {\n\t\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t\t// iteration state and also require updating the state we can\n\t\t\t\t// just throw away\n\t\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\t\tfor (let i = 0, n = actionsToRemove.length; i !== n; ++i) {\n\t\t\t\t\tconst action = actionsToRemove[i];\n\n\t\t\t\t\tthis._deactivateAction(action);\n\n\t\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\t\t\t\tlastInactiveAction = actions[actions.length - 1];\n\t\t\t\t\taction._cacheIndex = null;\n\t\t\t\t\taction._byClipCacheIndex = null;\n\t\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\t\tactions[cacheIndex] = lastInactiveAction;\n\t\t\t\t\tactions.pop();\n\n\t\t\t\t\tthis._removeInactiveBindingsForAction(action);\n\t\t\t\t}\n\n\t\t\t\tdelete actionsByClip[clipUuid];\n\t\t\t}\n\t\t} // free all resources specific to a particular root target object\n\n\n\t\tuncacheRoot(root) {\n\t\t\tconst rootUuid = root.uuid,\n\t\t\t\t\t\tactionsByClip = this._actionsByClip;\n\n\t\t\tfor (const clipUuid in actionsByClip) {\n\t\t\t\tconst actionByRoot = actionsByClip[clipUuid].actionByRoot,\n\t\t\t\t\t\t\taction = actionByRoot[rootUuid];\n\n\t\t\t\tif (action !== undefined) {\n\t\t\t\t\tthis._deactivateAction(action);\n\n\t\t\t\t\tthis._removeInactiveAction(action);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\t\t\tbindingByName = bindingsByRoot[rootUuid];\n\n\t\t\tif (bindingByName !== undefined) {\n\t\t\t\tfor (const trackName in bindingByName) {\n\t\t\t\t\tconst binding = bindingByName[trackName];\n\t\t\t\t\tbinding.restoreOriginalState();\n\n\t\t\t\t\tthis._removeInactiveBinding(binding);\n\t\t\t\t}\n\t\t\t}\n\t\t} // remove a targeted clip from the cache\n\n\n\t\tuncacheAction(clip, optionalRoot) {\n\t\t\tconst action = this.existingAction(clip, optionalRoot);\n\n\t\t\tif (action !== null) {\n\t\t\t\tthis._deactivateAction(action);\n\n\t\t\t\tthis._removeInactiveAction(action);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array(1);\n\n\tclass Uniform {\n\t\tconstructor(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tconsole.warn('THREE.Uniform: Type parameter is no longer needed.');\n\t\t\t\tvalue = arguments[1];\n\t\t\t}\n\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new Uniform(this.value.clone === undefined ? this.value : this.value.clone());\n\t\t}\n\n\t}\n\n\tclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\t\tconstructor(array, stride, meshPerAttribute = 1) {\n\t\t\tsuper(array, stride);\n\t\t\tthis.meshPerAttribute = meshPerAttribute;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source);\n\t\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\t\t\treturn this;\n\t\t}\n\n\t\tclone(data) {\n\t\t\tconst ib = super.clone(data);\n\t\t\tib.meshPerAttribute = this.meshPerAttribute;\n\t\t\treturn ib;\n\t\t}\n\n\t\ttoJSON(data) {\n\t\t\tconst json = super.toJSON(data);\n\t\t\tjson.isInstancedInterleavedBuffer = true;\n\t\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\t\t\treturn json;\n\t\t}\n\n\t}\n\n\tInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\n\tclass GLBufferAttribute {\n\t\tconstructor(buffer, type, itemSize, elementSize, count) {\n\t\t\tthis.buffer = buffer;\n\t\t\tthis.type = type;\n\t\t\tthis.itemSize = itemSize;\n\t\t\tthis.elementSize = elementSize;\n\t\t\tthis.count = count;\n\t\t\tthis.version = 0;\n\t\t}\n\n\t\tset needsUpdate(value) {\n\t\t\tif (value === true) this.version++;\n\t\t}\n\n\t\tsetBuffer(buffer) {\n\t\t\tthis.buffer = buffer;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetType(type, elementSize) {\n\t\t\tthis.type = type;\n\t\t\tthis.elementSize = elementSize;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetItemSize(itemSize) {\n\t\t\tthis.itemSize = itemSize;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetCount(count) {\n\t\t\tthis.count = count;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\n\tclass Raycaster {\n\t\tconstructor(origin, direction, near = 0, far = Infinity) {\n\t\t\tthis.ray = new Ray(origin, direction); // direction is assumed to be normalized (for accurate distance calculations)\n\n\t\t\tthis.near = near;\n\t\t\tthis.far = far;\n\t\t\tthis.camera = null;\n\t\t\tthis.layers = new Layers();\n\t\t\tthis.params = {\n\t\t\t\tMesh: {},\n\t\t\t\tLine: {\n\t\t\t\t\tthreshold: 1\n\t\t\t\t},\n\t\t\t\tLOD: {},\n\t\t\t\tPoints: {\n\t\t\t\t\tthreshold: 1\n\t\t\t\t},\n\t\t\t\tSprite: {}\n\t\t\t};\n\t\t}\n\n\t\tset(origin, direction) {\n\t\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\t\t\tthis.ray.set(origin, direction);\n\t\t}\n\n\t\tsetFromCamera(coords, camera) {\n\t\t\tif (camera && camera.isPerspectiveCamera) {\n\t\t\t\tthis.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n\t\t\t\tthis.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n\t\t\t\tthis.camera = camera;\n\t\t\t} else if (camera && camera.isOrthographicCamera) {\n\t\t\t\tthis.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera); // set origin in plane of camera\n\n\t\t\t\tthis.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n\t\t\t\tthis.camera = camera;\n\t\t\t} else {\n\t\t\t\tconsole.error('THREE.Raycaster: Unsupported camera type: ' + camera.type);\n\t\t\t}\n\t\t}\n\n\t\tintersectObject(object, recursive = false, intersects = []) {\n\t\t\tintersectObject(object, this, intersects, recursive);\n\t\t\tintersects.sort(ascSort);\n\t\t\treturn intersects;\n\t\t}\n\n\t\tintersectObjects(objects, recursive = false, intersects = []) {\n\t\t\tfor (let i = 0, l = objects.length; i < l; i++) {\n\t\t\t\tintersectObject(objects[i], this, intersects, recursive);\n\t\t\t}\n\n\t\t\tintersects.sort(ascSort);\n\t\t\treturn intersects;\n\t\t}\n\n\t}\n\n\tfunction ascSort(a, b) {\n\t\treturn a.distance - b.distance;\n\t}\n\n\tfunction intersectObject(object, raycaster, intersects, recursive) {\n\t\tif (object.layers.test(raycaster.layers)) {\n\t\t\tobject.raycast(raycaster, intersects);\n\t\t}\n\n\t\tif (recursive === true) {\n\t\t\tconst children = object.children;\n\n\t\t\tfor (let i = 0, l = children.length; i < l; i++) {\n\t\t\t\tintersectObject(children[i], raycaster, intersects, true);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n\t *\n\t * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n\t * The azimuthal angle (theta) is measured from the positive z-axis.\n\t */\n\n\tclass Spherical {\n\t\tconstructor(radius = 1, phi = 0, theta = 0) {\n\t\t\tthis.radius = radius;\n\t\t\tthis.phi = phi; // polar angle\n\n\t\t\tthis.theta = theta; // azimuthal angle\n\n\t\t\treturn this;\n\t\t}\n\n\t\tset(radius, phi, theta) {\n\t\t\tthis.radius = radius;\n\t\t\tthis.phi = phi;\n\t\t\tthis.theta = theta;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(other) {\n\t\t\tthis.radius = other.radius;\n\t\t\tthis.phi = other.phi;\n\t\t\tthis.theta = other.theta;\n\t\t\treturn this;\n\t\t} // restrict phi to be betwee EPS and PI-EPS\n\n\n\t\tmakeSafe() {\n\t\t\tconst EPS = 0.000001;\n\t\t\tthis.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromVector3(v) {\n\t\t\treturn this.setFromCartesianCoords(v.x, v.y, v.z);\n\t\t}\n\n\t\tsetFromCartesianCoords(x, y, z) {\n\t\t\tthis.radius = Math.sqrt(x * x + y * y + z * z);\n\n\t\t\tif (this.radius === 0) {\n\t\t\t\tthis.theta = 0;\n\t\t\t\tthis.phi = 0;\n\t\t\t} else {\n\t\t\t\tthis.theta = Math.atan2(x, z);\n\t\t\t\tthis.phi = Math.acos(clamp(y / this.radius, -1, 1));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\t/**\n\t * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n\t */\n\tclass Cylindrical {\n\t\tconstructor(radius = 1, theta = 0, y = 0) {\n\t\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\n\t\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\n\t\t\tthis.y = y; // height above the x-z plane\n\n\t\t\treturn this;\n\t\t}\n\n\t\tset(radius, theta, y) {\n\t\t\tthis.radius = radius;\n\t\t\tthis.theta = theta;\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(other) {\n\t\t\tthis.radius = other.radius;\n\t\t\tthis.theta = other.theta;\n\t\t\tthis.y = other.y;\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromVector3(v) {\n\t\t\treturn this.setFromCartesianCoords(v.x, v.y, v.z);\n\t\t}\n\n\t\tsetFromCartesianCoords(x, y, z) {\n\t\t\tthis.radius = Math.sqrt(x * x + z * z);\n\t\t\tthis.theta = Math.atan2(x, z);\n\t\t\tthis.y = y;\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tconst _vector$4 = /*@__PURE__*/new Vector2();\n\n\tclass Box2 {\n\t\tconstructor(min = new Vector2(+Infinity, +Infinity), max = new Vector2(-Infinity, -Infinity)) {\n\t\t\tthis.min = min;\n\t\t\tthis.max = max;\n\t\t}\n\n\t\tset(min, max) {\n\t\t\tthis.min.copy(min);\n\t\t\tthis.max.copy(max);\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromPoints(points) {\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor (let i = 0, il = points.length; i < il; i++) {\n\t\t\t\tthis.expandByPoint(points[i]);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tsetFromCenterAndSize(center, size) {\n\t\t\tconst halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n\n\t\t\tthis.min.copy(center).sub(halfSize);\n\t\t\tthis.max.copy(center).add(halfSize);\n\t\t\treturn this;\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t\tcopy(box) {\n\t\t\tthis.min.copy(box.min);\n\t\t\tthis.max.copy(box.max);\n\t\t\treturn this;\n\t\t}\n\n\t\tmakeEmpty() {\n\t\t\tthis.min.x = this.min.y = +Infinity;\n\t\t\tthis.max.x = this.max.y = -Infinity;\n\t\t\treturn this;\n\t\t}\n\n\t\tisEmpty() {\n\t\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\t\t\treturn this.max.x < this.min.x || this.max.y < this.min.y;\n\t\t}\n\n\t\tgetCenter(target) {\n\t\t\treturn this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n\t\t}\n\n\t\tgetSize(target) {\n\t\t\treturn this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n\t\t}\n\n\t\texpandByPoint(point) {\n\t\t\tthis.min.min(point);\n\t\t\tthis.max.max(point);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByVector(vector) {\n\t\t\tthis.min.sub(vector);\n\t\t\tthis.max.add(vector);\n\t\t\treturn this;\n\t\t}\n\n\t\texpandByScalar(scalar) {\n\t\t\tthis.min.addScalar(-scalar);\n\t\t\tthis.max.addScalar(scalar);\n\t\t\treturn this;\n\t\t}\n\n\t\tcontainsPoint(point) {\n\t\t\treturn point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n\t\t}\n\n\t\tcontainsBox(box) {\n\t\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n\t\t}\n\n\t\tgetParameter(point, target) {\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\t\t\treturn target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y));\n\t\t}\n\n\t\tintersectsBox(box) {\n\t\t\t// using 4 splitting planes to rule out intersections\n\t\t\treturn box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\t\t}\n\n\t\tclampPoint(point, target) {\n\t\t\treturn target.copy(point).clamp(this.min, this.max);\n\t\t}\n\n\t\tdistanceToPoint(point) {\n\t\t\tconst clampedPoint = _vector$4.copy(point).clamp(this.min, this.max);\n\n\t\t\treturn clampedPoint.sub(point).length();\n\t\t}\n\n\t\tintersect(box) {\n\t\t\tthis.min.max(box.min);\n\t\t\tthis.max.min(box.max);\n\t\t\treturn this;\n\t\t}\n\n\t\tunion(box) {\n\t\t\tthis.min.min(box.min);\n\t\t\tthis.max.max(box.max);\n\t\t\treturn this;\n\t\t}\n\n\t\ttranslate(offset) {\n\t\t\tthis.min.add(offset);\n\t\t\tthis.max.add(offset);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(box) {\n\t\t\treturn box.min.equals(this.min) && box.max.equals(this.max);\n\t\t}\n\n\t}\n\n\tBox2.prototype.isBox2 = true;\n\n\tconst _startP = /*@__PURE__*/new Vector3();\n\n\tconst _startEnd = /*@__PURE__*/new Vector3();\n\n\tclass Line3 {\n\t\tconstructor(start = new Vector3(), end = new Vector3()) {\n\t\t\tthis.start = start;\n\t\t\tthis.end = end;\n\t\t}\n\n\t\tset(start, end) {\n\t\t\tthis.start.copy(start);\n\t\t\tthis.end.copy(end);\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(line) {\n\t\t\tthis.start.copy(line.start);\n\t\t\tthis.end.copy(line.end);\n\t\t\treturn this;\n\t\t}\n\n\t\tgetCenter(target) {\n\t\t\treturn target.addVectors(this.start, this.end).multiplyScalar(0.5);\n\t\t}\n\n\t\tdelta(target) {\n\t\t\treturn target.subVectors(this.end, this.start);\n\t\t}\n\n\t\tdistanceSq() {\n\t\t\treturn this.start.distanceToSquared(this.end);\n\t\t}\n\n\t\tdistance() {\n\t\t\treturn this.start.distanceTo(this.end);\n\t\t}\n\n\t\tat(t, target) {\n\t\t\treturn this.delta(target).multiplyScalar(t).add(this.start);\n\t\t}\n\n\t\tclosestPointToPointParameter(point, clampToLine) {\n\t\t\t_startP.subVectors(point, this.start);\n\n\t\t\t_startEnd.subVectors(this.end, this.start);\n\n\t\t\tconst startEnd2 = _startEnd.dot(_startEnd);\n\n\t\t\tconst startEnd_startP = _startEnd.dot(_startP);\n\n\t\t\tlet t = startEnd_startP / startEnd2;\n\n\t\t\tif (clampToLine) {\n\t\t\t\tt = clamp(t, 0, 1);\n\t\t\t}\n\n\t\t\treturn t;\n\t\t}\n\n\t\tclosestPointToPoint(point, clampToLine, target) {\n\t\t\tconst t = this.closestPointToPointParameter(point, clampToLine);\n\t\t\treturn this.delta(target).multiplyScalar(t).add(this.start);\n\t\t}\n\n\t\tapplyMatrix4(matrix) {\n\t\t\tthis.start.applyMatrix4(matrix);\n\t\t\tthis.end.applyMatrix4(matrix);\n\t\t\treturn this;\n\t\t}\n\n\t\tequals(line) {\n\t\t\treturn line.start.equals(this.start) && line.end.equals(this.end);\n\t\t}\n\n\t\tclone() {\n\t\t\treturn new this.constructor().copy(this);\n\t\t}\n\n\t}\n\n\tclass ImmediateRenderObject extends Object3D {\n\t\tconstructor(material) {\n\t\t\tsuper();\n\t\t\tthis.material = material;\n\n\t\t\tthis.render = function () {};\n\n\t\t\tthis.hasPositions = false;\n\t\t\tthis.hasNormals = false;\n\t\t\tthis.hasColors = false;\n\t\t\tthis.hasUvs = false;\n\t\t\tthis.positionArray = null;\n\t\t\tthis.normalArray = null;\n\t\t\tthis.colorArray = null;\n\t\t\tthis.uvArray = null;\n\t\t\tthis.count = 0;\n\t\t}\n\n\t}\n\n\tImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\tconst _vector$3 = /*@__PURE__*/new Vector3();\n\n\tclass SpotLightHelper extends Object3D {\n\t\tconstructor(light, color) {\n\t\t\tsuper();\n\t\t\tthis.light = light;\n\t\t\tthis.light.updateMatrixWorld();\n\t\t\tthis.matrix = light.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.color = color;\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tconst positions = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 1];\n\n\t\t\tfor (let i = 0, j = 1, l = 32; i < l; i++, j++) {\n\t\t\t\tconst p1 = i / l * Math.PI * 2;\n\t\t\t\tconst p2 = j / l * Math.PI * 2;\n\t\t\t\tpositions.push(Math.cos(p1), Math.sin(p1), 1, Math.cos(p2), Math.sin(p2), 1);\n\t\t\t}\n\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(positions, 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tfog: false,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tthis.cone = new LineSegments(geometry, material);\n\t\t\tthis.add(this.cone);\n\t\t\tthis.update();\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.cone.geometry.dispose();\n\t\t\tthis.cone.material.dispose();\n\t\t}\n\n\t\tupdate() {\n\t\t\tthis.light.updateMatrixWorld();\n\t\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\t\tconst coneWidth = coneLength * Math.tan(this.light.angle);\n\t\t\tthis.cone.scale.set(coneWidth, coneWidth, coneLength);\n\n\t\t\t_vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n\n\t\t\tthis.cone.lookAt(_vector$3);\n\n\t\t\tif (this.color !== undefined) {\n\t\t\t\tthis.cone.material.color.set(this.color);\n\t\t\t} else {\n\t\t\t\tthis.cone.material.color.copy(this.light.color);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tconst _vector$2 = /*@__PURE__*/new Vector3();\n\n\tconst _boneMatrix = /*@__PURE__*/new Matrix4();\n\n\tconst _matrixWorldInv = /*@__PURE__*/new Matrix4();\n\n\tclass SkeletonHelper extends LineSegments {\n\t\tconstructor(object) {\n\t\t\tconst bones = getBoneList(object);\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tconst vertices = [];\n\t\t\tconst colors = [];\n\t\t\tconst color1 = new Color(0, 0, 1);\n\t\t\tconst color2 = new Color(0, 1, 0);\n\n\t\t\tfor (let i = 0; i < bones.length; i++) {\n\t\t\t\tconst bone = bones[i];\n\n\t\t\t\tif (bone.parent && bone.parent.isBone) {\n\t\t\t\t\tvertices.push(0, 0, 0);\n\t\t\t\t\tvertices.push(0, 0, 0);\n\t\t\t\t\tcolors.push(color1.r, color1.g, color1.b);\n\t\t\t\t\tcolors.push(color2.r, color2.g, color2.b);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tgeometry.setAttribute('color', new Float32BufferAttribute(colors, 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tvertexColors: true,\n\t\t\t\tdepthTest: false,\n\t\t\t\tdepthWrite: false,\n\t\t\t\ttoneMapped: false,\n\t\t\t\ttransparent: true\n\t\t\t});\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'SkeletonHelper';\n\t\t\tthis.isSkeletonHelper = true;\n\t\t\tthis.root = object;\n\t\t\tthis.bones = bones;\n\t\t\tthis.matrix = object.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tconst bones = this.bones;\n\t\t\tconst geometry = this.geometry;\n\t\t\tconst position = geometry.getAttribute('position');\n\n\t\t\t_matrixWorldInv.copy(this.root.matrixWorld).invert();\n\n\t\t\tfor (let i = 0, j = 0; i < bones.length; i++) {\n\t\t\t\tconst bone = bones[i];\n\n\t\t\t\tif (bone.parent && bone.parent.isBone) {\n\t\t\t\t\t_boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n\n\t\t\t\t\t_vector$2.setFromMatrixPosition(_boneMatrix);\n\n\t\t\t\t\tposition.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z);\n\n\t\t\t\t\t_boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n\n\t\t\t\t\t_vector$2.setFromMatrixPosition(_boneMatrix);\n\n\t\t\t\t\tposition.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n\t\t\t\t\tj += 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgeometry.getAttribute('position').needsUpdate = true;\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t}\n\n\t}\n\n\tfunction getBoneList(object) {\n\t\tconst boneList = [];\n\n\t\tif (object && object.isBone) {\n\t\t\tboneList.push(object);\n\t\t}\n\n\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\tboneList.push.apply(boneList, getBoneList(object.children[i]));\n\t\t}\n\n\t\treturn boneList;\n\t}\n\n\tclass PointLightHelper extends Mesh {\n\t\tconstructor(light, sphereSize, color) {\n\t\t\tconst geometry = new SphereGeometry(sphereSize, 4, 2);\n\t\t\tconst material = new MeshBasicMaterial({\n\t\t\t\twireframe: true,\n\t\t\t\tfog: false,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tsuper(geometry, material);\n\t\t\tthis.light = light;\n\t\t\tthis.light.updateMatrixWorld();\n\t\t\tthis.color = color;\n\t\t\tthis.type = 'PointLightHelper';\n\t\t\tthis.matrix = this.light.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.update();\n\t\t\t/*\n\t\t\t// TODO: delete this comment?\n\t\t\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\t\t\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\t\t\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\t\t\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\t\t\tconst d = light.distance;\n\t\t\tif ( d === 0.0 ) {\n\t\t\t\tthis.lightDistance.visible = false;\n\t\t\t} else {\n\t\t\t\tthis.lightDistance.scale.set( d, d, d );\n\t\t\t}\n\t\t\tthis.add( this.lightDistance );\n\t\t\t*/\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.material.dispose();\n\t\t}\n\n\t\tupdate() {\n\t\t\tif (this.color !== undefined) {\n\t\t\t\tthis.material.color.set(this.color);\n\t\t\t} else {\n\t\t\t\tthis.material.color.copy(this.light.color);\n\t\t\t}\n\t\t\t/*\n\t\t\tconst d = this.light.distance;\n\t\t\t\tif ( d === 0.0 ) {\n\t\t\t\t\tthis.lightDistance.visible = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.lightDistance.visible = true;\n\t\t\t\tthis.lightDistance.scale.set( d, d, d );\n\t\t\t\t}\n\t\t\t*/\n\n\t\t}\n\n\t}\n\n\tconst _vector$1 = /*@__PURE__*/new Vector3();\n\n\tconst _color1 = /*@__PURE__*/new Color();\n\n\tconst _color2 = /*@__PURE__*/new Color();\n\n\tclass HemisphereLightHelper extends Object3D {\n\t\tconstructor(light, size, color) {\n\t\t\tsuper();\n\t\t\tthis.light = light;\n\t\t\tthis.light.updateMatrixWorld();\n\t\t\tthis.matrix = light.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.color = color;\n\t\t\tconst geometry = new OctahedronGeometry(size);\n\t\t\tgeometry.rotateY(Math.PI * 0.5);\n\t\t\tthis.material = new MeshBasicMaterial({\n\t\t\t\twireframe: true,\n\t\t\t\tfog: false,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tif (this.color === undefined) this.material.vertexColors = true;\n\t\t\tconst position = geometry.getAttribute('position');\n\t\t\tconst colors = new Float32Array(position.count * 3);\n\t\t\tgeometry.setAttribute('color', new BufferAttribute(colors, 3));\n\t\t\tthis.add(new Mesh(geometry, this.material));\n\t\t\tthis.update();\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.children[0].geometry.dispose();\n\t\t\tthis.children[0].material.dispose();\n\t\t}\n\n\t\tupdate() {\n\t\t\tconst mesh = this.children[0];\n\n\t\t\tif (this.color !== undefined) {\n\t\t\t\tthis.material.color.set(this.color);\n\t\t\t} else {\n\t\t\t\tconst colors = mesh.geometry.getAttribute('color');\n\n\t\t\t\t_color1.copy(this.light.color);\n\n\t\t\t\t_color2.copy(this.light.groundColor);\n\n\t\t\t\tfor (let i = 0, l = colors.count; i < l; i++) {\n\t\t\t\t\tconst color = i < l / 2 ? _color1 : _color2;\n\t\t\t\t\tcolors.setXYZ(i, color.r, color.g, color.b);\n\t\t\t\t}\n\n\t\t\t\tcolors.needsUpdate = true;\n\t\t\t}\n\n\t\t\tmesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n\t\t}\n\n\t}\n\n\tclass GridHelper extends LineSegments {\n\t\tconstructor(size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888) {\n\t\t\tcolor1 = new Color(color1);\n\t\t\tcolor2 = new Color(color2);\n\t\t\tconst center = divisions / 2;\n\t\t\tconst step = size / divisions;\n\t\t\tconst halfSize = size / 2;\n\t\t\tconst vertices = [],\n\t\t\t\t\t\tcolors = [];\n\n\t\t\tfor (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\t\t\t\tvertices.push(-halfSize, 0, k, halfSize, 0, k);\n\t\t\t\tvertices.push(k, 0, -halfSize, k, 0, halfSize);\n\t\t\t\tconst color = i === center ? color1 : color2;\n\t\t\t\tcolor.toArray(colors, j);\n\t\t\t\tj += 3;\n\t\t\t\tcolor.toArray(colors, j);\n\t\t\t\tj += 3;\n\t\t\t\tcolor.toArray(colors, j);\n\t\t\t\tj += 3;\n\t\t\t\tcolor.toArray(colors, j);\n\t\t\t\tj += 3;\n\t\t\t}\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tgeometry.setAttribute('color', new Float32BufferAttribute(colors, 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tvertexColors: true,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'GridHelper';\n\t\t}\n\n\t}\n\n\tclass PolarGridHelper extends LineSegments {\n\t\tconstructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888) {\n\t\t\tcolor1 = new Color(color1);\n\t\t\tcolor2 = new Color(color2);\n\t\t\tconst vertices = [];\n\t\t\tconst colors = []; // create the radials\n\n\t\t\tfor (let i = 0; i <= radials; i++) {\n\t\t\t\tconst v = i / radials * (Math.PI * 2);\n\t\t\t\tconst x = Math.sin(v) * radius;\n\t\t\t\tconst z = Math.cos(v) * radius;\n\t\t\t\tvertices.push(0, 0, 0);\n\t\t\t\tvertices.push(x, 0, z);\n\t\t\t\tconst color = i & 1 ? color1 : color2;\n\t\t\t\tcolors.push(color.r, color.g, color.b);\n\t\t\t\tcolors.push(color.r, color.g, color.b);\n\t\t\t} // create the circles\n\n\n\t\t\tfor (let i = 0; i <= circles; i++) {\n\t\t\t\tconst color = i & 1 ? color1 : color2;\n\t\t\t\tconst r = radius - radius / circles * i;\n\n\t\t\t\tfor (let j = 0; j < divisions; j++) {\n\t\t\t\t\t// first vertex\n\t\t\t\t\tlet v = j / divisions * (Math.PI * 2);\n\t\t\t\t\tlet x = Math.sin(v) * r;\n\t\t\t\t\tlet z = Math.cos(v) * r;\n\t\t\t\t\tvertices.push(x, 0, z);\n\t\t\t\t\tcolors.push(color.r, color.g, color.b); // second vertex\n\n\t\t\t\t\tv = (j + 1) / divisions * (Math.PI * 2);\n\t\t\t\t\tx = Math.sin(v) * r;\n\t\t\t\t\tz = Math.cos(v) * r;\n\t\t\t\t\tvertices.push(x, 0, z);\n\t\t\t\t\tcolors.push(color.r, color.g, color.b);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tgeometry.setAttribute('color', new Float32BufferAttribute(colors, 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tvertexColors: true,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'PolarGridHelper';\n\t\t}\n\n\t}\n\n\tconst _v1 = /*@__PURE__*/new Vector3();\n\n\tconst _v2 = /*@__PURE__*/new Vector3();\n\n\tconst _v3 = /*@__PURE__*/new Vector3();\n\n\tclass DirectionalLightHelper extends Object3D {\n\t\tconstructor(light, size, color) {\n\t\t\tsuper();\n\t\t\tthis.light = light;\n\t\t\tthis.light.updateMatrixWorld();\n\t\t\tthis.matrix = light.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.color = color;\n\t\t\tif (size === undefined) size = 1;\n\t\t\tlet geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute([-size, size, 0, size, size, 0, size, -size, 0, -size, -size, 0, -size, size, 0], 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tfog: false,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tthis.lightPlane = new Line(geometry, material);\n\t\t\tthis.add(this.lightPlane);\n\t\t\tgeometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n\t\t\tthis.targetLine = new Line(geometry, material);\n\t\t\tthis.add(this.targetLine);\n\t\t\tthis.update();\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.lightPlane.geometry.dispose();\n\t\t\tthis.lightPlane.material.dispose();\n\t\t\tthis.targetLine.geometry.dispose();\n\t\t\tthis.targetLine.material.dispose();\n\t\t}\n\n\t\tupdate() {\n\t\t\t_v1.setFromMatrixPosition(this.light.matrixWorld);\n\n\t\t\t_v2.setFromMatrixPosition(this.light.target.matrixWorld);\n\n\t\t\t_v3.subVectors(_v2, _v1);\n\n\t\t\tthis.lightPlane.lookAt(_v2);\n\n\t\t\tif (this.color !== undefined) {\n\t\t\t\tthis.lightPlane.material.color.set(this.color);\n\t\t\t\tthis.targetLine.material.color.set(this.color);\n\t\t\t} else {\n\t\t\t\tthis.lightPlane.material.color.copy(this.light.color);\n\t\t\t\tthis.targetLine.material.color.copy(this.light.color);\n\t\t\t}\n\n\t\t\tthis.targetLine.lookAt(_v2);\n\t\t\tthis.targetLine.scale.z = _v3.length();\n\t\t}\n\n\t}\n\n\tconst _vector = /*@__PURE__*/new Vector3();\n\n\tconst _camera = /*@__PURE__*/new Camera();\n\t/**\n\t *\t- shows frustum, line of sight and up of the camera\n\t *\t- suitable for fast updates\n\t * \t- based on frustum visualization in lightgl.js shadowmap example\n\t *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n\t */\n\n\n\tclass CameraHelper extends LineSegments {\n\t\tconstructor(camera) {\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tcolor: 0xffffff,\n\t\t\t\tvertexColors: true,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tconst vertices = [];\n\t\t\tconst colors = [];\n\t\t\tconst pointMap = {}; // colors\n\n\t\t\tconst colorFrustum = new Color(0xffaa00);\n\t\t\tconst colorCone = new Color(0xff0000);\n\t\t\tconst colorUp = new Color(0x00aaff);\n\t\t\tconst colorTarget = new Color(0xffffff);\n\t\t\tconst colorCross = new Color(0x333333); // near\n\n\t\t\taddLine('n1', 'n2', colorFrustum);\n\t\t\taddLine('n2', 'n4', colorFrustum);\n\t\t\taddLine('n4', 'n3', colorFrustum);\n\t\t\taddLine('n3', 'n1', colorFrustum); // far\n\n\t\t\taddLine('f1', 'f2', colorFrustum);\n\t\t\taddLine('f2', 'f4', colorFrustum);\n\t\t\taddLine('f4', 'f3', colorFrustum);\n\t\t\taddLine('f3', 'f1', colorFrustum); // sides\n\n\t\t\taddLine('n1', 'f1', colorFrustum);\n\t\t\taddLine('n2', 'f2', colorFrustum);\n\t\t\taddLine('n3', 'f3', colorFrustum);\n\t\t\taddLine('n4', 'f4', colorFrustum); // cone\n\n\t\t\taddLine('p', 'n1', colorCone);\n\t\t\taddLine('p', 'n2', colorCone);\n\t\t\taddLine('p', 'n3', colorCone);\n\t\t\taddLine('p', 'n4', colorCone); // up\n\n\t\t\taddLine('u1', 'u2', colorUp);\n\t\t\taddLine('u2', 'u3', colorUp);\n\t\t\taddLine('u3', 'u1', colorUp); // target\n\n\t\t\taddLine('c', 't', colorTarget);\n\t\t\taddLine('p', 'c', colorCross); // cross\n\n\t\t\taddLine('cn1', 'cn2', colorCross);\n\t\t\taddLine('cn3', 'cn4', colorCross);\n\t\t\taddLine('cf1', 'cf2', colorCross);\n\t\t\taddLine('cf3', 'cf4', colorCross);\n\n\t\t\tfunction addLine(a, b, color) {\n\t\t\t\taddPoint(a, color);\n\t\t\t\taddPoint(b, color);\n\t\t\t}\n\n\t\t\tfunction addPoint(id, color) {\n\t\t\t\tvertices.push(0, 0, 0);\n\t\t\t\tcolors.push(color.r, color.g, color.b);\n\n\t\t\t\tif (pointMap[id] === undefined) {\n\t\t\t\t\tpointMap[id] = [];\n\t\t\t\t}\n\n\t\t\t\tpointMap[id].push(vertices.length / 3 - 1);\n\t\t\t}\n\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tgeometry.setAttribute('color', new Float32BufferAttribute(colors, 3));\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'CameraHelper';\n\t\t\tthis.camera = camera;\n\t\t\tif (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix();\n\t\t\tthis.matrix = camera.matrixWorld;\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.pointMap = pointMap;\n\t\t\tthis.update();\n\t\t}\n\n\t\tupdate() {\n\t\t\tconst geometry = this.geometry;\n\t\t\tconst pointMap = this.pointMap;\n\t\t\tconst w = 1,\n\t\t\t\t\t\th = 1; // we need just camera projection matrix inverse\n\t\t\t// world matrix must be identity\n\n\t\t\t_camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse); // center / target\n\n\n\t\t\tsetPoint('c', pointMap, geometry, _camera, 0, 0, -1);\n\t\t\tsetPoint('t', pointMap, geometry, _camera, 0, 0, 1); // near\n\n\t\t\tsetPoint('n1', pointMap, geometry, _camera, -w, -h, -1);\n\t\t\tsetPoint('n2', pointMap, geometry, _camera, w, -h, -1);\n\t\t\tsetPoint('n3', pointMap, geometry, _camera, -w, h, -1);\n\t\t\tsetPoint('n4', pointMap, geometry, _camera, w, h, -1); // far\n\n\t\t\tsetPoint('f1', pointMap, geometry, _camera, -w, -h, 1);\n\t\t\tsetPoint('f2', pointMap, geometry, _camera, w, -h, 1);\n\t\t\tsetPoint('f3', pointMap, geometry, _camera, -w, h, 1);\n\t\t\tsetPoint('f4', pointMap, geometry, _camera, w, h, 1); // up\n\n\t\t\tsetPoint('u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, -1);\n\t\t\tsetPoint('u2', pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1);\n\t\t\tsetPoint('u3', pointMap, geometry, _camera, 0, h * 2, -1); // cross\n\n\t\t\tsetPoint('cf1', pointMap, geometry, _camera, -w, 0, 1);\n\t\t\tsetPoint('cf2', pointMap, geometry, _camera, w, 0, 1);\n\t\t\tsetPoint('cf3', pointMap, geometry, _camera, 0, -h, 1);\n\t\t\tsetPoint('cf4', pointMap, geometry, _camera, 0, h, 1);\n\t\t\tsetPoint('cn1', pointMap, geometry, _camera, -w, 0, -1);\n\t\t\tsetPoint('cn2', pointMap, geometry, _camera, w, 0, -1);\n\t\t\tsetPoint('cn3', pointMap, geometry, _camera, 0, -h, -1);\n\t\t\tsetPoint('cn4', pointMap, geometry, _camera, 0, h, -1);\n\t\t\tgeometry.getAttribute('position').needsUpdate = true;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.material.dispose();\n\t\t}\n\n\t}\n\n\tfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n\t\t_vector.set(x, y, z).unproject(camera);\n\n\t\tconst points = pointMap[point];\n\n\t\tif (points !== undefined) {\n\t\t\tconst position = geometry.getAttribute('position');\n\n\t\t\tfor (let i = 0, l = points.length; i < l; i++) {\n\t\t\t\tposition.setXYZ(points[i], _vector.x, _vector.y, _vector.z);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst _box = /*@__PURE__*/new Box3();\n\n\tclass BoxHelper extends LineSegments {\n\t\tconstructor(object, color = 0xffff00) {\n\t\t\tconst indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n\t\t\tconst positions = new Float32Array(8 * 3);\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setIndex(new BufferAttribute(indices, 1));\n\t\t\tgeometry.setAttribute('position', new BufferAttribute(positions, 3));\n\t\t\tsuper(geometry, new LineBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\ttoneMapped: false\n\t\t\t}));\n\t\t\tthis.object = object;\n\t\t\tthis.type = 'BoxHelper';\n\t\t\tthis.matrixAutoUpdate = false;\n\t\t\tthis.update();\n\t\t}\n\n\t\tupdate(object) {\n\t\t\tif (object !== undefined) {\n\t\t\t\tconsole.warn('THREE.BoxHelper: .update() has no longer arguments.');\n\t\t\t}\n\n\t\t\tif (this.object !== undefined) {\n\t\t\t\t_box.setFromObject(this.object);\n\t\t\t}\n\n\t\t\tif (_box.isEmpty()) return;\n\t\t\tconst min = _box.min;\n\t\t\tconst max = _box.max;\n\t\t\t/*\n\t\t\t\t5____4\n\t\t\t1/___0/|\n\t\t\t| 6__|_7\n\t\t\t2/___3/\n\t\t\t\t0: max.x, max.y, max.z\n\t\t\t1: min.x, max.y, max.z\n\t\t\t2: min.x, min.y, max.z\n\t\t\t3: max.x, min.y, max.z\n\t\t\t4: max.x, max.y, min.z\n\t\t\t5: min.x, max.y, min.z\n\t\t\t6: min.x, min.y, min.z\n\t\t\t7: max.x, min.y, min.z\n\t\t\t*/\n\n\t\t\tconst position = this.geometry.attributes.position;\n\t\t\tconst array = position.array;\n\t\t\tarray[0] = max.x;\n\t\t\tarray[1] = max.y;\n\t\t\tarray[2] = max.z;\n\t\t\tarray[3] = min.x;\n\t\t\tarray[4] = max.y;\n\t\t\tarray[5] = max.z;\n\t\t\tarray[6] = min.x;\n\t\t\tarray[7] = min.y;\n\t\t\tarray[8] = max.z;\n\t\t\tarray[9] = max.x;\n\t\t\tarray[10] = min.y;\n\t\t\tarray[11] = max.z;\n\t\t\tarray[12] = max.x;\n\t\t\tarray[13] = max.y;\n\t\t\tarray[14] = min.z;\n\t\t\tarray[15] = min.x;\n\t\t\tarray[16] = max.y;\n\t\t\tarray[17] = min.z;\n\t\t\tarray[18] = min.x;\n\t\t\tarray[19] = min.y;\n\t\t\tarray[20] = min.z;\n\t\t\tarray[21] = max.x;\n\t\t\tarray[22] = min.y;\n\t\t\tarray[23] = min.z;\n\t\t\tposition.needsUpdate = true;\n\t\t\tthis.geometry.computeBoundingSphere();\n\t\t}\n\n\t\tsetFromObject(object) {\n\t\t\tthis.object = object;\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tLineSegments.prototype.copy.call(this, source);\n\t\t\tthis.object = source.object;\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass Box3Helper extends LineSegments {\n\t\tconstructor(box, color = 0xffff00) {\n\t\t\tconst indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n\t\t\tconst positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1];\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setIndex(new BufferAttribute(indices, 1));\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(positions, 3));\n\t\t\tsuper(geometry, new LineBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\ttoneMapped: false\n\t\t\t}));\n\t\t\tthis.box = box;\n\t\t\tthis.type = 'Box3Helper';\n\t\t\tthis.geometry.computeBoundingSphere();\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tconst box = this.box;\n\t\t\tif (box.isEmpty()) return;\n\t\t\tbox.getCenter(this.position);\n\t\t\tbox.getSize(this.scale);\n\t\t\tthis.scale.multiplyScalar(0.5);\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t}\n\n\t}\n\n\tclass PlaneHelper extends Line {\n\t\tconstructor(plane, size = 1, hex = 0xffff00) {\n\t\t\tconst color = hex;\n\t\t\tconst positions = [1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0];\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(positions, 3));\n\t\t\tgeometry.computeBoundingSphere();\n\t\t\tsuper(geometry, new LineBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\ttoneMapped: false\n\t\t\t}));\n\t\t\tthis.type = 'PlaneHelper';\n\t\t\tthis.plane = plane;\n\t\t\tthis.size = size;\n\t\t\tconst positions2 = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1];\n\t\t\tconst geometry2 = new BufferGeometry();\n\t\t\tgeometry2.setAttribute('position', new Float32BufferAttribute(positions2, 3));\n\t\t\tgeometry2.computeBoundingSphere();\n\t\t\tthis.add(new Mesh(geometry2, new MeshBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tdepthWrite: false,\n\t\t\t\ttoneMapped: false\n\t\t\t})));\n\t\t}\n\n\t\tupdateMatrixWorld(force) {\n\t\t\tlet scale = -this.plane.constant;\n\t\t\tif (Math.abs(scale) < 1e-8) scale = 1e-8; // sign does not matter\n\n\t\t\tthis.scale.set(0.5 * this.size, 0.5 * this.size, scale);\n\t\t\tthis.children[0].material.side = scale < 0 ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\t\tthis.lookAt(this.plane.normal);\n\t\t\tsuper.updateMatrixWorld(force);\n\t\t}\n\n\t}\n\n\tconst _axis = /*@__PURE__*/new Vector3();\n\n\tlet _lineGeometry, _coneGeometry;\n\n\tclass ArrowHelper extends Object3D {\n\t\t// dir is assumed to be normalized\n\t\tconstructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2) {\n\t\t\tsuper();\n\t\t\tthis.type = 'ArrowHelper';\n\n\t\t\tif (_lineGeometry === undefined) {\n\t\t\t\t_lineGeometry = new BufferGeometry();\n\n\t\t\t\t_lineGeometry.setAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n\n\t\t\t\t_coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n\n\t\t\t\t_coneGeometry.translate(0, -0.5, 0);\n\t\t\t}\n\n\t\t\tthis.position.copy(origin);\n\t\t\tthis.line = new Line(_lineGeometry, new LineBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\ttoneMapped: false\n\t\t\t}));\n\t\t\tthis.line.matrixAutoUpdate = false;\n\t\t\tthis.add(this.line);\n\t\t\tthis.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({\n\t\t\t\tcolor: color,\n\t\t\t\ttoneMapped: false\n\t\t\t}));\n\t\t\tthis.cone.matrixAutoUpdate = false;\n\t\t\tthis.add(this.cone);\n\t\t\tthis.setDirection(dir);\n\t\t\tthis.setLength(length, headLength, headWidth);\n\t\t}\n\n\t\tsetDirection(dir) {\n\t\t\t// dir is assumed to be normalized\n\t\t\tif (dir.y > 0.99999) {\n\t\t\t\tthis.quaternion.set(0, 0, 0, 1);\n\t\t\t} else if (dir.y < -0.99999) {\n\t\t\t\tthis.quaternion.set(1, 0, 0, 0);\n\t\t\t} else {\n\t\t\t\t_axis.set(dir.z, 0, -dir.x).normalize();\n\n\t\t\t\tconst radians = Math.acos(dir.y);\n\t\t\t\tthis.quaternion.setFromAxisAngle(_axis, radians);\n\t\t\t}\n\t\t}\n\n\t\tsetLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n\t\t\tthis.line.scale.set(1, Math.max(0.0001, length - headLength), 1); // see #17458\n\n\t\t\tthis.line.updateMatrix();\n\t\t\tthis.cone.scale.set(headWidth, headLength, headWidth);\n\t\t\tthis.cone.position.y = length;\n\t\t\tthis.cone.updateMatrix();\n\t\t}\n\n\t\tsetColor(color) {\n\t\t\tthis.line.material.color.set(color);\n\t\t\tthis.cone.material.color.set(color);\n\t\t}\n\n\t\tcopy(source) {\n\t\t\tsuper.copy(source, false);\n\t\t\tthis.line.copy(source.line);\n\t\t\tthis.cone.copy(source.cone);\n\t\t\treturn this;\n\t\t}\n\n\t}\n\n\tclass AxesHelper extends LineSegments {\n\t\tconstructor(size = 1) {\n\t\t\tconst vertices = [0, 0, 0, size, 0, 0, 0, 0, 0, 0, size, 0, 0, 0, 0, 0, 0, size];\n\t\t\tconst colors = [1, 0, 0, 1, 0.6, 0, 0, 1, 0, 0.6, 1, 0, 0, 0, 1, 0, 0.6, 1];\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n\t\t\tgeometry.setAttribute('color', new Float32BufferAttribute(colors, 3));\n\t\t\tconst material = new LineBasicMaterial({\n\t\t\t\tvertexColors: true,\n\t\t\t\ttoneMapped: false\n\t\t\t});\n\t\t\tsuper(geometry, material);\n\t\t\tthis.type = 'AxesHelper';\n\t\t}\n\n\t\tsetColors(xAxisColor, yAxisColor, zAxisColor) {\n\t\t\tconst color = new Color();\n\t\t\tconst array = this.geometry.attributes.color.array;\n\t\t\tcolor.set(xAxisColor);\n\t\t\tcolor.toArray(array, 0);\n\t\t\tcolor.toArray(array, 3);\n\t\t\tcolor.set(yAxisColor);\n\t\t\tcolor.toArray(array, 6);\n\t\t\tcolor.toArray(array, 9);\n\t\t\tcolor.set(zAxisColor);\n\t\t\tcolor.toArray(array, 12);\n\t\t\tcolor.toArray(array, 15);\n\t\t\tthis.geometry.attributes.color.needsUpdate = true;\n\t\t\treturn this;\n\t\t}\n\n\t\tdispose() {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.material.dispose();\n\t\t}\n\n\t}\n\n\tconst _floatView = new Float32Array(1);\n\n\tconst _int32View = new Int32Array(_floatView.buffer);\n\n\tclass DataUtils {\n\t\t// Converts float32 to float16 (stored as uint16 value).\n\t\tstatic toHalfFloat(val) {\n\t\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t\t* by James Tursa?s half-precision code. */\n\t\t\t_floatView[0] = val;\n\t\t\tconst x = _int32View[0];\n\t\t\tlet bits = x >> 16 & 0x8000;\n\t\t\t/* Get the sign */\n\n\t\t\tlet m = x >> 12 & 0x07ff;\n\t\t\t/* Keep one extra bit for rounding */\n\n\t\t\tconst e = x >> 23 & 0xff;\n\t\t\t/* Using int is faster here */\n\n\t\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t\t* half, return signed zero. */\n\n\t\t\tif (e < 103) return bits;\n\t\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\n\t\t\tif (e > 142) {\n\t\t\t\tbits |= 0x7c00;\n\t\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\n\t\t\t\tbits |= (e == 255 ? 0 : 1) && x & 0x007fffff;\n\t\t\t\treturn bits;\n\t\t\t}\n\t\t\t/* If exponent underflows but not too much, return a denormal */\n\n\n\t\t\tif (e < 113) {\n\t\t\t\tm |= 0x0800;\n\t\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t\t* to 1, which is OK. */\n\n\t\t\t\tbits |= (m >> 114 - e) + (m >> 113 - e & 1);\n\t\t\t\treturn bits;\n\t\t\t}\n\n\t\t\tbits |= e - 112 << 10 | m >> 1;\n\t\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t\t* the exponent, which is OK. */\n\n\t\t\tbits += m & 1;\n\t\t\treturn bits;\n\t\t}\n\n\t}\n\n\tconst LineStrip = 0;\n\tconst LinePieces = 1;\n\tconst NoColors = 0;\n\tconst FaceColors = 1;\n\tconst VertexColors = 2;\n\tfunction MeshFaceMaterial(materials) {\n\t\tconsole.warn('THREE.MeshFaceMaterial has been removed. Use an Array instead.');\n\t\treturn materials;\n\t}\n\tfunction MultiMaterial(materials = []) {\n\t\tconsole.warn('THREE.MultiMaterial has been removed. Use an Array instead.');\n\t\tmaterials.isMultiMaterial = true;\n\t\tmaterials.materials = materials;\n\n\t\tmaterials.clone = function () {\n\t\t\treturn materials.slice();\n\t\t};\n\n\t\treturn materials;\n\t}\n\tfunction PointCloud(geometry, material) {\n\t\tconsole.warn('THREE.PointCloud has been renamed to THREE.Points.');\n\t\treturn new Points(geometry, material);\n\t}\n\tfunction Particle(material) {\n\t\tconsole.warn('THREE.Particle has been renamed to THREE.Sprite.');\n\t\treturn new Sprite(material);\n\t}\n\tfunction ParticleSystem(geometry, material) {\n\t\tconsole.warn('THREE.ParticleSystem has been renamed to THREE.Points.');\n\t\treturn new Points(geometry, material);\n\t}\n\tfunction PointCloudMaterial(parameters) {\n\t\tconsole.warn('THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.');\n\t\treturn new PointsMaterial(parameters);\n\t}\n\tfunction ParticleBasicMaterial(parameters) {\n\t\tconsole.warn('THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.');\n\t\treturn new PointsMaterial(parameters);\n\t}\n\tfunction ParticleSystemMaterial(parameters) {\n\t\tconsole.warn('THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.');\n\t\treturn new PointsMaterial(parameters);\n\t}\n\tfunction Vertex(x, y, z) {\n\t\tconsole.warn('THREE.Vertex has been removed. Use THREE.Vector3 instead.');\n\t\treturn new Vector3(x, y, z);\n\t} //\n\n\tfunction DynamicBufferAttribute(array, itemSize) {\n\t\tconsole.warn('THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.');\n\t\treturn new BufferAttribute(array, itemSize).setUsage(DynamicDrawUsage);\n\t}\n\tfunction Int8Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.');\n\t\treturn new Int8BufferAttribute(array, itemSize);\n\t}\n\tfunction Uint8Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.');\n\t\treturn new Uint8BufferAttribute(array, itemSize);\n\t}\n\tfunction Uint8ClampedAttribute(array, itemSize) {\n\t\tconsole.warn('THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.');\n\t\treturn new Uint8ClampedBufferAttribute(array, itemSize);\n\t}\n\tfunction Int16Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.');\n\t\treturn new Int16BufferAttribute(array, itemSize);\n\t}\n\tfunction Uint16Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.');\n\t\treturn new Uint16BufferAttribute(array, itemSize);\n\t}\n\tfunction Int32Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.');\n\t\treturn new Int32BufferAttribute(array, itemSize);\n\t}\n\tfunction Uint32Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.');\n\t\treturn new Uint32BufferAttribute(array, itemSize);\n\t}\n\tfunction Float32Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.');\n\t\treturn new Float32BufferAttribute(array, itemSize);\n\t}\n\tfunction Float64Attribute(array, itemSize) {\n\t\tconsole.warn('THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.');\n\t\treturn new Float64BufferAttribute(array, itemSize);\n\t} //\n\n\tCurve.create = function (construct, getPoint) {\n\t\tconsole.log('THREE.Curve.create() has been deprecated');\n\t\tconstruct.prototype = Object.create(Curve.prototype);\n\t\tconstruct.prototype.constructor = construct;\n\t\tconstruct.prototype.getPoint = getPoint;\n\t\treturn construct;\n\t}; //\n\n\n\tPath.prototype.fromPoints = function (points) {\n\t\tconsole.warn('THREE.Path: .fromPoints() has been renamed to .setFromPoints().');\n\t\treturn this.setFromPoints(points);\n\t}; //\n\n\n\tfunction AxisHelper(size) {\n\t\tconsole.warn('THREE.AxisHelper has been renamed to THREE.AxesHelper.');\n\t\treturn new AxesHelper(size);\n\t}\n\tfunction BoundingBoxHelper(object, color) {\n\t\tconsole.warn('THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.');\n\t\treturn new BoxHelper(object, color);\n\t}\n\tfunction EdgesHelper(object, hex) {\n\t\tconsole.warn('THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.');\n\t\treturn new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({\n\t\t\tcolor: hex !== undefined ? hex : 0xffffff\n\t\t}));\n\t}\n\n\tGridHelper.prototype.setColors = function () {\n\t\tconsole.error('THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.');\n\t};\n\n\tSkeletonHelper.prototype.update = function () {\n\t\tconsole.error('THREE.SkeletonHelper: update() no longer needs to be called.');\n\t};\n\n\tfunction WireframeHelper(object, hex) {\n\t\tconsole.warn('THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.');\n\t\treturn new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({\n\t\t\tcolor: hex !== undefined ? hex : 0xffffff\n\t\t}));\n\t} //\n\n\tLoader.prototype.extractUrlBase = function (url) {\n\t\tconsole.warn('THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.');\n\t\treturn LoaderUtils.extractUrlBase(url);\n\t};\n\n\tLoader.Handlers = {\n\t\tadd: function () {\n\t\t\tconsole.error('THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.');\n\t\t},\n\t\tget: function () {\n\t\t\tconsole.error('THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.');\n\t\t}\n\t};\n\tfunction XHRLoader(manager) {\n\t\tconsole.warn('THREE.XHRLoader has been renamed to THREE.FileLoader.');\n\t\treturn new FileLoader(manager);\n\t}\n\tfunction BinaryTextureLoader(manager) {\n\t\tconsole.warn('THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.');\n\t\treturn new DataTextureLoader(manager);\n\t} //\n\n\tBox2.prototype.center = function (optionalTarget) {\n\t\tconsole.warn('THREE.Box2: .center() has been renamed to .getCenter().');\n\t\treturn this.getCenter(optionalTarget);\n\t};\n\n\tBox2.prototype.empty = function () {\n\t\tconsole.warn('THREE.Box2: .empty() has been renamed to .isEmpty().');\n\t\treturn this.isEmpty();\n\t};\n\n\tBox2.prototype.isIntersectionBox = function (box) {\n\t\tconsole.warn('THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().');\n\t\treturn this.intersectsBox(box);\n\t};\n\n\tBox2.prototype.size = function (optionalTarget) {\n\t\tconsole.warn('THREE.Box2: .size() has been renamed to .getSize().');\n\t\treturn this.getSize(optionalTarget);\n\t}; //\n\n\n\tBox3.prototype.center = function (optionalTarget) {\n\t\tconsole.warn('THREE.Box3: .center() has been renamed to .getCenter().');\n\t\treturn this.getCenter(optionalTarget);\n\t};\n\n\tBox3.prototype.empty = function () {\n\t\tconsole.warn('THREE.Box3: .empty() has been renamed to .isEmpty().');\n\t\treturn this.isEmpty();\n\t};\n\n\tBox3.prototype.isIntersectionBox = function (box) {\n\t\tconsole.warn('THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().');\n\t\treturn this.intersectsBox(box);\n\t};\n\n\tBox3.prototype.isIntersectionSphere = function (sphere) {\n\t\tconsole.warn('THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().');\n\t\treturn this.intersectsSphere(sphere);\n\t};\n\n\tBox3.prototype.size = function (optionalTarget) {\n\t\tconsole.warn('THREE.Box3: .size() has been renamed to .getSize().');\n\t\treturn this.getSize(optionalTarget);\n\t}; //\n\n\n\tSphere.prototype.empty = function () {\n\t\tconsole.warn('THREE.Sphere: .empty() has been renamed to .isEmpty().');\n\t\treturn this.isEmpty();\n\t}; //\n\n\n\tFrustum.prototype.setFromMatrix = function (m) {\n\t\tconsole.warn('THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().');\n\t\treturn this.setFromProjectionMatrix(m);\n\t}; //\n\n\n\tLine3.prototype.center = function (optionalTarget) {\n\t\tconsole.warn('THREE.Line3: .center() has been renamed to .getCenter().');\n\t\treturn this.getCenter(optionalTarget);\n\t}; //\n\n\n\tMatrix3.prototype.flattenToArrayOffset = function (array, offset) {\n\t\tconsole.warn('THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.');\n\t\treturn this.toArray(array, offset);\n\t};\n\n\tMatrix3.prototype.multiplyVector3 = function (vector) {\n\t\tconsole.warn('THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.');\n\t\treturn vector.applyMatrix3(this);\n\t};\n\n\tMatrix3.prototype.multiplyVector3Array = function () {\n\t\tconsole.error('THREE.Matrix3: .multiplyVector3Array() has been removed.');\n\t};\n\n\tMatrix3.prototype.applyToBufferAttribute = function (attribute) {\n\t\tconsole.warn('THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.');\n\t\treturn attribute.applyMatrix3(this);\n\t};\n\n\tMatrix3.prototype.applyToVector3Array = function () {\n\t\tconsole.error('THREE.Matrix3: .applyToVector3Array() has been removed.');\n\t};\n\n\tMatrix3.prototype.getInverse = function (matrix) {\n\t\tconsole.warn('THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.');\n\t\treturn this.copy(matrix).invert();\n\t}; //\n\n\n\tMatrix4.prototype.extractPosition = function (m) {\n\t\tconsole.warn('THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().');\n\t\treturn this.copyPosition(m);\n\t};\n\n\tMatrix4.prototype.flattenToArrayOffset = function (array, offset) {\n\t\tconsole.warn('THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.');\n\t\treturn this.toArray(array, offset);\n\t};\n\n\tMatrix4.prototype.getPosition = function () {\n\t\tconsole.warn('THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.');\n\t\treturn new Vector3().setFromMatrixColumn(this, 3);\n\t};\n\n\tMatrix4.prototype.setRotationFromQuaternion = function (q) {\n\t\tconsole.warn('THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().');\n\t\treturn this.makeRotationFromQuaternion(q);\n\t};\n\n\tMatrix4.prototype.multiplyToArray = function () {\n\t\tconsole.warn('THREE.Matrix4: .multiplyToArray() has been removed.');\n\t};\n\n\tMatrix4.prototype.multiplyVector3 = function (vector) {\n\t\tconsole.warn('THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n\t\treturn vector.applyMatrix4(this);\n\t};\n\n\tMatrix4.prototype.multiplyVector4 = function (vector) {\n\t\tconsole.warn('THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n\t\treturn vector.applyMatrix4(this);\n\t};\n\n\tMatrix4.prototype.multiplyVector3Array = function () {\n\t\tconsole.error('THREE.Matrix4: .multiplyVector3Array() has been removed.');\n\t};\n\n\tMatrix4.prototype.rotateAxis = function (v) {\n\t\tconsole.warn('THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.');\n\t\tv.transformDirection(this);\n\t};\n\n\tMatrix4.prototype.crossVector = function (vector) {\n\t\tconsole.warn('THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n\t\treturn vector.applyMatrix4(this);\n\t};\n\n\tMatrix4.prototype.translate = function () {\n\t\tconsole.error('THREE.Matrix4: .translate() has been removed.');\n\t};\n\n\tMatrix4.prototype.rotateX = function () {\n\t\tconsole.error('THREE.Matrix4: .rotateX() has been removed.');\n\t};\n\n\tMatrix4.prototype.rotateY = function () {\n\t\tconsole.error('THREE.Matrix4: .rotateY() has been removed.');\n\t};\n\n\tMatrix4.prototype.rotateZ = function () {\n\t\tconsole.error('THREE.Matrix4: .rotateZ() has been removed.');\n\t};\n\n\tMatrix4.prototype.rotateByAxis = function () {\n\t\tconsole.error('THREE.Matrix4: .rotateByAxis() has been removed.');\n\t};\n\n\tMatrix4.prototype.applyToBufferAttribute = function (attribute) {\n\t\tconsole.warn('THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.');\n\t\treturn attribute.applyMatrix4(this);\n\t};\n\n\tMatrix4.prototype.applyToVector3Array = function () {\n\t\tconsole.error('THREE.Matrix4: .applyToVector3Array() has been removed.');\n\t};\n\n\tMatrix4.prototype.makeFrustum = function (left, right, bottom, top, near, far) {\n\t\tconsole.warn('THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.');\n\t\treturn this.makePerspective(left, right, top, bottom, near, far);\n\t};\n\n\tMatrix4.prototype.getInverse = function (matrix) {\n\t\tconsole.warn('THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.');\n\t\treturn this.copy(matrix).invert();\n\t}; //\n\n\n\tPlane.prototype.isIntersectionLine = function (line) {\n\t\tconsole.warn('THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().');\n\t\treturn this.intersectsLine(line);\n\t}; //\n\n\n\tQuaternion.prototype.multiplyVector3 = function (vector) {\n\t\tconsole.warn('THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.');\n\t\treturn vector.applyQuaternion(this);\n\t};\n\n\tQuaternion.prototype.inverse = function () {\n\t\tconsole.warn('THREE.Quaternion: .inverse() has been renamed to invert().');\n\t\treturn this.invert();\n\t}; //\n\n\n\tRay.prototype.isIntersectionBox = function (box) {\n\t\tconsole.warn('THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().');\n\t\treturn this.intersectsBox(box);\n\t};\n\n\tRay.prototype.isIntersectionPlane = function (plane) {\n\t\tconsole.warn('THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().');\n\t\treturn this.intersectsPlane(plane);\n\t};\n\n\tRay.prototype.isIntersectionSphere = function (sphere) {\n\t\tconsole.warn('THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().');\n\t\treturn this.intersectsSphere(sphere);\n\t}; //\n\n\n\tTriangle.prototype.area = function () {\n\t\tconsole.warn('THREE.Triangle: .area() has been renamed to .getArea().');\n\t\treturn this.getArea();\n\t};\n\n\tTriangle.prototype.barycoordFromPoint = function (point, target) {\n\t\tconsole.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');\n\t\treturn this.getBarycoord(point, target);\n\t};\n\n\tTriangle.prototype.midpoint = function (target) {\n\t\tconsole.warn('THREE.Triangle: .midpoint() has been renamed to .getMidpoint().');\n\t\treturn this.getMidpoint(target);\n\t};\n\n\tTriangle.prototypenormal = function (target) {\n\t\tconsole.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');\n\t\treturn this.getNormal(target);\n\t};\n\n\tTriangle.prototype.plane = function (target) {\n\t\tconsole.warn('THREE.Triangle: .plane() has been renamed to .getPlane().');\n\t\treturn this.getPlane(target);\n\t};\n\n\tTriangle.barycoordFromPoint = function (point, a, b, c, target) {\n\t\tconsole.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');\n\t\treturn Triangle.getBarycoord(point, a, b, c, target);\n\t};\n\n\tTriangle.normal = function (a, b, c, target) {\n\t\tconsole.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');\n\t\treturn Triangle.getNormal(a, b, c, target);\n\t}; //\n\n\n\tShape.prototype.extractAllPoints = function (divisions) {\n\t\tconsole.warn('THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.');\n\t\treturn this.extractPoints(divisions);\n\t};\n\n\tShape.prototype.extrude = function (options) {\n\t\tconsole.warn('THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.');\n\t\treturn new ExtrudeGeometry(this, options);\n\t};\n\n\tShape.prototype.makeGeometry = function (options) {\n\t\tconsole.warn('THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.');\n\t\treturn new ShapeGeometry(this, options);\n\t}; //\n\n\n\tVector2.prototype.fromAttribute = function (attribute, index, offset) {\n\t\tconsole.warn('THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().');\n\t\treturn this.fromBufferAttribute(attribute, index, offset);\n\t};\n\n\tVector2.prototype.distanceToManhattan = function (v) {\n\t\tconsole.warn('THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');\n\t\treturn this.manhattanDistanceTo(v);\n\t};\n\n\tVector2.prototype.lengthManhattan = function () {\n\t\tconsole.warn('THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().');\n\t\treturn this.manhattanLength();\n\t}; //\n\n\n\tVector3.prototype.setEulerFromRotationMatrix = function () {\n\t\tconsole.error('THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.');\n\t};\n\n\tVector3.prototype.setEulerFromQuaternion = function () {\n\t\tconsole.error('THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.');\n\t};\n\n\tVector3.prototype.getPositionFromMatrix = function (m) {\n\t\tconsole.warn('THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().');\n\t\treturn this.setFromMatrixPosition(m);\n\t};\n\n\tVector3.prototype.getScaleFromMatrix = function (m) {\n\t\tconsole.warn('THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().');\n\t\treturn this.setFromMatrixScale(m);\n\t};\n\n\tVector3.prototype.getColumnFromMatrix = function (index, matrix) {\n\t\tconsole.warn('THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().');\n\t\treturn this.setFromMatrixColumn(matrix, index);\n\t};\n\n\tVector3.prototype.applyProjection = function (m) {\n\t\tconsole.warn('THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.');\n\t\treturn this.applyMatrix4(m);\n\t};\n\n\tVector3.prototype.fromAttribute = function (attribute, index, offset) {\n\t\tconsole.warn('THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().');\n\t\treturn this.fromBufferAttribute(attribute, index, offset);\n\t};\n\n\tVector3.prototype.distanceToManhattan = function (v) {\n\t\tconsole.warn('THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');\n\t\treturn this.manhattanDistanceTo(v);\n\t};\n\n\tVector3.prototype.lengthManhattan = function () {\n\t\tconsole.warn('THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().');\n\t\treturn this.manhattanLength();\n\t}; //\n\n\n\tVector4.prototype.fromAttribute = function (attribute, index, offset) {\n\t\tconsole.warn('THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().');\n\t\treturn this.fromBufferAttribute(attribute, index, offset);\n\t};\n\n\tVector4.prototype.lengthManhattan = function () {\n\t\tconsole.warn('THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().');\n\t\treturn this.manhattanLength();\n\t}; //\n\n\n\tObject3D.prototype.getChildByName = function (name) {\n\t\tconsole.warn('THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().');\n\t\treturn this.getObjectByName(name);\n\t};\n\n\tObject3D.prototype.renderDepth = function () {\n\t\tconsole.warn('THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.');\n\t};\n\n\tObject3D.prototype.translate = function (distance, axis) {\n\t\tconsole.warn('THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.');\n\t\treturn this.translateOnAxis(axis, distance);\n\t};\n\n\tObject3D.prototype.getWorldRotation = function () {\n\t\tconsole.error('THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.');\n\t};\n\n\tObject3D.prototype.applyMatrix = function (matrix) {\n\t\tconsole.warn('THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().');\n\t\treturn this.applyMatrix4(matrix);\n\t};\n\n\tObject.defineProperties(Object3D.prototype, {\n\t\teulerOrder: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');\n\t\t\t\treturn this.rotation.order;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');\n\t\t\t\tthis.rotation.order = value;\n\t\t\t}\n\t\t},\n\t\tuseQuaternion: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.');\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.');\n\t\t\t}\n\t\t}\n\t});\n\n\tMesh.prototype.setDrawMode = function () {\n\t\tconsole.error('THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.');\n\t};\n\n\tObject.defineProperties(Mesh.prototype, {\n\t\tdrawMode: {\n\t\t\tget: function () {\n\t\t\t\tconsole.error('THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.');\n\t\t\t\treturn TrianglesDrawMode;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.error('THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.');\n\t\t\t}\n\t\t}\n\t});\n\n\tSkinnedMesh.prototype.initBones = function () {\n\t\tconsole.error('THREE.SkinnedMesh: initBones() has been removed.');\n\t}; //\n\n\n\tPerspectiveCamera.prototype.setLens = function (focalLength, filmGauge) {\n\t\tconsole.warn('THREE.PerspectiveCamera.setLens is deprecated. ' + 'Use .setFocalLength and .filmGauge for a photographic setup.');\n\t\tif (filmGauge !== undefined) this.filmGauge = filmGauge;\n\t\tthis.setFocalLength(focalLength);\n\t}; //\n\n\n\tObject.defineProperties(Light.prototype, {\n\t\tonlyShadow: {\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Light: .onlyShadow has been removed.');\n\t\t\t}\n\t\t},\n\t\tshadowCameraFov: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraFov is now .shadow.camera.fov.');\n\t\t\t\tthis.shadow.camera.fov = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraLeft: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraLeft is now .shadow.camera.left.');\n\t\t\t\tthis.shadow.camera.left = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraRight: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraRight is now .shadow.camera.right.');\n\t\t\t\tthis.shadow.camera.right = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraTop: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraTop is now .shadow.camera.top.');\n\t\t\t\tthis.shadow.camera.top = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraBottom: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.');\n\t\t\t\tthis.shadow.camera.bottom = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraNear: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraNear is now .shadow.camera.near.');\n\t\t\t\tthis.shadow.camera.near = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraFar: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraFar is now .shadow.camera.far.');\n\t\t\t\tthis.shadow.camera.far = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraVisible: {\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.');\n\t\t\t}\n\t\t},\n\t\tshadowBias: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowBias is now .shadow.bias.');\n\t\t\t\tthis.shadow.bias = value;\n\t\t\t}\n\t\t},\n\t\tshadowDarkness: {\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Light: .shadowDarkness has been removed.');\n\t\t\t}\n\t\t},\n\t\tshadowMapWidth: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.');\n\t\t\t\tthis.shadow.mapSize.width = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapHeight: {\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.');\n\t\t\t\tthis.shadow.mapSize.height = value;\n\t\t\t}\n\t\t}\n\t}); //\n\n\tObject.defineProperties(BufferAttribute.prototype, {\n\t\tlength: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.BufferAttribute: .length has been deprecated. Use .count instead.');\n\t\t\t\treturn this.array.length;\n\t\t\t}\n\t\t},\n\t\tdynamic: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.');\n\t\t\t\treturn this.usage === DynamicDrawUsage;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.');\n\t\t\t\tthis.setUsage(DynamicDrawUsage);\n\t\t\t}\n\t\t}\n\t});\n\n\tBufferAttribute.prototype.setDynamic = function (value) {\n\t\tconsole.warn('THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.');\n\t\tthis.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n\t\treturn this;\n\t};\n\n\tBufferAttribute.prototype.copyIndicesArray = function () {\n\t\tconsole.error('THREE.BufferAttribute: .copyIndicesArray() has been removed.');\n\t}, BufferAttribute.prototype.setArray = function () {\n\t\tconsole.error('THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers');\n\t}; //\n\n\tBufferGeometry.prototype.addIndex = function (index) {\n\t\tconsole.warn('THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().');\n\t\tthis.setIndex(index);\n\t};\n\n\tBufferGeometry.prototype.addAttribute = function (name, attribute) {\n\t\tconsole.warn('THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().');\n\n\t\tif (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) {\n\t\t\tconsole.warn('THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).');\n\t\t\treturn this.setAttribute(name, new BufferAttribute(arguments[1], arguments[2]));\n\t\t}\n\n\t\tif (name === 'index') {\n\t\t\tconsole.warn('THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.');\n\t\t\tthis.setIndex(attribute);\n\t\t\treturn this;\n\t\t}\n\n\t\treturn this.setAttribute(name, attribute);\n\t};\n\n\tBufferGeometry.prototype.addDrawCall = function (start, count, indexOffset) {\n\t\tif (indexOffset !== undefined) {\n\t\t\tconsole.warn('THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.');\n\t\t}\n\n\t\tconsole.warn('THREE.BufferGeometry: .addDrawCall() is now .addGroup().');\n\t\tthis.addGroup(start, count);\n\t};\n\n\tBufferGeometry.prototype.clearDrawCalls = function () {\n\t\tconsole.warn('THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().');\n\t\tthis.clearGroups();\n\t};\n\n\tBufferGeometry.prototype.computeOffsets = function () {\n\t\tconsole.warn('THREE.BufferGeometry: .computeOffsets() has been removed.');\n\t};\n\n\tBufferGeometry.prototype.removeAttribute = function (name) {\n\t\tconsole.warn('THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().');\n\t\treturn this.deleteAttribute(name);\n\t};\n\n\tBufferGeometry.prototype.applyMatrix = function (matrix) {\n\t\tconsole.warn('THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().');\n\t\treturn this.applyMatrix4(matrix);\n\t};\n\n\tObject.defineProperties(BufferGeometry.prototype, {\n\t\tdrawcalls: {\n\t\t\tget: function () {\n\t\t\t\tconsole.error('THREE.BufferGeometry: .drawcalls has been renamed to .groups.');\n\t\t\t\treturn this.groups;\n\t\t\t}\n\t\t},\n\t\toffsets: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.BufferGeometry: .offsets has been renamed to .groups.');\n\t\t\t\treturn this.groups;\n\t\t\t}\n\t\t}\n\t});\n\n\tInterleavedBuffer.prototype.setDynamic = function (value) {\n\t\tconsole.warn('THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.');\n\t\tthis.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n\t\treturn this;\n\t};\n\n\tInterleavedBuffer.prototype.setArray = function () {\n\t\tconsole.error('THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers');\n\t}; //\n\n\n\tExtrudeGeometry.prototype.getArrays = function () {\n\t\tconsole.error('THREE.ExtrudeGeometry: .getArrays() has been removed.');\n\t};\n\n\tExtrudeGeometry.prototype.addShapeList = function () {\n\t\tconsole.error('THREE.ExtrudeGeometry: .addShapeList() has been removed.');\n\t};\n\n\tExtrudeGeometry.prototype.addShape = function () {\n\t\tconsole.error('THREE.ExtrudeGeometry: .addShape() has been removed.');\n\t}; //\n\n\n\tScene.prototype.dispose = function () {\n\t\tconsole.error('THREE.Scene: .dispose() has been removed.');\n\t}; //\n\n\n\tUniform.prototype.onUpdate = function () {\n\t\tconsole.warn('THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.');\n\t\treturn this;\n\t}; //\n\n\n\tObject.defineProperties(Material.prototype, {\n\t\twrapAround: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.Material: .wrapAround has been removed.');\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Material: .wrapAround has been removed.');\n\t\t\t}\n\t\t},\n\t\toverdraw: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.Material: .overdraw has been removed.');\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.Material: .overdraw has been removed.');\n\t\t\t}\n\t\t},\n\t\twrapRGB: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.Material: .wrapRGB has been removed.');\n\t\t\t\treturn new Color();\n\t\t\t}\n\t\t},\n\t\tshading: {\n\t\t\tget: function () {\n\t\t\t\tconsole.error('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n\t\t\t\tthis.flatShading = value === FlatShading;\n\t\t\t}\n\t\t},\n\t\tstencilMask: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.');\n\t\t\t\treturn this.stencilFuncMask;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.');\n\t\t\t\tthis.stencilFuncMask = value;\n\t\t\t}\n\t\t},\n\t\tvertexTangents: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.' + this.type + ': .vertexTangents has been removed.');\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.' + this.type + ': .vertexTangents has been removed.');\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperties(ShaderMaterial.prototype, {\n\t\tderivatives: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');\n\t\t\t\treturn this.extensions.derivatives;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');\n\t\t\t\tthis.extensions.derivatives = value;\n\t\t\t}\n\t\t}\n\t}); //\n\n\tWebGLRenderer.prototype.clearTarget = function (renderTarget, color, depth, stencil) {\n\t\tconsole.warn('THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.');\n\t\tthis.setRenderTarget(renderTarget);\n\t\tthis.clear(color, depth, stencil);\n\t};\n\n\tWebGLRenderer.prototype.animate = function (callback) {\n\t\tconsole.warn('THREE.WebGLRenderer: .animate() is now .setAnimationLoop().');\n\t\tthis.setAnimationLoop(callback);\n\t};\n\n\tWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().');\n\t\treturn this.getRenderTarget();\n\t};\n\n\tWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().');\n\t\treturn this.capabilities.getMaxAnisotropy();\n\t};\n\n\tWebGLRenderer.prototype.getPrecision = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.');\n\t\treturn this.capabilities.precision;\n\t};\n\n\tWebGLRenderer.prototype.resetGLState = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .resetGLState() is now .state.reset().');\n\t\treturn this.state.reset();\n\t};\n\n\tWebGLRenderer.prototype.supportsFloatTextures = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).');\n\t\treturn this.extensions.get('OES_texture_float');\n\t};\n\n\tWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).');\n\t\treturn this.extensions.get('OES_texture_half_float');\n\t};\n\n\tWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).');\n\t\treturn this.extensions.get('OES_standard_derivatives');\n\t};\n\n\tWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).');\n\t\treturn this.extensions.get('WEBGL_compressed_texture_s3tc');\n\t};\n\n\tWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).');\n\t\treturn this.extensions.get('WEBGL_compressed_texture_pvrtc');\n\t};\n\n\tWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).');\n\t\treturn this.extensions.get('EXT_blend_minmax');\n\t};\n\n\tWebGLRenderer.prototype.supportsVertexTextures = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.');\n\t\treturn this.capabilities.vertexTextures;\n\t};\n\n\tWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).');\n\t\treturn this.extensions.get('ANGLE_instanced_arrays');\n\t};\n\n\tWebGLRenderer.prototype.enableScissorTest = function (boolean) {\n\t\tconsole.warn('THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().');\n\t\tthis.setScissorTest(boolean);\n\t};\n\n\tWebGLRenderer.prototype.initMaterial = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .initMaterial() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.addPrePlugin = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.addPostPlugin = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.updateShadowMap = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.setFaceCulling = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .setFaceCulling() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.allocTextureUnit = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .allocTextureUnit() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.setTexture = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .setTexture() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.setTexture2D = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .setTexture2D() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.setTextureCube = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .setTextureCube() has been removed.');\n\t};\n\n\tWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\t\tconsole.warn('THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().');\n\t\treturn this.getActiveMipmapLevel();\n\t};\n\n\tObject.defineProperties(WebGLRenderer.prototype, {\n\t\tshadowMapEnabled: {\n\t\t\tget: function () {\n\t\t\t\treturn this.shadowMap.enabled;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.');\n\t\t\t\tthis.shadowMap.enabled = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapType: {\n\t\t\tget: function () {\n\t\t\t\treturn this.shadowMap.type;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.');\n\t\t\t\tthis.shadowMap.type = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapCullFace: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.');\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.');\n\t\t\t}\n\t\t},\n\t\tcontext: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.');\n\t\t\t\treturn this.getContext();\n\t\t\t}\n\t\t},\n\t\tvr: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .vr has been renamed to .xr');\n\t\t\t\treturn this.xr;\n\t\t\t}\n\t\t},\n\t\tgammaInput: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.');\n\t\t\t}\n\t\t},\n\t\tgammaOutput: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.');\n\t\t\t\tthis.outputEncoding = value === true ? sRGBEncoding : LinearEncoding;\n\t\t\t}\n\t\t},\n\t\ttoneMappingWhitePoint: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.');\n\t\t\t\treturn 1.0;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.');\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperties(WebGLShadowMap.prototype, {\n\t\tcullFace: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.');\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.');\n\t\t\t}\n\t\t},\n\t\trenderReverseSided: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.');\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.');\n\t\t\t}\n\t\t},\n\t\trenderSingleSided: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.');\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t\tset: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.');\n\t\t\t}\n\t\t}\n\t});\n\tfunction WebGLRenderTargetCube(width, height, options) {\n\t\tconsole.warn('THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).');\n\t\treturn new WebGLCubeRenderTarget(width, options);\n\t} //\n\n\tObject.defineProperties(WebGLRenderTarget.prototype, {\n\t\twrapS: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');\n\t\t\t\treturn this.texture.wrapS;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');\n\t\t\t\tthis.texture.wrapS = value;\n\t\t\t}\n\t\t},\n\t\twrapT: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');\n\t\t\t\treturn this.texture.wrapT;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');\n\t\t\t\tthis.texture.wrapT = value;\n\t\t\t}\n\t\t},\n\t\tmagFilter: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');\n\t\t\t\treturn this.texture.magFilter;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');\n\t\t\t\tthis.texture.magFilter = value;\n\t\t\t}\n\t\t},\n\t\tminFilter: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');\n\t\t\t\treturn this.texture.minFilter;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');\n\t\t\t\tthis.texture.minFilter = value;\n\t\t\t}\n\t\t},\n\t\tanisotropy: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');\n\t\t\t\treturn this.texture.anisotropy;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');\n\t\t\t\tthis.texture.anisotropy = value;\n\t\t\t}\n\t\t},\n\t\toffset: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');\n\t\t\t\treturn this.texture.offset;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');\n\t\t\t\tthis.texture.offset = value;\n\t\t\t}\n\t\t},\n\t\trepeat: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');\n\t\t\t\treturn this.texture.repeat;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');\n\t\t\t\tthis.texture.repeat = value;\n\t\t\t}\n\t\t},\n\t\tformat: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');\n\t\t\t\treturn this.texture.format;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');\n\t\t\t\tthis.texture.format = value;\n\t\t\t}\n\t\t},\n\t\ttype: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');\n\t\t\t\treturn this.texture.type;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');\n\t\t\t\tthis.texture.type = value;\n\t\t\t}\n\t\t},\n\t\tgenerateMipmaps: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');\n\t\t\t\treturn this.texture.generateMipmaps;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tconsole.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');\n\t\t\t\tthis.texture.generateMipmaps = value;\n\t\t\t}\n\t\t}\n\t}); //\n\n\tAudio.prototype.load = function (file) {\n\t\tconsole.warn('THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.');\n\t\tconst scope = this;\n\t\tconst audioLoader = new AudioLoader();\n\t\taudioLoader.load(file, function (buffer) {\n\t\t\tscope.setBuffer(buffer);\n\t\t});\n\t\treturn this;\n\t};\n\n\tAudioAnalyser.prototype.getData = function () {\n\t\tconsole.warn('THREE.AudioAnalyser: .getData() is now .getFrequencyData().');\n\t\treturn this.getFrequencyData();\n\t}; //\n\n\n\tCubeCamera.prototype.updateCubeMap = function (renderer, scene) {\n\t\tconsole.warn('THREE.CubeCamera: .updateCubeMap() is now .update().');\n\t\treturn this.update(renderer, scene);\n\t};\n\n\tCubeCamera.prototype.clear = function (renderer, color, depth, stencil) {\n\t\tconsole.warn('THREE.CubeCamera: .clear() is now .renderTarget.clear().');\n\t\treturn this.renderTarget.clear(renderer, color, depth, stencil);\n\t};\n\n\tImageUtils.crossOrigin = undefined;\n\n\tImageUtils.loadTexture = function (url, mapping, onLoad, onError) {\n\t\tconsole.warn('THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.');\n\t\tconst loader = new TextureLoader();\n\t\tloader.setCrossOrigin(this.crossOrigin);\n\t\tconst texture = loader.load(url, onLoad, undefined, onError);\n\t\tif (mapping) texture.mapping = mapping;\n\t\treturn texture;\n\t};\n\n\tImageUtils.loadTextureCube = function (urls, mapping, onLoad, onError) {\n\t\tconsole.warn('THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.');\n\t\tconst loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin(this.crossOrigin);\n\t\tconst texture = loader.load(urls, onLoad, undefined, onError);\n\t\tif (mapping) texture.mapping = mapping;\n\t\treturn texture;\n\t};\n\n\tImageUtils.loadCompressedTexture = function () {\n\t\tconsole.error('THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.');\n\t};\n\n\tImageUtils.loadCompressedTextureCube = function () {\n\t\tconsole.error('THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.');\n\t}; //\n\n\n\tfunction CanvasRenderer() {\n\t\tconsole.error('THREE.CanvasRenderer has been removed');\n\t} //\n\n\tfunction JSONLoader() {\n\t\tconsole.error('THREE.JSONLoader has been removed.');\n\t} //\n\n\tconst SceneUtils = {\n\t\tcreateMultiMaterialObject: function () {\n\t\t\tconsole.error('THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js');\n\t\t},\n\t\tdetach: function () {\n\t\t\tconsole.error('THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js');\n\t\t},\n\t\tattach: function () {\n\t\t\tconsole.error('THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js');\n\t\t}\n\t}; //\n\n\tfunction LensFlare() {\n\t\tconsole.error('THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js');\n\t}\n\n\tif (typeof __THREE_DEVTOOLS__ !== 'undefined') {\n\t\t/* eslint-disable no-undef */\n\t\t__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('register', {\n\t\t\tdetail: {\n\t\t\t\trevision: REVISION\n\t\t\t}\n\t\t}));\n\t\t/* eslint-enable no-undef */\n\n\t}\n\n\tif (typeof window !== 'undefined') {\n\t\tif (window.__THREE__) {\n\t\t\tconsole.warn('WARNING: Multiple instances of Three.js being imported.');\n\t\t} else {\n\t\t\twindow.__THREE__ = REVISION;\n\t\t}\n\t}\n\n\texports.ACESFilmicToneMapping = ACESFilmicToneMapping;\n\texports.AddEquation = AddEquation;\n\texports.AddOperation = AddOperation;\n\texports.AdditiveAnimationBlendMode = AdditiveAnimationBlendMode;\n\texports.AdditiveBlending = AdditiveBlending;\n\texports.AlphaFormat = AlphaFormat;\n\texports.AlwaysDepth = AlwaysDepth;\n\texports.AlwaysStencilFunc = AlwaysStencilFunc;\n\texports.AmbientLight = AmbientLight;\n\texports.AmbientLightProbe = AmbientLightProbe;\n\texports.AnimationClip = AnimationClip;\n\texports.AnimationLoader = AnimationLoader;\n\texports.AnimationMixer = AnimationMixer;\n\texports.AnimationObjectGroup = AnimationObjectGroup;\n\texports.AnimationUtils = AnimationUtils;\n\texports.ArcCurve = ArcCurve;\n\texports.ArrayCamera = ArrayCamera;\n\texports.ArrowHelper = ArrowHelper;\n\texports.Audio = Audio;\n\texports.AudioAnalyser = AudioAnalyser;\n\texports.AudioContext = AudioContext;\n\texports.AudioListener = AudioListener;\n\texports.AudioLoader = AudioLoader;\n\texports.AxesHelper = AxesHelper;\n\texports.AxisHelper = AxisHelper;\n\texports.BackSide = BackSide;\n\texports.BasicDepthPacking = BasicDepthPacking;\n\texports.BasicShadowMap = BasicShadowMap;\n\texports.BinaryTextureLoader = BinaryTextureLoader;\n\texports.Bone = Bone;\n\texports.BooleanKeyframeTrack = BooleanKeyframeTrack;\n\texports.BoundingBoxHelper = BoundingBoxHelper;\n\texports.Box2 = Box2;\n\texports.Box3 = Box3;\n\texports.Box3Helper = Box3Helper;\n\texports.BoxBufferGeometry = BoxGeometry;\n\texports.BoxGeometry = BoxGeometry;\n\texports.BoxHelper = BoxHelper;\n\texports.BufferAttribute = BufferAttribute;\n\texports.BufferGeometry = BufferGeometry;\n\texports.BufferGeometryLoader = BufferGeometryLoader;\n\texports.ByteType = ByteType;\n\texports.Cache = Cache;\n\texports.Camera = Camera;\n\texports.CameraHelper = CameraHelper;\n\texports.CanvasRenderer = CanvasRenderer;\n\texports.CanvasTexture = CanvasTexture;\n\texports.CatmullRomCurve3 = CatmullRomCurve3;\n\texports.CineonToneMapping = CineonToneMapping;\n\texports.CircleBufferGeometry = CircleGeometry;\n\texports.CircleGeometry = CircleGeometry;\n\texports.ClampToEdgeWrapping = ClampToEdgeWrapping;\n\texports.Clock = Clock;\n\texports.Color = Color;\n\texports.ColorKeyframeTrack = ColorKeyframeTrack;\n\texports.CompressedTexture = CompressedTexture;\n\texports.CompressedTextureLoader = CompressedTextureLoader;\n\texports.ConeBufferGeometry = ConeGeometry;\n\texports.ConeGeometry = ConeGeometry;\n\texports.CubeCamera = CubeCamera;\n\texports.CubeReflectionMapping = CubeReflectionMapping;\n\texports.CubeRefractionMapping = CubeRefractionMapping;\n\texports.CubeTexture = CubeTexture;\n\texports.CubeTextureLoader = CubeTextureLoader;\n\texports.CubeUVReflectionMapping = CubeUVReflectionMapping;\n\texports.CubeUVRefractionMapping = CubeUVRefractionMapping;\n\texports.CubicBezierCurve = CubicBezierCurve;\n\texports.CubicBezierCurve3 = CubicBezierCurve3;\n\texports.CubicInterpolant = CubicInterpolant;\n\texports.CullFaceBack = CullFaceBack;\n\texports.CullFaceFront = CullFaceFront;\n\texports.CullFaceFrontBack = CullFaceFrontBack;\n\texports.CullFaceNone = CullFaceNone;\n\texports.Curve = Curve;\n\texports.CurvePath = CurvePath;\n\texports.CustomBlending = CustomBlending;\n\texports.CustomToneMapping = CustomToneMapping;\n\texports.CylinderBufferGeometry = CylinderGeometry;\n\texports.CylinderGeometry = CylinderGeometry;\n\texports.Cylindrical = Cylindrical;\n\texports.DataTexture = DataTexture;\n\texports.DataTexture2DArray = DataTexture2DArray;\n\texports.DataTexture3D = DataTexture3D;\n\texports.DataTextureLoader = DataTextureLoader;\n\texports.DataUtils = DataUtils;\n\texports.DecrementStencilOp = DecrementStencilOp;\n\texports.DecrementWrapStencilOp = DecrementWrapStencilOp;\n\texports.DefaultLoadingManager = DefaultLoadingManager;\n\texports.DepthFormat = DepthFormat;\n\texports.DepthStencilFormat = DepthStencilFormat;\n\texports.DepthTexture = DepthTexture;\n\texports.DirectionalLight = DirectionalLight;\n\texports.DirectionalLightHelper = DirectionalLightHelper;\n\texports.DiscreteInterpolant = DiscreteInterpolant;\n\texports.DodecahedronBufferGeometry = DodecahedronGeometry;\n\texports.DodecahedronGeometry = DodecahedronGeometry;\n\texports.DoubleSide = DoubleSide;\n\texports.DstAlphaFactor = DstAlphaFactor;\n\texports.DstColorFactor = DstColorFactor;\n\texports.DynamicBufferAttribute = DynamicBufferAttribute;\n\texports.DynamicCopyUsage = DynamicCopyUsage;\n\texports.DynamicDrawUsage = DynamicDrawUsage;\n\texports.DynamicReadUsage = DynamicReadUsage;\n\texports.EdgesGeometry = EdgesGeometry;\n\texports.EdgesHelper = EdgesHelper;\n\texports.EllipseCurve = EllipseCurve;\n\texports.EqualDepth = EqualDepth;\n\texports.EqualStencilFunc = EqualStencilFunc;\n\texports.EquirectangularReflectionMapping = EquirectangularReflectionMapping;\n\texports.EquirectangularRefractionMapping = EquirectangularRefractionMapping;\n\texports.Euler = Euler;\n\texports.EventDispatcher = EventDispatcher;\n\texports.ExtrudeBufferGeometry = ExtrudeGeometry;\n\texports.ExtrudeGeometry = ExtrudeGeometry;\n\texports.FaceColors = FaceColors;\n\texports.FileLoader = FileLoader;\n\texports.FlatShading = FlatShading;\n\texports.Float16BufferAttribute = Float16BufferAttribute;\n\texports.Float32Attribute = Float32Attribute;\n\texports.Float32BufferAttribute = Float32BufferAttribute;\n\texports.Float64Attribute = Float64Attribute;\n\texports.Float64BufferAttribute = Float64BufferAttribute;\n\texports.FloatType = FloatType;\n\texports.Fog = Fog;\n\texports.FogExp2 = FogExp2;\n\texports.Font = Font;\n\texports.FontLoader = FontLoader;\n\texports.FrontSide = FrontSide;\n\texports.Frustum = Frustum;\n\texports.GLBufferAttribute = GLBufferAttribute;\n\texports.GLSL1 = GLSL1;\n\texports.GLSL3 = GLSL3;\n\texports.GammaEncoding = GammaEncoding;\n\texports.GreaterDepth = GreaterDepth;\n\texports.GreaterEqualDepth = GreaterEqualDepth;\n\texports.GreaterEqualStencilFunc = GreaterEqualStencilFunc;\n\texports.GreaterStencilFunc = GreaterStencilFunc;\n\texports.GridHelper = GridHelper;\n\texports.Group = Group;\n\texports.HalfFloatType = HalfFloatType;\n\texports.HemisphereLight = HemisphereLight;\n\texports.HemisphereLightHelper = HemisphereLightHelper;\n\texports.HemisphereLightProbe = HemisphereLightProbe;\n\texports.IcosahedronBufferGeometry = IcosahedronGeometry;\n\texports.IcosahedronGeometry = IcosahedronGeometry;\n\texports.ImageBitmapLoader = ImageBitmapLoader;\n\texports.ImageLoader = ImageLoader;\n\texports.ImageUtils = ImageUtils;\n\texports.ImmediateRenderObject = ImmediateRenderObject;\n\texports.IncrementStencilOp = IncrementStencilOp;\n\texports.IncrementWrapStencilOp = IncrementWrapStencilOp;\n\texports.InstancedBufferAttribute = InstancedBufferAttribute;\n\texports.InstancedBufferGeometry = InstancedBufferGeometry;\n\texports.InstancedInterleavedBuffer = InstancedInterleavedBuffer;\n\texports.InstancedMesh = InstancedMesh;\n\texports.Int16Attribute = Int16Attribute;\n\texports.Int16BufferAttribute = Int16BufferAttribute;\n\texports.Int32Attribute = Int32Attribute;\n\texports.Int32BufferAttribute = Int32BufferAttribute;\n\texports.Int8Attribute = Int8Attribute;\n\texports.Int8BufferAttribute = Int8BufferAttribute;\n\texports.IntType = IntType;\n\texports.InterleavedBuffer = InterleavedBuffer;\n\texports.InterleavedBufferAttribute = InterleavedBufferAttribute;\n\texports.Interpolant = Interpolant;\n\texports.InterpolateDiscrete = InterpolateDiscrete;\n\texports.InterpolateLinear = InterpolateLinear;\n\texports.InterpolateSmooth = InterpolateSmooth;\n\texports.InvertStencilOp = InvertStencilOp;\n\texports.JSONLoader = JSONLoader;\n\texports.KeepStencilOp = KeepStencilOp;\n\texports.KeyframeTrack = KeyframeTrack;\n\texports.LOD = LOD;\n\texports.LatheBufferGeometry = LatheGeometry;\n\texports.LatheGeometry = LatheGeometry;\n\texports.Layers = Layers;\n\texports.LensFlare = LensFlare;\n\texports.LessDepth = LessDepth;\n\texports.LessEqualDepth = LessEqualDepth;\n\texports.LessEqualStencilFunc = LessEqualStencilFunc;\n\texports.LessStencilFunc = LessStencilFunc;\n\texports.Light = Light;\n\texports.LightProbe = LightProbe;\n\texports.Line = Line;\n\texports.Line3 = Line3;\n\texports.LineBasicMaterial = LineBasicMaterial;\n\texports.LineCurve = LineCurve;\n\texports.LineCurve3 = LineCurve3;\n\texports.LineDashedMaterial = LineDashedMaterial;\n\texports.LineLoop = LineLoop;\n\texports.LinePieces = LinePieces;\n\texports.LineSegments = LineSegments;\n\texports.LineStrip = LineStrip;\n\texports.LinearEncoding = LinearEncoding;\n\texports.LinearFilter = LinearFilter;\n\texports.LinearInterpolant = LinearInterpolant;\n\texports.LinearMipMapLinearFilter = LinearMipMapLinearFilter;\n\texports.LinearMipMapNearestFilter = LinearMipMapNearestFilter;\n\texports.LinearMipmapLinearFilter = LinearMipmapLinearFilter;\n\texports.LinearMipmapNearestFilter = LinearMipmapNearestFilter;\n\texports.LinearToneMapping = LinearToneMapping;\n\texports.Loader = Loader;\n\texports.LoaderUtils = LoaderUtils;\n\texports.LoadingManager = LoadingManager;\n\texports.LogLuvEncoding = LogLuvEncoding;\n\texports.LoopOnce = LoopOnce;\n\texports.LoopPingPong = LoopPingPong;\n\texports.LoopRepeat = LoopRepeat;\n\texports.LuminanceAlphaFormat = LuminanceAlphaFormat;\n\texports.LuminanceFormat = LuminanceFormat;\n\texports.MOUSE = MOUSE;\n\texports.Material = Material;\n\texports.MaterialLoader = MaterialLoader;\n\texports.Math = MathUtils;\n\texports.MathUtils = MathUtils;\n\texports.Matrix3 = Matrix3;\n\texports.Matrix4 = Matrix4;\n\texports.MaxEquation = MaxEquation;\n\texports.Mesh = Mesh;\n\texports.MeshBasicMaterial = MeshBasicMaterial;\n\texports.MeshDepthMaterial = MeshDepthMaterial;\n\texports.MeshDistanceMaterial = MeshDistanceMaterial;\n\texports.MeshFaceMaterial = MeshFaceMaterial;\n\texports.MeshLambertMaterial = MeshLambertMaterial;\n\texports.MeshMatcapMaterial = MeshMatcapMaterial;\n\texports.MeshNormalMaterial = MeshNormalMaterial;\n\texports.MeshPhongMaterial = MeshPhongMaterial;\n\texports.MeshPhysicalMaterial = MeshPhysicalMaterial;\n\texports.MeshStandardMaterial = MeshStandardMaterial;\n\texports.MeshToonMaterial = MeshToonMaterial;\n\texports.MinEquation = MinEquation;\n\texports.MirroredRepeatWrapping = MirroredRepeatWrapping;\n\texports.MixOperation = MixOperation;\n\texports.MultiMaterial = MultiMaterial;\n\texports.MultiplyBlending = MultiplyBlending;\n\texports.MultiplyOperation = MultiplyOperation;\n\texports.NearestFilter = NearestFilter;\n\texports.NearestMipMapLinearFilter = NearestMipMapLinearFilter;\n\texports.NearestMipMapNearestFilter = NearestMipMapNearestFilter;\n\texports.NearestMipmapLinearFilter = NearestMipmapLinearFilter;\n\texports.NearestMipmapNearestFilter = NearestMipmapNearestFilter;\n\texports.NeverDepth = NeverDepth;\n\texports.NeverStencilFunc = NeverStencilFunc;\n\texports.NoBlending = NoBlending;\n\texports.NoColors = NoColors;\n\texports.NoToneMapping = NoToneMapping;\n\texports.NormalAnimationBlendMode = NormalAnimationBlendMode;\n\texports.NormalBlending = NormalBlending;\n\texports.NotEqualDepth = NotEqualDepth;\n\texports.NotEqualStencilFunc = NotEqualStencilFunc;\n\texports.NumberKeyframeTrack = NumberKeyframeTrack;\n\texports.Object3D = Object3D;\n\texports.ObjectLoader = ObjectLoader;\n\texports.ObjectSpaceNormalMap = ObjectSpaceNormalMap;\n\texports.OctahedronBufferGeometry = OctahedronGeometry;\n\texports.OctahedronGeometry = OctahedronGeometry;\n\texports.OneFactor = OneFactor;\n\texports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor;\n\texports.OneMinusDstColorFactor = OneMinusDstColorFactor;\n\texports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor;\n\texports.OneMinusSrcColorFactor = OneMinusSrcColorFactor;\n\texports.OrthographicCamera = OrthographicCamera;\n\texports.PCFShadowMap = PCFShadowMap;\n\texports.PCFSoftShadowMap = PCFSoftShadowMap;\n\texports.PMREMGenerator = PMREMGenerator;\n\texports.ParametricBufferGeometry = ParametricGeometry;\n\texports.ParametricGeometry = ParametricGeometry;\n\texports.Particle = Particle;\n\texports.ParticleBasicMaterial = ParticleBasicMaterial;\n\texports.ParticleSystem = ParticleSystem;\n\texports.ParticleSystemMaterial = ParticleSystemMaterial;\n\texports.Path = Path;\n\texports.PerspectiveCamera = PerspectiveCamera;\n\texports.Plane = Plane;\n\texports.PlaneBufferGeometry = PlaneGeometry;\n\texports.PlaneGeometry = PlaneGeometry;\n\texports.PlaneHelper = PlaneHelper;\n\texports.PointCloud = PointCloud;\n\texports.PointCloudMaterial = PointCloudMaterial;\n\texports.PointLight = PointLight;\n\texports.PointLightHelper = PointLightHelper;\n\texports.Points = Points;\n\texports.PointsMaterial = PointsMaterial;\n\texports.PolarGridHelper = PolarGridHelper;\n\texports.PolyhedronBufferGeometry = PolyhedronGeometry;\n\texports.PolyhedronGeometry = PolyhedronGeometry;\n\texports.PositionalAudio = PositionalAudio;\n\texports.PropertyBinding = PropertyBinding;\n\texports.PropertyMixer = PropertyMixer;\n\texports.QuadraticBezierCurve = QuadraticBezierCurve;\n\texports.QuadraticBezierCurve3 = QuadraticBezierCurve3;\n\texports.Quaternion = Quaternion;\n\texports.QuaternionKeyframeTrack = QuaternionKeyframeTrack;\n\texports.QuaternionLinearInterpolant = QuaternionLinearInterpolant;\n\texports.REVISION = REVISION;\n\texports.RGBADepthPacking = RGBADepthPacking;\n\texports.RGBAFormat = RGBAFormat;\n\texports.RGBAIntegerFormat = RGBAIntegerFormat;\n\texports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format;\n\texports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format;\n\texports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format;\n\texports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format;\n\texports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format;\n\texports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format;\n\texports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format;\n\texports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format;\n\texports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format;\n\texports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format;\n\texports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format;\n\texports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format;\n\texports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format;\n\texports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format;\n\texports.RGBA_BPTC_Format = RGBA_BPTC_Format;\n\texports.RGBA_ETC2_EAC_Format = RGBA_ETC2_EAC_Format;\n\texports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format;\n\texports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format;\n\texports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format;\n\texports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format;\n\texports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format;\n\texports.RGBDEncoding = RGBDEncoding;\n\texports.RGBEEncoding = RGBEEncoding;\n\texports.RGBEFormat = RGBEFormat;\n\texports.RGBFormat = RGBFormat;\n\texports.RGBIntegerFormat = RGBIntegerFormat;\n\texports.RGBM16Encoding = RGBM16Encoding;\n\texports.RGBM7Encoding = RGBM7Encoding;\n\texports.RGB_ETC1_Format = RGB_ETC1_Format;\n\texports.RGB_ETC2_Format = RGB_ETC2_Format;\n\texports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format;\n\texports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format;\n\texports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format;\n\texports.RGFormat = RGFormat;\n\texports.RGIntegerFormat = RGIntegerFormat;\n\texports.RawShaderMaterial = RawShaderMaterial;\n\texports.Ray = Ray;\n\texports.Raycaster = Raycaster;\n\texports.RectAreaLight = RectAreaLight;\n\texports.RedFormat = RedFormat;\n\texports.RedIntegerFormat = RedIntegerFormat;\n\texports.ReinhardToneMapping = ReinhardToneMapping;\n\texports.RepeatWrapping = RepeatWrapping;\n\texports.ReplaceStencilOp = ReplaceStencilOp;\n\texports.ReverseSubtractEquation = ReverseSubtractEquation;\n\texports.RingBufferGeometry = RingGeometry;\n\texports.RingGeometry = RingGeometry;\n\texports.SRGB8_ALPHA8_ASTC_10x10_Format = SRGB8_ALPHA8_ASTC_10x10_Format;\n\texports.SRGB8_ALPHA8_ASTC_10x5_Format = SRGB8_ALPHA8_ASTC_10x5_Format;\n\texports.SRGB8_ALPHA8_ASTC_10x6_Format = SRGB8_ALPHA8_ASTC_10x6_Format;\n\texports.SRGB8_ALPHA8_ASTC_10x8_Format = SRGB8_ALPHA8_ASTC_10x8_Format;\n\texports.SRGB8_ALPHA8_ASTC_12x10_Format = SRGB8_ALPHA8_ASTC_12x10_Format;\n\texports.SRGB8_ALPHA8_ASTC_12x12_Format = SRGB8_ALPHA8_ASTC_12x12_Format;\n\texports.SRGB8_ALPHA8_ASTC_4x4_Format = SRGB8_ALPHA8_ASTC_4x4_Format;\n\texports.SRGB8_ALPHA8_ASTC_5x4_Format = SRGB8_ALPHA8_ASTC_5x4_Format;\n\texports.SRGB8_ALPHA8_ASTC_5x5_Format = SRGB8_ALPHA8_ASTC_5x5_Format;\n\texports.SRGB8_ALPHA8_ASTC_6x5_Format = SRGB8_ALPHA8_ASTC_6x5_Format;\n\texports.SRGB8_ALPHA8_ASTC_6x6_Format = SRGB8_ALPHA8_ASTC_6x6_Format;\n\texports.SRGB8_ALPHA8_ASTC_8x5_Format = SRGB8_ALPHA8_ASTC_8x5_Format;\n\texports.SRGB8_ALPHA8_ASTC_8x6_Format = SRGB8_ALPHA8_ASTC_8x6_Format;\n\texports.SRGB8_ALPHA8_ASTC_8x8_Format = SRGB8_ALPHA8_ASTC_8x8_Format;\n\texports.Scene = Scene;\n\texports.SceneUtils = SceneUtils;\n\texports.ShaderChunk = ShaderChunk;\n\texports.ShaderLib = ShaderLib;\n\texports.ShaderMaterial = ShaderMaterial;\n\texports.ShadowMaterial = ShadowMaterial;\n\texports.Shape = Shape;\n\texports.ShapeBufferGeometry = ShapeGeometry;\n\texports.ShapeGeometry = ShapeGeometry;\n\texports.ShapePath = ShapePath;\n\texports.ShapeUtils = ShapeUtils;\n\texports.ShortType = ShortType;\n\texports.Skeleton = Skeleton;\n\texports.SkeletonHelper = SkeletonHelper;\n\texports.SkinnedMesh = SkinnedMesh;\n\texports.SmoothShading = SmoothShading;\n\texports.Sphere = Sphere;\n\texports.SphereBufferGeometry = SphereGeometry;\n\texports.SphereGeometry = SphereGeometry;\n\texports.Spherical = Spherical;\n\texports.SphericalHarmonics3 = SphericalHarmonics3;\n\texports.SplineCurve = SplineCurve;\n\texports.SpotLight = SpotLight;\n\texports.SpotLightHelper = SpotLightHelper;\n\texports.Sprite = Sprite;\n\texports.SpriteMaterial = SpriteMaterial;\n\texports.SrcAlphaFactor = SrcAlphaFactor;\n\texports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor;\n\texports.SrcColorFactor = SrcColorFactor;\n\texports.StaticCopyUsage = StaticCopyUsage;\n\texports.StaticDrawUsage = StaticDrawUsage;\n\texports.StaticReadUsage = StaticReadUsage;\n\texports.StereoCamera = StereoCamera;\n\texports.StreamCopyUsage = StreamCopyUsage;\n\texports.StreamDrawUsage = StreamDrawUsage;\n\texports.StreamReadUsage = StreamReadUsage;\n\texports.StringKeyframeTrack = StringKeyframeTrack;\n\texports.SubtractEquation = SubtractEquation;\n\texports.SubtractiveBlending = SubtractiveBlending;\n\texports.TOUCH = TOUCH;\n\texports.TangentSpaceNormalMap = TangentSpaceNormalMap;\n\texports.TetrahedronBufferGeometry = TetrahedronGeometry;\n\texports.TetrahedronGeometry = TetrahedronGeometry;\n\texports.TextBufferGeometry = TextGeometry;\n\texports.TextGeometry = TextGeometry;\n\texports.Texture = Texture;\n\texports.TextureLoader = TextureLoader;\n\texports.TorusBufferGeometry = TorusGeometry;\n\texports.TorusGeometry = TorusGeometry;\n\texports.TorusKnotBufferGeometry = TorusKnotGeometry;\n\texports.TorusKnotGeometry = TorusKnotGeometry;\n\texports.Triangle = Triangle;\n\texports.TriangleFanDrawMode = TriangleFanDrawMode;\n\texports.TriangleStripDrawMode = TriangleStripDrawMode;\n\texports.TrianglesDrawMode = TrianglesDrawMode;\n\texports.TubeBufferGeometry = TubeGeometry;\n\texports.TubeGeometry = TubeGeometry;\n\texports.UVMapping = UVMapping;\n\texports.Uint16Attribute = Uint16Attribute;\n\texports.Uint16BufferAttribute = Uint16BufferAttribute;\n\texports.Uint32Attribute = Uint32Attribute;\n\texports.Uint32BufferAttribute = Uint32BufferAttribute;\n\texports.Uint8Attribute = Uint8Attribute;\n\texports.Uint8BufferAttribute = Uint8BufferAttribute;\n\texports.Uint8ClampedAttribute = Uint8ClampedAttribute;\n\texports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute;\n\texports.Uniform = Uniform;\n\texports.UniformsLib = UniformsLib;\n\texports.UniformsUtils = UniformsUtils;\n\texports.UnsignedByteType = UnsignedByteType;\n\texports.UnsignedInt248Type = UnsignedInt248Type;\n\texports.UnsignedIntType = UnsignedIntType;\n\texports.UnsignedShort4444Type = UnsignedShort4444Type;\n\texports.UnsignedShort5551Type = UnsignedShort5551Type;\n\texports.UnsignedShort565Type = UnsignedShort565Type;\n\texports.UnsignedShortType = UnsignedShortType;\n\texports.VSMShadowMap = VSMShadowMap;\n\texports.Vector2 = Vector2;\n\texports.Vector3 = Vector3;\n\texports.Vector4 = Vector4;\n\texports.VectorKeyframeTrack = VectorKeyframeTrack;\n\texports.Vertex = Vertex;\n\texports.VertexColors = VertexColors;\n\texports.VideoTexture = VideoTexture;\n\texports.WebGL1Renderer = WebGL1Renderer;\n\texports.WebGLCubeRenderTarget = WebGLCubeRenderTarget;\n\texports.WebGLMultipleRenderTargets = WebGLMultipleRenderTargets;\n\texports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget;\n\texports.WebGLRenderTarget = WebGLRenderTarget;\n\texports.WebGLRenderTargetCube = WebGLRenderTargetCube;\n\texports.WebGLRenderer = WebGLRenderer;\n\texports.WebGLUtils = WebGLUtils;\n\texports.WireframeGeometry = WireframeGeometry;\n\texports.WireframeHelper = WireframeHelper;\n\texports.WrapAroundEnding = WrapAroundEnding;\n\texports.XHRLoader = XHRLoader;\n\texports.ZeroCurvatureEnding = ZeroCurvatureEnding;\n\texports.ZeroFactor = ZeroFactor;\n\texports.ZeroSlopeEnding = ZeroSlopeEnding;\n\texports.ZeroStencilOp = ZeroStencilOp;\n\texports.sRGBEncoding = sRGBEncoding;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"