{"version":3,"sources":["../node_modules/core-js/library/modules/_core.js","../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_has.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_object-pie.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_object-gops.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_wks-ext.js","../node_modules/core-js/library/modules/_wks-define.js","../node_modules/react-lottie/dist/index.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_object-gopn.js","../node_modules/core-js/library/modules/_object-gopd.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/core-js/library/fn/object/assign.js","../node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_object-assign.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/babel-runtime/core-js/object/get-prototype-of.js","../node_modules/core-js/library/fn/object/get-prototype-of.js","../node_modules/core-js/library/modules/es6.object.get-prototype-of.js","../node_modules/core-js/library/modules/_object-sap.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/createClass.js","../node_modules/babel-runtime/core-js/object/define-property.js","../node_modules/core-js/library/fn/object/define-property.js","../node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/core-js/library/fn/symbol/index.js","../node_modules/core-js/library/modules/es6.symbol.js","../node_modules/core-js/library/modules/_meta.js","../node_modules/core-js/library/modules/_enum-keys.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/core-js/library/modules/_set-proto.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/core-js/library/fn/object/create.js","../node_modules/core-js/library/modules/es6.object.create.js","../node_modules/lottie-web/build/player/lottie.js"],"names":["core","module","exports","version","__e","global","window","Math","self","Function","__g","require","Object","defineProperty","get","a","ctx","hide","has","$export","type","name","source","key","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","undefined","C","b","c","this","arguments","length","apply","call","virtual","R","U","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","e","TypeError","value","hasOwnProperty","it","createDesc","object","exec","IObject","defined","store","uid","Symbol","USE_SYMBOL","isObject","bitmap","enumerable","configurable","writable","$keys","enumBugKeys","keys","id","px","random","concat","toString","propertyIsEnumerable","fn","val","valueOf","ceil","floor","isNaN","shared","SHARED","push","mode","copyright","split","getOwnPropertySymbols","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","i","style","display","appendChild","src","contentWindow","document","open","write","lt","close","create","Properties","result","def","TAG","tag","stat","prototype","LIBRARY","wksExt","$Symbol","charAt","_extends3","_interopRequireDefault","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_react2","_propTypes2","_lottieWeb2","obj","__esModule","default","Lottie","_React$Component","_ref","_temp","_this","_ret","_len","args","Array","_key","__proto__","handleClickToPause","anim","isPaused","play","pause","_props","props","options","eventListeners","loop","autoplay","animationData","rendererSettings","segments","container","el","renderer","loadAnimation","registerEvents","nextProps","deRegisterEvents","destroy","isStopped","stop","playSegments","setSpeed","setDirection","speed","direction","_this2","forEach","eventListener","addEventListener","eventName","callback","_this3","removeEventListener","_this4","_props2","width","height","ariaRole","ariaLabel","isClickToPauseDisabled","title","getSize","initial","lottieStyles","overflow","margin","outline","onClickHandler","createElement","ref","onClick","role","tabIndex","Component","propTypes","arrayOf","isRequired","oneOfType","string","number","bool","defaultProps","aFunction","that","is","toIObject","arrayIndexOf","names","cof","slice","toObject","ObjectProto","getPrototypeOf","constructor","_iterator2","_symbol2","_typeof","redefine","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","hiddenKeys","getOwnPropertyNames","pIE","gOPD","getOwnPropertyDescriptor","_assign","_assign2","assign","DESCRIPTORS","getKeys","gOPS","$assign","A","K","k","join","T","aLen","index","getSymbols","isEnum","j","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","toInteger","min","max","$getPrototypeOf","fails","KEY","exp","instance","_defineProperty","_defineProperty2","defineProperties","descriptor","protoProps","staticProps","$Object","desc","_typeof2","_typeof3","ReferenceError","$at","String","iterated","_t","_i","point","done","TO_STRING","pos","s","l","charCodeAt","documentElement","TO_STRING_TAG","DOMIterables","Collection","addToUnscopables","step","_k","Arguments","META","$fails","wks","wksDefine","enumKeys","isArray","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","wrap","sym","isSymbol","iterator","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","symbols","arg","windowNames","getWindowNames","_setPrototypeOf2","_create2","subClass","superClass","setPrototypeOf","check","test","buggy","root","factory","navigator","svgNS","locationHref","initialDefaultFrame","subframeEnabled","expressionsPlugin","isSafari","userAgent","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface","propertyNames","len","abs","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","round","styleDiv","element","position","top","left","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","v","r","g","p","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","BaseEvent","triggerEvent","_cbs","bind","splice","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","indexOf","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","rotate","angle","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","m","n","o","translate","tx","ty","tz","transform","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","x","y","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","pool","math","startdenom","significance","mask","ARC4","keylen","me","count","copy","flatten","depth","typ","mixkey","seed","smear","stringseed","tostring","fromCharCode","shortseed","entropy","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","state","BezierFactory","ob","nm","str","replace","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","setTimeout","clearTimeout","bez","dataFunctionManager","completeLayers","layers","comps","fontManager","layerData","jLen","kLen","data","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","singleShape","__used","parse","ks","path","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","assets","checkChars","chars","pathData","paths","__converted","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","moduleOb","__complete","dataManager","getFontProperties","fontData","styles","fStyle","fWeight","toLowerCase","weight","FontManager","emptyChar","size","combinedCharacters","setUpNode","font","family","parentNode","setAttribute","fontFamily","node","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","body","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","tHelper","fontProps","fFamily","textContent","fClass","getContext","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","getCombinedCharacterCodes","addChars","found","ch","addFonts","defs","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","origin","querySelectorAll","href","rel","sc","helper","cache","getCharData","char","console","warn","getFontByName","fName","measureText","fontName","doubleSize","getComputedTextLength","singleSize","loadedCount","removeChild","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","fnc","iterationIndex","lastIndex","keyframes","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","quaternionToEuler","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","slerp","createQuaternion","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","frameRate","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","init","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","ir","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","shape","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","clonedPath","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","op","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","comparePoints","buildShapeString","pathNodes","_o","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","assetLoader","load","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","featureSupport","maskType","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","formatResponse","xhr","response","responseText","errorCallback","XMLHttpRequest","responseType","err","onreadystatechange","readyState","status","send","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","add","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","substr","newLineFlag","charData","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","textProperty","easer","tot","newCharsFlag","divisor","poolFactory","initialLength","_release","pooling","cloned","shapeCollection","markerParser","parsePayloadLines","payload","lines","keysCount","trim","Error","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","__","BaseRenderer","SVGRenderer","animationItem","config","svgElement","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","context","dpr","wrapper","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","layerId","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","opFill","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","createFilter","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","lcEnum","ljEnum","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","lc","lj","ml","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","children","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","stroke","fill","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","newLength","currentSavedOp","createElements","globalCompositeOperation","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","box","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","Image","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","animation","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","first","params","setParams","togglePause","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","getElementsByTagName","div","resize","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","animations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","animType","parseInt","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","completeData","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","error","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","Number","frameModifier","goToAndPlay","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onComplete","onSegmentStart","onDestroy","getPath","getDuration","onError","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","sum","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","frames","fps","timeToFrames","seedRandom","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","delta","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","_name","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","contentsInterfaceFactory","np","ExpressionPropertyInterface","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","anchorPointDescriptor","TransformExpressionInterface","anchor_point","startTime","MaskManagerInterface","effects","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","effectsData","MaskInterface","_mask","_data","_masksInterfaces","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","propertyGetTextProp","TextExpressionSelectorPropFactory","eff","lottie","setLocationHref","setSubframeRendering","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","__getFactory","scripts","myScript","define"],"mappings":";2FAAA,IAAIA,EAAOC,EAAOC,QAAU,CAAEC,QAAS,UACrB,iBAAPC,MAAiBA,IAAMJ,I,kBCAlC,IAAIK,EAASJ,EAAOC,QAA2B,oBAAVI,QAAyBA,OAAOC,MAAQA,KACzED,OAAwB,oBAARE,MAAuBA,KAAKD,MAAQA,KAAOC,KAE3DC,SAAS,cAATA,GACc,iBAAPC,MAAiBA,IAAML,I,oBCJlCJ,EAAOC,SAAWS,EAAQ,IAARA,EAAoB,WACpC,OAA+E,GAAxEC,OAAOC,eAAe,GAAI,IAAK,CAAEC,IAAK,WAAc,OAAO,KAAQC,M,oBCF5E,IAAIV,EAASM,EAAQ,KACjBX,EAAOW,EAAQ,KACfK,EAAML,EAAQ,KACdM,EAAON,EAAQ,KACfO,EAAMP,EAAQ,KAGdQ,EAAU,SAAVA,EAAoBC,EAAMC,EAAMC,GAClC,IASIC,EAAKC,EAAKC,EATVC,EAAYN,EAAOD,EAAQQ,EAC3BC,EAAYR,EAAOD,EAAQU,EAC3BC,EAAYV,EAAOD,EAAQY,EAC3BC,EAAWZ,EAAOD,EAAQc,EAC1BC,EAAUd,EAAOD,EAAQgB,EACzBC,EAAUhB,EAAOD,EAAQkB,EACzBnC,EAAU0B,EAAY5B,EAAOA,EAAKqB,KAAUrB,EAAKqB,GAAQ,IACzDiB,EAAWpC,EAAO,UAClBqC,EAASX,EAAYvB,EAASyB,EAAYzB,EAAOgB,IAAShB,EAAOgB,IAAS,IAAjB,UAG7D,IAAKE,KADDK,IAAWN,EAASD,GACZC,GAEVE,GAAOE,GAAaa,QAA0BC,IAAhBD,EAAOhB,KAC1BL,EAAIhB,EAASqB,KAExBE,EAAMD,EAAMe,EAAOhB,GAAOD,EAAOC,GAEjCrB,EAAQqB,GAAOK,GAAmC,mBAAfW,EAAOhB,GAAqBD,EAAOC,GAEpEW,GAAWV,EAAMR,EAAIS,EAAKpB,GAE1B+B,GAAWG,EAAOhB,IAAQE,EAAO,SAAUgB,GAC3C,IAAId,EAAI,SAAUZ,EAAG2B,EAAGC,GACtB,GAAIC,gBAAgBH,EAAG,CACrB,OAAQI,UAAUC,QAChB,KAAK,EAAG,OAAO,IAAIL,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAE1B,GACrB,KAAK,EAAG,OAAO,IAAI0B,EAAE1B,EAAG2B,GACxB,OAAO,IAAID,EAAE1B,EAAG2B,EAAGC,GACrB,OAAOF,EAAEM,MAAMH,KAAMC,YAGzB,OADAlB,EAAC,UAAcc,EAAC,UACTd,EAX0B,CAahCF,GAAOO,GAA0B,mBAAPP,EAAoBT,EAAIP,SAASuC,KAAMvB,GAAOA,EAEvEO,KACD9B,EAAQ+C,UAAY/C,EAAQ+C,QAAU,KAAK1B,GAAOE,EAE/CL,EAAOD,EAAQ+B,GAAKZ,IAAaA,EAASf,IAAMN,EAAKqB,EAAUf,EAAKE,MAK9EN,EAAQQ,EAAI,EACZR,EAAQU,EAAI,EACZV,EAAQY,EAAI,EACZZ,EAAQc,EAAI,EACZd,EAAQgB,EAAI,GACZhB,EAAQkB,EAAI,GACZlB,EAAQgC,EAAI,GACZhC,EAAQ+B,EAAI,IACZjD,EAAOC,QAAUiB,G,oBC7DjB,IAAIiC,EAAWzC,EAAQ,KACnB0C,EAAiB1C,EAAQ,KACzB2C,EAAc3C,EAAQ,KACtB4C,EAAK3C,OAAOC,eAEhBX,EAAQsD,EAAI7C,EAAQ,KAAoBC,OAAOC,eAAiB,SAAwB4C,EAAGxB,EAAGyB,GAI5F,GAHAN,EAASK,GACTxB,EAAIqB,EAAYrB,GAAG,GACnBmB,EAASM,GACLL,EAAgB,IAClB,OAAOE,EAAGE,EAAGxB,EAAGyB,GAChB,MAAOC,IACT,GAAI,QAASD,GAAc,QAASA,EAAY,MAAME,UAAU,4BAEhE,MADI,UAAWF,IAAYD,EAAExB,GAAKyB,EAAWG,OACtCJ,I,kBCdT,IAAIK,EAAiB,GAAGA,eACxB7D,EAAOC,QAAU,SAAU6D,EAAIxC,GAC7B,OAAOuC,EAAed,KAAKe,EAAIxC,K,oBCFjC,IAAIgC,EAAK5C,EAAQ,KACbqD,EAAarD,EAAQ,KACzBV,EAAOC,QAAUS,EAAQ,KAAoB,SAAUsD,EAAQ1C,EAAKsC,GAClE,OAAON,EAAGC,EAAES,EAAQ1C,EAAKyC,EAAW,EAAGH,KACrC,SAAUI,EAAQ1C,EAAKsC,GAEzB,OADAI,EAAO1C,GAAOsC,EACPI,I,kBCNThE,EAAOC,QAAU,SAAU6D,GACzB,MAAqB,kBAAPA,EAAyB,OAAPA,EAA4B,oBAAPA,I,kBCDvD9D,EAAOC,QAAU,SAAUgE,GACzB,IACE,QAASA,IACT,MAAOP,GACP,OAAO,K,oBCHX,IAAIQ,EAAUxD,EAAQ,KAClByD,EAAUzD,EAAQ,KACtBV,EAAOC,QAAU,SAAU6D,GACzB,OAAOI,EAAQC,EAAQL,M,oBCJzB,IAAIM,EAAQ1D,EAAQ,IAARA,CAAqB,OAC7B2D,EAAM3D,EAAQ,KACd4D,EAAS5D,EAAQ,KAAa4D,OAC9BC,EAA8B,mBAAVD,GAETtE,EAAOC,QAAU,SAAUmB,GACxC,OAAOgD,EAAMhD,KAAUgD,EAAMhD,GAC3BmD,GAAcD,EAAOlD,KAAUmD,EAAaD,EAASD,GAAK,UAAYjD,MAGjEgD,MAAQA,G,oBCVjB,IAAII,EAAW9D,EAAQ,KACvBV,EAAOC,QAAU,SAAU6D,GACzB,IAAKU,EAASV,GAAK,MAAMH,UAAUG,EAAK,sBACxC,OAAOA,I,kBCHT9D,EAAOC,QAAU,SAAUwE,EAAQb,GACjC,MAAO,CACLc,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZb,MAAOA,K,oBCJX,IAAIiB,EAAQnE,EAAQ,KAChBoE,EAAcpE,EAAQ,KAE1BV,EAAOC,QAAUU,OAAOoE,MAAQ,SAAcvB,GAC5C,OAAOqB,EAAMrB,EAAGsB,K,kBCLlB9E,EAAOC,SAAU,G,kBCAjB,IAAI+E,EAAK,EACLC,EAAK3E,KAAK4E,SACdlF,EAAOC,QAAU,SAAUqB,GACzB,MAAO,UAAU6D,YAAe5C,IAARjB,EAAoB,GAAKA,EAAK,QAAS0D,EAAKC,GAAIG,SAAS,O,kBCHnFnF,EAAQsD,EAAI,GAAG8B,sB,oBCCf,IAAIlB,EAAUzD,EAAQ,KACtBV,EAAOC,QAAU,SAAU6D,GACzB,OAAOnD,OAAOwD,EAAQL,M,oBCFxB,IAAIU,EAAW9D,EAAQ,KAGvBV,EAAOC,QAAU,SAAU6D,EAAIhC,GAC7B,IAAK0C,EAASV,GAAK,OAAOA,EAC1B,IAAIwB,EAAIC,EACR,GAAIzD,GAAkC,mBAArBwD,EAAKxB,EAAGsB,YAA4BZ,EAASe,EAAMD,EAAGvC,KAAKe,IAAM,OAAOyB,EACzF,GAAgC,mBAApBD,EAAKxB,EAAG0B,WAA2BhB,EAASe,EAAMD,EAAGvC,KAAKe,IAAM,OAAOyB,EACnF,IAAKzD,GAAkC,mBAArBwD,EAAKxB,EAAGsB,YAA4BZ,EAASe,EAAMD,EAAGvC,KAAKe,IAAM,OAAOyB,EAC1F,MAAM5B,UAAU,6C,kBCTlB3D,EAAOC,QAAU,SAAU6D,GACzB,QAAUvB,GAANuB,EAAiB,MAAMH,UAAU,yBAA2BG,GAChE,OAAOA,I,kBCFT,IAAI2B,EAAOnF,KAAKmF,KACZC,EAAQpF,KAAKoF,MACjB1F,EAAOC,QAAU,SAAU6D,GACzB,OAAO6B,MAAM7B,GAAMA,GAAM,GAAKA,EAAK,EAAI4B,EAAQD,GAAM3B,K,oBCJvD,IAAI8B,EAASlF,EAAQ,IAARA,CAAqB,QAC9B2D,EAAM3D,EAAQ,KAClBV,EAAOC,QAAU,SAAUqB,GACzB,OAAOsE,EAAOtE,KAASsE,EAAOtE,GAAO+C,EAAI/C,M,oBCH3C,IAAIvB,EAAOW,EAAQ,KACfN,EAASM,EAAQ,KACjBmF,EAAS,qBACTzB,EAAQhE,EAAOyF,KAAYzF,EAAOyF,GAAU,KAE/C7F,EAAOC,QAAU,SAAUqB,EAAKsC,GAC/B,OAAOQ,EAAM9C,KAAS8C,EAAM9C,QAAiBiB,IAAVqB,EAAsBA,EAAQ,MAChE,WAAY,IAAIkC,KAAK,CACtB5F,QAASH,EAAKG,QACd6F,KAAMrF,EAAQ,KAAgB,OAAS,SACvCsF,UAAW,6C,kBCTbhG,EAAOC,QACL,gGACAgG,MAAM,M,kBCHRhG,EAAQsD,EAAI5C,OAAOuF,uB,kBCAnBlG,EAAOC,QAAU,I,oBCCjB,IAAIkD,EAAWzC,EAAQ,KACnByF,EAAMzF,EAAQ,KACdoE,EAAcpE,EAAQ,KACtB0F,EAAW1F,EAAQ,IAARA,CAAyB,YACpC2F,EAAQ,aAIRC,EAAa,WAEf,IAIIC,EAJAC,EAAS9F,EAAQ,IAARA,CAAyB,UAClC+F,EAAI3B,EAAYjC,OAcpB,IAVA2D,EAAOE,MAAMC,QAAU,OACvBjG,EAAQ,KAAWkG,YAAYJ,GAC/BA,EAAOK,IAAM,eAGbN,EAAiBC,EAAOM,cAAcC,UACvBC,OACfT,EAAeU,MAAMC,uCACrBX,EAAeY,QACfb,EAAaC,EAAe7E,EACrB+E,YAAYH,EAAU,UAAYxB,EAAY2B,IACrD,OAAOH,KAGTtG,EAAOC,QAAUU,OAAOyG,QAAU,SAAgB5D,EAAG6D,GACnD,IAAIC,EAQJ,OAPU,OAAN9D,GACF6C,EAAK,UAAclD,EAASK,GAC5B8D,EAAS,IAAIjB,EACbA,EAAK,UAAc,KAEnBiB,EAAOlB,GAAY5C,GACd8D,EAAShB,SACM/D,IAAf8E,EAA2BC,EAASnB,EAAImB,EAAQD,K,oBCvCzD,IAAIE,EAAM7G,EAAQ,KAAgB6C,EAC9BtC,EAAMP,EAAQ,KACd8G,EAAM9G,EAAQ,IAARA,CAAkB,eAE5BV,EAAOC,QAAU,SAAU6D,EAAI2D,EAAKC,GAC9B5D,IAAO7C,EAAI6C,EAAK4D,EAAO5D,EAAKA,EAAG6D,UAAWH,IAAMD,EAAIzD,EAAI0D,EAAK,CAAE7C,cAAc,EAAMf,MAAO6D,M,oBCLhGxH,EAAQsD,EAAI7C,EAAQ,M,oBCApB,IAAIN,EAASM,EAAQ,KACjBX,EAAOW,EAAQ,KACfkH,EAAUlH,EAAQ,KAClBmH,EAASnH,EAAQ,KACjBE,EAAiBF,EAAQ,KAAgB6C,EAC7CvD,EAAOC,QAAU,SAAUmB,GACzB,IAAI0G,EAAU/H,EAAKuE,SAAWvE,EAAKuE,OAASsD,EAAU,GAAKxH,EAAOkE,QAAU,IACtD,KAAlBlD,EAAK2G,OAAO,IAAe3G,KAAQ0G,GAAUlH,EAAekH,EAAS1G,EAAM,CAAEwC,MAAOiE,EAAOtE,EAAEnC,O,iCCLnGT,OAAOC,eAAeX,EAAS,aAAc,CAC3C2D,OAAO,IAGT,IAEIoE,EAAYC,EAFAvH,EAAQ,MAMpBwH,EAAmBD,EAFDvH,EAAQ,MAM1ByH,EAAmBF,EAFAvH,EAAQ,MAM3B0H,EAAgBH,EAFAvH,EAAQ,MAMxB2H,EAA8BJ,EAFAvH,EAAQ,MAMtC4H,EAAaL,EAFAvH,EAAQ,MAMrB6H,EAAUN,EAFDvH,EAAQ,IAMjB8H,EAAcP,EAFDvH,EAAQ,KAMrB+H,EAAcR,EAFDvH,EAAQ,MAIzB,SAASuH,EAAuBS,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvF,IAAIG,EAAS,SAAUC,GAGrB,SAASD,IACP,IAAIE,EAEAC,EAAOC,EAAOC,GAElB,EAAIf,EAAiBS,SAASjG,KAAMkG,GAEpC,IAAK,IAAIM,EAAOvG,UAAUC,OAAQuG,EAAOC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EF,EAAKE,GAAQ1G,UAAU0G,GAGzB,OAAeN,EAASC,GAAQ,EAAIZ,EAA4BO,SAASjG,MAAOoG,EAAOF,EAAOU,YAAa,EAAIrB,EAAiBU,SAASC,IAAS9F,KAAKD,MAAMiG,EAAM,CAACpG,MAAMwC,OAAOiE,KAAiBH,EAAMO,mBAAqB,WAGvNP,EAAMQ,KAAKC,SACbT,EAAMQ,KAAKE,OAEXV,EAAMQ,KAAKG,SANRV,EAQJF,GAAQ,EAAIX,EAA4BO,SAASK,EAAOC,GAkL7D,OAvMA,EAAIZ,EAAWM,SAASC,EAAQC,IAwBhC,EAAIV,EAAcQ,SAASC,EAAQ,CAAC,CAClCvH,IAAK,oBACLsC,MAAO,WACL,IAAIiG,EAASlH,KAAKmH,MACdC,EAAUF,EAAOE,QACjBC,EAAiBH,EAAOG,eACxBC,EAAOF,EAAQE,KACfC,EAAWH,EAAQG,SACnBC,EAAgBJ,EAAQI,cACxBC,EAAmBL,EAAQK,iBAC3BC,EAAWN,EAAQM,SAGvB1H,KAAKoH,QAAU,CACbO,UAAW3H,KAAK4H,GAChBC,SAAU,MACVP,MAAe,IAATA,EACNC,UAAuB,IAAbA,EACVG,UAAuB,IAAbA,EACVF,cAAeA,EACfC,iBAAkBA,GAGpBzH,KAAKoH,SAAU,EAAI/B,EAAUY,SAAS,GAAIjG,KAAKoH,QAASA,GAExDpH,KAAK8G,KAAOhB,EAAYG,QAAQ6B,cAAc9H,KAAKoH,SACnDpH,KAAK+H,eAAeV,KAErB,CACD1I,IAAK,sBACLsC,MAAO,SAA6B+G,GAE9BhI,KAAKoH,QAAQI,gBAAkBQ,EAAUZ,QAAQI,gBACnDxH,KAAKiI,iBAAiBjI,KAAKmH,MAAME,gBACjCrH,KAAKkI,UACLlI,KAAKoH,SAAU,EAAI/B,EAAUY,SAAS,GAAIjG,KAAKoH,QAASY,EAAUZ,SAClEpH,KAAK8G,KAAOhB,EAAYG,QAAQ6B,cAAc9H,KAAKoH,SACnDpH,KAAK+H,eAAeC,EAAUX,mBAGjC,CACD1I,IAAK,qBACLsC,MAAO,WACDjB,KAAKmH,MAAMgB,UACbnI,KAAKoI,OACIpI,KAAKmH,MAAMO,SACpB1H,KAAKqI,eAELrI,KAAKgH,OAGPhH,KAAKiH,QACLjH,KAAKsI,WACLtI,KAAKuI,iBAEN,CACD5J,IAAK,uBACLsC,MAAO,WACLjB,KAAKiI,iBAAiBjI,KAAKmH,MAAME,gBACjCrH,KAAKkI,UACLlI,KAAKoH,QAAQI,cAAgB,KAC7BxH,KAAK8G,KAAO,OAEb,CACDnI,IAAK,WACLsC,MAAO,WACLjB,KAAK8G,KAAKwB,SAAStI,KAAKmH,MAAMqB,SAE/B,CACD7J,IAAK,eACLsC,MAAO,WACLjB,KAAK8G,KAAKyB,aAAavI,KAAKmH,MAAMsB,aAEnC,CACD9J,IAAK,OACLsC,MAAO,WACLjB,KAAK8G,KAAKE,SAEX,CACDrI,IAAK,eACLsC,MAAO,WACLjB,KAAK8G,KAAKuB,aAAarI,KAAKmH,MAAMO,YAEnC,CACD/I,IAAK,OACLsC,MAAO,WACLjB,KAAK8G,KAAKsB,SAEX,CACDzJ,IAAK,QACLsC,MAAO,YACDjB,KAAKmH,MAAMJ,WAAa/G,KAAK8G,KAAKC,WAE1B/G,KAAKmH,MAAMJ,UAAY/G,KAAK8G,KAAKC,WAD3C/G,KAAK8G,KAAKG,UAKb,CACDtI,IAAK,UACLsC,MAAO,WACLjB,KAAK8G,KAAKoB,YAEX,CACDvJ,IAAK,iBACLsC,MAAO,SAAwBoG,GAC7B,IAAIqB,EAAS1I,KAEbqH,EAAesB,SAAQ,SAAUC,GAC/BF,EAAO5B,KAAK+B,iBAAiBD,EAAcE,UAAWF,EAAcG,eAGvE,CACDpK,IAAK,mBACLsC,MAAO,SAA0BoG,GAC/B,IAAI2B,EAAShJ,KAEbqH,EAAesB,SAAQ,SAAUC,GAC/BI,EAAOlC,KAAKmC,oBAAoBL,EAAcE,UAAWF,EAAcG,eAG1E,CACDpK,IAAK,SACLsC,MAAO,WACL,IAAIiI,EAASlJ,KAETmJ,EAAUnJ,KAAKmH,MACfiC,EAAQD,EAAQC,MAChBC,EAASF,EAAQE,OACjBC,EAAWH,EAAQG,SACnBC,EAAYJ,EAAQI,UACpBC,EAAyBL,EAAQK,uBACjCC,EAAQN,EAAQM,MAGhBC,EAAU,SAAiBC,GAS7B,MANuB,kBAAZA,EACFA,EAAU,KAEVA,GAAW,QAMlBC,GAAe,EAAIvE,EAAUY,SAAS,CACxCmD,MAAOM,EAAQN,GACfC,OAAQK,EAAQL,GAChBQ,SAAU,SACVC,OAAQ,SACRC,QAAS,QACR/J,KAAKmH,MAAMpD,OAEViG,EAAiBR,EAAyB,WAC5C,OAAO,MACLxJ,KAAK6G,mBAET,OAGEjB,EAAQK,QAAQgE,cAAc,MAAO,CACnCC,IAAK,SAAanK,GAChBmJ,EAAOtB,GAAK7H,GAEdgE,MAAO6F,EACPO,QAASH,EACTP,MAAOA,EACPW,KAAMd,EACN,aAAcC,EACdc,SAAU,UAKXnE,EAxMI,CAyMXN,EAAQK,QAAQqE,WAElBhN,EAAQ2I,QAAUC,EAGlBA,EAAOqE,UAAY,CACjBlD,eAAgBxB,EAAYI,QAAQuE,QAAQ3E,EAAYI,QAAQ5E,QAChE+F,QAASvB,EAAYI,QAAQ5E,OAAOoJ,WACpCpB,OAAQxD,EAAYI,QAAQyE,UAAU,CAAC7E,EAAYI,QAAQ0E,OAAQ9E,EAAYI,QAAQ2E,SACvFxB,MAAOvD,EAAYI,QAAQyE,UAAU,CAAC7E,EAAYI,QAAQ0E,OAAQ9E,EAAYI,QAAQ2E,SACtFzC,UAAWtC,EAAYI,QAAQ4E,KAC/B9D,SAAUlB,EAAYI,QAAQ4E,KAC9BrC,MAAO3C,EAAYI,QAAQ2E,OAC3BlD,SAAU7B,EAAYI,QAAQuE,QAAQ3E,EAAYI,QAAQ2E,QAC1DnC,UAAW5C,EAAYI,QAAQ2E,OAC/BtB,SAAUzD,EAAYI,QAAQ0E,OAC9BpB,UAAW1D,EAAYI,QAAQ0E,OAC/BnB,uBAAwB3D,EAAYI,QAAQ4E,KAC5CpB,MAAO5D,EAAYI,QAAQ0E,QAG7BzE,EAAO4E,aAAe,CACpBzD,eAAgB,GAChBc,WAAW,EACXpB,UAAU,EACVyB,MAAO,EACPc,SAAU,SACVC,UAAW,YACXC,wBAAwB,EACxBC,MAAO,K,oBCjRT,IAAIsB,EAAYhN,EAAQ,KACxBV,EAAOC,QAAU,SAAUqF,EAAIqI,EAAM9K,GAEnC,GADA6K,EAAUpI,QACG/C,IAAToL,EAAoB,OAAOrI,EAC/B,OAAQzC,GACN,KAAK,EAAG,OAAO,SAAU/B,GACvB,OAAOwE,EAAGvC,KAAK4K,EAAM7M,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAG2B,GAC1B,OAAO6C,EAAGvC,KAAK4K,EAAM7M,EAAG2B,IAE1B,KAAK,EAAG,OAAO,SAAU3B,EAAG2B,EAAGC,GAC7B,OAAO4C,EAAGvC,KAAK4K,EAAM7M,EAAG2B,EAAGC,IAG/B,OAAO,WACL,OAAO4C,EAAGxC,MAAM6K,EAAM/K,c,oBCjB1B5C,EAAOC,SAAWS,EAAQ,OAAsBA,EAAQ,IAARA,EAAoB,WAClE,OAA4G,GAArGC,OAAOC,eAAeF,EAAQ,IAARA,CAAyB,OAAQ,IAAK,CAAEG,IAAK,WAAc,OAAO,KAAQC,M,oBCDzG,IAAI0D,EAAW9D,EAAQ,KACnBqG,EAAWrG,EAAQ,KAAaqG,SAEhC6G,EAAKpJ,EAASuC,IAAavC,EAASuC,EAAS6F,eACjD5M,EAAOC,QAAU,SAAU6D,GACzB,OAAO8J,EAAK7G,EAAS6F,cAAc9I,GAAM,K,oBCL3C,IAAI7C,EAAMP,EAAQ,KACdmN,EAAYnN,EAAQ,KACpBoN,EAAepN,EAAQ,IAARA,EAA6B,GAC5C0F,EAAW1F,EAAQ,IAARA,CAAyB,YAExCV,EAAOC,QAAU,SAAU+D,EAAQ+J,GACjC,IAGIzM,EAHAkC,EAAIqK,EAAU7J,GACdyC,EAAI,EACJa,EAAS,GAEb,IAAKhG,KAAOkC,EAAOlC,GAAO8E,GAAUnF,EAAIuC,EAAGlC,IAAQgG,EAAOxB,KAAKxE,GAE/D,KAAOyM,EAAMlL,OAAS4D,GAAOxF,EAAIuC,EAAGlC,EAAMyM,EAAMtH,SAC7CqH,EAAaxG,EAAQhG,IAAQgG,EAAOxB,KAAKxE,IAE5C,OAAOgG,I,oBCdT,IAAI0G,EAAMtN,EAAQ,KAElBV,EAAOC,QAAUU,OAAO,KAAK0E,qBAAqB,GAAK1E,OAAS,SAAUmD,GACxE,MAAkB,UAAXkK,EAAIlK,GAAkBA,EAAGmC,MAAM,IAAMtF,OAAOmD,K,kBCJrD,IAAIsB,EAAW,GAAGA,SAElBpF,EAAOC,QAAU,SAAU6D,GACzB,OAAOsB,EAASrC,KAAKe,GAAImK,MAAM,GAAI,K,oBCFrC,IAAIhN,EAAMP,EAAQ,KACdwN,EAAWxN,EAAQ,KACnB0F,EAAW1F,EAAQ,IAARA,CAAyB,YACpCyN,EAAcxN,OAAOgH,UAEzB3H,EAAOC,QAAUU,OAAOyN,gBAAkB,SAAU5K,GAElD,OADAA,EAAI0K,EAAS1K,GACTvC,EAAIuC,EAAG4C,GAAkB5C,EAAE4C,GACH,mBAAjB5C,EAAE6K,aAA6B7K,aAAaA,EAAE6K,YAChD7K,EAAE6K,YAAY1G,UACdnE,aAAa7C,OAASwN,EAAc,O,iCCT/ClO,EAAQ0I,YAAa,EAErB,IAEI2F,EAAarG,EAFDvH,EAAQ,MAMpB6N,EAAWtG,EAFDvH,EAAQ,MAIlB8N,EAAsC,oBAArBD,EAAS3F,SAAwD,kBAAvB0F,EAAW1F,QAAuB,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAmC,oBAArB6F,EAAS3F,SAA0BF,EAAI2F,cAAgBE,EAAS3F,SAAWF,IAAQ6F,EAAS3F,QAAQjB,UAAY,gBAAkBe,GAEjT,SAAST,EAAuBS,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvFzI,EAAQ2I,QAAsC,oBAArB2F,EAAS3F,SAA0D,WAAhC4F,EAAQF,EAAW1F,SAAwB,SAAUF,GAC/G,MAAsB,qBAARA,EAAsB,YAAc8F,EAAQ9F,IACxD,SAAUA,GACZ,OAAOA,GAAmC,oBAArB6F,EAAS3F,SAA0BF,EAAI2F,cAAgBE,EAAS3F,SAAWF,IAAQ6F,EAAS3F,QAAQjB,UAAY,SAA0B,qBAARe,EAAsB,YAAc8F,EAAQ9F,K,iCClBrM,IAAId,EAAUlH,EAAQ,KAClBQ,EAAUR,EAAQ,KAClB+N,EAAW/N,EAAQ,KACnBM,EAAON,EAAQ,KACfgO,EAAYhO,EAAQ,KACpBiO,EAAcjO,EAAQ,KACtBkO,EAAiBlO,EAAQ,KACzB0N,EAAiB1N,EAAQ,KACzBmO,EAAWnO,EAAQ,IAARA,CAAkB,YAC7BoO,IAAU,GAAG/J,MAAQ,QAAU,GAAGA,QAElCgK,EAAO,OACPC,EAAS,SAETC,EAAa,WAAc,OAAOtM,MAEtC3C,EAAOC,QAAU,SAAUiP,EAAMC,EAAMC,EAAaC,EAAMC,EAASC,EAAQC,GACzEb,EAAYS,EAAaD,EAAME,GAC/B,IAeII,EAASnO,EAAKoO,EAfdC,EAAY,SAAUC,GACxB,IAAKd,GAASc,KAAQC,EAAO,OAAOA,EAAMD,GAC1C,OAAQA,GACN,KAAKb,EACL,KAAKC,EAAQ,OAAO,WAAoB,OAAO,IAAII,EAAYzM,KAAMiN,IACrE,OAAO,WAAqB,OAAO,IAAIR,EAAYzM,KAAMiN,KAEzDpI,EAAM2H,EAAO,YACbW,EAAaR,GAAWN,EACxBe,GAAa,EACbF,EAAQX,EAAKvH,UACbqI,EAAUH,EAAMhB,IAAagB,EAnBjB,eAmBuCP,GAAWO,EAAMP,GACpEW,EAAWD,GAAWL,EAAUL,GAChCY,EAAWZ,EAAWQ,EAAwBH,EAAU,WAArBM,OAAkC1N,EACrE4N,EAAqB,SAARhB,GAAkBU,EAAMO,SAAqBJ,EAwB9D,GArBIG,IACFT,EAAoBtB,EAAe+B,EAAWpN,KAAK,IAAImM,OAC7BvO,OAAOgH,WAAa+H,EAAkBL,OAE9DT,EAAec,EAAmBlI,GAAK,GAElCI,GAAiD,mBAA/B8H,EAAkBb,IAAyB7N,EAAK0O,EAAmBb,EAAUI,IAIpGa,GAAcE,GAAWA,EAAQ5O,OAAS4N,IAC5Ce,GAAa,EACbE,EAAW,WAAoB,OAAOD,EAAQjN,KAAKJ,QAG/CiF,IAAW4H,IAAYV,IAASiB,GAAeF,EAAMhB,IACzD7N,EAAK6O,EAAOhB,EAAUoB,GAGxBvB,EAAUS,GAAQc,EAClBvB,EAAUlH,GAAOyH,EACbK,EAMF,GALAG,EAAU,CACRY,OAAQP,EAAaG,EAAWN,EAAUX,GAC1CjK,KAAMwK,EAASU,EAAWN,EAAUZ,GACpCqB,QAASF,GAEPV,EAAQ,IAAKlO,KAAOmO,EAChBnO,KAAOuO,GAAQpB,EAASoB,EAAOvO,EAAKmO,EAAQnO,SAC7CJ,EAAQA,EAAQc,EAAId,EAAQQ,GAAKoN,GAASiB,GAAaZ,EAAMM,GAEtE,OAAOA,I,oBCnETzP,EAAOC,QAAUS,EAAQ,M,oBCCzB,IAAImE,EAAQnE,EAAQ,KAChB4P,EAAa5P,EAAQ,KAAoByE,OAAO,SAAU,aAE9DlF,EAAQsD,EAAI5C,OAAO4P,qBAAuB,SAA6B/M,GACrE,OAAOqB,EAAMrB,EAAG8M,K,oBCLlB,IAAIE,EAAM9P,EAAQ,KACdqD,EAAarD,EAAQ,KACrBmN,EAAYnN,EAAQ,KACpB2C,EAAc3C,EAAQ,KACtBO,EAAMP,EAAQ,KACd0C,EAAiB1C,EAAQ,KACzB+P,EAAO9P,OAAO+P,yBAElBzQ,EAAQsD,EAAI7C,EAAQ,KAAoB+P,EAAO,SAAkCjN,EAAGxB,GAGlF,GAFAwB,EAAIqK,EAAUrK,GACdxB,EAAIqB,EAAYrB,GAAG,GACfoB,EAAgB,IAClB,OAAOqN,EAAKjN,EAAGxB,GACf,MAAO0B,IACT,GAAIzC,EAAIuC,EAAGxB,GAAI,OAAO+B,GAAYyM,EAAIjN,EAAER,KAAKS,EAAGxB,GAAIwB,EAAExB,M,iCCZxD/B,EAAQ0I,YAAa,EAErB,IAIgCD,EAJ5BiI,EAAUjQ,EAAQ,KAElBkQ,GAE4BlI,EAFMiI,IAEejI,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvFzI,EAAQ2I,QAAUgI,EAAShI,SAAW,SAAUtG,GAC9C,IAAK,IAAImE,EAAI,EAAGA,EAAI7D,UAAUC,OAAQ4D,IAAK,CACzC,IAAIpF,EAASuB,UAAU6D,GAEvB,IAAK,IAAInF,KAAOD,EACVV,OAAOgH,UAAU9D,eAAed,KAAK1B,EAAQC,KAC/CgB,EAAOhB,GAAOD,EAAOC,IAK3B,OAAOgB,I,oBCrBTtC,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAAqCiI,YAAY,I,oBCAvFjI,EAAQ,KACRV,EAAOC,QAAUS,EAAQ,KAAuBC,OAAOkQ,Q,oBCAvD,IAAI3P,EAAUR,EAAQ,KAEtBQ,EAAQA,EAAQY,EAAIZ,EAAQQ,EAAG,SAAU,CAAEmP,OAAQnQ,EAAQ,Q,kBCH3DV,EAAOC,QAAU,SAAU6D,GACzB,GAAiB,mBAANA,EAAkB,MAAMH,UAAUG,EAAK,uBAClD,OAAOA,I,iCCAT,IAAIgN,EAAcpQ,EAAQ,KACtBqQ,EAAUrQ,EAAQ,KAClBsQ,EAAOtQ,EAAQ,KACf8P,EAAM9P,EAAQ,KACdwN,EAAWxN,EAAQ,KACnBwD,EAAUxD,EAAQ,KAClBuQ,EAAUtQ,OAAOkQ,OAGrB7Q,EAAOC,SAAWgR,GAAWvQ,EAAQ,IAARA,EAAoB,WAC/C,IAAIwQ,EAAI,GACJhP,EAAI,GAEJJ,EAAIwC,SACJ6M,EAAI,uBAGR,OAFAD,EAAEpP,GAAK,EACPqP,EAAElL,MAAM,IAAIqF,SAAQ,SAAU8F,GAAKlP,EAAEkP,GAAKA,KACd,GAArBH,EAAQ,GAAIC,GAAGpP,IAAWnB,OAAOoE,KAAKkM,EAAQ,GAAI/O,IAAImP,KAAK,KAAOF,KACtE,SAAgB7O,EAAQjB,GAM3B,IALA,IAAIiQ,EAAIpD,EAAS5L,GACbiP,EAAO3O,UAAUC,OACjB2O,EAAQ,EACRC,EAAaT,EAAKzN,EAClBmO,EAASlB,EAAIjN,EACVgO,EAAOC,GAMZ,IALA,IAIIlQ,EAJAQ,EAAIoC,EAAQtB,UAAU4O,MACtBzM,EAAO0M,EAAaV,EAAQjP,GAAGqD,OAAOsM,EAAW3P,IAAMiP,EAAQjP,GAC/De,EAASkC,EAAKlC,OACd8O,EAAI,EAED9O,EAAS8O,GACdrQ,EAAMyD,EAAK4M,KACNb,IAAeY,EAAO3O,KAAKjB,EAAGR,KAAMgQ,EAAEhQ,GAAOQ,EAAER,IAEtD,OAAOgQ,GACPL,G,oBCnCJ,IAAIpD,EAAYnN,EAAQ,KACpBkR,EAAWlR,EAAQ,KACnBmR,EAAkBnR,EAAQ,KAC9BV,EAAOC,QAAU,SAAU6R,GACzB,OAAO,SAAUC,EAAOxH,EAAIyH,GAC1B,IAGIpO,EAHAJ,EAAIqK,EAAUkE,GACdlP,EAAS+O,EAASpO,EAAEX,QACpB2O,EAAQK,EAAgBG,EAAWnP,GAIvC,GAAIiP,GAAevH,GAAMA,GAAI,KAAO1H,EAAS2O,GAG3C,IAFA5N,EAAQJ,EAAEgO,OAEG5N,EAAO,OAAO,OAEtB,KAAMf,EAAS2O,EAAOA,IAAS,IAAIM,GAAeN,KAAShO,IAC5DA,EAAEgO,KAAWjH,EAAI,OAAOuH,GAAeN,GAAS,EACpD,OAAQM,IAAgB,K,oBCnB9B,IAAIG,EAAYvR,EAAQ,KACpBwR,EAAM5R,KAAK4R,IACflS,EAAOC,QAAU,SAAU6D,GACzB,OAAOA,EAAK,EAAIoO,EAAID,EAAUnO,GAAK,kBAAoB,I,oBCJzD,IAAImO,EAAYvR,EAAQ,KACpByR,EAAM7R,KAAK6R,IACXD,EAAM5R,KAAK4R,IACflS,EAAOC,QAAU,SAAUuR,EAAO3O,GAEhC,OADA2O,EAAQS,EAAUT,IACH,EAAIW,EAAIX,EAAQ3O,EAAQ,GAAKqP,EAAIV,EAAO3O,K,oBCLzD7C,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAA+CiI,YAAY,I,oBCAjGjI,EAAQ,KACRV,EAAOC,QAAUS,EAAQ,KAAuBC,OAAOyN,gB,oBCAvD,IAAIF,EAAWxN,EAAQ,KACnB0R,EAAkB1R,EAAQ,KAE9BA,EAAQ,IAARA,CAAyB,kBAAkB,WACzC,OAAO,SAAwBoD,GAC7B,OAAOsO,EAAgBlE,EAASpK,S,oBCLpC,IAAI5C,EAAUR,EAAQ,KAClBX,EAAOW,EAAQ,KACf2R,EAAQ3R,EAAQ,KACpBV,EAAOC,QAAU,SAAUqS,EAAKrO,GAC9B,IAAIqB,GAAMvF,EAAKY,QAAU,IAAI2R,IAAQ3R,OAAO2R,GACxCC,EAAM,GACVA,EAAID,GAAOrO,EAAKqB,GAChBpE,EAAQA,EAAQY,EAAIZ,EAAQQ,EAAI2Q,GAAM,WAAc/M,EAAG,MAAQ,SAAUiN,K,iCCN3EtS,EAAQ0I,YAAa,EAErB1I,EAAQ2I,QAAU,SAAU4J,EAAUpD,GACpC,KAAMoD,aAAoBpD,GACxB,MAAM,IAAIzL,UAAU,uC,iCCJxB1D,EAAQ0I,YAAa,EAErB,IAIgCD,EAJ5B+J,EAAkB/R,EAAQ,KAE1BgS,GAE4BhK,EAFc+J,IAEO/J,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvFzI,EAAQ2I,QAAU,WAChB,SAAS+J,EAAiBrQ,EAAQwH,GAChC,IAAK,IAAIrD,EAAI,EAAGA,EAAIqD,EAAMjH,OAAQ4D,IAAK,CACrC,IAAImM,EAAa9I,EAAMrD,GACvBmM,EAAWlO,WAAakO,EAAWlO,aAAc,EACjDkO,EAAWjO,cAAe,EACtB,UAAWiO,IAAYA,EAAWhO,UAAW,IACjD,EAAI8N,EAAiB9J,SAAStG,EAAQsQ,EAAWtR,IAAKsR,IAI1D,OAAO,SAAUxD,EAAayD,EAAYC,GAGxC,OAFID,GAAYF,EAAiBvD,EAAYzH,UAAWkL,GACpDC,GAAaH,EAAiBvD,EAAa0D,GACxC1D,GAdO,I,oBCVlBpP,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAA8CiI,YAAY,I,oBCAhGjI,EAAQ,KACR,IAAIqS,EAAUrS,EAAQ,KAAuBC,OAC7CX,EAAOC,QAAU,SAAwB6D,EAAIxC,EAAK0R,GAChD,OAAOD,EAAQnS,eAAekD,EAAIxC,EAAK0R,K,oBCHzC,IAAI9R,EAAUR,EAAQ,KAEtBQ,EAAQA,EAAQY,EAAIZ,EAAQQ,GAAKhB,EAAQ,KAAmB,SAAU,CAAEE,eAAgBF,EAAQ,KAAgB6C,K,iCCAhHtD,EAAQ0I,YAAa,EAErB,IAIgCD,EAJ5BuK,EAAWvS,EAAQ,KAEnBwS,GAE4BxK,EAFMuK,IAEevK,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvFzI,EAAQ2I,QAAU,SAAUrI,EAAMwC,GAChC,IAAKxC,EACH,MAAM,IAAI4S,eAAe,6DAG3B,OAAOpQ,GAAuF,YAA7D,qBAATA,EAAuB,aAAc,EAAImQ,EAAStK,SAAS7F,KAAuC,oBAATA,EAA8BxC,EAAPwC,I,oBCf1I/C,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAAuCiI,YAAY,I,oBCAzFjI,EAAQ,KACRA,EAAQ,KACRV,EAAOC,QAAUS,EAAQ,KAA0B6C,EAAE,a,iCCDrD,IAAI6P,EAAM1S,EAAQ,IAARA,EAAwB,GAGlCA,EAAQ,IAARA,CAA0B2S,OAAQ,UAAU,SAAUC,GACpD3Q,KAAK4Q,GAAKF,OAAOC,GACjB3Q,KAAK6Q,GAAK,KAET,WACD,IAEIC,EAFAjQ,EAAIb,KAAK4Q,GACT/B,EAAQ7O,KAAK6Q,GAEjB,OAAIhC,GAAShO,EAAEX,OAAe,CAAEe,WAAOrB,EAAWmR,MAAM,IACxDD,EAAQL,EAAI5P,EAAGgO,GACf7O,KAAK6Q,IAAMC,EAAM5Q,OACV,CAAEe,MAAO6P,EAAOC,MAAM,Q,oBCf/B,IAAIzB,EAAYvR,EAAQ,KACpByD,EAAUzD,EAAQ,KAGtBV,EAAOC,QAAU,SAAU0T,GACzB,OAAO,SAAUhG,EAAMiG,GACrB,IAGI9S,EAAG2B,EAHHoR,EAAIR,OAAOlP,EAAQwJ,IACnBlH,EAAIwL,EAAU2B,GACdE,EAAID,EAAEhR,OAEV,OAAI4D,EAAI,GAAKA,GAAKqN,EAAUH,EAAY,QAAKpR,GAC7CzB,EAAI+S,EAAEE,WAAWtN,IACN,OAAU3F,EAAI,OAAU2F,EAAI,IAAMqN,IAAMrR,EAAIoR,EAAEE,WAAWtN,EAAI,IAAM,OAAUhE,EAAI,MACxFkR,EAAYE,EAAE9L,OAAOtB,GAAK3F,EAC1B6S,EAAYE,EAAE5F,MAAMxH,EAAGA,EAAI,GAA2BhE,EAAI,OAAzB3B,EAAI,OAAU,IAAqB,S,iCCb5E,IAAIsG,EAAS1G,EAAQ,KACjBkS,EAAalS,EAAQ,KACrBkO,EAAiBlO,EAAQ,KACzBgP,EAAoB,GAGxBhP,EAAQ,IAARA,CAAmBgP,EAAmBhP,EAAQ,IAARA,CAAkB,aAAa,WAAc,OAAOiC,QAE1F3C,EAAOC,QAAU,SAAUmP,EAAaD,EAAME,GAC5CD,EAAYzH,UAAYP,EAAOsI,EAAmB,CAAEL,KAAMuD,EAAW,EAAGvD,KACxET,EAAeQ,EAAaD,EAAO,e,oBCXrC,IAAI7L,EAAK5C,EAAQ,KACbyC,EAAWzC,EAAQ,KACnBqQ,EAAUrQ,EAAQ,KAEtBV,EAAOC,QAAUS,EAAQ,KAAoBC,OAAOgS,iBAAmB,SAA0BnP,EAAG6D,GAClGlE,EAASK,GAKT,IAJA,IAGIxB,EAHA+C,EAAOgM,EAAQ1J,GACfxE,EAASkC,EAAKlC,OACd4D,EAAI,EAED5D,EAAS4D,GAAGnD,EAAGC,EAAEC,EAAGxB,EAAI+C,EAAK0B,KAAMY,EAAWrF,IACrD,OAAOwB,I,oBCXT,IAAIuD,EAAWrG,EAAQ,KAAaqG,SACpC/G,EAAOC,QAAU8G,GAAYA,EAASiN,iB,oBCDtCtT,EAAQ,KAYR,IAXA,IAAIN,EAASM,EAAQ,KACjBM,EAAON,EAAQ,KACfgO,EAAYhO,EAAQ,KACpBuT,EAAgBvT,EAAQ,IAARA,CAAkB,eAElCwT,EAAe,wbAIUjO,MAAM,KAE1BQ,EAAI,EAAGA,EAAIyN,EAAarR,OAAQ4D,IAAK,CAC5C,IAAI0I,EAAO+E,EAAazN,GACpB0N,EAAa/T,EAAO+O,GACpBU,EAAQsE,GAAcA,EAAWxM,UACjCkI,IAAUA,EAAMoE,IAAgBjT,EAAK6O,EAAOoE,EAAe9E,GAC/DT,EAAUS,GAAQT,EAAUrF,Q,iCChB9B,IAAI+K,EAAmB1T,EAAQ,KAC3B2T,EAAO3T,EAAQ,KACfgO,EAAYhO,EAAQ,KACpBmN,EAAYnN,EAAQ,KAMxBV,EAAOC,QAAUS,EAAQ,IAARA,CAA0B2I,MAAO,SAAS,SAAUiK,EAAU1D,GAC7EjN,KAAK4Q,GAAK1F,EAAUyF,GACpB3Q,KAAK6Q,GAAK,EACV7Q,KAAK2R,GAAK1E,KAET,WACD,IAAIpM,EAAIb,KAAK4Q,GACT3D,EAAOjN,KAAK2R,GACZ9C,EAAQ7O,KAAK6Q,KACjB,OAAKhQ,GAAKgO,GAAShO,EAAEX,QACnBF,KAAK4Q,QAAKhR,EACH8R,EAAK,IAEaA,EAAK,EAApB,QAARzE,EAA+B4B,EACvB,UAAR5B,EAAiCpM,EAAEgO,GACxB,CAACA,EAAOhO,EAAEgO,OACxB,UAGH9C,EAAU6F,UAAY7F,EAAUrF,MAEhC+K,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,kBCjCjBpU,EAAOC,QAAU,c,kBCAjBD,EAAOC,QAAU,SAAUyT,EAAM9P,GAC/B,MAAO,CAAEA,MAAOA,EAAO8P,OAAQA,K,oBCDjC1T,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAA8BiI,YAAY,I,oBCAhFjI,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRV,EAAOC,QAAUS,EAAQ,KAAuB4D,Q,iCCFhD,IAAIlE,EAASM,EAAQ,KACjBO,EAAMP,EAAQ,KACdoQ,EAAcpQ,EAAQ,KACtBQ,EAAUR,EAAQ,KAClB+N,EAAW/N,EAAQ,KACnB8T,EAAO9T,EAAQ,KAAW4R,IAC1BmC,EAAS/T,EAAQ,KACjBkF,EAASlF,EAAQ,KACjBkO,EAAiBlO,EAAQ,KACzB2D,EAAM3D,EAAQ,KACdgU,EAAMhU,EAAQ,KACdmH,EAASnH,EAAQ,KACjBiU,EAAYjU,EAAQ,KACpBkU,EAAWlU,EAAQ,KACnBmU,EAAUnU,EAAQ,KAClByC,EAAWzC,EAAQ,KACnB8D,EAAW9D,EAAQ,KACnBwN,EAAWxN,EAAQ,KACnBmN,EAAYnN,EAAQ,KACpB2C,EAAc3C,EAAQ,KACtBqD,EAAarD,EAAQ,KACrBoU,EAAUpU,EAAQ,KAClBqU,EAAUrU,EAAQ,KAClBsU,EAAQtU,EAAQ,KAChBuU,EAAQvU,EAAQ,KAChBwU,EAAMxU,EAAQ,KACdmE,EAAQnE,EAAQ,KAChB+P,EAAOuE,EAAMzR,EACbD,EAAK4R,EAAI3R,EACT4R,EAAOJ,EAAQxR,EACfuE,EAAU1H,EAAOkE,OACjB8Q,EAAQhV,EAAOiV,KACfC,EAAaF,GAASA,EAAMG,UAE5BC,EAASd,EAAI,WACbe,EAAef,EAAI,eACnBhD,EAAS,GAAGrM,qBACZqQ,EAAiB9P,EAAO,mBACxB+P,EAAa/P,EAAO,WACpBgQ,EAAYhQ,EAAO,cACnBuI,EAAcxN,OAAM,UACpBkV,EAA+B,mBAAX/N,KAA2BmN,EAAM1R,EACrDuS,EAAU1V,EAAO0V,QAEjBC,GAAUD,IAAYA,EAAO,YAAgBA,EAAO,UAAYE,UAGhEC,EAAgBnF,GAAe2D,GAAO,WACxC,OAES,GAFFK,EAAQxR,EAAG,GAAI,IAAK,CACzBzC,IAAK,WAAc,OAAOyC,EAAGX,KAAM,IAAK,CAAEiB,MAAO,IAAK9C,MACpDA,KACD,SAAUgD,EAAIxC,EAAK4U,GACtB,IAAIC,EAAY1F,EAAKtC,EAAa7M,GAC9B6U,UAAkBhI,EAAY7M,GAClCgC,EAAGQ,EAAIxC,EAAK4U,GACRC,GAAarS,IAAOqK,GAAa7K,EAAG6K,EAAa7M,EAAK6U,IACxD7S,EAEA8S,EAAO,SAAU3O,GACnB,IAAI4O,EAAMV,EAAWlO,GAAOqN,EAAQhN,EAAO,WAE3C,OADAuO,EAAI/B,GAAK7M,EACF4O,GAGLC,EAAWT,GAAyC,iBAApB/N,EAAQyO,SAAuB,SAAUzS,GAC3E,MAAoB,iBAANA,GACZ,SAAUA,GACZ,OAAOA,aAAcgE,GAGnB0O,EAAkB,SAAwB1S,EAAIxC,EAAK4U,GAKrD,OAJIpS,IAAOqK,GAAaqI,EAAgBZ,EAAWtU,EAAK4U,GACxD/S,EAASW,GACTxC,EAAM+B,EAAY/B,GAAK,GACvB6B,EAAS+S,GACLjV,EAAI0U,EAAYrU,IACb4U,EAAExR,YAIDzD,EAAI6C,EAAI0R,IAAW1R,EAAG0R,GAAQlU,KAAMwC,EAAG0R,GAAQlU,IAAO,GAC1D4U,EAAIpB,EAAQoB,EAAG,CAAExR,WAAYX,EAAW,GAAG,OAJtC9C,EAAI6C,EAAI0R,IAASlS,EAAGQ,EAAI0R,EAAQzR,EAAW,EAAG,KACnDD,EAAG0R,GAAQlU,IAAO,GAIX2U,EAAcnS,EAAIxC,EAAK4U,IACzB5S,EAAGQ,EAAIxC,EAAK4U,IAEnBO,EAAoB,SAA0B3S,EAAI9B,GACpDmB,EAASW,GAKT,IAJA,IAGIxC,EAHAyD,EAAO6P,EAAS5S,EAAI6L,EAAU7L,IAC9ByE,EAAI,EACJqN,EAAI/O,EAAKlC,OAENiR,EAAIrN,GAAG+P,EAAgB1S,EAAIxC,EAAMyD,EAAK0B,KAAMzE,EAAEV,IACrD,OAAOwC,GAKL4S,EAAwB,SAA8BpV,GACxD,IAAIqV,EAAIjF,EAAO3O,KAAKJ,KAAMrB,EAAM+B,EAAY/B,GAAK,IACjD,QAAIqB,OAASwL,GAAelN,EAAI0U,EAAYrU,KAASL,EAAI2U,EAAWtU,QAC7DqV,IAAM1V,EAAI0B,KAAMrB,KAASL,EAAI0U,EAAYrU,IAAQL,EAAI0B,KAAM6S,IAAW7S,KAAK6S,GAAQlU,KAAOqV,IAE/FC,EAA4B,SAAkC9S,EAAIxC,GAGpE,GAFAwC,EAAK+J,EAAU/J,GACfxC,EAAM+B,EAAY/B,GAAK,GACnBwC,IAAOqK,IAAelN,EAAI0U,EAAYrU,IAASL,EAAI2U,EAAWtU,GAAlE,CACA,IAAI4U,EAAIzF,EAAK3M,EAAIxC,GAEjB,OADI4U,IAAKjV,EAAI0U,EAAYrU,IAAUL,EAAI6C,EAAI0R,IAAW1R,EAAG0R,GAAQlU,KAAO4U,EAAExR,YAAa,GAChFwR,IAELW,EAAuB,SAA6B/S,GAKtD,IAJA,IAGIxC,EAHAyM,EAAQoH,EAAKtH,EAAU/J,IACvBwD,EAAS,GACTb,EAAI,EAEDsH,EAAMlL,OAAS4D,GACfxF,EAAI0U,EAAYrU,EAAMyM,EAAMtH,OAASnF,GAAOkU,GAAUlU,GAAOkT,GAAMlN,EAAOxB,KAAKxE,GACpF,OAAOgG,GAEPwP,GAAyB,SAA+BhT,GAM1D,IALA,IAIIxC,EAJAyV,EAAQjT,IAAOqK,EACfJ,EAAQoH,EAAK4B,EAAQnB,EAAY/H,EAAU/J,IAC3CwD,EAAS,GACTb,EAAI,EAEDsH,EAAMlL,OAAS4D,IAChBxF,EAAI0U,EAAYrU,EAAMyM,EAAMtH,OAAUsQ,IAAQ9V,EAAIkN,EAAa7M,IAAcgG,EAAOxB,KAAK6P,EAAWrU,IACxG,OAAOgG,GAINuO,IAYHpH,GAXA3G,EAAU,WACR,GAAInF,gBAAgBmF,EAAS,MAAMnE,UAAU,gCAC7C,IAAI8D,EAAMpD,EAAIzB,UAAUC,OAAS,EAAID,UAAU,QAAKL,GAChDyU,EAAO,SAAPA,EAAiBpT,GACfjB,OAASwL,GAAa6I,EAAKjU,KAAK6S,EAAWhS,GAC3C3C,EAAI0B,KAAM6S,IAAWvU,EAAI0B,KAAK6S,GAAS/N,KAAM9E,KAAK6S,GAAQ/N,IAAO,GACrEwO,EAActT,KAAM8E,EAAK1D,EAAW,EAAGH,KAGzC,OADIkN,GAAeiF,GAAQE,EAAc9H,EAAa1G,EAAK,CAAE9C,cAAc,EAAMsS,IAAKD,IAC/EZ,EAAK3O,KAEE,UAAa,YAAY,WACvC,OAAO9E,KAAK2R,MAGdU,EAAMzR,EAAIqT,EACV1B,EAAI3R,EAAIiT,EACR9V,EAAQ,KAAkB6C,EAAIwR,EAAQxR,EAAIsT,EAC1CnW,EAAQ,KAAiB6C,EAAImT,EAC7BzB,EAAM1R,EAAIuT,GAENhG,IAAgBpQ,EAAQ,MAC1B+N,EAASN,EAAa,uBAAwBuI,GAAuB,GAGvE7O,EAAOtE,EAAI,SAAUnC,GACnB,OAAOgV,EAAK1B,EAAItT,MAIpBF,EAAQA,EAAQU,EAAIV,EAAQkB,EAAIlB,EAAQQ,GAAKmU,EAAY,CAAEvR,OAAQwD,IAEnE,IAAK,IAAIoP,GAEP,iHACAjR,MAAM,KAAM0L,GAAI,EAAGuF,GAAWrU,OAAS8O,IAAG+C,EAAIwC,GAAWvF,OAE3D,IAAK,IAAIwF,GAAmBtS,EAAM6P,EAAItQ,OAAQgN,GAAI,EAAG+F,GAAiBtU,OAASuO,IAAIuD,EAAUwC,GAAiB/F,OAE9GlQ,EAAQA,EAAQY,EAAIZ,EAAQQ,GAAKmU,EAAY,SAAU,CAErD,IAAO,SAAUvU,GACf,OAAOL,EAAIyU,EAAgBpU,GAAO,IAC9BoU,EAAepU,GACfoU,EAAepU,GAAOwG,EAAQxG,IAGpC8V,OAAQ,SAAgBf,GACtB,IAAKC,EAASD,GAAM,MAAM1S,UAAU0S,EAAM,qBAC1C,IAAK,IAAI/U,KAAOoU,EAAgB,GAAIA,EAAepU,KAAS+U,EAAK,OAAO/U,GAE1E+V,UAAW,WAActB,GAAS,GAClCuB,UAAW,WAAcvB,GAAS,KAGpC7U,EAAQA,EAAQY,EAAIZ,EAAQQ,GAAKmU,EAAY,SAAU,CAErDzO,OA/FY,SAAgBtD,EAAI9B,GAChC,YAAaO,IAANP,EAAkB8S,EAAQhR,GAAM2S,EAAkB3B,EAAQhR,GAAK9B,IAgGtEpB,eAAgB4V,EAEhB7D,iBAAkB8D,EAElB/F,yBAA0BkG,EAE1BrG,oBAAqBsG,EAErB3Q,sBAAuB4Q,KAKzB,IAAIS,GAAsB9C,GAAO,WAAcQ,EAAM1R,EAAE,MAEvDrC,EAAQA,EAAQY,EAAIZ,EAAQQ,EAAI6V,GAAqB,SAAU,CAC7DrR,sBAAuB,SAA+BpC,GACpD,OAAOmR,EAAM1R,EAAE2K,EAASpK,OAK5BsR,GAASlU,EAAQA,EAAQY,EAAIZ,EAAQQ,IAAMmU,GAAcpB,GAAO,WAC9D,IAAI3S,EAAIgG,IAIR,MAA0B,UAAnBwN,EAAW,CAACxT,KAA2C,MAAxBwT,EAAW,CAAExU,EAAGgB,KAAyC,MAAzBwT,EAAW3U,OAAOmB,QACrF,OAAQ,CACXyT,UAAW,SAAmBzR,GAI5B,IAHA,IAEI0T,EAAUC,EAFVrO,EAAO,CAACtF,GACR2C,EAAI,EAED7D,UAAUC,OAAS4D,GAAG2C,EAAKtD,KAAKlD,UAAU6D,MAEjD,GADAgR,EAAYD,EAAWpO,EAAK,IACvB5E,EAASgT,SAAoBjV,IAAPuB,KAAoBwS,EAASxS,GAMxD,OALK+Q,EAAQ2C,KAAWA,EAAW,SAAUlW,EAAKsC,GAEhD,GADwB,mBAAb6T,IAAyB7T,EAAQ6T,EAAU1U,KAAKJ,KAAMrB,EAAKsC,KACjE0S,EAAS1S,GAAQ,OAAOA,IAE/BwF,EAAK,GAAKoO,EACHlC,EAAWxS,MAAMsS,EAAOhM,MAKnCtB,EAAO,UAAY2N,IAAiB/U,EAAQ,IAARA,CAAmBoH,EAAO,UAAa2N,EAAc3N,EAAO,UAAYtC,SAE5GoJ,EAAe9G,EAAS,UAExB8G,EAAetO,KAAM,QAAQ,GAE7BsO,EAAexO,EAAOiV,KAAM,QAAQ,I,oBCrPpC,IAAIb,EAAO9T,EAAQ,IAARA,CAAkB,QACzB8D,EAAW9D,EAAQ,KACnBO,EAAMP,EAAQ,KACdgX,EAAUhX,EAAQ,KAAgB6C,EAClCyB,EAAK,EACL2S,EAAehX,OAAOgX,cAAgB,WACxC,OAAO,GAELC,GAAUlX,EAAQ,IAARA,EAAoB,WAChC,OAAOiX,EAAahX,OAAOkX,kBAAkB,QAE3CC,EAAU,SAAUhU,GACtB4T,EAAQ5T,EAAI0Q,EAAM,CAAE5Q,MAAO,CACzB6C,EAAG,OAAQzB,EACX+S,EAAG,OAgCHC,EAAOhY,EAAOC,QAAU,CAC1BqS,IAAKkC,EACLyD,MAAM,EACNC,QAhCY,SAAUpU,EAAIsD,GAE1B,IAAK5C,EAASV,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK7C,EAAI6C,EAAI0Q,GAAO,CAElB,IAAKmD,EAAa7T,GAAK,MAAO,IAE9B,IAAKsD,EAAQ,MAAO,IAEpB0Q,EAAQhU,GAER,OAAOA,EAAG0Q,GAAM/N,GAsBlB0R,QApBY,SAAUrU,EAAIsD,GAC1B,IAAKnG,EAAI6C,EAAI0Q,GAAO,CAElB,IAAKmD,EAAa7T,GAAK,OAAO,EAE9B,IAAKsD,EAAQ,OAAO,EAEpB0Q,EAAQhU,GAER,OAAOA,EAAG0Q,GAAMuD,GAYlBK,SATa,SAAUtU,GAEvB,OADI8T,GAAUI,EAAKC,MAAQN,EAAa7T,KAAQ7C,EAAI6C,EAAI0Q,IAAOsD,EAAQhU,GAChEA,K,oBC3CT,IAAIiN,EAAUrQ,EAAQ,KAClBsQ,EAAOtQ,EAAQ,KACf8P,EAAM9P,EAAQ,KAClBV,EAAOC,QAAU,SAAU6D,GACzB,IAAIwD,EAASyJ,EAAQjN,GACjB2N,EAAaT,EAAKzN,EACtB,GAAIkO,EAKF,IAJA,IAGInQ,EAHA+W,EAAU5G,EAAW3N,GACrB4N,EAASlB,EAAIjN,EACbkD,EAAI,EAED4R,EAAQxV,OAAS4D,GAAOiL,EAAO3O,KAAKe,EAAIxC,EAAM+W,EAAQ5R,OAAOa,EAAOxB,KAAKxE,GAChF,OAAOgG,I,oBCZX,IAAI0G,EAAMtN,EAAQ,KAClBV,EAAOC,QAAUoJ,MAAMwL,SAAW,SAAiByD,GACjD,MAAmB,SAAZtK,EAAIsK,K,oBCFb,IAAIzK,EAAYnN,EAAQ,KACpByU,EAAOzU,EAAQ,KAAkB6C,EACjC6B,EAAW,GAAGA,SAEdmT,EAA+B,iBAAVlY,QAAsBA,QAAUM,OAAO4P,oBAC5D5P,OAAO4P,oBAAoBlQ,QAAU,GAUzCL,EAAOC,QAAQsD,EAAI,SAA6BO,GAC9C,OAAOyU,GAAoC,mBAArBnT,EAASrC,KAAKe,GATjB,SAAUA,GAC7B,IACE,OAAOqR,EAAKrR,GACZ,MAAOJ,GACP,OAAO6U,EAAYtK,SAK0CuK,CAAe1U,GAAMqR,EAAKtH,EAAU/J,M,wCCjBrGpD,EAAQ,IAARA,CAAyB,kB,oBCAzBA,EAAQ,IAARA,CAAyB,e,iCCEzBT,EAAQ0I,YAAa,EAErB,IAEI8P,EAAmBxQ,EAFDvH,EAAQ,MAM1BgY,EAAWzQ,EAFDvH,EAAQ,MAMlBwS,EAAWjL,EAFAvH,EAAQ,MAIvB,SAASuH,EAAuBS,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvFzI,EAAQ2I,QAAU,SAAU+P,EAAUC,GACpC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIjV,UAAU,4DAAoF,qBAAfiV,EAA6B,aAAc,EAAI1F,EAAStK,SAASgQ,KAG5JD,EAAShR,WAAY,EAAI+Q,EAAS9P,SAASgQ,GAAcA,EAAWjR,UAAW,CAC7E0G,YAAa,CACXzK,MAAO+U,EACPjU,YAAY,EACZE,UAAU,EACVD,cAAc,KAGdiU,IAAYH,EAAiB7P,SAAU,EAAI6P,EAAiB7P,SAAS+P,EAAUC,GAAcD,EAASpP,UAAYqP,K,oBC/BxH5Y,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAA+CiI,YAAY,I,oBCAjGjI,EAAQ,KACRV,EAAOC,QAAUS,EAAQ,KAAuBC,OAAOkY,gB,oBCAvD,IAAI3X,EAAUR,EAAQ,KACtBQ,EAAQA,EAAQY,EAAG,SAAU,CAAE+W,eAAgBnY,EAAQ,KAAgBuW,O,oBCAvE,IAAIzS,EAAW9D,EAAQ,KACnByC,EAAWzC,EAAQ,KACnBoY,EAAQ,SAAUtV,EAAGqM,GAEvB,GADA1M,EAASK,IACJgB,EAASqL,IAAoB,OAAVA,EAAgB,MAAMlM,UAAUkM,EAAQ,8BAElE7P,EAAOC,QAAU,CACfgX,IAAKtW,OAAOkY,iBAAmB,aAAe,GAC5C,SAAUE,EAAMC,EAAO/B,GACrB,KACEA,EAAMvW,EAAQ,IAARA,CAAkBF,SAASuC,KAAMrC,EAAQ,KAAkB6C,EAAE5C,OAAOgH,UAAW,aAAasP,IAAK,IACnG8B,EAAM,IACVC,IAAUD,aAAgB1P,OAC1B,MAAO3F,GAAKsV,GAAQ,EACtB,OAAO,SAAwBxV,EAAGqM,GAIhC,OAHAiJ,EAAMtV,EAAGqM,GACLmJ,EAAOxV,EAAE+F,UAAYsG,EACpBoH,EAAIzT,EAAGqM,GACLrM,GAVX,CAYE,IAAI,QAASjB,GACjBuW,MAAOA,I,oBCvBT9Y,EAAOC,QAAU,CAAE,QAAWS,EAAQ,KAAqCiI,YAAY,I,oBCAvFjI,EAAQ,KACR,IAAIqS,EAAUrS,EAAQ,KAAuBC,OAC7CX,EAAOC,QAAU,SAAgB+B,EAAGkU,GAClC,OAAOnD,EAAQ3L,OAAOpF,EAAGkU,K,oBCH3B,IAAIhV,EAAUR,EAAQ,KAEtBQ,EAAQA,EAAQY,EAAG,SAAU,CAAEsF,OAAQ1G,EAAQ,Q,iDCF9C,kCAA+CuY,KAAMC,QAAhC,qBAAdC,YAAwCF,KAW7C5Y,QAAU,GAXyC6Y,QAWpC,SAAS7Y,QAK3B,aAIA,IAAI+Y,MAAQ,6BAERC,aAAe,GAEfC,qBAAuB,OAQvBC,iBAAkB,EAClBC,kBACAC,SAAW,iCAAiCV,KAAKI,UAAUO,WAC3DC,aAAe,GACfC,MACAC,MAAQvZ,KAAKwZ,IACbC,OAASzZ,KAAK0Z,KACdC,QAAU3Z,KAAKoF,MACfwU,MAAQ5Z,KAAK6R,IACbgI,MAAQ7Z,KAAK4R,IAEbkI,OAAS,GAUb,SAASC,mBAAqB,MAAO,IATpC,WACC,IACI5T,EADA6T,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExWC,EAAMD,EAAczX,OACxB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB2T,OAAOE,EAAc7T,IAAMnG,KAAKga,EAAc7T,IALjD,GAWD2T,OAAOlV,OAAS5E,KAAK4E,OACrBkV,OAAOI,IAAM,SAAUjV,GAErB,GAAe,kBADKA,GACOA,EAAI1C,OAAQ,CACrC,IACI4D,EADAgU,EAASC,iBAAiBnV,EAAI1C,QAE9B0X,EAAMhV,EAAI1C,OACd,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBgU,EAAOhU,GAAKnG,KAAKka,IAAIjV,EAAIkB,IAE3B,OAAOgU,EAET,OAAOna,KAAKka,IAAIjV,IAElB,IAAIoV,qBAAuB,IACvBC,UAAYta,KAAKua,GAAK,IACtBC,YAAc,MAElB,SAASC,YAAYC,GAEjBpB,MADEoB,EACM1a,KAAK2a,MAEL,SAAU1V,GAChB,OAAOA,GAMb,SAAS2V,SAASC,GAChBA,EAAQzU,MAAM0U,SAAW,WACzBD,EAAQzU,MAAM2U,IAAM,EACpBF,EAAQzU,MAAM4U,KAAO,EACrBH,EAAQzU,MAAMC,QAAU,QACxBwU,EAAQzU,MAAM6U,gBAAkB,MAChCJ,EAAQzU,MAAM8U,sBAAwB,MACtCL,EAAQzU,MAAM+U,mBAAqB,UACnCN,EAAQzU,MAAMgV,yBAA2B,UACzCP,EAAQzU,MAAMiV,eAAiB,cAC/BR,EAAQzU,MAAMkV,qBAAuB,cACrCT,EAAQzU,MAAMmV,kBAAoB,cAGpC,SAASC,kBAAkB3a,EAAM4a,EAAaC,EAAWC,GACvDtZ,KAAKxB,KAAOA,EACZwB,KAAKoZ,YAAcA,EACnBpZ,KAAKqZ,UAAYA,EACjBrZ,KAAKyI,UAAY6Q,EAAkB,GAAK,EAAI,EAG9C,SAASC,gBAAgB/a,EAAM8a,GAC7BtZ,KAAKxB,KAAOA,EACZwB,KAAKyI,UAAY6Q,EAAkB,GAAK,EAAI,EAG9C,SAASE,oBAAoBhb,EAAMib,EAAYC,EAAaJ,GAC1DtZ,KAAKxB,KAAOA,EACZwB,KAAK0Z,YAAcA,EACnB1Z,KAAKyZ,WAAaA,EAClBzZ,KAAKyI,UAAY6Q,EAAkB,GAAK,EAAI,EAG9C,SAASK,oBAAoBnb,EAAMob,EAAYC,GAC7C7Z,KAAKxB,KAAOA,EACZwB,KAAK4Z,WAAaA,EAClB5Z,KAAK6Z,YAAcA,EAGrB,SAASC,eAAetb,EAAMmB,GAC5BK,KAAKxB,KAAOA,EACZwB,KAAKL,OAASA,EAGhB,SAASoa,wBAAwBC,EAAaZ,GAC5CpZ,KAAKxB,KAAO,mBACZwB,KAAKga,YAAcA,EACnBha,KAAKoZ,YAAcA,EAGrB,SAASa,mBAAmBD,GAC1Bha,KAAKxB,KAAO,cACZwB,KAAKga,YAAcA,EAGrB,SAASE,4BAA4B1b,EAAMwb,GACzCha,KAAKxB,KAAOA,EACZwB,KAAKga,YAAcA,EA3DrB5B,aAAY,GA8DZ,IAAI+B,gBAAmB,WACrB,IAAIC,EAAS,EACb,OAAO,WAEL,MAAO,qBADPA,GAAU,IAHS,GAQvB,SAASC,SAASC,EAAGpJ,EAAGqJ,GACtB,IAAIC,EACAC,EACA3a,EACAgE,EACAlD,EACA8Z,EACAC,EACAC,EAMJ,OAHAF,EAAIH,GAAK,EAAIrJ,GACbyJ,EAAIJ,GAAK,GAFT3Z,EAAQ,EAAJ0Z,GADJxW,EAAInG,KAAKoF,MAAU,EAAJuX,KAGEpJ,GACjB0J,EAAIL,GAAK,GAAK,EAAI3Z,GAAKsQ,GACfpN,EAAI,GACV,KAAK,EAAG0W,EAAID,EAAGE,EAAIG,EAAG9a,EAAI4a,EAAG,MAC7B,KAAK,EAAGF,EAAIG,EAAGF,EAAIF,EAAGza,EAAI4a,EAAG,MAC7B,KAAK,EAAGF,EAAIE,EAAGD,EAAIF,EAAGza,EAAI8a,EAAG,MAC7B,KAAK,EAAGJ,EAAIE,EAAGD,EAAIE,EAAG7a,EAAIya,EAAG,MAC7B,KAAK,EAAGC,EAAII,EAAGH,EAAIC,EAAG5a,EAAIya,EAAG,MAC7B,KAAK,EAAGC,EAAID,EAAGE,EAAIC,EAAG5a,EAAI6a,EAG5B,MAAO,CAACH,EACNC,EACA3a,GAGJ,SAAS+a,SAASL,EAAGC,EAAG3a,GACtB,IAGIwa,EAHA9K,EAAM7R,KAAK6R,IAAIgL,EAAGC,EAAG3a,GACrByP,EAAM5R,KAAK4R,IAAIiL,EAAGC,EAAG3a,GACrBgb,EAAItL,EAAMD,EAEV2B,EAAa,IAAR1B,EAAY,EAAIsL,EAAItL,EACzB+K,EAAI/K,EAAM,IAEd,OAAQA,GACN,KAAKD,EAAK+K,EAAI,EAAG,MACjB,KAAKE,EAAGF,EAAKG,EAAI3a,EAAKgb,GAAKL,EAAI3a,EAAI,EAAI,GAAIwa,GAAK,EAAIQ,EAAG,MACvD,KAAKL,EAAGH,EAAKxa,EAAI0a,EAAS,EAAJM,EAAOR,GAAK,EAAIQ,EAAG,MACzC,KAAKhb,EAAGwa,EAAKE,EAAIC,EAAS,EAAJK,EAAOR,GAAK,EAAIQ,EAIxC,MAAO,CACLR,EACApJ,EACAqJ,GAIJ,SAASQ,mBAAmBC,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANAE,EAAI,IAAMD,EACNC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAEJb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,SAASC,mBAAmBH,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANAE,EAAI,IAAMD,EACNC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAEJb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,SAASE,YAAYJ,EAAOC,GAC1B,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANAE,EAAI,IAAMD,EAAS,IACfC,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAELb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,IAAIG,SAAY,WACd,IACIvX,EACAwX,EAFAC,EAAW,GAGf,IAAKzX,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxBwX,EAAMxX,EAAErB,SAAS,IACjB8Y,EAASzX,GAAoB,IAAfwX,EAAIpb,OAAe,IAAMob,EAAMA,EAG/C,OAAO,SAAUd,EAAGC,EAAG3a,GAUrB,OATI0a,EAAI,IACNA,EAAI,GAEFC,EAAI,IACNA,EAAI,GAEF3a,EAAI,IACNA,EAAI,GAEC,IAAMyb,EAASf,GAAKe,EAASd,GAAKc,EAASzb,IAnBtC,GAuBhB,SAAS0b,aACTA,UAAUxW,UAAY,CACpByW,aAAc,SAAU3S,EAAWrC,GACjC,GAAIzG,KAAK0b,KAAK5S,GAEZ,IADA,IAAI8O,EAAM5X,KAAK0b,KAAK5S,GAAW5I,OACtB4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAC5B9D,KAAK0b,KAAK5S,GAAWhF,GAAG2C,IAI9BoC,iBAAkB,SAAUC,EAAWC,GAMrC,OALK/I,KAAK0b,KAAK5S,KACb9I,KAAK0b,KAAK5S,GAAa,IAEzB9I,KAAK0b,KAAK5S,GAAW3F,KAAK4F,GAEnB,WACL/I,KAAKiJ,oBAAoBH,EAAWC,IACpC4S,KAAK3b,OAETiJ,oBAAqB,SAAUH,EAAWC,GACxC,GAAKA,GAEE,GAAI/I,KAAK0b,KAAK5S,GAAY,CAG/B,IAFA,IAAIhF,EAAI,EACJ8T,EAAM5X,KAAK0b,KAAK5S,GAAW5I,OACxB4D,EAAI8T,GACL5X,KAAK0b,KAAK5S,GAAWhF,KAAOiF,IAC9B/I,KAAK0b,KAAK5S,GAAW8S,OAAO9X,EAAG,GAC/BA,GAAK,EACL8T,GAAO,GAET9T,GAAK,EAEF9D,KAAK0b,KAAK5S,GAAW5I,SACxBF,KAAK0b,KAAK5S,GAAa,YAbzB9I,KAAK0b,KAAK5S,GAAa,OAqB7B,IAAI+S,iBAAoB,WACtB,SAASC,EAAmBtd,EAAMoZ,GAChC,IAEI3W,EAFA6C,EAAI,EACJiY,EAAM,GAEV,OAAQvd,GACN,IAAK,QACL,IAAK,SACHyC,EAAQ,EACR,MACF,QACEA,EAAQ,IAGZ,IAAK6C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAI5Y,KAAKlC,GAEX,OAAO8a,EAYT,MAAiC,oBAAtBC,mBAA4D,oBAAjBC,aAVtD,SAAiCzd,EAAMoZ,GACrC,MAAa,YAATpZ,EACK,IAAIyd,aAAarE,GACX,UAATpZ,EACG,IAAI0d,WAAWtE,GACT,WAATpZ,EACG,IAAIwd,kBAAkBpE,GAExBkE,EAAmBtd,EAAMoZ,IAK3BkE,EAhCe,GAmCxB,SAAS/D,iBAAiBH,GACxB,OAAOlR,MAAMvG,MAAM,KAAM,CAAED,OAAQ0X,IAMrC,SAASuE,SAAS3d,GAEhB,OAAO4F,SAASgY,gBAAgB3F,MAAOjY,GAKzC,SAAS6d,UAAU7d,GAEjB,OAAO4F,SAAS6F,cAAczL,GAGhC,SAAS8d,4BACTA,yBAAyBtX,UAAY,CACnCuX,mBAAoB,SAAUC,IACkB,IAA1Cxc,KAAKyc,kBAAkBC,QAAQF,KACjCxc,KAAKyc,kBAAkBtZ,KAAKqZ,GAC5Bxc,KAAK2H,UAAU4U,mBAAmBvc,MAClCA,KAAK2c,aAAc,IAGvBC,yBAA0B,WAExB,IAAI9Y,EADJ9D,KAAK6c,MAAO,EAEZ,IAAIjF,EAAM5X,KAAKyc,kBAAkBvc,OACjC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKyc,kBAAkB3Y,GAAGgZ,WACtB9c,KAAKyc,kBAAkB3Y,GAAG+Y,OAC5B7c,KAAK6c,MAAO,IAIlBE,6BAA8B,SAAUpV,GACtC3H,KAAK2H,UAAYA,EACjB3H,KAAKyc,kBAAoB,GACzBzc,KAAK6c,MAAO,EACZ7c,KAAK2c,aAAc,IAMvB,IAAIK,aAAgB,WAClB,IAAIC,EAAiB,CACnBC,EAAG,cACHC,EAAG,WACHC,EAAG,SACHC,EAAG,UACHC,EAAG,SACHC,EAAG,UACHC,EAAG,cACHC,EAAG,aACHC,EAAG,aACHC,EAAG,aACHC,GAAI,aACJC,GAAI,YACJC,GAAI,MACJC,GAAI,aACJC,GAAI,QACJC,GAAI,cAGN,OAAO,SAAU7a,GACf,OAAO6Z,EAAe7Z,IAAS,IArBf,GAwDhB8a,OAAU,WACZ,IAAIC,EAAOxgB,KAAKygB,IACZC,EAAO1gB,KAAK2gB,IACZC,EAAO5gB,KAAK6gB,IACZC,EAAO9gB,KAAK2a,MAEhB,SAASoG,IAiBP,OAhBA1e,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,GAAK,EAChBnH,KAAKmH,MAAM,IAAM,EACjBnH,KAAKmH,MAAM,IAAM,EACjBnH,KAAKmH,MAAM,IAAM,EACjBnH,KAAKmH,MAAM,IAAM,EACjBnH,KAAKmH,MAAM,IAAM,EACjBnH,KAAKmH,MAAM,IAAM,EACVnH,KAGT,SAAS2e,EAAOC,GACd,GAAc,IAAVA,EACF,OAAO5e,KAET,IAAI6e,EAAOV,EAAKS,GACZE,EAAOT,EAAKO,GAChB,OAAO5e,KAAK4Q,GAAGiO,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASE,EAAQH,GACf,GAAc,IAAVA,EACF,OAAO5e,KAET,IAAI6e,EAAOV,EAAKS,GACZE,EAAOT,EAAKO,GAChB,OAAO5e,KAAK4Q,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGiO,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASG,EAAQJ,GACf,GAAc,IAAVA,EACF,OAAO5e,KAET,IAAI6e,EAAOV,EAAKS,GACZE,EAAOT,EAAKO,GAChB,OAAO5e,KAAK4Q,GAAGiO,EAAM,EAAGC,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGD,EAAM,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASI,EAAQL,GACf,GAAc,IAAVA,EACF,OAAO5e,KAET,IAAI6e,EAAOV,EAAKS,GACZE,EAAOT,EAAKO,GAChB,OAAO5e,KAAK4Q,GAAGiO,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASK,EAAMC,EAAIC,GACjB,OAAOpf,KAAK4Q,GAAG,EAAGwO,EAAID,EAAI,EAAG,EAAG,GAGlC,SAASE,EAAKC,EAAIC,GAChB,OAAOvf,KAAKkf,MAAMX,EAAKe,GAAKf,EAAKgB,IAGnC,SAASC,EAAaF,EAAIV,GACxB,IAAIC,EAAOV,EAAKS,GACZE,EAAOT,EAAKO,GAChB,OAAO5e,KAAK4Q,GAAGiO,EAAMC,EAAM,EAAG,GAAIA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtEjO,GAAG,EAAG,EAAG,EAAG,EAAG2N,EAAKe,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACvD1O,GAAGiO,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAIlE,SAASY,EAAMN,EAAIC,EAAIM,GAIrB,OAHKA,GAAa,IAAPA,IACTA,EAAK,GAEI,IAAPP,GAAmB,IAAPC,GAAmB,IAAPM,EACnB1f,KAEFA,KAAK4Q,GAAGuO,EAAI,EAAG,EAAG,EAAG,EAAGC,EAAI,EAAG,EAAG,EAAG,EAAGM,EAAI,EAAG,EAAG,EAAG,EAAG,GAGjE,SAASC,EAAaxhB,EAAG2B,EAAGC,EAAG+a,EAAG/Z,EAAGH,EAAG6Z,EAAGH,EAAGxW,EAAGkL,EAAGP,EAAG0C,EAAGyO,EAAGC,EAAGC,EAAGpF,GAiBjE,OAhBA1a,KAAKmH,MAAM,GAAKhJ,EAChB6B,KAAKmH,MAAM,GAAKrH,EAChBE,KAAKmH,MAAM,GAAKpH,EAChBC,KAAKmH,MAAM,GAAK2T,EAChB9a,KAAKmH,MAAM,GAAKpG,EAChBf,KAAKmH,MAAM,GAAKvG,EAChBZ,KAAKmH,MAAM,GAAKsT,EAChBza,KAAKmH,MAAM,GAAKmT,EAChBta,KAAKmH,MAAM,GAAKrD,EAChB9D,KAAKmH,MAAM,GAAK6H,EAChBhP,KAAKmH,MAAM,IAAMsH,EACjBzO,KAAKmH,MAAM,IAAMgK,EACjBnR,KAAKmH,MAAM,IAAMyY,EACjB5f,KAAKmH,MAAM,IAAM0Y,EACjB7f,KAAKmH,MAAM,IAAM2Y,EACjB9f,KAAKmH,MAAM,IAAMuT,EACV1a,KAGT,SAAS+f,EAAUC,EAAIC,EAAIC,GAEzB,OADAA,EAAKA,GAAM,EACA,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EACnBlgB,KAAK4Q,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGoP,EAAIC,EAAIC,EAAI,GAE1DlgB,KAGT,SAASmgB,EAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAIC,EAAKphB,KAAKmH,MAEd,GAAW,IAAPiZ,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANAK,EAAG,IAAMA,EAAG,IAAMhB,EAAKgB,EAAG,IAAMJ,EAChCI,EAAG,IAAMA,EAAG,IAAMX,EAAKW,EAAG,IAAMH,EAChCG,EAAG,IAAMA,EAAG,IAAMN,EAAKM,EAAG,IAAMF,EAChCE,EAAG,KAAOD,EAEVnhB,KAAKqhB,qBAAsB,EACpBrhB,KAGT,IAAIshB,EAAKF,EAAG,GACRG,EAAKH,EAAG,GACRI,EAAKJ,EAAG,GACRK,EAAKL,EAAG,GACRM,EAAKN,EAAG,GACRO,EAAKP,EAAG,GACRQ,EAAKR,EAAG,GACRS,EAAKT,EAAG,GACRU,EAAKV,EAAG,GACRW,EAAKX,EAAG,GACRY,EAAKZ,EAAG,IACRa,EAAKb,EAAG,IACRc,EAAKd,EAAG,IACRe,EAAKf,EAAG,IACRgB,EAAKhB,EAAG,IACRiB,EAAKjB,EAAG,IA4BZ,OArBAA,EAAG,GAAKE,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3CI,EAAG,GAAKE,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3CG,EAAG,GAAKE,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAAKW,EAAKP,EAC3CE,EAAG,GAAKE,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAAKU,EAAKN,EAE3CC,EAAG,GAAKM,EAAKtB,EAAKuB,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC3CI,EAAG,GAAKM,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC3CG,EAAG,GAAKM,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3CE,EAAG,GAAKM,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAE3CC,EAAG,GAAKU,EAAK1B,EAAK2B,EAAKvB,EAAKwB,EAAKpB,EAAKqB,EAAKjB,EAC3CI,EAAG,GAAKU,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAAKoB,EAAKhB,EAC3CG,EAAG,IAAMU,EAAKxB,EAAKyB,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAC5CE,EAAG,IAAMU,EAAKvB,EAAKwB,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAE5CC,EAAG,IAAMc,EAAK9B,EAAK+B,EAAK3B,EAAK4B,EAAKxB,EAAKyB,EAAKrB,EAC5CI,EAAG,IAAMc,EAAK7B,EAAK8B,EAAK1B,EAAK2B,EAAKvB,EAAKwB,EAAKpB,EAC5CG,EAAG,IAAMc,EAAK5B,EAAK6B,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAC5CE,EAAG,IAAMc,EAAK3B,EAAK4B,EAAKxB,EAAKyB,EAAKrB,EAAKsB,EAAKlB,EAE5CnhB,KAAKqhB,qBAAsB,EACpBrhB,KAGT,SAASsiB,IAKP,OAJKtiB,KAAKqhB,sBACRrhB,KAAKuiB,YAAgC,IAAlBviB,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA8B,IAAlBnH,KAAKmH,MAAM,IAA+B,IAAnBnH,KAAKmH,MAAM,KAAgC,IAAnBnH,KAAKmH,MAAM,KAAgC,IAAnBnH,KAAKmH,MAAM,KAAgC,IAAnBnH,KAAKmH,MAAM,KAAgC,IAAnBnH,KAAKmH,MAAM,KAAgC,IAAnBnH,KAAKmH,MAAM,KAC5XnH,KAAKqhB,qBAAsB,GAEtBrhB,KAAKuiB,UAGd,SAASC,EAAOC,GAEd,IADA,IAAI3e,EAAI,EACDA,EAAI,IAAI,CACb,GAAI2e,EAAKtb,MAAMrD,KAAO9D,KAAKmH,MAAMrD,GAC/B,OAAO,EAETA,GAAK,EAEP,OAAO,EAGT,SAAS4e,EAAMD,GACb,IAAI3e,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2e,EAAKtb,MAAMrD,GAAK9D,KAAKmH,MAAMrD,GAE7B,OAAO2e,EAGT,SAASE,EAAexb,GACtB,IAAIrD,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB9D,KAAKmH,MAAMrD,GAAKqD,EAAMrD,GAI1B,SAAS8e,EAAaC,EAAGC,EAAGC,GAC1B,MAAO,CACLF,EAAGA,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAC1E2b,EAAGD,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAC1E4b,EAAGF,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,IAAMnH,KAAKmH,MAAM,KAO/E,SAAS6b,EAASH,EAAGC,EAAGC,GACtB,OAAOF,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAEhF,SAAS8b,EAASJ,EAAGC,EAAGC,GACtB,OAAOF,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAEhF,SAAS+b,EAASL,EAAGC,EAAGC,GACtB,OAAOF,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,IAAMnH,KAAKmH,MAAM,IAGjF,SAASgc,IACP,IAAIC,EAAcpjB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,GACzEhJ,EAAI6B,KAAKmH,MAAM,GAAKic,EACpBtjB,GAAKE,KAAKmH,MAAM,GAAKic,EACrBrjB,GAAKC,KAAKmH,MAAM,GAAKic,EACrBtI,EAAI9a,KAAKmH,MAAM,GAAKic,EACpBriB,GAAKf,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAAMnH,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,KAAOic,EACxExiB,IAAMZ,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IAAMnH,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,KAAOic,EACzEC,EAAgB,IAAInF,OAOxB,OANAmF,EAAclc,MAAM,GAAKhJ,EACzBklB,EAAclc,MAAM,GAAKrH,EACzBujB,EAAclc,MAAM,GAAKpH,EACzBsjB,EAAclc,MAAM,GAAK2T,EACzBuI,EAAclc,MAAM,IAAMpG,EAC1BsiB,EAAclc,MAAM,IAAMvG,EACnByiB,EAGT,SAASC,EAAaC,GAEpB,OADoBvjB,KAAKmjB,mBACJK,kBAAkBD,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,GAGhE,SAASE,EAAcC,GACrB,IAAI5f,EACA8T,EAAM8L,EAAIxjB,OACVyjB,EAAS,GACb,IAAK7f,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB6f,EAAO7f,GAAKwf,EAAaI,EAAI5f,IAE/B,OAAO6f,EAGT,SAASC,EAAoBC,EAAKC,EAAKC,GACrC,IAAIhI,EAAMF,iBAAiB,UAAW,GACtC,GAAI7b,KAAKsiB,aACPvG,EAAI,GAAK8H,EAAI,GACb9H,EAAI,GAAK8H,EAAI,GACb9H,EAAI,GAAK+H,EAAI,GACb/H,EAAI,GAAK+H,EAAI,GACb/H,EAAI,GAAKgI,EAAI,GACbhI,EAAI,GAAKgI,EAAI,OACR,CACL,IAAIC,EAAKhkB,KAAKmH,MAAM,GAChBkb,EAAKriB,KAAKmH,MAAM,GAChB8c,EAAKjkB,KAAKmH,MAAM,GAChB+c,EAAKlkB,KAAKmH,MAAM,GAChBgd,EAAMnkB,KAAKmH,MAAM,IACjBid,EAAMpkB,KAAKmH,MAAM,IACrB4U,EAAI,GAAK8H,EAAI,GAAKG,EAAKH,EAAI,GAAKI,EAAKE,EACrCpI,EAAI,GAAK8H,EAAI,GAAKxB,EAAKwB,EAAI,GAAKK,EAAKE,EACrCrI,EAAI,GAAK+H,EAAI,GAAKE,EAAKF,EAAI,GAAKG,EAAKE,EACrCpI,EAAI,GAAK+H,EAAI,GAAKzB,EAAKyB,EAAI,GAAKI,EAAKE,EACrCrI,EAAI,GAAKgI,EAAI,GAAKC,EAAKD,EAAI,GAAKE,EAAKE,EACrCpI,EAAI,GAAKgI,EAAI,GAAK1B,EAAK0B,EAAI,GAAKG,EAAKE,EAEvC,OAAOrI,EAGT,SAASyH,EAAkBX,EAAGC,EAAGC,GAW/B,OATI/iB,KAAKsiB,aACD,CAACO,EAAGC,EAAGC,GAEP,CACJF,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IACvE0b,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,GAAKnH,KAAKmH,MAAM,IACvE0b,EAAI7iB,KAAKmH,MAAM,GAAK2b,EAAI9iB,KAAKmH,MAAM,GAAK4b,EAAI/iB,KAAKmH,MAAM,IAAMnH,KAAKmH,MAAM,KAM9E,SAASkd,EAAwBxB,EAAGC,GAClC,GAAI9iB,KAAKsiB,aACP,OAAOO,EAAI,IAAMC,EAEnB,IAAI1B,EAAKphB,KAAKmH,MACd,OAAOxJ,KAAK2a,MAAyC,KAAlCuK,EAAIzB,EAAG,GAAK0B,EAAI1B,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAMzjB,KAAK2a,MAAyC,KAAlCuK,EAAIzB,EAAG,GAAK0B,EAAI1B,EAAG,GAAKA,EAAG,MAAc,IAG/H,SAASkD,IASP,IAJA,IAAIxgB,EAAI,EACJqD,EAAQnH,KAAKmH,MACbod,EAAW,YAERzgB,EAAI,IACTygB,GAAY9F,EAFN,IAEWtX,EAAMrD,IAFjB,IAGNygB,GAAkB,KAANzgB,EAAW,IAAM,IAC7BA,GAAK,EAEP,OAAOygB,EAGT,SAASC,EAAoB5hB,GAE3B,OAAKA,EAAM,MAAYA,EAAM,GAAOA,GAAO,MAAYA,EAAM,EACpD6b,EAFD,IAEM7b,GAFN,IAIDA,EAGT,SAAS6hB,IAKP,IAAItd,EAAQnH,KAAKmH,MAOjB,MAAO,UANEqd,EAAoBrd,EAAM,IAMX,IALfqd,EAAoBrd,EAAM,IAKA,IAJ1Bqd,EAAoBrd,EAAM,IAIW,IAHrCqd,EAAoBrd,EAAM,IAGsB,IAFhDqd,EAAoBrd,EAAM,KAEiC,IAD3Dqd,EAAoBrd,EAAM,KAC4C,IAGjF,OAAO,WACLnH,KAAK0e,MAAQA,EACb1e,KAAK2e,OAASA,EACd3e,KAAK+e,QAAUA,EACf/e,KAAKgf,QAAUA,EACfhf,KAAKif,QAAUA,EACfjf,KAAKqf,KAAOA,EACZrf,KAAKwf,aAAeA,EACpBxf,KAAKkf,MAAQA,EACblf,KAAKyf,MAAQA,EACbzf,KAAK2f,aAAeA,EACpB3f,KAAK+f,UAAYA,EACjB/f,KAAKmgB,UAAYA,EACjBngB,KAAK4iB,aAAeA,EACpB5iB,KAAKgjB,SAAWA,EAChBhjB,KAAKijB,SAAWA,EAChBjjB,KAAKkjB,SAAWA,EAChBljB,KAAKwjB,kBAAoBA,EACzBxjB,KAAK4jB,oBAAsBA,EAC3B5jB,KAAKqkB,wBAA0BA,EAC/BrkB,KAAKskB,MAAQA,EACbtkB,KAAKykB,QAAUA,EACfzkB,KAAK0iB,MAAQA,EACb1iB,KAAK2iB,eAAiBA,EACtB3iB,KAAKwiB,OAASA,EACdxiB,KAAKyjB,cAAgBA,EACrBzjB,KAAKsjB,aAAeA,EACpBtjB,KAAKmjB,iBAAmBA,EACxBnjB,KAAK4Q,GAAK5Q,KAAKmgB,UACfngB,KAAKsiB,WAAaA,EAClBtiB,KAAKuiB,WAAY,EACjBviB,KAAKqhB,qBAAsB,EAE3BrhB,KAAKmH,MAAQ0U,iBAAiB,UAAW,IACzC7b,KAAK0e,SApYK,IAiad,SAAWgG,EAAMC,GAIb,IAAIlnB,EAASuC,KACToJ,EAAQ,IAIRwb,EAAaD,EAAKxN,IAAI/N,EAHb,GAITyb,EAAeF,EAAKxN,IAAI,EAHf,IAITtN,EAA0B,EAAfgb,EACXC,EAAO1b,IAgFX,SAAS2b,EAAKpmB,GACV,IAAIic,EAAGoK,EAASrmB,EAAIuB,OAChB+kB,EAAKjlB,KAAM8D,EAAI,EAAGkL,EAAIiW,EAAGnhB,EAAImhB,EAAGjW,EAAI,EAAGkC,EAAI+T,EAAG9lB,EAAI,GAMtD,IAHK6lB,IAAUrmB,EAAM,CAACqmB,MAGflhB,EAAIsF,GACP8H,EAAEpN,GAAKA,IAEX,IAAKA,EAAI,EAAGA,EAAIsF,EAAOtF,IACnBoN,EAAEpN,GAAKoN,EAAElC,EAAI8V,EAAQ9V,EAAIrQ,EAAImF,EAAIkhB,IAAWpK,EAAI1J,EAAEpN,KAClDoN,EAAElC,GAAK4L,EAIXqK,EAAGxK,EAAI,SAASyK,GAIZ,IAFA,IAAItK,EAAGJ,EAAI,EACP1W,EAAImhB,EAAGnhB,EAAGkL,EAAIiW,EAAGjW,EAAGkC,EAAI+T,EAAG9lB,EACxB+lB,KACHtK,EAAI1J,EAAEpN,EAAIghB,EAAQhhB,EAAI,GACtB0W,EAAIA,EAAIpR,EAAQ8H,EAAE4T,GAAS5T,EAAEpN,GAAKoN,EAAElC,EAAI8V,EAAQ9V,EAAI4L,KAAQ1J,EAAElC,GAAK4L,IAGvE,OADAqK,EAAGnhB,EAAIA,EAAGmhB,EAAGjW,EAAIA,EACVwL,GAWf,SAAS2K,EAAKvkB,EAAGga,GAIb,OAHAA,EAAE9W,EAAIlD,EAAEkD,EACR8W,EAAE5L,EAAIpO,EAAEoO,EACR4L,EAAEzb,EAAIyB,EAAEzB,EAAEmM,QACHsP,EAOX,SAASwK,EAAQrf,EAAKsf,GAClB,IAAqC7I,EAAjC7X,EAAS,GAAI2gB,SAAcvf,EAC/B,GAAIsf,GAAgB,UAAPC,EACT,IAAK9I,KAAQzW,EACT,IAAMpB,EAAOxB,KAAKiiB,EAAQrf,EAAIyW,GAAO6I,EAAQ,IAAO,MAAOtkB,IAGnE,OAAQ4D,EAAOzE,OAASyE,EAAgB,UAAP2gB,EAAkBvf,EAAMA,EAAM,KAQnE,SAASwf,EAAOC,EAAM7mB,GAElB,IADA,IAA4B8mB,EAAxBC,EAAaF,EAAO,GAAWxW,EAAI,EAChCA,EAAI0W,EAAWxlB,QAClBvB,EAAImmB,EAAO9V,GACP8V,GAASW,GAAyB,GAAhB9mB,EAAImmB,EAAO9V,IAAW0W,EAAWtU,WAAWpC,KAEtE,OAAO2W,EAAShnB,GAyBpB,SAASgnB,EAASxnB,GACd,OAAOuS,OAAOkV,aAAazlB,MAAM,EAAGhC,GA3GxCwmB,EAAI,WA7DJ,SAAoBa,EAAMpe,EAAS2B,GAC/B,IAAIpK,EAAM,GAINknB,EAAYN,EAAOH,GAHvBhe,GAAuB,IAAZA,EAAoB,CAAE0e,SAAS,GAAU1e,GAAW,IAInD0e,QAAU,CAACN,EAAMG,EAASjB,IACpB,OAATc,EA+Ib,WACI,IAEI,IAAI3mB,EAAM,IAAIknB,WAAW3c,GAEzB,OADC3L,EAAOuoB,QAAUvoB,EAAOwoB,UAAUC,gBAAgBrnB,GAC5C8mB,EAAS9mB,GAClB,MAAOkC,GACL,IAAIolB,EAAU1oB,EAAO+Y,UACjB4P,EAAUD,GAAWA,EAAQC,QACjC,MAAO,EAAE,IAAIC,KAAQ5oB,EAAQ2oB,EAAS3oB,EAAO6oB,OAAQX,EAASjB,KAxJxC6B,GAAaf,EAAM,GAAI7mB,GAG7C6nB,EAAO,IAAIzB,EAAKpmB,GAIhB8nB,EAAO,WAIP,IAHA,IAAI5G,EAAI2G,EAAK/L,EA5BR,GA6BDK,EAAI8J,EACJ/B,EAAI,EACDhD,EAAIgF,GACPhF,GAAKA,EAAIgD,GAAKzZ,EACd0R,GAAK1R,EACLyZ,EAAI2D,EAAK/L,EAAE,GAEf,KAAOoF,GAAKhW,GACRgW,GAAK,EACL/E,GAAK,EACL+H,KAAO,EAEX,OAAQhD,EAAIgD,GAAK/H,GAWrB,OARA2L,EAAKC,MAAQ,WAAa,OAAmB,EAAZF,EAAK/L,EAAE,IACxCgM,EAAKE,MAAQ,WAAa,OAAOH,EAAK/L,EAAE,GAAK,YAC7CgM,EAAKG,OAASH,EAGdlB,EAAOI,EAASa,EAAKrnB,GAAIulB,IAGjBtd,EAAQyf,MAAQ9d,GACxB,SAAS0d,EAAMjB,EAAMsB,EAAcC,GAU/B,OATIA,IAEIA,EAAM5nB,GAAKgmB,EAAK4B,EAAOP,GAE3BC,EAAKM,MAAQ,WAAa,OAAO5B,EAAKqB,EAAM,MAK5CM,GAAgBnC,EAAI,OAAY8B,EAAajB,GAIrCiB,IAEZA,EACAZ,EACA,WAAYze,EAAUA,EAAQ3J,OAAUuC,MAAQ2kB,EAChDvd,EAAQ2f,QAuHhBxB,EAAOZ,EAAKpiB,SAAUmiB,GArM1B,CA8MI,GACAjN,QAGJ,IAAIuP,cAAiB,WAYnB,IAAIC,EAAK,CACTA,gBAGA,SAAyB9oB,EAAG2B,EAAGC,EAAG+a,EAAGoM,GACnC,IAAIC,EAAMD,IAAO,OAAS/oB,EAAI,IAAM2B,EAAI,IAAMC,EAAI,IAAM+a,GAAGsM,QAAQ,MAAO,KAC1E,GAAIC,EAAQF,GACV,OAAOE,EAAQF,GAEjB,IAAIG,EAAY,IAAIC,EAAa,CAACppB,EAAG2B,EAAGC,EAAG+a,IAE3C,OADAuM,EAAQF,GAAOG,EACRA,IATLD,EAAU,GAmBVG,EAAkB,GAElBC,EAAgD,oBAAjBxL,aAEnC,SAAS1N,EAAEmZ,EAAKC,GAAO,OAAO,EAAM,EAAMA,EAAM,EAAMD,EACtD,SAASnoB,EAAEmoB,EAAKC,GAAO,OAAO,EAAMA,EAAM,EAAMD,EAChD,SAAS7nB,EAAE6nB,GAAO,OAAO,EAAMA,EAG/B,SAASE,EAAWC,EAAIH,EAAKC,GAC3B,QAASpZ,EAAEmZ,EAAKC,GAAOE,EAAKtoB,EAAEmoB,EAAKC,IAAQE,EAAKhoB,EAAE6nB,IAAQG,EAI5D,SAASC,EAASD,EAAIH,EAAKC,GACzB,OAAO,EAAMpZ,EAAEmZ,EAAKC,GAAOE,EAAKA,EAAK,EAAMtoB,EAAEmoB,EAAKC,GAAOE,EAAKhoB,EAAE6nB,GAgClE,SAASH,EAAaQ,GACpB/nB,KAAKohB,GAAK2G,EACV/nB,KAAKgoB,eAAiBP,EAAwB,IAAIxL,aAlD7B,IAkD8D,IAAIvV,MAlDlE,IAmDrB1G,KAAKioB,cAAe,EAEpBjoB,KAAK9B,IAAM8B,KAAK9B,IAAIyd,KAAK3b,MAoE3B,OAjEAunB,EAAaviB,UAAY,CAEvB9G,IAAK,SAAU2kB,GACb,IAAIqF,EAAMloB,KAAKohB,GAAG,GAChB+G,EAAMnoB,KAAKohB,GAAG,GACdgH,EAAMpoB,KAAKohB,GAAG,GACdiH,EAAMroB,KAAKohB,GAAG,GAEhB,OADKphB,KAAKioB,cAAcjoB,KAAKsoB,cACzBJ,IAAQC,GAAOC,IAAQC,EAAYxF,EAE7B,IAANA,EAAgB,EACV,IAANA,EAAgB,EACb+E,EAAW5nB,KAAKuoB,UAAU1F,GAAIsF,EAAKE,IAK5CC,YAAa,WACX,IAAIJ,EAAMloB,KAAKohB,GAAG,GAChB+G,EAAMnoB,KAAKohB,GAAG,GACdgH,EAAMpoB,KAAKohB,GAAG,GACdiH,EAAMroB,KAAKohB,GAAG,GAChBphB,KAAKioB,cAAe,EAChBC,IAAQC,GAAOC,IAAQC,GAAOroB,KAAKwoB,qBAGzCA,kBAAmB,WAGjB,IAFA,IAAIN,EAAMloB,KAAKohB,GAAG,GAChBgH,EAAMpoB,KAAKohB,GAAG,GACPtd,EAAI,EAAGA,EArFG,KAqFqBA,EACtC9D,KAAKgoB,eAAelkB,GAAK8jB,EAAW9jB,EAAI0jB,EAAiBU,EAAKE,IAOlEG,UAAW,SAAUE,GASnB,IARA,IAAIP,EAAMloB,KAAKohB,GAAG,GAChBgH,EAAMpoB,KAAKohB,GAAG,GACdsH,EAAgB1oB,KAAKgoB,eAEnBW,EAAgB,EAChBC,EAAgB,EACHC,KAEVD,GAAgCF,EAAcE,IAAkBH,IAAMG,EAC3ED,GAAiBnB,EAKnB,IACIsB,EAAYH,GADJF,EAAKC,IAHfE,KAGgDF,EAAcE,EAAgB,GAAKF,EAAcE,IAC5DpB,EAEnCuB,EAAejB,EAASgB,EAAWZ,EAAKE,GAC5C,OAAIW,GApHe,KAuCvB,SAA8BN,EAAIO,EAASd,EAAKE,GAC9C,IAAK,IAAItkB,EAAI,EAAGA,EAzCM,IAyCmBA,EAAG,CAC1C,IAAImlB,EAAenB,EAASkB,EAASd,EAAKE,GAC1C,GAAqB,IAAjBa,EAAsB,OAAOD,EAEjCA,IADepB,EAAWoB,EAASd,EAAKE,GAAOK,GACzBQ,EAExB,OAAOD,EAuEIE,CAAqBT,EAAIK,EAAWZ,EAAKE,GAC3B,IAAjBW,EACGD,EAhGb,SAAyBL,EAAIU,EAAIC,EAAIlB,EAAKE,GACxC,IAAIiB,EACFC,EACAxlB,EAAI,EACN,IAEEulB,EAAWzB,EADX0B,EAAWH,GAAMC,EAAKD,GAAM,EACIjB,EAAKE,GAAOK,GAC7B,EACbW,EAAKE,EAELH,EAAKG,QAEA3rB,KAAKka,IAAIwR,GAlCQ,QAkC+BvlB,EAjC1B,IAkC/B,OAAOwlB,EAqFEC,CAAgBd,EAAIE,EAAeA,EAAgBnB,EAAiBU,EAAKE,KAI7EnB,EAzJY,GAwLrB,SAASuC,gBAAgBC,EAASC,GAChC,IAAI5lB,EAEA6lB,EADA/R,EAAM6R,EAAQvpB,OAElB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAExB,IAAK,IAAI8lB,KADTD,EAAkBF,EAAQ3lB,GAAGkB,UAEvBhH,OAAOgH,UAAU9D,eAAed,KAAKupB,EAAiBC,KAAOF,EAAY1kB,UAAU4kB,GAAQD,EAAgBC,IAKrH,SAASC,cAAcxoB,EAAQmb,GAC7B,OAAOxe,OAAO+P,yBAAyB1M,EAAQmb,GAGjD,SAASsN,oBAAoB9kB,GAC3B,SAAS+kB,KAET,OADAA,EAAc/kB,UAAYA,EACnB+kB,EAMT,SAASC,cACP,IAAIrF,EAAOhnB,KAEX,SAASssB,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAIC,EAAQN,EAAKG,EAAOF,EAAKG,EAAOF,EAAKG,EAAOD,EAAKD,EAAOE,EAAKL,EAAOE,EAAKD,EAC7E,OAAOK,GAAQ,MAASA,EAAO,KAyBjC,IAAIC,EACK,SAAU5G,EAAKC,EAAKC,EAAK2G,GAC9B,IACIjc,EACA3K,EACA8T,EACA+S,EACAC,EAEAC,EAPAC,EAAgB9S,qBAMhB+S,EAAc,EAEdja,EAAQ,GACRka,EAAY,GACZC,EAAaC,iBAAiBC,aAElC,IADAvT,EAAMmM,EAAI7jB,OACLuO,EAAI,EAAGA,EAAIqc,EAAerc,GAAK,EAAG,CAGrC,IAFAmc,EAAOnc,GAAKqc,EAAgB,GAC5BD,EAAa,EACR/mB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB6mB,EAAUzT,MAAM,EAAI0T,EAAM,GAAK/G,EAAI/f,GAAK,EAAIoT,MAAM,EAAI0T,EAAM,GAAKA,EAAO7G,EAAIjgB,GAAK,GAAK,EAAI8mB,GAAQ1T,MAAM0T,EAAM,GAAKF,EAAI5mB,GAAKoT,MAAM0T,EAAM,GAAK9G,EAAIhgB,GACjJgN,EAAMhN,GAAK6mB,EACU,OAAjBK,EAAUlnB,KACZ+mB,GAAc3T,MAAMpG,EAAMhN,GAAKknB,EAAUlnB,GAAI,IAE/CknB,EAAUlnB,GAAKgN,EAAMhN,GAEnB+mB,IAEFE,GADAF,EAAazT,OAAOyT,IAGtBI,EAAWG,SAAS3c,GAAKmc,EACzBK,EAAWI,QAAQ5c,GAAKsc,EAG1B,OADAE,EAAWF,YAAcA,EAClBE,GA0BX,SAASK,EAAWprB,GAClBF,KAAKurB,cAAgB,EACrBvrB,KAAK+nB,OAAS,IAAIrhB,MAAMxG,GAG1B,SAASsrB,EAAUC,EAAS3a,GAC1B9Q,KAAK0rB,cAAgBD,EACrBzrB,KAAK8Q,MAAQA,EAGf,IAAI6a,EAAmB,WACrB,IAAIC,EAAa,GAEjB,OAAO,SAAU/H,EAAKC,EAAKC,EAAK2G,GAC9B,IAAImB,GAAchI,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAM2G,EAAI,GAAK,IAAMA,EAAI,IAAItD,QAAQ,MAAO,KAClJ,IAAKwE,EAAWC,GAAa,CAC3B,IACIpd,EACA3K,EACA8T,EACA+S,EACAC,EAEAC,EACA/Z,EARAga,EAAgB9S,qBAMhB+S,EAAc,EAGdC,EAAY,KACG,IAAfnH,EAAI3jB,SAAiB2jB,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOmG,EAAcpG,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOkG,EAAcpG,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAK4G,EAAI,GAAI5G,EAAI,GAAK4G,EAAI,MACjOI,EAAgB,GAElB,IAAIgB,EAAa,IAAIR,EAAWR,GAEhC,IADAlT,EAAMmM,EAAI7jB,OACLuO,EAAI,EAAGA,EAAIqc,EAAerc,GAAK,EAAG,CAIrC,IAHAqC,EAAQiH,iBAAiBH,GACzBgT,EAAOnc,GAAKqc,EAAgB,GAC5BD,EAAa,EACR/mB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB6mB,EAAUzT,MAAM,EAAI0T,EAAM,GAAK/G,EAAI/f,GAAK,EAAIoT,MAAM,EAAI0T,EAAM,GAAKA,GAAQ/G,EAAI/f,GAAKigB,EAAIjgB,IAAM,GAAK,EAAI8mB,GAAQ1T,MAAM0T,EAAM,IAAM9G,EAAIhgB,GAAK4mB,EAAI5mB,IAAMoT,MAAM0T,EAAM,GAAK9G,EAAIhgB,GACvKgN,EAAMhN,GAAK6mB,EACO,OAAdK,IACFH,GAAc3T,MAAMpG,EAAMhN,GAAKknB,EAAUlnB,GAAI,IAIjDinB,GADAF,EAAazT,OAAOyT,GAEpBiB,EAAW/D,OAAOtZ,GAAK,IAAI+c,EAAUX,EAAY/Z,GACjDka,EAAYla,EAEdgb,EAAWP,cAAgBR,EAC3Ba,EAAWC,GAAcC,EAE3B,OAAOF,EAAWC,IAxCC,GA4CvB,SAASE,EAAgBnB,EAAMkB,GAC7B,IAAIV,EAAWU,EAAWV,SACtBC,EAAUS,EAAWT,QACrBzT,EAAMwT,EAASlrB,OACf8rB,EAAU1U,SAASM,EAAM,GAAKgT,GAC9BqB,EAAYrB,EAAOkB,EAAWf,YAC9BmB,EAAQ,EACZ,GAAIF,IAAYpU,EAAM,GAAiB,IAAZoU,GAAiBC,IAAcZ,EAAQW,GAChE,OAAOZ,EAASY,GAIlB,IAFA,IAAIG,EAAMd,EAAQW,GAAWC,GAAa,EAAI,EAC1C5T,GAAO,EACJA,GAOL,GANIgT,EAAQW,IAAYC,GAAaZ,EAAQW,EAAU,GAAKC,GAC1DC,GAASD,EAAYZ,EAAQW,KAAaX,EAAQW,EAAU,GAAKX,EAAQW,IACzE3T,GAAO,GAEP2T,GAAWG,EAETH,EAAU,GAAKA,GAAWpU,EAAM,EAAG,CAErC,GAAIoU,IAAYpU,EAAM,EACpB,OAAOwT,EAASY,GAElB3T,GAAO,EAGX,OAAO+S,EAASY,IAAYZ,EAASY,EAAU,GAAKZ,EAASY,IAAYE,EAW3E,IAAIE,EAAsBvQ,iBAAiB,UAAW,GA4CtD,MAAO,CACLwQ,kBA/JF,SAA2BC,GACzB,IAKIxoB,EALAyoB,EAAiBC,mBAAmBrB,aACpCsB,EAASH,EAAUvsB,EACnB2sB,EAAQJ,EAAU/R,EAClBoS,EAAQL,EAAUxM,EAClB8M,EAAQN,EAAUxoB,EAElB8T,EAAM0U,EAAUO,QAChBxB,EAAUkB,EAAelB,QACzByB,EAAc,EAClB,IAAKhpB,EAAI,EAAGA,EAAI8T,EAAM,EAAG9T,GAAK,EAC5BunB,EAAQvnB,GAAK2mB,EAAgBiC,EAAM5oB,GAAI4oB,EAAM5oB,EAAI,GAAI6oB,EAAM7oB,GAAI8oB,EAAM9oB,EAAI,IACzEgpB,GAAezB,EAAQvnB,GAAGinB,YAO5B,OALI0B,GAAU7U,IACZyT,EAAQvnB,GAAK2mB,EAAgBiC,EAAM5oB,GAAI4oB,EAAM,GAAIC,EAAM7oB,GAAI8oB,EAAM,IACjEE,GAAezB,EAAQvnB,GAAGinB,aAE5BwB,EAAeO,YAAcA,EACtBP,GA6IPQ,cA5CF,SAAuBlJ,EAAKC,EAAKC,EAAK2G,EAAKsC,EAAWC,EAASnB,GACzDkB,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAEd,IAGIlpB,EAHAopB,EAAKnB,EAAgBiB,EAAWlB,GAEhCqB,EAAKpB,EADTkB,EAAUA,EAAU,EAAI,EAAIA,EACMnB,GAE9BlU,EAAMiM,EAAI3jB,OACVktB,EAAK,EAAIF,EACTG,EAAK,EAAIF,EACTG,EAASF,EAAKA,EAAKA,EACnBG,EAAWL,EAAKE,EAAKA,EAAK,EAC1BI,EAAWN,EAAKA,EAAKE,EAAK,EAC1BK,EAASP,EAAKA,EAAKA,EAEnBQ,EAASN,EAAKA,EAAKC,EACnBM,EAAWT,EAAKE,EAAKC,EAAKD,EAAKF,EAAKG,EAAKD,EAAKA,EAAKD,EACnDS,EAAWV,EAAKA,EAAKG,EAAKD,EAAKF,EAAKC,EAAKD,EAAKE,EAAKD,EACnDU,EAASX,EAAKA,EAAKC,EAEnBW,EAASV,EAAKC,EAAKA,EACnBU,EAAWb,EAAKG,EAAKA,EAAKD,EAAKD,EAAKE,EAAKD,EAAKC,EAAKF,EACnDa,EAAWd,EAAKC,EAAKE,EAAKD,EAAKD,EAAKA,EAAKD,EAAKG,EAAKF,EACnDc,EAASf,EAAKC,EAAKA,EAEnBe,EAASb,EAAKA,EAAKA,EACnBc,EAAWhB,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,EACnDiB,EAAWjB,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,EACnDkB,EAASlB,EAAKA,EAAKA,EACvB,IAAKrpB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBsoB,EAAwB,EAAJtoB,GAAS6gB,EAAKrM,MAAoF,KAA7EgV,EAASzJ,EAAI/f,GAAKypB,EAAWxJ,EAAIjgB,GAAK0pB,EAAW9C,EAAI5mB,GAAK2pB,EAAS3J,EAAIhgB,KAAc,IAC9HsoB,EAAwB,EAAJtoB,EAAQ,GAAK6gB,EAAKrM,MAAoF,KAA7EoV,EAAS7J,EAAI/f,GAAK6pB,EAAW5J,EAAIjgB,GAAK8pB,EAAWlD,EAAI5mB,GAAK+pB,EAAS/J,EAAIhgB,KAAc,IAClIsoB,EAAwB,EAAJtoB,EAAQ,GAAK6gB,EAAKrM,MAAoF,KAA7EwV,EAASjK,EAAI/f,GAAKiqB,EAAWhK,EAAIjgB,GAAKkqB,EAAWtD,EAAI5mB,GAAKmqB,EAASnK,EAAIhgB,KAAc,IAClIsoB,EAAwB,EAAJtoB,EAAQ,GAAK6gB,EAAKrM,MAAoF,KAA7E4V,EAASrK,EAAI/f,GAAKqqB,EAAWpK,EAAIjgB,GAAKsqB,EAAW1D,EAAI5mB,GAAKuqB,EAASvK,EAAIhgB,KAAc,IAGpI,OAAOsoB,GAMPkC,kBAvDF,SAA2BzK,EAAKC,EAAKC,EAAK2G,EAAK6D,EAASzC,GACtD,IAAIqB,EAAKpB,EAAgBwC,EAASzC,GAC9BuB,EAAK,EAAIF,EAGb,MAAO,CAFGxI,EAAKrM,MAAwK,KAAjK+U,EAAKA,EAAKA,EAAKxJ,EAAI,IAAMsJ,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMpJ,EAAI,IAAMoJ,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMzC,EAAI,GAAKyC,EAAKA,EAAKA,EAAKrJ,EAAI,KAAc,IACrLa,EAAKrM,MAAwK,KAAjK+U,EAAKA,EAAKA,EAAKxJ,EAAI,IAAMsJ,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMpJ,EAAI,IAAMoJ,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMzC,EAAI,GAAKyC,EAAKA,EAAKA,EAAKrJ,EAAI,KAAc,MAoD/L6H,gBAAiBA,EACjB1B,cAAeA,EACfuE,cA/NF,SAAuBtE,EAAIC,EAAIsE,EAAIrE,EAAIC,EAAIqE,EAAIpE,EAAIC,EAAIoE,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,OAAO1E,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAE3C,IAGIqE,EAHAC,EAAQlK,EAAKtN,KAAKsN,EAAKxN,IAAIiT,EAAKF,EAAI,GAAKvF,EAAKxN,IAAIkT,EAAKF,EAAI,GAAKxF,EAAKxN,IAAIuX,EAAKD,EAAI,IAClFK,EAAQnK,EAAKtN,KAAKsN,EAAKxN,IAAImT,EAAKJ,EAAI,GAAKvF,EAAKxN,IAAIoT,EAAKJ,EAAI,GAAKxF,EAAKxN,IAAIwX,EAAKF,EAAI,IAClFM,EAAQpK,EAAKtN,KAAKsN,EAAKxN,IAAImT,EAAKF,EAAI,GAAKzF,EAAKxN,IAAIoT,EAAKF,EAAI,GAAK1F,EAAKxN,IAAIwX,EAAKD,EAAI,IAatF,OATIE,EAFAC,EAAQC,EACND,EAAQE,EACCF,EAAQC,EAAQC,EAEhBA,EAAQD,EAAQD,EAEpBE,EAAQD,EACNC,EAAQD,EAAQD,EAEhBC,EAAQD,EAAQE,IAEV,MAAUH,EAAW,QAhF3C,WAGC,IAFA,IAAII,EAAW,EACXC,EAAU,CAAC,KAAM,MAAO,SAAU,KAC7BpM,EAAI,EAAGA,EAAIoM,EAAQ/uB,SAAWxC,OAAOwxB,wBAAyBrM,EACrEnlB,OAAOwxB,sBAAwBxxB,OAAOuxB,EAAQpM,GAAK,yBACnDnlB,OAAOyxB,qBAAuBzxB,OAAOuxB,EAAQpM,GAAK,yBAA2BnlB,OAAOuxB,EAAQpM,GAAK,+BAE9FnlB,OAAOwxB,wBACVxxB,OAAOwxB,sBAAwB,SAAUnmB,GACvC,IAAIqmB,GAAW,IAAI/I,MAAOgJ,UACtBC,EAAa3xB,KAAK6R,IAAI,EAAG,IAAM4f,EAAWJ,IAC1C3sB,EAAKktB,YAAW,WAClBxmB,EAASqmB,EAAWE,KAEtBA,GAEA,OADAN,EAAWI,EAAWE,EACfjtB,IAGN3E,OAAOyxB,uBACVzxB,OAAOyxB,qBAAuB,SAAU9sB,GACtCmtB,aAAantB,KArBlB,GAgSD,IAAIotB,IAAMzF,cAIV,SAAS0F,sBAGP,SAASC,EAAeC,EAAQC,EAAOC,GACrC,IAAIC,EACAjsB,EAEAkL,EACAghB,EACAvhB,EACAwhB,EAiVgBC,EArVhBtY,EAAMgY,EAAO1vB,OAKjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAExB,GAAK,OADLisB,EAAYH,EAAO9rB,MACSisB,EAAUI,UAAW,CAK/C,GAJAJ,EAAUI,WAAY,EAClBJ,EAAUK,KACZR,EAAO9rB,EAAI,GAAGusB,GAAKN,EAAUK,IAE3BL,EAAUO,QAAS,CACrB,IAAIC,EAAYR,EAAUS,gBAE1B,IADAR,EAAOO,EAAUrwB,OACZ8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB,GAAIuhB,EAAUvhB,GAAGuU,GAAG9U,EAAE3K,EACpB2sB,EAA6BF,EAAUvhB,GAAGuU,GAAG9U,QAG7C,IADAwhB,EAAOM,EAAUvhB,GAAGuU,GAAG9U,EAAEvO,OACpBuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACrB8hB,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAGyC,GACvBuf,EAA6BF,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAGyC,EAAE,IAElDqf,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAG1N,GACvB0vB,EAA6BF,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAG1N,EAAE,IAMzC,IAAjBgvB,EAAU9P,IACZ8P,EAAUH,OAASc,EAAeX,EAAUY,MAAOd,GACnDF,EAAeI,EAAUH,OAAQC,EAAOC,IACd,IAAjBC,EAAU9P,GACnB2Q,EAAeb,EAAUc,QACC,IAAjBd,EAAU9P,KAkTD,KADJiQ,EAhTDH,GAiTVnV,EAAEzc,EAAE+B,QAAkB,MAAOgwB,EAAKtV,EAAEF,IAC3CwV,EAAKY,aAAc,KA5SvB,SAASJ,EAAeruB,EAAIwtB,GAG1B,IAFA,IAAI/rB,EAAI,EACJ8T,EAAMiY,EAAM3vB,OACT4D,EAAI8T,GAAK,CACd,GAAIiY,EAAM/rB,GAAGzB,KAAOA,EAClB,OAAKwtB,EAAM/rB,GAAG8rB,OAAOmB,OAIdre,KAAKse,MAAMte,KAAKE,UAAUid,EAAM/rB,GAAG8rB,UAHxCC,EAAM/rB,GAAG8rB,OAAOmB,QAAS,EAClBlB,EAAM/rB,GAAG8rB,QAIpB9rB,GAAK,EAEP,OAAO,KAGT,SAAS8sB,EAAe7U,GACtB,IAAIjY,EAEAkL,EACAghB,EACJ,IAAKlsB,EAHKiY,EAAI7b,OAGC,EAAG4D,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAdiY,EAAIjY,GAAGmc,GACT,GAAIlE,EAAIjY,GAAGmtB,GAAGxiB,EAAE3K,EACd2sB,EAA6B1U,EAAIjY,GAAGmtB,GAAGxiB,QAGvC,IADAuhB,EAAOjU,EAAIjY,GAAGmtB,GAAGxiB,EAAEvO,OACd8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACrB+M,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGkC,GACjBuf,EAA6B1U,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGkC,EAAE,IAE5C6K,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGjO,GACjB0vB,EAA6B1U,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGjO,EAAE,QAI7B,OAAdgb,EAAIjY,GAAGmc,IAChB2Q,EAAe7U,EAAIjY,GAAG3C,IAK5B,SAASsvB,EAA6BS,GACpC,IAAIptB,EACA8T,EAAMsZ,EAAKptB,EAAE5D,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBotB,EAAKptB,EAAEA,GAAG,IAAMotB,EAAK3W,EAAEzW,GAAG,GAC1BotB,EAAKptB,EAAEA,GAAG,IAAMotB,EAAK3W,EAAEzW,GAAG,GAC1BotB,EAAKpR,EAAEhc,GAAG,IAAMotB,EAAK3W,EAAEzW,GAAG,GAC1BotB,EAAKpR,EAAEhc,GAAG,IAAMotB,EAAK3W,EAAEzW,GAAG,GAI9B,SAASqtB,EAAaC,EAASC,GAC7B,IAAIC,EAAcD,EAAoBA,EAAkB/tB,MAAM,KAAO,CAAC,IAAK,IAAK,KAChF,OAAI8tB,EAAQ,GAAKE,EAAY,MAEvBA,EAAY,GAAKF,EAAQ,MAG3BA,EAAQ,GAAKE,EAAY,MAEvBA,EAAY,GAAKF,EAAQ,MAG3BA,EAAQ,GAAKE,EAAY,MAEvBA,EAAY,GAAKF,EAAQ,KAGxB,OAGT,IAAIG,EAAa,WACf,IAAIC,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASC,EAAgBC,GACvB,IAAIC,EAAeD,EAAU9W,EAAEE,EAC/B4W,EAAU9W,EAAEE,EAAI,CACdrM,EAAG,CACD,CACEyC,EAAGygB,EACH/W,EAAG,KAMX,SAASgX,EAAchC,GACrB,IAAI9rB,EACA8T,EAAMgY,EAAO1vB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACH,IAAjB8rB,EAAO9rB,GAAGmc,IACZwR,EAAgB7B,EAAO9rB,IAK7B,OAAO,SAAU0D,GACf,GAAI2pB,EAAaK,EAAgBhqB,EAAc+S,KAC7CqX,EAAcpqB,EAAcooB,QACxBpoB,EAAcqqB,QAAQ,CACxB,IAAI/tB,EACA8T,EAAMpQ,EAAcqqB,OAAO3xB,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB0D,EAAcqqB,OAAO/tB,GAAG8rB,QAC1BgC,EAAcpqB,EAAcqqB,OAAO/tB,GAAG8rB,UAjCjC,GAyCbkC,EAAc,WAChB,IAAIN,EAAiB,CAAC,EAAG,EAAG,IAC5B,OAAO,SAAUhqB,GACf,GAAIA,EAAcuqB,QAAUZ,EAAaK,EAAgBhqB,EAAc+S,GAAI,CACzE,IAAIzW,EAEAkL,EACAghB,EACAgC,EACAC,EAJAra,EAAMpQ,EAAcuqB,MAAM7xB,OAK9B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAI0D,EAAcuqB,MAAMjuB,GAAGosB,MAAQ1oB,EAAcuqB,MAAMjuB,GAAGosB,KAAKW,OAI7D,IAFAb,GADAiC,EAAQzqB,EAAcuqB,MAAMjuB,GAAGosB,KAAKW,OAAO,GAAG1vB,IACjCjB,OAER8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjB,EAAWC,EAAMjjB,GAAGiiB,GAAGxiB,GACTyjB,cACZzB,EAA6BwB,EAAMjjB,GAAGiiB,GAAGxiB,GACzCujB,EAASE,aAAc,KAnBnB,GA4BdC,EAAe,WACjB,IAAIX,EAAiB,CAAC,EAAG,EAAG,GAE5B,SAASY,EAAcvB,GACrB,IAAI/sB,EAEAkL,EACAghB,EAFApY,EAAMiZ,EAAO3wB,OAGjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAqB,OAAjB+sB,EAAO/sB,GAAGmc,GACZmS,EAAcvB,EAAO/sB,GAAG3C,SACnB,GAAqB,OAAjB0vB,EAAO/sB,GAAGmc,IAAgC,OAAjB4Q,EAAO/sB,GAAGmc,GAC5C,GAAI4Q,EAAO/sB,GAAG/D,EAAE0O,GAAKoiB,EAAO/sB,GAAG/D,EAAE0O,EAAE,GAAG3K,EAEpC,IADAksB,EAAOa,EAAO/sB,GAAG/D,EAAE0O,EAAEvO,OAChB8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACrB6hB,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGkC,IACnB2f,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGkC,EAAE,IAAM,IACzB2f,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGkC,EAAE,IAAM,IACzB2f,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGkC,EAAE,IAAM,IACzB2f,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGkC,EAAE,IAAM,KAEvB2f,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGjO,IACnB8vB,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGjO,EAAE,IAAM,IACzB8vB,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGjO,EAAE,IAAM,IACzB8vB,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGjO,EAAE,IAAM,IACzB8vB,EAAO/sB,GAAG/D,EAAE0O,EAAEO,GAAGjO,EAAE,IAAM,UAI7B8vB,EAAO/sB,GAAG/D,EAAE0O,EAAE,IAAM,IACpBoiB,EAAO/sB,GAAG/D,EAAE0O,EAAE,IAAM,IACpBoiB,EAAO/sB,GAAG/D,EAAE0O,EAAE,IAAM,IACpBoiB,EAAO/sB,GAAG/D,EAAE0O,EAAE,IAAM,IAM5B,SAASmjB,EAAchC,GACrB,IAAI9rB,EACA8T,EAAMgY,EAAO1vB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACH,IAAjB8rB,EAAO9rB,GAAGmc,IACZmS,EAAcxC,EAAO9rB,GAAG+sB,QAK9B,OAAO,SAAUrpB,GACf,GAAI2pB,EAAaK,EAAgBhqB,EAAc+S,KAC7CqX,EAAcpqB,EAAcooB,QACxBpoB,EAAcqqB,QAAQ,CACxB,IAAI/tB,EACA8T,EAAMpQ,EAAcqqB,OAAO3xB,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB0D,EAAcqqB,OAAO/tB,GAAG8rB,QAC1BgC,EAAcpqB,EAAcqqB,OAAO/tB,GAAG8rB,UAxD/B,GAgEfyC,EAAe,WACjB,IAAIb,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASc,EAAsBvW,GAC7B,IAAIjY,EAEAkL,EACAghB,EACJ,IAAKlsB,EAHKiY,EAAI7b,OAGC,EAAG4D,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAdiY,EAAIjY,GAAGmc,GACT,GAAIlE,EAAIjY,GAAGmtB,GAAGxiB,EAAE3K,EACdiY,EAAIjY,GAAGmtB,GAAGxiB,EAAE1O,EAAIgc,EAAIjY,GAAG2oB,YAGvB,IADAuD,EAAOjU,EAAIjY,GAAGmtB,GAAGxiB,EAAEvO,OACd8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACrB+M,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGkC,IACjB6K,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGkC,EAAE,GAAGnR,EAAIgc,EAAIjY,GAAG2oB,QAE7B1Q,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGjO,IACjBgb,EAAIjY,GAAGmtB,GAAGxiB,EAAEO,GAAGjO,EAAE,GAAGhB,EAAIgc,EAAIjY,GAAG2oB,YAId,OAAd1Q,EAAIjY,GAAGmc,IAChBqS,EAAsBvW,EAAIjY,GAAG3C,IAKnC,SAASywB,EAAchC,GACrB,IAAIG,EACAjsB,EAEAkL,EACAghB,EACAvhB,EACAwhB,EAJArY,EAAMgY,EAAO1vB,OAKjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAE3B,IADAisB,EAAYH,EAAO9rB,IACLwsB,QAAS,CACrB,IAAIC,EAAYR,EAAUS,gBAE1B,IADAR,EAAOO,EAAUrwB,OACZ8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB,GAAIuhB,EAAUvhB,GAAGuU,GAAG9U,EAAE3K,EACpBysB,EAAUvhB,GAAGuU,GAAG9U,EAAE1O,EAAIwwB,EAAUvhB,GAAGujB,QAGnC,IADAtC,EAAOM,EAAUvhB,GAAGuU,GAAG9U,EAAEvO,OACpBuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACrB8hB,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAGyC,IACvBqf,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAGyC,EAAE,GAAGnR,EAAIwwB,EAAUvhB,GAAGujB,IAEzChC,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAG1N,IACvBwvB,EAAUvhB,GAAGuU,GAAG9U,EAAEA,GAAG1N,EAAE,GAAGhB,EAAIwwB,EAAUvhB,GAAGujB,IAMhC,IAAjBxC,EAAU9P,IACZqS,EAAsBvC,EAAUc,SAKtC,OAAO,SAAUrpB,GACf,GAAI2pB,EAAaK,EAAgBhqB,EAAc+S,KAC7CqX,EAAcpqB,EAAcooB,QACxBpoB,EAAcqqB,QAAQ,CACxB,IAAI/tB,EACA8T,EAAMpQ,EAAcqqB,OAAO3xB,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB0D,EAAcqqB,OAAO/tB,GAAG8rB,QAC1BgC,EAAcpqB,EAAcqqB,OAAO/tB,GAAG8rB,UAxE/B,GAkGnB,IAAI4C,EAAW,CACfA,aAnBA,SAAsBhrB,EAAesoB,GAC/BtoB,EAAcirB,aAGlBN,EAAY3qB,GACZ+pB,EAAU/pB,GACVsqB,EAAWtqB,GACX6qB,EAAY7qB,GACZmoB,EAAenoB,EAAcooB,OAAQpoB,EAAcqqB,OAAQ/B,GAC3DtoB,EAAcirB,YAAa,KAgB7B,OALAD,EAASL,YAAcA,EACvBK,EAASV,WAAaA,EACtBU,EAASH,YAAcA,EACvBG,EAAS7C,eAAiBA,EAEnB6C,EAGT,IAAIE,YAAchD,sBAIlB,SAASiD,kBAAkBC,GAOzB,IANA,IAAIC,EAASD,EAASE,OAASF,EAASE,OAAOxvB,MAAM,KAAO,GAExDyvB,EAAU,SACZD,EAAS,SACPlb,EAAMib,EAAO3yB,OAER4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAE5B,OADY+uB,EAAO/uB,GAAGkvB,eAEpB,IAAK,SACHF,EAAS,SACT,MACF,IAAK,OACHC,EAAU,MACV,MACF,IAAK,QACHA,EAAU,MACV,MACF,IAAK,SACHA,EAAU,MACV,MACF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MACF,IAAK,QACL,IAAK,OACHA,EAAU,MAOhB,MAAO,CACLhvB,MAAO+uB,EACPG,OAAQL,EAASG,SAAWA,GAOhC,IAAIG,YAAe,WACjB,IACIC,EAAY,CACd/d,EAAG,EACHge,KAAM,EACNvC,OAAQ,IAENwC,EAAqB,GAmBzB,SAASC,EAAUC,EAAMC,GACvB,IAAIC,EAAapX,UAAU,QAE3BoX,EAAWC,aAAa,eAAe,GACvCD,EAAW1vB,MAAM4vB,WAAaH,EAC9B,IAAII,EAAOvX,UAAU,QAErBuX,EAAKC,UAAY,iBAEjBJ,EAAW1vB,MAAM0U,SAAW,WAC5Bgb,EAAW1vB,MAAM4U,KAAO,WACxB8a,EAAW1vB,MAAM2U,IAAM,WAEvB+a,EAAW1vB,MAAM+vB,SAAW,QAE5BL,EAAW1vB,MAAMgwB,YAAc,SAC/BN,EAAW1vB,MAAMiwB,UAAY,SAC7BP,EAAW1vB,MAAMkwB,WAAa,SAC9BR,EAAW1vB,MAAMmwB,cAAgB,IACjCT,EAAWxvB,YAAY2vB,GACvBxvB,SAAS+vB,KAAKlwB,YAAYwvB,GAG1B,IAAIrqB,EAAQwqB,EAAKQ,YAEjB,OADAR,EAAK7vB,MAAM4vB,WArCb,SAAyBJ,GACvB,IACIzvB,EADAuwB,EAAcd,EAAKjwB,MAAM,KAEzBsU,EAAMyc,EAAYn0B,OAClBo0B,EAAkB,GACtB,IAAKxwB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACD,eAAnBuwB,EAAYvwB,IAA0C,cAAnBuwB,EAAYvwB,IACjDwwB,EAAgBnxB,KAAKkxB,EAAYvwB,IAGrC,OAAOwwB,EAAgB5lB,KAAK,KA2BJ6lB,CAAgBhB,GAAQ,KAAOC,EAChD,CAAEI,KAAMA,EAAMxe,EAAGhM,EAAOorB,OAAQf,GA0CzC,SAASgB,EAAa7vB,EAAKguB,GACzB,IAAI8B,EAAUvY,SAAS,QACvBuY,EAAQ3wB,MAAM+vB,SAAW,QAGzB,IAAIa,EAAYhC,kBAAkBC,GAelC,OAdA8B,EAAQhB,aAAa,cAAed,EAASgC,SAC7CF,EAAQhB,aAAa,aAAciB,EAAU5wB,OAC7C2wB,EAAQhB,aAAa,cAAeiB,EAAU1B,QAC9CyB,EAAQG,YAAc,IAClBjC,EAASkC,QACXJ,EAAQ3wB,MAAM4vB,WAAa,UAC3Be,EAAQhB,aAAa,QAASd,EAASkC,SAEvCJ,EAAQ3wB,MAAM4vB,WAAaf,EAASgC,QAEtChwB,EAAIX,YAAYywB,GACIrY,UAAU,UAAU0Y,WAAW,MACrCxB,KAAOX,EAASG,QAAU,IAAMH,EAASE,OAAS,UAAYF,EAASgC,QAE9EF,EAxGTrB,EAAqBA,EAAmB7wB,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC9F,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAgS9D,IAAIwyB,EAAO,WACTh1B,KAAKi1B,MAAQ,GACbj1B,KAAK+xB,MAAQ,KACb/xB,KAAKk1B,cAAgB,EACrBl1B,KAAKm1B,UAAW,EAChBn1B,KAAKo1B,SAAU,EACfp1B,KAAKq1B,SAAWhP,KAAKiP,MACrBt1B,KAAKu1B,kBAAoBv1B,KAAKw1B,YAAY7Z,KAAK3b,MAC/CA,KAAKy1B,uBAAyBz1B,KAAK01B,iBAAiB/Z,KAAK3b,OAiB3D,OAdAg1B,EAAKW,0BAnBL,WACE,OAAOtC,GA8BT2B,EAAKhwB,UAVe,CAClB4wB,SAzGF,SAAkB7D,GAChB,GAAKA,EAAL,CAMA,IAAIjuB,EAHC9D,KAAK+xB,QACR/xB,KAAK+xB,MAAQ,IAGf,IACI/iB,EAEA6mB,EAHAje,EAAMma,EAAM7xB,OAEZ8vB,EAAOhwB,KAAK+xB,MAAM7xB,OAEtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAG3B,IAFAkL,EAAI,EACJ6mB,GAAQ,EACD7mB,EAAIghB,GACLhwB,KAAK+xB,MAAM/iB,GAAGjL,QAAUguB,EAAMjuB,GAAGC,OAAS/D,KAAK+xB,MAAM/iB,GAAG4lB,UAAY7C,EAAMjuB,GAAG8wB,SAAW50B,KAAK+xB,MAAM/iB,GAAG8mB,KAAO/D,EAAMjuB,GAAGgyB,KACxHD,GAAQ,GAEV7mB,GAAK,EAEF6mB,IACH71B,KAAK+xB,MAAM5uB,KAAK4uB,EAAMjuB,IACtBksB,GAAQ,MAmFZ+F,SAtMF,SAAkBnD,EAAUoD,GAC1B,GAAKpD,EAAL,CAIA,GAAI5yB,KAAK+xB,MAGP,OAFA/xB,KAAKm1B,UAAW,OAChBn1B,KAAKi1B,MAAQrC,EAASqD,MAIxB,IACInyB,EADAoyB,EAAUtD,EAASqD,KAEnBre,EAAMse,EAAQh2B,OACdi2B,EAAgBve,EACpB,IAAK9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAC3B,IACIsyB,EACApnB,EAFAqnB,GAAiB,EAMrB,GAHAH,EAAQpyB,GAAGwyB,QAAS,EACpBJ,EAAQpyB,GAAGyyB,SAAWjD,EAAU4C,EAAQpyB,GAAG8wB,QAAS,aACpDsB,EAAQpyB,GAAG0yB,SAAWlD,EAAU4C,EAAQpyB,GAAG8wB,QAAS,cAC/CsB,EAAQpyB,GAAG2yB,OAGT,GAA2B,MAAvBP,EAAQpyB,GAAG4yB,SAAyC,IAAtBR,EAAQpyB,GAAG6yB,QAOlD,IANAP,EAAiBhyB,SAASwyB,iBAAiB,kCAAoCV,EAAQpyB,GAAG8wB,QAAU,qCAAuCsB,EAAQpyB,GAAG8wB,QAAU,OAE7I10B,OAAS,IAC1Bm2B,GAAiB,GAGfA,EAAgB,CAClB,IAAInlB,EAAImL,UAAU,SAClBnL,EAAEwiB,aAAa,YAAawC,EAAQpyB,GAAG4yB,SACvCxlB,EAAEwiB,aAAa,WAAYwC,EAAQpyB,GAAG6yB,QACtCzlB,EAAEwiB,aAAa,WAAYwC,EAAQpyB,GAAG8wB,SACtC1jB,EAAE1S,KAAO,WACT0S,EAAE2iB,UAAY,4BAA8BqC,EAAQpyB,GAAG8wB,QAAU,mCAAqCsB,EAAQpyB,GAAG2yB,MAAQ,OACzHT,EAAK/xB,YAAYiN,SAEd,GAA2B,MAAvBglB,EAAQpyB,GAAG4yB,SAAyC,IAAtBR,EAAQpyB,GAAG6yB,OAAc,CAGhE,IAFAP,EAAiBhyB,SAASwyB,iBAAiB,2CAEtC5nB,EAAI,EAAGA,EAAIonB,EAAel2B,OAAQ8O,GAAK,GACgB,IAAtDonB,EAAepnB,GAAG6nB,KAAKna,QAAQwZ,EAAQpyB,GAAG2yB,SAE5CJ,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIllB,EAAIkL,UAAU,QAClBlL,EAAEuiB,aAAa,YAAawC,EAAQpyB,GAAG4yB,SACvCvlB,EAAEuiB,aAAa,WAAYwC,EAAQpyB,GAAG6yB,QACtCxlB,EAAE3S,KAAO,WACT2S,EAAE2lB,IAAM,aACR3lB,EAAE0lB,KAAOX,EAAQpyB,GAAG2yB,MACpBryB,SAAS+vB,KAAKlwB,YAAYkN,SAEvB,GAA2B,MAAvB+kB,EAAQpyB,GAAG4yB,SAAyC,IAAtBR,EAAQpyB,GAAG6yB,OAAc,CAGhE,IAFAP,EAAiBhyB,SAASwyB,iBAAiB,+CAEtC5nB,EAAI,EAAGA,EAAIonB,EAAel2B,OAAQ8O,GAAK,EACtCknB,EAAQpyB,GAAG2yB,QAAUL,EAAepnB,GAAG9K,MAEzCmyB,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIU,EAAK1a,UAAU,QACnB0a,EAAGrD,aAAa,YAAawC,EAAQpyB,GAAG4yB,SACxCK,EAAGrD,aAAa,WAAYwC,EAAQpyB,GAAG6yB,QACvCI,EAAGrD,aAAa,MAAO,cACvBqD,EAAGrD,aAAa,OAAQwC,EAAQpyB,GAAG2yB,OACnCT,EAAK/xB,YAAY8yB,UArDnBb,EAAQpyB,GAAGwyB,QAAS,EACpBH,GAAiB,EAuDnBD,EAAQpyB,GAAGkzB,OAASvC,EAAauB,EAAME,EAAQpyB,IAC/CoyB,EAAQpyB,GAAGmzB,MAAQ,GACnBj3B,KAAKi1B,MAAM9xB,KAAK+yB,EAAQpyB,IAEJ,IAAlBqyB,EACFn2B,KAAKm1B,UAAW,EAIhB5F,WAAWvvB,KAAK01B,iBAAiB/Z,KAAK3b,MAAO,UAtF7CA,KAAKm1B,UAAW,GAqMlB+B,YA/EF,SAAqBC,EAAMpzB,EAAOwvB,GAGhC,IAFA,IAAIzvB,EAAI,EACJ8T,EAAM5X,KAAK+xB,MAAM7xB,OACd4D,EAAI8T,GAAK,CACd,GAAI5X,KAAK+xB,MAAMjuB,GAAGgyB,KAAOqB,GAAQn3B,KAAK+xB,MAAMjuB,GAAGC,QAAUA,GAAS/D,KAAK+xB,MAAMjuB,GAAG8wB,UAAYrB,EAC1F,OAAOvzB,KAAK+xB,MAAMjuB,GAEpBA,GAAK,EAUP,OARsB,kBAATqzB,GAA4C,KAAvBA,EAAK/lB,WAAW,KAAe+lB,IACtDC,SACAA,QAAQC,OACPr3B,KAAKo1B,UAEfp1B,KAAKo1B,SAAU,EACfgC,QAAQC,KAAK,oDAAqDF,EAAMpzB,EAAOwvB,IAE1EJ,GA+DPmE,cArCF,SAAuB74B,GAGrB,IAFA,IAAIqF,EAAI,EACJ8T,EAAM5X,KAAKi1B,MAAM/0B,OACd4D,EAAI8T,GAAK,CACd,GAAI5X,KAAKi1B,MAAMnxB,GAAGyzB,QAAU94B,EAC1B,OAAOuB,KAAKi1B,MAAMnxB,GAEpBA,GAAK,EAEP,OAAO9D,KAAKi1B,MAAM,IA6BlBuC,YA7DF,SAAqBL,EAAMM,EAAUrE,GACnC,IAAIR,EAAW5yB,KAAKs3B,cAAcG,GAC9B5oB,EAAQsoB,EAAK/lB,WAAW,GAC5B,IAAKwhB,EAASqE,MAAMpoB,EAAQ,GAAI,CAC9B,IAAI6lB,EAAU9B,EAASoE,OAKvB,GAAa,MAATG,EAAc,CAChBzC,EAAQG,YAAc,IAAMsC,EAAO,IACnC,IAAIO,EAAahD,EAAQiD,wBACzBjD,EAAQG,YAAc,KACtB,IAAI+C,EAAalD,EAAQiD,wBACzB/E,EAASqE,MAAMpoB,EAAQ,IAAM6oB,EAAaE,GAAc,SAExDlD,EAAQG,YAAcsC,EACtBvE,EAASqE,MAAMpoB,EAAQ,GAAM6lB,EAAQiD,wBAA2B,IAGpE,OAAO/E,EAASqE,MAAMpoB,EAAQ,GAAKukB,GA0CnCsC,iBAxQF,WACE,IAAI5xB,EAEA8vB,EACAxe,EAFAwC,EAAM5X,KAAKi1B,MAAM/0B,OAGjB23B,EAAcjgB,EAClB,IAAK9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB9D,KAAKi1B,MAAMnxB,GAAGwyB,OAChBuB,GAAe,EACoB,MAA1B73B,KAAKi1B,MAAMnxB,GAAG4yB,SAA4C,IAAzB12B,KAAKi1B,MAAMnxB,GAAG6yB,OACxD32B,KAAKi1B,MAAMnxB,GAAGwyB,QAAS,GAEvB1C,EAAO5zB,KAAKi1B,MAAMnxB,GAAGyyB,SAAS3C,KAC9Bxe,EAAIpV,KAAKi1B,MAAMnxB,GAAGyyB,SAASnhB,EACvBwe,EAAKQ,cAAgBhf,GACvByiB,GAAe,EACf73B,KAAKi1B,MAAMnxB,GAAGwyB,QAAS,IAEvB1C,EAAO5zB,KAAKi1B,MAAMnxB,GAAG0yB,SAAS5C,KAC9Bxe,EAAIpV,KAAKi1B,MAAMnxB,GAAG0yB,SAASphB,EACvBwe,EAAKQ,cAAgBhf,IACvByiB,GAAe,EACf73B,KAAKi1B,MAAMnxB,GAAGwyB,QAAS,IAGvBt2B,KAAKi1B,MAAMnxB,GAAGwyB,SAChBt2B,KAAKi1B,MAAMnxB,GAAG0yB,SAAShC,OAAOf,WAAWqE,YAAY93B,KAAKi1B,MAAMnxB,GAAG0yB,SAAShC,QAC5Ex0B,KAAKi1B,MAAMnxB,GAAGyyB,SAAS/B,OAAOf,WAAWqE,YAAY93B,KAAKi1B,MAAMnxB,GAAGyyB,SAAS/B,UAK9D,IAAhBqD,GAAqBxR,KAAKiP,MAAQt1B,KAAKq1B,SArFxB,IAsFjB9F,WAAWvvB,KAAKy1B,uBAAwB,IAExClG,WAAWvvB,KAAKu1B,kBAAmB,KAsOrCC,YAxBF,WACEx1B,KAAKm1B,UAAW,IA4BXH,EApUU,GA0Uf+C,gBAAmB,WACrB,IAAIC,EAAYrhB,oBACZshB,EAAUt6B,KAAKka,IAEnB,SAASqgB,EAAiBC,EAAUC,GAClC,IACIC,EADAC,EAAat4B,KAAKs4B,WAEA,qBAAlBt4B,KAAKu4B,WACPF,EAAWxc,iBAAiB,UAAW7b,KAAKw4B,GAAGt4B,SASjD,IAPA,IAIIu4B,EACAC,EAwBAjqB,EACAwhB,EACArF,EACAoF,EACAhhB,EACA2pB,EAlCAC,EAAiBR,EAAQS,UACzB/0B,EAAI80B,EACJhhB,EAAM5X,KAAK84B,UAAU54B,OAAS,EAC9BmY,GAAO,EAIJA,GAAM,CAGX,GAFAogB,EAAUz4B,KAAK84B,UAAUh1B,GACzB40B,EAAc14B,KAAK84B,UAAUh1B,EAAI,GAC7BA,IAAM8T,EAAM,GAAKugB,GAAYO,EAAY9d,EAAI0d,EAAY,CACvDG,EAAQne,IACVme,EAAUC,GAEZE,EAAiB,EACjB,MAEF,GAAKF,EAAY9d,EAAI0d,EAAcH,EAAU,CAC3CS,EAAiB90B,EACjB,MAEEA,EAAI8T,EAAM,EACZ9T,GAAK,GAEL80B,EAAiB,EACjBvgB,GAAO,GAUX,IAEI0gB,EAFAC,EAAcN,EAAY9d,EAAI0d,EAC9BW,EAAUR,EAAQ7d,EAAI0d,EAE1B,GAAIG,EAAQS,GAAI,CACTT,EAAQ3M,aACX2M,EAAQ3M,WAAa2D,IAAI9D,gBAAgB8M,EAAQvnB,EAAGwnB,EAAYxnB,GAAKunB,EAAQ13B,EAAG03B,EAAQS,GAAIT,EAAQU,KAEtG,IAAIrN,EAAa2M,EAAQ3M,WACzB,GAAIqM,GAAYa,GAAeb,EAAWc,EAAS,CACjD,IAAIG,EAAMjB,GAAYa,EAAclN,EAAW/D,OAAO7nB,OAAS,EAAI,EAEnE,IADA+vB,EAAOnE,EAAW/D,OAAOqR,GAAKtoB,MAAM5Q,OAC/BuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzB4pB,EAAS5pB,GAAKqd,EAAW/D,OAAOqR,GAAKtoB,MAAMrC,OAGxC,CACDgqB,EAAQY,OACVV,EAAMF,EAAQY,QAEdV,EAAM3R,cAAcsS,gBAAgBb,EAAQ3Y,EAAE+C,EAAG4V,EAAQ3Y,EAAEgD,EAAG2V,EAAQ30B,EAAE+e,EAAG4V,EAAQ30B,EAAEgf,EAAG2V,EAAQ5Y,GAAG3hB,IACnGu6B,EAAQY,OAASV,GAEnB/N,EAAO+N,GAAKR,EAAWc,IAAYD,EAAcC,IACjD,IAEIM,EAFAC,EAAiB1N,EAAWP,cAAgBX,EAG5CG,EAAeqN,EAAQqB,UAAYtB,GAAYC,EAAQsB,qBAAuB51B,EAAKs0B,EAAQuB,iBAAmB,EAIlH,IAHA3qB,EAAKopB,EAAQqB,UAAYtB,GAAYC,EAAQsB,qBAAuB51B,EAAKs0B,EAAQwB,WAAa,EAC9FvhB,GAAO,EACP2X,EAAOlE,EAAW/D,OAAO7nB,OAClBmY,GAAM,CAEX,GADA0S,GAAee,EAAW/D,OAAO/Y,GAAG0c,cACb,IAAnB8N,GAAiC,IAAT5O,GAAc5b,IAAM8c,EAAW/D,OAAO7nB,OAAS,EAAG,CAE5E,IADA+vB,EAAOnE,EAAW/D,OAAO/Y,GAAG8B,MAAM5Q,OAC7BuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzB4pB,EAAS5pB,GAAKqd,EAAW/D,OAAO/Y,GAAG8B,MAAMrC,GAE3C,MACK,GAAI+qB,GAAkBzO,GAAeyO,EAAiBzO,EAAce,EAAW/D,OAAO/Y,EAAI,GAAG0c,cAAe,CAGjH,IAFA6N,GAAeC,EAAiBzO,GAAee,EAAW/D,OAAO/Y,EAAI,GAAG0c,cACxEuE,EAAOnE,EAAW/D,OAAO/Y,GAAG8B,MAAM5Q,OAC7BuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzB4pB,EAAS5pB,GAAKqd,EAAW/D,OAAO/Y,GAAG8B,MAAMrC,IAAMqd,EAAW/D,OAAO/Y,EAAI,GAAG8B,MAAMrC,GAAKqd,EAAW/D,OAAO/Y,GAAG8B,MAAMrC,IAAM8qB,EAEtH,MAEEvqB,EAAIghB,EAAO,EACbhhB,GAAK,EAELqJ,GAAO,EAGX+f,EAAQwB,WAAa5qB,EACrBopB,EAAQuB,iBAAmB5O,EAAce,EAAW/D,OAAO/Y,GAAG0c,cAC9D0M,EAAQsB,mBAAqB51B,OAE1B,CACL,IAAI+1B,EACAC,EACAC,EACAC,EACAC,EAGJ,GAFAriB,EAAM6gB,EAAQvnB,EAAEhR,OAChB64B,EAAWL,EAAYxnB,GAAKunB,EAAQ13B,EAChCf,KAAKk6B,IAAoB,IAAdzB,EAAQne,EACjB6d,GAAYa,GACdX,EAAS,GAAKU,EAAS,GACvBV,EAAS,GAAKU,EAAS,GACvBV,EAAS,GAAKU,EAAS,IACdZ,GAAYc,GACrBZ,EAAS,GAAKI,EAAQvnB,EAAE,GACxBmnB,EAAS,GAAKI,EAAQvnB,EAAE,GACxBmnB,EAAS,GAAKI,EAAQvnB,EAAE,IAqGhC,SAA2BrS,EAAKs7B,GAC9B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAU78B,KAAK88B,MAAM,EAAIJ,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GAC3EI,EAAW/8B,KAAKg9B,KAAK,EAAIP,EAAKC,EAAK,EAAIC,EAAKC,GAC5CK,EAAOj9B,KAAK88B,MAAM,EAAIL,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5Ez7B,EAAI,GAAK27B,EAAUviB,UACnBpZ,EAAI,GAAK67B,EAAWziB,UACpBpZ,EAAI,GAAK+7B,EAAO3iB,UA1GV4iB,CAAkBxC,EAsD1B,SAAel6B,EAAG2B,EAAG8a,GACnB,IAUIkgB,EACAC,EACAC,EACAC,EACAC,EAdAr8B,EAAM,GACNygB,EAAKnhB,EAAE,GACPohB,EAAKphB,EAAE,GACPg9B,EAAKh9B,EAAE,GACPi9B,EAAKj9B,EAAE,GACPk9B,EAAKv7B,EAAE,GACPw7B,EAAKx7B,EAAE,GACPy7B,EAAKz7B,EAAE,GACP07B,EAAK17B,EAAE,GA8BX,OAtBAi7B,EAAQzb,EAAK+b,EAAK9b,EAAK+b,EAAKH,EAAKI,EAAKH,EAAKI,GAC/B,IACVT,GAASA,EACTM,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAEH,EAAMT,EAAS,MAClBD,EAAQn9B,KAAK89B,KAAKV,GAClBC,EAAQr9B,KAAK2gB,IAAIwc,GACjBG,EAASt9B,KAAK2gB,KAAK,EAAM1D,GAAKkgB,GAASE,EACvCE,EAASv9B,KAAK2gB,IAAI1D,EAAIkgB,GAASE,IAE/BC,EAAS,EAAMrgB,EACfsgB,EAAStgB,GAEX/b,EAAI,GAAKo8B,EAAS3b,EAAK4b,EAASG,EAChCx8B,EAAI,GAAKo8B,EAAS1b,EAAK2b,EAASI,EAChCz8B,EAAI,GAAKo8B,EAASE,EAAKD,EAASK,EAChC18B,EAAI,GAAKo8B,EAASG,EAAKF,EAASM,EAEzB38B,EA7F2B68B,CAHZC,EAAiBlD,EAAQvnB,GAC3ByqB,EAAiB5C,IACnBZ,EAAWc,IAAYD,EAAcC,UAInD,IAAKn1B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACN,IAAd20B,EAAQne,IACN6d,GAAYa,EACdpO,EAAO,EACEuN,EAAWc,EACpBrO,EAAO,GAEH6N,EAAQ3Y,EAAE+C,EAAEnX,cAAgBhF,OACzB+xB,EAAQY,SACXZ,EAAQY,OAAS,IAEdZ,EAAQY,OAAOv1B,GAQlB60B,EAAMF,EAAQY,OAAOv1B,IAPrB+1B,EAAkC,qBAAnBpB,EAAQ3Y,EAAE+C,EAAE/e,GAAsB20B,EAAQ3Y,EAAE+C,EAAE,GAAK4V,EAAQ3Y,EAAE+C,EAAE/e,GAC9Eg2B,EAAkC,qBAAnBrB,EAAQ3Y,EAAEgD,EAAEhf,GAAsB20B,EAAQ3Y,EAAEgD,EAAE,GAAK2V,EAAQ3Y,EAAEgD,EAAEhf,GAC9Ei2B,EAAiC,qBAAnBtB,EAAQ30B,EAAE+e,EAAE/e,GAAsB20B,EAAQ30B,EAAE+e,EAAE,GAAK4V,EAAQ30B,EAAE+e,EAAE/e,GAC7Ek2B,EAAiC,qBAAnBvB,EAAQ30B,EAAEgf,EAAEhf,GAAsB20B,EAAQ30B,EAAEgf,EAAE,GAAK2V,EAAQ30B,EAAEgf,EAAEhf,GAC7E60B,EAAM3R,cAAcsS,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAK97B,IAC1Du6B,EAAQY,OAAOv1B,GAAK60B,IAIZF,EAAQY,OAQlBV,EAAMF,EAAQY,QAPdQ,EAAOpB,EAAQ3Y,EAAE+C,EACjBiX,EAAOrB,EAAQ3Y,EAAEgD,EACjBiX,EAAMtB,EAAQ30B,EAAE+e,EAChBmX,EAAMvB,EAAQ30B,EAAEgf,EAChB6V,EAAM3R,cAAcsS,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAK97B,IAC1Du6B,EAAQY,OAASV,GAInB/N,EAAO+N,GAAKR,EAAWc,IAAYD,EAAcC,MAIrDF,EAAWL,EAAYxnB,GAAKunB,EAAQ13B,EACpCk5B,EAAyB,IAAdxB,EAAQne,EAAUme,EAAQvnB,EAAEpN,GAAK20B,EAAQvnB,EAAEpN,IAAMi1B,EAASj1B,GAAK20B,EAAQvnB,EAAEpN,IAAM8mB,EAEpE,qBAAlB5qB,KAAKu4B,SACPF,EAASv0B,GAAKm2B,EAEd5B,EAAW4B,EAMnB,OADA7B,EAAQS,UAAYD,EACbP,EA2DT,SAASsD,EAAiBjuB,GACxB,IAAI8sB,EAAU9sB,EAAO,GAAKuK,UACtByiB,EAAWhtB,EAAO,GAAKuK,UACvB2iB,EAAOltB,EAAO,GAAKuK,UACnBuJ,EAAK7jB,KAAKygB,IAAIoc,EAAU,GACxBla,EAAK3iB,KAAKygB,IAAIsc,EAAW,GACzBkB,EAAKj+B,KAAKygB,IAAIwc,EAAO,GACrBiB,EAAKl+B,KAAK2gB,IAAIkc,EAAU,GACxBsB,EAAKn+B,KAAK2gB,IAAIoc,EAAW,GACzBqB,EAAKp+B,KAAK2gB,IAAIsc,EAAO,GAMzB,MAAO,CAJCiB,EAAKC,EAAKF,EAAKpa,EAAKlB,EAAKyb,EACzBF,EAAKvb,EAAKsb,EAAKpa,EAAKsa,EAAKC,EACzBva,EAAKsa,EAAKF,EAAKC,EAAKvb,EAAKyb,EAHzBva,EAAKlB,EAAKsb,EAAKC,EAAKC,EAAKC,GAQnC,SAASC,IACP,IAAI7D,EAAWn4B,KAAKi8B,KAAKC,cAAgBl8B,KAAKs4B,WAC1CjD,EAAWr1B,KAAK84B,UAAU,GAAGle,EAAI5a,KAAKs4B,WACtC6D,EAAUn8B,KAAK84B,UAAU94B,KAAK84B,UAAU54B,OAAS,GAAG0a,EAAI5a,KAAKs4B,WACjE,KAAMH,IAAan4B,KAAKo8B,SAAS3C,WAAcz5B,KAAKo8B,SAAS3C,YAAczB,IAAeh4B,KAAKo8B,SAAS3C,WAAa0C,GAAWhE,GAAYgE,GAAan8B,KAAKo8B,SAAS3C,UAAYpE,GAAY8C,EAAW9C,IAAc,CAClNr1B,KAAKo8B,SAAS3C,WAAatB,IAC7Bn4B,KAAKo8B,SAAS1C,oBAAsB,EACpC15B,KAAKo8B,SAASvD,UAAY,GAG5B,IAAIwD,EAAer8B,KAAKk4B,iBAAiBC,EAAUn4B,KAAKo8B,UACxDp8B,KAAKw4B,GAAK6D,EAGZ,OADAr8B,KAAKo8B,SAAS3C,UAAYtB,EACnBn4B,KAAKw4B,GAGd,SAAS8D,EAAU15B,GACjB,IAAI25B,EACJ,GAAsB,mBAAlBv8B,KAAKu4B,SACPgE,EAAkB35B,EAAM5C,KAAKw8B,KACzBvE,EAAQj4B,KAAKua,EAAIgiB,GAAmB,OACtCv8B,KAAKua,EAAIgiB,EACTv8B,KAAK6c,MAAO,QAKd,IAFA,IAAI/Y,EAAI,EACJ8T,EAAM5X,KAAKua,EAAEra,OACV4D,EAAI8T,GACT2kB,EAAkB35B,EAAIkB,GAAK9D,KAAKw8B,KAC5BvE,EAAQj4B,KAAKua,EAAEzW,GAAKy4B,GAAmB,OACzCv8B,KAAKua,EAAEzW,GAAKy4B,EACZv8B,KAAK6c,MAAO,GAEd/Y,GAAK,EAKX,SAAS24B,IACP,GAAIz8B,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,SAAY58B,KAAK68B,gBAAgB38B,OAG3E,GAAIF,KAAK88B,KACP98B,KAAKs8B,UAAUt8B,KAAKw4B,QADtB,CAMA,IAAI10B,EAFJ9D,KAAK88B,MAAO,EACZ98B,KAAK6c,KAAO7c,KAAK+8B,cAEjB,IAAInlB,EAAM5X,KAAK68B,gBAAgB38B,OAC3B88B,EAAah9B,KAAKi9B,GAAKj9B,KAAKw4B,GAAKx4B,KAAKkwB,KAAKzhB,EAC/C,IAAK3K,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBk5B,EAAah9B,KAAK68B,gBAAgB/4B,GAAGk5B,GAEvCh9B,KAAKs8B,UAAUU,GACfh9B,KAAK+8B,eAAgB,EACrB/8B,KAAK88B,MAAO,EACZ98B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,SAGtC,SAASM,EAAUC,GACjBn9B,KAAK68B,gBAAgB15B,KAAKg6B,GAC1Bn9B,KAAK2H,UAAU4U,mBAAmBvc,MAGpC,SAASo9B,EAAcV,EAAMxM,EAAMsM,EAAM70B,GACvC3H,KAAKu4B,SAAW,iBAChBv4B,KAAKw8B,KAAOA,GAAQ,EACpBx8B,KAAKkwB,KAAOA,EACZlwB,KAAKua,EAAIiiB,EAAOtM,EAAKzhB,EAAI+tB,EAAOtM,EAAKzhB,EACrCzO,KAAKw4B,GAAKtI,EAAKzhB,EACfzO,KAAK6c,MAAO,EACZ7c,KAAK08B,KAAOA,EACZ18B,KAAK2H,UAAYA,EACjB3H,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACVj9B,KAAKq9B,IAAM,EACXr9B,KAAK68B,gBAAkB,GACvB78B,KAAK+8B,eAAgB,EACrB/8B,KAAK8c,SAAW2f,EAChBz8B,KAAKs8B,UAAYA,EACjBt8B,KAAKk9B,UAAYA,EAGnB,SAASI,EAAyBZ,EAAMxM,EAAMsM,EAAM70B,GAWlD,IAAI7D,EAVJ9D,KAAKu4B,SAAW,mBAChBv4B,KAAKw8B,KAAOA,GAAQ,EACpBx8B,KAAKkwB,KAAOA,EACZlwB,KAAK6c,MAAO,EACZ7c,KAAK08B,KAAOA,EACZ18B,KAAK2H,UAAYA,EACjB3H,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACVj9B,KAAK48B,SAAW,EAEhB,IAAIhlB,EAAMsY,EAAKzhB,EAAEvO,OAIjB,IAHAF,KAAKua,EAAIsB,iBAAiB,UAAWjE,GACrC5X,KAAKw4B,GAAK3c,iBAAiB,UAAWjE,GACtC5X,KAAKq9B,IAAMxhB,iBAAiB,UAAWjE,GAClC9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKua,EAAEzW,GAAKosB,EAAKzhB,EAAE3K,GAAK9D,KAAKw8B,KAC7Bx8B,KAAKw4B,GAAG10B,GAAKosB,EAAKzhB,EAAE3K,GAEtB9D,KAAK+8B,eAAgB,EACrB/8B,KAAK68B,gBAAkB,GACvB78B,KAAK8c,SAAW2f,EAChBz8B,KAAKs8B,UAAYA,EACjBt8B,KAAKk9B,UAAYA,EAGnB,SAASK,EAAuBb,EAAMxM,EAAMsM,EAAM70B,GAChD3H,KAAKu4B,SAAW,iBAChBv4B,KAAK84B,UAAY5I,EAAKzhB,EACtBzO,KAAKs4B,WAAaoE,EAAKxM,KAAKsN,GAC5Bx9B,KAAK48B,SAAW,EAChB58B,KAAKo8B,SAAW,CACd3C,UAAWzB,EAAWa,UAAW,EAAG53B,MAAO,EAAGy4B,oBAAqB,GAErE15B,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACVj9B,KAAKkwB,KAAOA,EACZlwB,KAAKw8B,KAAOA,GAAQ,EACpBx8B,KAAK08B,KAAOA,EACZ18B,KAAK2H,UAAYA,EACjB3H,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAKua,EAAIyd,EACTh4B,KAAKw4B,GAAKR,EACVh4B,KAAK+8B,eAAgB,EACrB/8B,KAAK8c,SAAW2f,EAChBz8B,KAAKs8B,UAAYA,EACjBt8B,KAAKk4B,iBAAmBA,EACxBl4B,KAAK68B,gBAAkB,CAACb,EAAsBrgB,KAAK3b,OACnDA,KAAKk9B,UAAYA,EAGnB,SAASO,EAAkCf,EAAMxM,EAAMsM,EAAM70B,GAE3D,IAAI7D,EADJ9D,KAAKu4B,SAAW,mBAEhB,IACIrnB,EACAnQ,EACAm4B,EACAC,EAJAvhB,EAAMsY,EAAKzhB,EAAEvO,OAKjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAM,EAAG9T,GAAK,EACxBosB,EAAKzhB,EAAE3K,GAAGo1B,IAAMhJ,EAAKzhB,EAAE3K,GAAGoN,GAAKgf,EAAKzhB,EAAE3K,EAAI,IAAMosB,EAAKzhB,EAAE3K,EAAI,GAAGoN,IAChEA,EAAIgf,EAAKzhB,EAAE3K,GAAGoN,EACdnQ,EAAImvB,EAAKzhB,EAAE3K,EAAI,GAAGoN,EAClBgoB,EAAKhJ,EAAKzhB,EAAE3K,GAAGo1B,GACfC,EAAKjJ,EAAKzhB,EAAE3K,GAAGq1B,IACG,IAAbjoB,EAAEhR,SAAkBgR,EAAE,KAAOnQ,EAAE,IAAMmQ,EAAE,KAAOnQ,EAAE,KAAO0uB,IAAIxF,cAAc/Y,EAAE,GAAIA,EAAE,GAAInQ,EAAE,GAAIA,EAAE,GAAImQ,EAAE,GAAKgoB,EAAG,GAAIhoB,EAAE,GAAKgoB,EAAG,KAAOzJ,IAAIxF,cAAc/Y,EAAE,GAAIA,EAAE,GAAInQ,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKo4B,EAAG,GAAIp4B,EAAE,GAAKo4B,EAAG,KAAsB,IAAbjoB,EAAEhR,SAAkBgR,EAAE,KAAOnQ,EAAE,IAAMmQ,EAAE,KAAOnQ,EAAE,IAAMmQ,EAAE,KAAOnQ,EAAE,KAAO0uB,IAAIjB,cAActd,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAInQ,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAImQ,EAAE,GAAKgoB,EAAG,GAAIhoB,EAAE,GAAKgoB,EAAG,GAAIhoB,EAAE,GAAKgoB,EAAG,KAAOzJ,IAAIjB,cAActd,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAInQ,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKo4B,EAAG,GAAIp4B,EAAE,GAAKo4B,EAAG,GAAIp4B,EAAE,GAAKo4B,EAAG,OACrdjJ,EAAKzhB,EAAE3K,GAAGo1B,GAAK,KACfhJ,EAAKzhB,EAAE3K,GAAGq1B,GAAK,MAEbjoB,EAAE,KAAOnQ,EAAE,IAAMmQ,EAAE,KAAOnQ,EAAE,IAAgB,IAAVm4B,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAVC,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAbjoB,EAAEhR,QAAiBgR,EAAE,KAAOnQ,EAAE,IAAgB,IAAVm4B,EAAG,IAAsB,IAAVC,EAAG,MACxDjJ,EAAKzhB,EAAE3K,GAAGo1B,GAAK,KACfhJ,EAAKzhB,EAAE3K,GAAGq1B,GAAK,OAKvBn5B,KAAK68B,gBAAkB,CAACb,EAAsBrgB,KAAK3b,OACnDA,KAAKkwB,KAAOA,EACZlwB,KAAK84B,UAAY5I,EAAKzhB,EACtBzO,KAAKs4B,WAAaoE,EAAKxM,KAAKsN,GAC5Bx9B,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACVj9B,KAAK+8B,eAAgB,EACrB/8B,KAAKw8B,KAAOA,GAAQ,EACpBx8B,KAAK08B,KAAOA,EACZ18B,KAAK2H,UAAYA,EACjB3H,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAK8c,SAAW2f,EAChBz8B,KAAKs8B,UAAYA,EACjBt8B,KAAKk4B,iBAAmBA,EACxBl4B,KAAK48B,SAAW,EAChB,IAAIc,EAASxN,EAAKzhB,EAAE,GAAGyC,EAAEhR,OAGzB,IAFAF,KAAKua,EAAIsB,iBAAiB,UAAW6hB,GACrC19B,KAAKw4B,GAAK3c,iBAAiB,UAAW6hB,GACjC55B,EAAI,EAAGA,EAAI45B,EAAQ55B,GAAK,EAC3B9D,KAAKua,EAAEzW,GAAKk0B,EACZh4B,KAAKw4B,GAAG10B,GAAKk0B,EAEfh4B,KAAKo8B,SAAW,CAAE3C,UAAWzB,EAAWa,UAAW,EAAG53B,MAAO4a,iBAAiB,UAAW6hB,IACzF19B,KAAKk9B,UAAYA,EA8BnB,MAHS,CACPS,QAzBF,SAAiBjB,EAAMxM,EAAM1xB,EAAMg+B,EAAM70B,GACvC,IAAI+S,EACJ,GAAKwV,EAAKzhB,EAAEvO,OAEL,GAA2B,kBAAfgwB,EAAKzhB,EAAE,GACxBiM,EAAI,IAAI4iB,EAAyBZ,EAAMxM,EAAMsM,EAAM70B,QAEnD,OAAQnJ,GACN,KAAK,EACHkc,EAAI,IAAI6iB,EAAuBb,EAAMxM,EAAMsM,EAAM70B,GACjD,MACF,KAAK,EACH+S,EAAI,IAAI+iB,EAAkCf,EAAMxM,EAAMsM,EAAM70B,QAThE+S,EAAI,IAAI0iB,EAAcV,EAAMxM,EAAMsM,EAAM70B,GAkB1C,OAHI+S,EAAEmiB,gBAAgB38B,QACpByH,EAAU4U,mBAAmB7B,GAExBA,IA5cY,GAwdnBkjB,yBAA4B,WAC9B,IAAIC,EAAgB,CAAC,EAAG,GAiKxB,SAASC,EAAkBpB,EAAMxM,EAAMvoB,GAmBrC,GAlBA3H,KAAK08B,KAAOA,EACZ18B,KAAK48B,SAAW,EAChB58B,KAAKu4B,SAAW,YAChBv4B,KAAKkwB,KAAOA,EACZlwB,KAAKua,EAAI,IAAI2D,OAEble,KAAK+9B,IAAM,IAAI7f,OACfle,KAAKg+B,uBAAyB,EAC9Bh+B,KAAK+c,6BAA6BpV,GAAa+0B,GAC3CxM,EAAKxV,GAAKwV,EAAKxV,EAAExJ,GACnBlR,KAAKsC,GAAKy1B,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAEmI,EAAG,EAAG,EAAG7iB,MACxDA,KAAKi+B,GAAKlG,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAEoI,EAAG,EAAG,EAAG9iB,MACpDkwB,EAAKxV,EAAEqI,IACT/iB,KAAKk+B,GAAKnG,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAEqI,EAAG,EAAG,EAAG/iB,QAG1DA,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,GAAK,CAAEjM,EAAG,CAAC,EAAG,EAAG,IAAM,EAAG,EAAGzO,MAEvEkwB,EAAKiO,GAAI,CAIX,GAHAn+B,KAAKm+B,GAAKpG,gBAAgB4F,QAAQjB,EAAMxM,EAAKiO,GAAI,EAAGlmB,UAAWjY,MAC/DA,KAAKo+B,GAAKrG,gBAAgB4F,QAAQjB,EAAMxM,EAAKkO,GAAI,EAAGnmB,UAAWjY,MAC/DA,KAAKq+B,GAAKtG,gBAAgB4F,QAAQjB,EAAMxM,EAAKmO,GAAI,EAAGpmB,UAAWjY,MAC3DkwB,EAAKoO,GAAG7vB,EAAE,GAAG0qB,GAAI,CACnB,IAAIr1B,EACA8T,EAAMsY,EAAKoO,GAAG7vB,EAAEvO,OACpB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBosB,EAAKoO,GAAG7vB,EAAE3K,GAAGo1B,GAAK,KAClBhJ,EAAKoO,GAAG7vB,EAAE3K,GAAGq1B,GAAK,KAGtBn5B,KAAKs+B,GAAKvG,gBAAgB4F,QAAQjB,EAAMxM,EAAKoO,GAAI,EAAGrmB,UAAWjY,MAE/DA,KAAKs+B,GAAGpE,IAAK,OAEbl6B,KAAKwa,EAAIud,gBAAgB4F,QAAQjB,EAAMxM,EAAK1V,GAAK,CAAE/L,EAAG,GAAK,EAAGwJ,UAAWjY,MAEvEkwB,EAAKqO,KACPv+B,KAAKu+B,GAAKxG,gBAAgB4F,QAAQjB,EAAMxM,EAAKqO,GAAI,EAAGtmB,UAAWjY,MAC/DA,KAAKw+B,GAAKzG,gBAAgB4F,QAAQjB,EAAMxM,EAAKsO,GAAI,EAAGvmB,UAAWjY,OAEjEA,KAAK7B,EAAI45B,gBAAgB4F,QAAQjB,EAAMxM,EAAK/xB,GAAK,CAAEsQ,EAAG,CAAC,EAAG,EAAG,IAAM,EAAG,EAAGzO,MACzEA,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,GAAK,CAAEzC,EAAG,CAAC,IAAK,IAAK,MAAQ,EAAG,IAAMzO,MAE9EkwB,EAAKpQ,EACP9f,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,IAAM4c,GAExD18B,KAAK8f,EAAI,CAAEjD,MAAM,EAAOtC,EAAG,GAE7Bva,KAAKy+B,UAAW,EACXz+B,KAAKyc,kBAAkBvc,QAC1BF,KAAK8c,UAAS,GAmBlB,OAfAghB,EAAkB94B,UAAY,CAC5B05B,cAvNF,SAAuBC,GACrB,IAAI9hB,EAAO7c,KAAK6c,KAChB7c,KAAK4c,2BACL5c,KAAK6c,KAAO7c,KAAK6c,MAAQA,EACrB7c,KAAK7B,GACPwgC,EAAI5e,WAAW/f,KAAK7B,EAAEoc,EAAE,IAAKva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAK7B,EAAEoc,EAAE,IAEjDva,KAAKkR,GACPytB,EAAIlf,MAAMzf,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,IAE3Cva,KAAKu+B,IACPI,EAAInf,cAAcxf,KAAKu+B,GAAGhkB,EAAGva,KAAKw+B,GAAGjkB,GAEnCva,KAAKwa,EACPmkB,EAAIhgB,QAAQ3e,KAAKwa,EAAED,GAEnBokB,EAAI1f,SAASjf,KAAKq+B,GAAG9jB,GAAGyE,QAAQhf,KAAKo+B,GAAG7jB,GAAGwE,QAAQ/e,KAAKm+B,GAAG5jB,GAAG0E,SAASjf,KAAKs+B,GAAG/jB,EAAE,IAC9EyE,QAAQhf,KAAKs+B,GAAG/jB,EAAE,IAClBwE,QAAQ/e,KAAKs+B,GAAG/jB,EAAE,IAEnBva,KAAKkwB,KAAKxV,EAAExJ,EACVlR,KAAKkwB,KAAKxV,EAAEqI,EACd4b,EAAI5e,UAAU/f,KAAKsC,GAAGiY,EAAGva,KAAKi+B,GAAG1jB,GAAIva,KAAKk+B,GAAG3jB,GAE7CokB,EAAI5e,UAAU/f,KAAKsC,GAAGiY,EAAGva,KAAKi+B,GAAG1jB,EAAG,GAGtCokB,EAAI5e,UAAU/f,KAAK0a,EAAEH,EAAE,GAAIva,KAAK0a,EAAEH,EAAE,IAAKva,KAAK0a,EAAEH,EAAE,KA6LpDuC,SA1LF,SAAqB8hB,GACnB,GAAI5+B,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,QAA1C,CAUA,GAPI58B,KAAKy+B,WACPz+B,KAAK6+B,qBACL7+B,KAAKy+B,UAAW,GAGlBz+B,KAAK4c,2BAED5c,KAAK6c,MAAQ+hB,EAAa,CAC5B,IAAIE,EAkBJ,GAjBA9+B,KAAKua,EAAEoI,eAAe3iB,KAAK+9B,IAAI52B,OAC3BnH,KAAKg+B,uBAAyB,GAChCh+B,KAAKua,EAAEwF,WAAW/f,KAAK7B,EAAEoc,EAAE,IAAKva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAK7B,EAAEoc,EAAE,IAEpDva,KAAKg+B,uBAAyB,GAChCh+B,KAAKua,EAAEkF,MAAMzf,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,IAE9Cva,KAAKu+B,IAAMv+B,KAAKg+B,uBAAyB,GAC3Ch+B,KAAKua,EAAEiF,cAAcxf,KAAKu+B,GAAGhkB,EAAGva,KAAKw+B,GAAGjkB,GAEtCva,KAAKwa,GAAKxa,KAAKg+B,uBAAyB,EAC1Ch+B,KAAKua,EAAEoE,QAAQ3e,KAAKwa,EAAED,IACZva,KAAKwa,GAAKxa,KAAKg+B,uBAAyB,GAClDh+B,KAAKua,EAAE0E,SAASjf,KAAKq+B,GAAG9jB,GAAGyE,QAAQhf,KAAKo+B,GAAG7jB,GAAGwE,QAAQ/e,KAAKm+B,GAAG5jB,GAAG0E,SAASjf,KAAKs+B,GAAG/jB,EAAE,IACjFyE,QAAQhf,KAAKs+B,GAAG/jB,EAAE,IAClBwE,QAAQ/e,KAAKs+B,GAAG/jB,EAAE,IAEnBva,KAAK++B,aAAc,CACrB,IAAIC,EACAC,EAEJ,GADAH,EAAY9+B,KAAK08B,KAAKC,WAAWmC,UAC7B9+B,KAAK0a,GAAK1a,KAAK0a,EAAEoe,WAAa94B,KAAK0a,EAAEwkB,eACnCl/B,KAAK0a,EAAE0hB,SAAS3C,UAAYz5B,KAAK0a,EAAE4d,YAAct4B,KAAK0a,EAAEoe,UAAU,GAAGle,GACvEokB,EAAKh/B,KAAK0a,EAAEwkB,gBAAgBl/B,KAAK0a,EAAEoe,UAAU,GAAGle,EAAI,KAAQkkB,EAAW,GACvEG,EAAKj/B,KAAK0a,EAAEwkB,eAAel/B,KAAK0a,EAAEoe,UAAU,GAAGle,EAAIkkB,EAAW,IACrD9+B,KAAK0a,EAAE0hB,SAAS3C,UAAYz5B,KAAK0a,EAAE4d,YAAct4B,KAAK0a,EAAEoe,UAAU94B,KAAK0a,EAAEoe,UAAU54B,OAAS,GAAG0a,GACxGokB,EAAKh/B,KAAK0a,EAAEwkB,eAAgBl/B,KAAK0a,EAAEoe,UAAU94B,KAAK0a,EAAEoe,UAAU54B,OAAS,GAAG0a,EAAIkkB,EAAY,GAC1FG,EAAKj/B,KAAK0a,EAAEwkB,gBAAgBl/B,KAAK0a,EAAEoe,UAAU94B,KAAK0a,EAAEoe,UAAU54B,OAAS,GAAG0a,EAAI,KAAQkkB,EAAW,KAEjGE,EAAKh/B,KAAK0a,EAAE8d,GACZyG,EAAKj/B,KAAK0a,EAAEwkB,gBAAgBl/B,KAAK0a,EAAE0hB,SAAS3C,UAAYz5B,KAAK0a,EAAE4d,WAAa,KAAQwG,EAAW9+B,KAAK0a,EAAE4d,kBAEnG,GAAIt4B,KAAKsC,IAAMtC,KAAKsC,GAAGw2B,WAAa94B,KAAKi+B,GAAGnF,WAAa94B,KAAKsC,GAAG48B,gBAAkBl/B,KAAKi+B,GAAGiB,eAAgB,CAChHF,EAAK,GACLC,EAAK,GACL,IAAI38B,EAAKtC,KAAKsC,GACV27B,EAAKj+B,KAAKi+B,GACV37B,EAAG85B,SAAS3C,UAAYn3B,EAAGg2B,YAAch2B,EAAGw2B,UAAU,GAAGle,GAC3DokB,EAAG,GAAK18B,EAAG48B,gBAAgB58B,EAAGw2B,UAAU,GAAGle,EAAI,KAAQkkB,EAAW,GAClEE,EAAG,GAAKf,EAAGiB,gBAAgBjB,EAAGnF,UAAU,GAAGle,EAAI,KAAQkkB,EAAW,GAClEG,EAAG,GAAK38B,EAAG48B,eAAgB58B,EAAGw2B,UAAU,GAAGle,EAAKkkB,EAAW,GAC3DG,EAAG,GAAKhB,EAAGiB,eAAgBjB,EAAGnF,UAAU,GAAGle,EAAKkkB,EAAW,IAClDx8B,EAAG85B,SAAS3C,UAAYn3B,EAAGg2B,YAAch2B,EAAGw2B,UAAUx2B,EAAGw2B,UAAU54B,OAAS,GAAG0a,GACxFokB,EAAG,GAAK18B,EAAG48B,eAAgB58B,EAAGw2B,UAAUx2B,EAAGw2B,UAAU54B,OAAS,GAAG0a,EAAIkkB,EAAY,GACjFE,EAAG,GAAKf,EAAGiB,eAAgBjB,EAAGnF,UAAUmF,EAAGnF,UAAU54B,OAAS,GAAG0a,EAAIkkB,EAAY,GACjFG,EAAG,GAAK38B,EAAG48B,gBAAgB58B,EAAGw2B,UAAUx2B,EAAGw2B,UAAU54B,OAAS,GAAG0a,EAAI,KAAQkkB,EAAW,GACxFG,EAAG,GAAKhB,EAAGiB,gBAAgBjB,EAAGnF,UAAUmF,EAAGnF,UAAU54B,OAAS,GAAG0a,EAAI,KAAQkkB,EAAW,KAExFE,EAAK,CAAC18B,EAAGk2B,GAAIyF,EAAGzF,IAChByG,EAAG,GAAK38B,EAAG48B,gBAAgB58B,EAAG85B,SAAS3C,UAAYn3B,EAAGg2B,WAAa,KAAQwG,EAAWx8B,EAAGg2B,YACzF2G,EAAG,GAAKhB,EAAGiB,gBAAgBjB,EAAG7B,SAAS3C,UAAYwE,EAAG3F,WAAa,KAAQwG,EAAWb,EAAG3F,kBAI3F0G,EADAC,EAAKpB,EAGP79B,KAAKua,EAAEoE,QAAQhhB,KAAK88B,MAAMuE,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,KAElDj/B,KAAKkwB,KAAKxV,GAAK1a,KAAKkwB,KAAKxV,EAAExJ,EACzBlR,KAAKkwB,KAAKxV,EAAEqI,EACd/iB,KAAKua,EAAEwF,UAAU/f,KAAKsC,GAAGiY,EAAGva,KAAKi+B,GAAG1jB,GAAIva,KAAKk+B,GAAG3jB,GAEhDva,KAAKua,EAAEwF,UAAU/f,KAAKsC,GAAGiY,EAAGva,KAAKi+B,GAAG1jB,EAAG,GAGzCva,KAAKua,EAAEwF,UAAU/f,KAAK0a,EAAEH,EAAE,GAAIva,KAAK0a,EAAEH,EAAE,IAAKva,KAAK0a,EAAEH,EAAE,IAGzDva,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,UA0GpCiC,mBAvGF,WACE,IAAK7+B,KAAK7B,EAAEsQ,IACVzO,KAAK+9B,IAAIhe,WAAW/f,KAAK7B,EAAEoc,EAAE,IAAKva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAK7B,EAAEoc,EAAE,IACxDva,KAAKg+B,uBAAyB,GAI3Bh+B,KAAKkR,EAAE2rB,gBAAgB38B,QAA5B,CAMA,GALEF,KAAK+9B,IAAIte,MAAMzf,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,GAAIva,KAAKkR,EAAEqJ,EAAE,IAClDva,KAAKg+B,uBAAyB,EAI5Bh+B,KAAKu+B,GAAI,CACX,GAAKv+B,KAAKu+B,GAAG1B,gBAAgB38B,QAAWF,KAAKw+B,GAAG3B,gBAAgB38B,OAI9D,OAHAF,KAAK+9B,IAAIve,cAAcxf,KAAKu+B,GAAGhkB,EAAGva,KAAKw+B,GAAGjkB,GAC1Cva,KAAKg+B,uBAAyB,EAK9Bh+B,KAAKwa,EACFxa,KAAKwa,EAAEqiB,gBAAgB38B,SAC1BF,KAAK+9B,IAAIpf,QAAQ3e,KAAKwa,EAAED,GACxBva,KAAKg+B,uBAAyB,GAEtBh+B,KAAKq+B,GAAGxB,gBAAgB38B,QAAWF,KAAKo+B,GAAGvB,gBAAgB38B,QAAWF,KAAKm+B,GAAGtB,gBAAgB38B,QAAWF,KAAKs+B,GAAGzB,gBAAgB38B,SAC3IF,KAAK+9B,IAAI9e,SAASjf,KAAKq+B,GAAG9jB,GAAGyE,QAAQhf,KAAKo+B,GAAG7jB,GAAGwE,QAAQ/e,KAAKm+B,GAAG5jB,GAAG0E,SAASjf,KAAKs+B,GAAG/jB,EAAE,IACnFyE,QAAQhf,KAAKs+B,GAAG/jB,EAAE,IAClBwE,QAAQ/e,KAAKs+B,GAAG/jB,EAAE,IACrBva,KAAKg+B,uBAAyB,KA0EhCmB,WAtEF,cAyEA3V,gBAAgB,CAAClN,0BAA2BwhB,GAC5CA,EAAkB94B,UAAUuX,mBArE5B,SAA4BC,GAC1Bxc,KAAKo/B,oBAAoB5iB,GACzBxc,KAAK08B,KAAKngB,mBAAmBC,GAC7Bxc,KAAKy+B,UAAW,GAmElBX,EAAkB94B,UAAUo6B,oBAAsB9iB,yBAAyBtX,UAAUuX,mBAM9E,CACL8iB,qBALF,SAA8B3C,EAAMxM,EAAMvoB,GACxC,OAAO,IAAIm2B,EAAkBpB,EAAMxM,EAAMvoB,KArOb,GA+OhC,SAAS23B,YACPt/B,KAAKD,GAAI,EACTC,KAAK6sB,QAAU,EACf7sB,KAAKu/B,WAAa,EAClBv/B,KAAKua,EAAIxC,iBAAiB/X,KAAKu/B,YAC/Bv/B,KAAK8f,EAAI/H,iBAAiB/X,KAAKu/B,YAC/Bv/B,KAAK8D,EAAIiU,iBAAiB/X,KAAKu/B,YAGjCD,UAAUt6B,UAAUw6B,YAAc,SAAU/S,EAAQ7U,GAClD5X,KAAKD,EAAI0sB,EACTzsB,KAAKy/B,UAAU7nB,GAEf,IADA,IAAI9T,EAAI,EACDA,EAAI8T,GACT5X,KAAKua,EAAEzW,GAAK47B,UAAUvU,aACtBnrB,KAAK8f,EAAEhc,GAAK47B,UAAUvU,aACtBnrB,KAAK8D,EAAEA,GAAK47B,UAAUvU,aACtBrnB,GAAK,GAITw7B,UAAUt6B,UAAUy6B,UAAY,SAAU7nB,GACxC,KAAO5X,KAAKu/B,WAAa3nB,GACvB5X,KAAK2/B,oBAEP3/B,KAAK6sB,QAAUjV,GAGjB0nB,UAAUt6B,UAAU26B,kBAAoB,WACtC3/B,KAAKua,EAAIva,KAAKua,EAAE/X,OAAOuV,iBAAiB/X,KAAKu/B,aAC7Cv/B,KAAK8D,EAAI9D,KAAK8D,EAAEtB,OAAOuV,iBAAiB/X,KAAKu/B,aAC7Cv/B,KAAK8f,EAAI9f,KAAK8f,EAAEtd,OAAOuV,iBAAiB/X,KAAKu/B,aAC7Cv/B,KAAKu/B,YAAc,GAGrBD,UAAUt6B,UAAU46B,QAAU,SAAU/c,EAAGC,EAAGtkB,EAAMyS,EAAKmW,GACvD,IAAIrL,EAKJ,OAJA/b,KAAK6sB,QAAUlvB,KAAK6R,IAAIxP,KAAK6sB,QAAS5b,EAAM,GACxCjR,KAAK6sB,SAAW7sB,KAAKu/B,YACvBv/B,KAAK2/B,oBAECnhC,GACN,IAAK,IACHud,EAAM/b,KAAKua,EACX,MACF,IAAK,IACHwB,EAAM/b,KAAK8D,EACX,MACF,IAAK,IACHiY,EAAM/b,KAAK8f,EACX,MACF,QACE/D,EAAM,KAGLA,EAAI9K,IAAS8K,EAAI9K,KAASmW,KAC7BrL,EAAI9K,GAAOyuB,UAAUvU,cAEvBpP,EAAI9K,GAAK,GAAK4R,EACd9G,EAAI9K,GAAK,GAAK6R,GAGhBwc,UAAUt6B,UAAU66B,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIlvB,EAAKmW,GACvEpnB,KAAK4/B,QAAQE,EAAIC,EAAI,IAAK9uB,EAAKmW,GAC/BpnB,KAAK4/B,QAAQI,EAAIC,EAAI,IAAKhvB,EAAKmW,GAC/BpnB,KAAK4/B,QAAQM,EAAIC,EAAI,IAAKlvB,EAAKmW,IAGjCkY,UAAUt6B,UAAUo7B,QAAU,WAC5B,IAAIC,EAAU,IAAIf,UAClBe,EAAQb,YAAYx/B,KAAKD,EAAGC,KAAK6sB,SACjC,IAAIyT,EAAWtgC,KAAKua,EAChBgmB,EAAYvgC,KAAK8f,EACjB0gB,EAAWxgC,KAAK8D,EAChB28B,EAAO,EACPzgC,KAAKD,IACPsgC,EAAQR,YAAYS,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzHE,EAAO,GAET,IAGI38B,EAHA48B,EAAM1gC,KAAK6sB,QAAU,EACrBjV,EAAM5X,KAAK6sB,QAGf,IAAK/oB,EAAI28B,EAAM38B,EAAI8T,EAAK9T,GAAK,EAC3Bu8B,EAAQR,YAAYS,EAASI,GAAK,GAAIJ,EAASI,GAAK,GAAIF,EAASE,GAAK,GAAIF,EAASE,GAAK,GAAIH,EAAUG,GAAK,GAAIH,EAAUG,GAAK,GAAI58B,GAAG,GACrI48B,GAAO,EAET,OAAOL,GAOT,IAAIM,qBAAwB,WAC1B,IAAI3I,GAAa,OAEjB,SAAS4I,EAAiBzI,EAAU0I,EAAezI,GACjD,IACI0I,EACAC,EACAC,EACAhyB,EACAP,EACAuhB,EACAC,EACArF,EACAqW,EATArI,EAAiBR,EAAQS,UAUzBoE,EAAKj9B,KAAK84B,UACd,GAAIX,EAAW8E,EAAG,GAAGriB,EAAI5a,KAAKs4B,WAC5BwI,EAAW7D,EAAG,GAAG/rB,EAAE,GACnB8vB,GAAS,EACTpI,EAAiB,OACZ,GAAIT,GAAY8E,EAAGA,EAAG/8B,OAAS,GAAG0a,EAAI5a,KAAKs4B,WAChDwI,EAAW7D,EAAGA,EAAG/8B,OAAS,GAAGgR,EAAI+rB,EAAGA,EAAG/8B,OAAS,GAAGgR,EAAE,GAAK+rB,EAAGA,EAAG/8B,OAAS,GAAGa,EAAE,GAM9EigC,GAAS,MACJ,CAML,IALA,IAGIvI,EACAC,EAJA50B,EAAI80B,EACJhhB,EAAMqlB,EAAG/8B,OAAS,EAClBmY,GAAO,EAGJA,IACLogB,EAAUwE,EAAGn5B,MACb40B,EAAcuE,EAAGn5B,EAAI,IACJ8W,EAAI5a,KAAKs4B,WAAcH,KAGpCr0B,EAAI8T,EAAM,EACZ9T,GAAK,EAELuU,GAAO,EAKX,GADAugB,EAAiB90B,IADjBk9B,EAAuB,IAAdvI,EAAQne,GAEJ,CACX,GAAI6d,GAAYO,EAAY9d,EAAI5a,KAAKs4B,WACnC1N,EAAO,OACF,GAAIuN,EAAWM,EAAQ7d,EAAI5a,KAAKs4B,WACrC1N,EAAO,MACF,CACL,IAAI+N,EACAF,EAAQY,OACVV,EAAMF,EAAQY,QAEdV,EAAM3R,cAAcsS,gBAAgBb,EAAQ3Y,EAAE+C,EAAG4V,EAAQ3Y,EAAEgD,EAAG2V,EAAQ30B,EAAE+e,EAAG4V,EAAQ30B,EAAEgf,GAAG5kB,IACxFu6B,EAAQY,OAASV,GAEnB/N,EAAO+N,GAAKR,GAAYM,EAAQ7d,EAAI5a,KAAKs4B,cAAiBI,EAAY9d,EAAI5a,KAAKs4B,YAAeG,EAAQ7d,EAAI5a,KAAKs4B,cAEjHyI,EAAWrI,EAAYxnB,EAAIwnB,EAAYxnB,EAAE,GAAKunB,EAAQ13B,EAAE,GAE1D+/B,EAAWrI,EAAQvnB,EAAE,GAMvB,IAJA8e,EAAO6Q,EAAchU,QACrBoD,EAAO6Q,EAASh9B,EAAE,GAAG5D,OACrBk4B,EAAQS,UAAYD,EAEf5pB,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB,IAAKP,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzBwyB,EAAcD,EAASF,EAASh9B,EAAEkL,GAAGP,GAAKqyB,EAASh9B,EAAEkL,GAAGP,IAAMsyB,EAASj9B,EAAEkL,GAAGP,GAAKqyB,EAASh9B,EAAEkL,GAAGP,IAAMmc,EACrGiW,EAAc/8B,EAAEkL,GAAGP,GAAKwyB,EACxBA,EAAcD,EAASF,EAAShhB,EAAE9Q,GAAGP,GAAKqyB,EAAShhB,EAAE9Q,GAAGP,IAAMsyB,EAASjhB,EAAE9Q,GAAGP,GAAKqyB,EAAShhB,EAAE9Q,GAAGP,IAAMmc,EACrGiW,EAAc/gB,EAAE9Q,GAAGP,GAAKwyB,EACxBA,EAAcD,EAASF,EAASvmB,EAAEvL,GAAGP,GAAKqyB,EAASvmB,EAAEvL,GAAGP,IAAMsyB,EAASxmB,EAAEvL,GAAGP,GAAKqyB,EAASvmB,EAAEvL,GAAGP,IAAMmc,EACrGiW,EAActmB,EAAEvL,GAAGP,GAAKwyB,EAK9B,SAASC,IACP,IAAI/I,EAAWn4B,KAAKi8B,KAAKC,cAAgBl8B,KAAKs4B,WAC1CjD,EAAWr1B,KAAK84B,UAAU,GAAGle,EAAI5a,KAAKs4B,WACtC6D,EAAUn8B,KAAK84B,UAAU94B,KAAK84B,UAAU54B,OAAS,GAAG0a,EAAI5a,KAAKs4B,WAC7DmB,EAAYz5B,KAAKo8B,SAAS3C,UAQ9B,OAPMA,IAAczB,IAAeyB,EAAYpE,GAAY8C,EAAW9C,GAAcoE,EAAY0C,GAAWhE,EAAWgE,KAEpHn8B,KAAKo8B,SAASvD,UAAYY,EAAYtB,EAAWn4B,KAAKo8B,SAASvD,UAAY,EAC3E74B,KAAK4gC,iBAAiBzI,EAAUn4B,KAAKw4B,GAAIx4B,KAAKo8B,WAGhDp8B,KAAKo8B,SAAS3C,UAAYtB,EACnBn4B,KAAKw4B,GAGd,SAAS2I,IACPnhC,KAAKiyB,MAAQjyB,KAAKohC,qBAsBpB,SAAS9E,EAAU+D,IAnBnB,SAAqBgB,EAAQC,GAC3B,GAAID,EAAOxU,UAAYyU,EAAOzU,SAAWwU,EAAOthC,IAAMuhC,EAAOvhC,EAC3D,OAAO,EAET,IAAI+D,EACA8T,EAAMypB,EAAOxU,QACjB,IAAK/oB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAIu9B,EAAO9mB,EAAEzW,GAAG,KAAOw9B,EAAO/mB,EAAEzW,GAAG,IAC1Bu9B,EAAO9mB,EAAEzW,GAAG,KAAOw9B,EAAO/mB,EAAEzW,GAAG,IAC/Bu9B,EAAOvhB,EAAEhc,GAAG,KAAOw9B,EAAOxhB,EAAEhc,GAAG,IAC/Bu9B,EAAOvhB,EAAEhc,GAAG,KAAOw9B,EAAOxhB,EAAEhc,GAAG,IAC/Bu9B,EAAOv9B,EAAEA,GAAG,KAAOw9B,EAAOx9B,EAAEA,GAAG,IAC/Bu9B,EAAOv9B,EAAEA,GAAG,KAAOw9B,EAAOx9B,EAAEA,GAAG,GACtC,OAAO,EAGX,OAAO,GAIFy9B,CAAYvhC,KAAKua,EAAG8lB,KACvBrgC,KAAKua,EAAIinB,UAAU9e,MAAM2d,GACzBrgC,KAAKohC,qBAAqBK,gBAC1BzhC,KAAKohC,qBAAqBM,SAAS1hC,KAAKua,GACxCva,KAAK6c,MAAO,EACZ7c,KAAKiyB,MAAQjyB,KAAKohC,sBAItB,SAAS3E,IACP,GAAIz8B,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,QAExC,GAAK58B,KAAK68B,gBAAgB38B,OAI5B,GAAIF,KAAK88B,KACP98B,KAAKs8B,UAAUt8B,KAAKw4B,QADtB,CAMA,IAAIwE,EAQAl5B,EAVJ9D,KAAK88B,MAAO,EACZ98B,KAAK6c,MAAO,EAGVmgB,EADEh9B,KAAKi9B,GACMj9B,KAAKw4B,GACTx4B,KAAKkwB,KAAKe,GACNjxB,KAAKkwB,KAAKe,GAAGxiB,EAEbzO,KAAKkwB,KAAK3M,GAAG9U,EAG5B,IAAImJ,EAAM5X,KAAK68B,gBAAgB38B,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBk5B,EAAah9B,KAAK68B,gBAAgB/4B,GAAGk5B,GAEvCh9B,KAAKs8B,UAAUU,GACfh9B,KAAK88B,MAAO,EACZ98B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,aAxBlC58B,KAAK6c,MAAO,EA2BhB,SAAS8kB,EAAcjF,EAAMxM,EAAM1xB,GACjCwB,KAAKu4B,SAAW,QAChBv4B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAK2H,UAAY+0B,EACjB18B,KAAK08B,KAAOA,EACZ18B,KAAKkwB,KAAOA,EACZlwB,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACVj9B,KAAK6c,MAAO,EACZ,IAAImV,EAAoB,IAATxzB,EAAa0xB,EAAK3M,GAAG9U,EAAIyhB,EAAKe,GAAGxiB,EAChDzO,KAAKua,EAAIinB,UAAU9e,MAAMsP,GACzBhyB,KAAKw4B,GAAKgJ,UAAU9e,MAAM1iB,KAAKua,GAC/Bva,KAAKohC,qBAAuBQ,oBAAoBC,qBAChD7hC,KAAKiyB,MAAQjyB,KAAKohC,qBAClBphC,KAAKiyB,MAAMyP,SAAS1hC,KAAKua,GACzBva,KAAK0e,MAAQyiB,EACbnhC,KAAK68B,gBAAkB,GAGzB,SAASK,EAAUC,GACjBn9B,KAAK68B,gBAAgB15B,KAAKg6B,GAC1Bn9B,KAAK2H,UAAU4U,mBAAmBvc,MAQpC,SAAS8hC,EAAuBpF,EAAMxM,EAAM1xB,GAC1CwB,KAAKu4B,SAAW,QAChBv4B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAK08B,KAAOA,EACZ18B,KAAK2H,UAAY+0B,EACjB18B,KAAKs4B,WAAaoE,EAAKxM,KAAKsN,GAC5Bx9B,KAAK84B,UAAqB,IAATt6B,EAAa0xB,EAAK3M,GAAG9U,EAAIyhB,EAAKe,GAAGxiB,EAClDzO,KAAKyO,GAAI,EACTzO,KAAKi9B,IAAK,EACV,IAAIrlB,EAAM5X,KAAK84B,UAAU,GAAG5nB,EAAE,GAAGpN,EAAE5D,OACnCF,KAAKua,EAAIinB,UAAUrW,aACnBnrB,KAAKua,EAAEilB,YAAYx/B,KAAK84B,UAAU,GAAG5nB,EAAE,GAAGnR,EAAG6X,GAC7C5X,KAAKw4B,GAAKgJ,UAAU9e,MAAM1iB,KAAKua,GAC/Bva,KAAKohC,qBAAuBQ,oBAAoBC,qBAChD7hC,KAAKiyB,MAAQjyB,KAAKohC,qBAClBphC,KAAKiyB,MAAMyP,SAAS1hC,KAAKua,GACzBva,KAAKy5B,UAAYzB,EACjBh4B,KAAK0e,MAAQyiB,EACbnhC,KAAKo8B,SAAW,CAAE3C,UAAWzB,EAAWa,UAAW,GACnD74B,KAAK68B,gBAAkB,CAACqE,EAA4BvlB,KAAK3b,OAxB3D2hC,EAAc38B,UAAU47B,iBAAmBA,EAC3Ce,EAAc38B,UAAU8X,SAAW2f,EACnCkF,EAAc38B,UAAUs3B,UAAYA,EACpCqF,EAAc38B,UAAUk4B,UAAYA,EAuBpC4E,EAAuB98B,UAAU8X,SAAW2f,EAC5CqF,EAAuB98B,UAAU47B,iBAAmBA,EACpDkB,EAAuB98B,UAAUs3B,UAAYA,EAC7CwF,EAAuB98B,UAAUk4B,UAAYA,EAE7C,IAAI6E,EAAoB,WACtB,IAAIC,EAAS7pB,YAEb,SAAS8pB,EAAwBvF,EAAMxM,GAOrClwB,KAAKua,EAAIinB,UAAUrW,aACnBnrB,KAAKua,EAAEilB,aAAY,EAAM,GACzBx/B,KAAKohC,qBAAuBQ,oBAAoBC,qBAChD7hC,KAAKiyB,MAAQjyB,KAAKohC,qBAClBphC,KAAKohC,qBAAqBM,SAAS1hC,KAAKua,GACxCva,KAAK8a,EAAIoV,EAAKpV,EACd9a,KAAK08B,KAAOA,EACZ18B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAK48B,SAAW,EAChB58B,KAAK+c,6BAA6B2f,GAClC18B,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAG,EAAG,EAAG1a,MACrDA,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,EAAG,EAAG,EAAGlR,MACjDA,KAAKyc,kBAAkBvc,OACzBF,KAAKyO,GAAI,GAETzO,KAAKyO,GAAI,EACTzO,KAAKkiC,oBAqDT,OAjDAD,EAAwBj9B,UAAY,CAClC0Z,MAAOyiB,EACPrkB,SAAU,WACJ9c,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,UAG1C58B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,QACpC58B,KAAK4c,2BAED5c,KAAK6c,MACP7c,KAAKkiC,qBAGTA,iBAAkB,WAChB,IAAIle,EAAKhkB,KAAK0a,EAAEH,EAAE,GACd8H,EAAKriB,KAAK0a,EAAEH,EAAE,GACd4nB,EAAKniC,KAAKkR,EAAEqJ,EAAE,GAAK,EACnBshB,EAAK77B,KAAKkR,EAAEqJ,EAAE,GAAK,EACnB6nB,EAAiB,IAAXpiC,KAAK8a,EACXunB,EAAKriC,KAAKua,EACd8nB,EAAG9nB,EAAE,GAAG,GAAKyJ,EACbqe,EAAG9nB,EAAE,GAAG,GAAK8H,EAAKwZ,EAClBwG,EAAG9nB,EAAE,GAAG,GAAK6nB,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAG9nB,EAAE,GAAG,GAAK8H,EACbggB,EAAG9nB,EAAE,GAAG,GAAKyJ,EACbqe,EAAG9nB,EAAE,GAAG,GAAK8H,EAAKwZ,EAClBwG,EAAG9nB,EAAE,GAAG,GAAK6nB,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAG9nB,EAAE,GAAG,GAAK8H,EACbggB,EAAGv+B,EAAE,GAAG,GAAKs+B,EAAMpe,EAAKme,EAAKH,EAAShe,EAAKme,EAAKH,EAChDK,EAAGv+B,EAAE,GAAG,GAAKue,EAAKwZ,EAClBwG,EAAGv+B,EAAE,GAAG,GAAKs+B,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAGv+B,EAAE,GAAG,GAAKue,EAAKwZ,EAAKmG,EACvBK,EAAGv+B,EAAE,GAAG,GAAKs+B,EAAMpe,EAAKme,EAAKH,EAAShe,EAAKme,EAAKH,EAChDK,EAAGv+B,EAAE,GAAG,GAAKue,EAAKwZ,EAClBwG,EAAGv+B,EAAE,GAAG,GAAKs+B,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAGv+B,EAAE,GAAG,GAAKue,EAAKwZ,EAAKmG,EACvBK,EAAGviB,EAAE,GAAG,GAAKsiB,EAAMpe,EAAKme,EAAKH,EAAShe,EAAKme,EAAKH,EAChDK,EAAGviB,EAAE,GAAG,GAAKuC,EAAKwZ,EAClBwG,EAAGviB,EAAE,GAAG,GAAKsiB,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAGviB,EAAE,GAAG,GAAKuC,EAAKwZ,EAAKmG,EACvBK,EAAGviB,EAAE,GAAG,GAAKsiB,EAAMpe,EAAKme,EAAKH,EAAShe,EAAKme,EAAKH,EAChDK,EAAGviB,EAAE,GAAG,GAAKuC,EAAKwZ,EAClBwG,EAAGviB,EAAE,GAAG,GAAKsiB,EAAMpe,EAAKme,EAAKne,EAAKme,EAClCE,EAAGviB,EAAE,GAAG,GAAKuC,EAAKwZ,EAAKmG,IAI3BxY,gBAAgB,CAAClN,0BAA2B2lB,GAErCA,EA/Ee,GAkFpBK,EAAqB,WACvB,SAASC,EAAyB7F,EAAMxM,GACtClwB,KAAKua,EAAIinB,UAAUrW,aACnBnrB,KAAKua,EAAEilB,aAAY,EAAM,GACzBx/B,KAAK08B,KAAOA,EACZ18B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAKkwB,KAAOA,EACZlwB,KAAK48B,SAAW,EAChB58B,KAAK8a,EAAIoV,EAAKpV,EACd9a,KAAK+c,6BAA6B2f,GAClB,IAAZxM,EAAK9Q,IACPpf,KAAKwiC,GAAKzK,gBAAgB4F,QAAQjB,EAAMxM,EAAKsS,GAAI,EAAG,EAAGxiC,MACvDA,KAAKiL,GAAK8sB,gBAAgB4F,QAAQjB,EAAMxM,EAAKjlB,GAAI,EAAG,IAAMjL,MAC1DA,KAAKyiC,cAAgBziC,KAAK0iC,mBAE1B1iC,KAAKyiC,cAAgBziC,KAAK2iC,qBAE5B3iC,KAAKujB,GAAKwU,gBAAgB4F,QAAQjB,EAAMxM,EAAK3M,GAAI,EAAG,EAAGvjB,MACvDA,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAG,EAAG,EAAG1a,MACrDA,KAAKwa,EAAIud,gBAAgB4F,QAAQjB,EAAMxM,EAAK1V,EAAG,EAAGvC,UAAWjY,MAC7DA,KAAKs+B,GAAKvG,gBAAgB4F,QAAQjB,EAAMxM,EAAKoO,GAAI,EAAG,EAAGt+B,MACvDA,KAAK4iC,GAAK7K,gBAAgB4F,QAAQjB,EAAMxM,EAAK0S,GAAI,EAAG,IAAM5iC,MAC1DA,KAAKohC,qBAAuBQ,oBAAoBC,qBAChD7hC,KAAKohC,qBAAqBM,SAAS1hC,KAAKua,GACxCva,KAAKiyB,MAAQjyB,KAAKohC,qBACdphC,KAAKyc,kBAAkBvc,OACzBF,KAAKyO,GAAI,GAETzO,KAAKyO,GAAI,EACTzO,KAAKyiC,iBAqFT,OAjFAF,EAAyBv9B,UAAY,CACnC0Z,MAAOyiB,EACPrkB,SAAU,WACJ9c,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,UAG1C58B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,QACpC58B,KAAK4c,2BACD5c,KAAK6c,MACP7c,KAAKyiC,kBAGTC,kBAAmB,WACjB,IAYI5+B,EACA++B,EACAC,EACAC,EAfAC,EAAiC,EAAxBrlC,KAAKoF,MAAM/C,KAAKujB,GAAGhJ,GAC5BqE,EAAmB,EAAVjhB,KAAKua,GAAU8qB,EAIxBC,GAAW,EACXC,EAAUljC,KAAKs+B,GAAG/jB,EAClB4oB,EAAWnjC,KAAKwiC,GAAGjoB,EACnB6oB,EAAYpjC,KAAK4iC,GAAGroB,EACpB8oB,EAAarjC,KAAKiL,GAAGsP,EACrB+oB,EAAoB,EAAI3lC,KAAKua,GAAKgrB,GAAqB,EAATF,GAC9CO,EAAqB,EAAI5lC,KAAKua,GAAKirB,GAAsB,EAATH,GAKhDQ,GAAc7lC,KAAKua,GAAK,EAC5BsrB,GAAcxjC,KAAKwa,EAAED,EACrB,IAAI4R,EAAsB,IAAhBnsB,KAAKkwB,KAAKpV,GAAW,EAAI,EAEnC,IADA9a,KAAKua,EAAEsS,QAAU,EACZ/oB,EAAI,EAAGA,EAAIk/B,EAAQl/B,GAAK,EAAG,CAE9Bg/B,EAAYG,EAAWG,EAAYC,EACnCN,EAAeE,EAAWK,EAAmBC,EAC7C,IAAI1gB,GAHJggB,EAAMI,EAAWC,EAAUC,GAGbxlC,KAAKygB,IAAIolB,GACnB1gB,EAAI+f,EAAMllC,KAAK2gB,IAAIklB,GACnBC,EAAW,IAAN5gB,GAAiB,IAANC,EAAU,EAAIA,EAAInlB,KAAK0Z,KAAKwL,EAAIA,EAAIC,EAAIA,GACxD4gB,EAAW,IAAN7gB,GAAiB,IAANC,EAAU,GAAKD,EAAIllB,KAAK0Z,KAAKwL,EAAIA,EAAIC,EAAIA,GAC7DD,IAAM7iB,KAAK0a,EAAEH,EAAE,GACfuI,IAAM9iB,KAAK0a,EAAEH,EAAE,GACfva,KAAKua,EAAEslB,YAAYhd,EAAGC,EAAGD,EAAI4gB,EAAKV,EAAeD,EAAY3W,EAAKrJ,EAAI4gB,EAAKX,EAAeD,EAAY3W,EAAKtJ,EAAI4gB,EAAKV,EAAeD,EAAY3W,EAAKrJ,EAAI4gB,EAAKX,EAAeD,EAAY3W,EAAKroB,GAAG,GAMhMm/B,GAAYA,EACZO,GAAc5kB,EAAQuN,IAG1BwW,qBAAsB,WACpB,IAKI7+B,EALAk/B,EAASrlC,KAAKoF,MAAM/C,KAAKujB,GAAGhJ,GAC5BqE,EAAmB,EAAVjhB,KAAKua,GAAU8qB,EACxBH,EAAM7iC,KAAKs+B,GAAG/jB,EACduoB,EAAY9iC,KAAK4iC,GAAGroB,EACpBwoB,EAAgB,EAAIplC,KAAKua,GAAK2qB,GAAiB,EAATG,GAEtCQ,EAAwB,IAAV7lC,KAAKua,GACnBiU,EAAsB,IAAhBnsB,KAAKkwB,KAAKpV,GAAW,EAAI,EAGnC,IAFA0oB,GAAcxjC,KAAKwa,EAAED,EACrBva,KAAKua,EAAEsS,QAAU,EACZ/oB,EAAI,EAAGA,EAAIk/B,EAAQl/B,GAAK,EAAG,CAC9B,IAAI+e,EAAIggB,EAAMllC,KAAKygB,IAAIolB,GACnB1gB,EAAI+f,EAAMllC,KAAK2gB,IAAIklB,GACnBC,EAAW,IAAN5gB,GAAiB,IAANC,EAAU,EAAIA,EAAInlB,KAAK0Z,KAAKwL,EAAIA,EAAIC,EAAIA,GACxD4gB,EAAW,IAAN7gB,GAAiB,IAANC,EAAU,GAAKD,EAAIllB,KAAK0Z,KAAKwL,EAAIA,EAAIC,EAAIA,GAC7DD,IAAM7iB,KAAK0a,EAAEH,EAAE,GACfuI,IAAM9iB,KAAK0a,EAAEH,EAAE,GACfva,KAAKua,EAAEslB,YAAYhd,EAAGC,EAAGD,EAAI4gB,EAAKV,EAAeD,EAAY3W,EAAKrJ,EAAI4gB,EAAKX,EAAeD,EAAY3W,EAAKtJ,EAAI4gB,EAAKV,EAAeD,EAAY3W,EAAKrJ,EAAI4gB,EAAKX,EAAeD,EAAY3W,EAAKroB,GAAG,GAChM0/B,GAAc5kB,EAAQuN,EAExBnsB,KAAKiyB,MAAM/xB,OAAS,EACpBF,KAAKiyB,MAAM,GAAKjyB,KAAKua,IAIzBiP,gBAAgB,CAAClN,0BAA2BimB,GAErCA,EAlHgB,GAqHrBoB,EAAqB,WACvB,SAASC,EAAyBlH,EAAMxM,GACtClwB,KAAKua,EAAIinB,UAAUrW,aACnBnrB,KAAKua,EAAExa,GAAI,EACXC,KAAKohC,qBAAuBQ,oBAAoBC,qBAChD7hC,KAAKohC,qBAAqBM,SAAS1hC,KAAKua,GACxCva,KAAKiyB,MAAQjyB,KAAKohC,qBAClBphC,KAAK08B,KAAOA,EACZ18B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAK48B,SAAW,EAChB58B,KAAK8a,EAAIoV,EAAKpV,EACd9a,KAAK+c,6BAA6B2f,GAClC18B,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAKxV,EAAG,EAAG,EAAG1a,MACrDA,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,EAAG,EAAG,EAAGlR,MACrDA,KAAKwa,EAAIud,gBAAgB4F,QAAQjB,EAAMxM,EAAK1V,EAAG,EAAG,EAAGxa,MACjDA,KAAKyc,kBAAkBvc,OACzBF,KAAKyO,GAAI,GAETzO,KAAKyO,GAAI,EACTzO,KAAK6jC,qBA2DT,OAvDAD,EAAyB5+B,UAAY,CACnC6+B,kBAAmB,WACjB,IAAI7f,EAAKhkB,KAAK0a,EAAEH,EAAE,GACd8H,EAAKriB,KAAK0a,EAAEH,EAAE,GACdupB,EAAK9jC,KAAKkR,EAAEqJ,EAAE,GAAK,EACnBykB,EAAKh/B,KAAKkR,EAAEqJ,EAAE,GAAK,EACnBjC,EAAQd,MAAMssB,EAAI9E,EAAIh/B,KAAKwa,EAAED,GAC7BynB,EAAS1pB,GAAS,EAAIH,aAC1BnY,KAAKua,EAAEsS,QAAU,EAEF,IAAX7sB,KAAK8a,GAAsB,IAAX9a,KAAK8a,GACvB9a,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQ,GAAG,GACrGhiC,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO,GAAG,GACvF,IAAVA,GACFtY,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQ,GAAG,GACrGhiC,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO,GAAG,GACrGtY,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAI,GAAG,KAErGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAIzhB,EAAK2c,EAAI,GAClFh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAIhb,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAI,MAGpFh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO,GAAG,GACvF,IAAVA,GACFtY,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQ,GAAG,GACrGhiC,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO,GAAG,GACrGtY,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAKxrB,EAAO+J,EAAK2c,EAAI,GAAG,GACrGh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAK1mB,EAAO0L,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQ,GAAG,KAErGhiC,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAIzhB,EAAK2c,EAAI,GAAG,GACrFh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAIhb,EAAK8f,EAAIzhB,EAAK2c,EAAKgD,EAAQhe,EAAK8f,EAAIzhB,EAAK2c,EAAI,GAAG,GACrFh/B,KAAKua,EAAEslB,YAAY7b,EAAK8f,EAAIzhB,EAAK2c,EAAIhb,EAAK8f,EAAK9B,EAAQ3f,EAAK2c,EAAIhb,EAAK8f,EAAIzhB,EAAK2c,EAAI,GAAG,MAI3FliB,SAAU,WACJ9c,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,UAG1C58B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,QACpC58B,KAAK4c,2BACD5c,KAAK6c,MACP7c,KAAK6jC,sBAGTnlB,MAAOyiB,GAET3X,gBAAgB,CAAClN,0BAA2BsnB,GAErCA,EA9EgB,GAgHrB3c,EAAK,CACTA,aAhCA,SAAsByV,EAAMxM,EAAM1xB,GAChC,IAAIge,EAmBJ,OAlBa,IAAThe,GAAuB,IAATA,EAIdge,GAHsB,IAAThe,EAAa0xB,EAAK3M,GAAK2M,EAAKe,IACvBxiB,EACXvO,OACA,IAAI4hC,EAAuBpF,EAAMxM,EAAM1xB,GAEvC,IAAImjC,EAAcjF,EAAMxM,EAAM1xB,GAErB,IAATA,EACTge,EAAO,IAAImnB,EAAkBjH,EAAMxM,GACjB,IAAT1xB,EACTge,EAAO,IAAIulB,EAAiBrF,EAAMxM,GAChB,IAAT1xB,IACTge,EAAO,IAAI8lB,EAAkB5F,EAAMxM,IAEjC1T,EAAK/N,GACPiuB,EAAKngB,mBAAmBC,GAEnBA,GAaTyK,uBAVA,WACE,OAAO0a,GAUT1a,gCAPA,WACE,OAAO6a,IAOT,OAAO7a,EAnhBmB,GAyhBxB8c,eAAkB,WACpB,IAAI9c,EAAK,GACL+c,EAAY,GAchB,OAbA/c,EAAGgd,iBAGH,SAA0B/c,EAAI3Q,GACvBytB,EAAU9c,KACb8c,EAAU9c,GAAM3Q,IAJpB0Q,EAAGid,YAQH,SAAqBhd,EAAIwV,EAAMxM,GAC7B,OAAO,IAAI8T,EAAU9c,GAAIwV,EAAMxM,IAG1BjJ,EAhBa,GAmBtB,SAASkd,iBAyCT,SAASC,gBA+VT,SAASC,wBAiHT,SAASC,0BAyET,SAASC,oBAiOT,SAASC,kBACPxkC,KAAK6sB,QAAU,EACf7sB,KAAKu/B,WAAa,EAClBv/B,KAAK6wB,OAAS9Y,iBAAiB/X,KAAKu/B,YAsBtC,SAASkF,aAAa/H,EAAMxM,EAAMroB,EAAUF,GAU1C,IAAI7D,EATJ9D,KAAK08B,KAAOA,EACZ18B,KAAK48B,SAAW,EAChB58B,KAAK0kC,UAAY3sB,iBAAiBmY,EAAKhwB,QACvCF,KAAK6H,SAAWA,EAChB7H,KAAKyO,GAAI,EACTzO,KAAK2kC,QAAU,GACf3kC,KAAK4kC,UAAY/oB,iBAAiB,UAAWqU,EAAKhwB,OAASgwB,EAAKhwB,OAAS,EAAI,GAC7EF,KAAK6kC,WAAahpB,iBAAiB,UAAW,GAC9C7b,KAAK+c,6BAA6BpV,GAElC,IACI6U,EADA5E,EAAMsY,EAAKhwB,QAAU,EAEzB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB0Y,EAAOub,gBAAgB4F,QAAQjB,EAAMxM,EAAKpsB,GAAGyW,EAAG,EAAG,EAAGva,MACtDA,KAAKyO,EAAI+N,EAAK/N,GAAKzO,KAAKyO,EACxBzO,KAAK0kC,UAAU5gC,GAAK,CAAE+b,EAAGqQ,EAAKpsB,GAAG+b,EAAGnF,EAAG8B,GAEpCxc,KAAKyO,GACRzO,KAAK8c,UAAS,GAEhB9c,KAAK2c,YAAc3c,KAAKyO,EAgC1B,SAASq2B,iBAAiBpI,EAAMxM,EAAMvoB,GACpC3H,KAAKkwB,KAAOA,EACZlwB,KAAKD,EAAI8b,iBAAiB,SAAmB,EAATqU,EAAKxV,GACzC,IAAIqqB,EAAU7U,EAAKzhB,EAAEA,EAAE,GAAGyC,EAAKgf,EAAKzhB,EAAEA,EAAE,GAAGyC,EAAEhR,OAAkB,EAATgwB,EAAKxV,EAASwV,EAAKzhB,EAAEA,EAAEvO,OAAkB,EAATgwB,EAAKxV,EAC3F1a,KAAK8f,EAAIjE,iBAAiB,UAAWkpB,GACrC/kC,KAAKglC,OAAQ,EACbhlC,KAAKilC,OAAQ,EACbjlC,KAAKklC,aAAellC,KAAKmlC,mBACzBnlC,KAAKolC,YAAcL,EACnB/kC,KAAK+c,6BAA6BpV,GAClC3H,KAAKwc,KAAOub,gBAAgB4F,QAAQjB,EAAMxM,EAAKzhB,EAAG,EAAG,KAAMzO,MAC3DA,KAAKyO,EAAIzO,KAAKwc,KAAK/N,EACnBzO,KAAK8c,UAAS,GA53BhBqnB,cAAcn/B,UAAUqgC,uBAAyB,aACjDlB,cAAcn/B,UAAUsgC,mBAAqB,aAC7CnB,cAAcn/B,UAAU08B,SAAW,SAAUxR,GAC3C,IAAKlwB,KAAKysB,OAAQ,CAEhByD,EAAKgK,GAAGvyB,UAAU4U,mBAAmB2T,EAAKgK,IAC1C,IAAI5N,EAAY,CAAEiZ,MAAOrV,EAAKgK,GAAIhK,KAAMA,EAAMkR,qBAAsBQ,oBAAoBC,sBACxF7hC,KAAK6wB,OAAO1tB,KAAKmpB,GACjBtsB,KAAKslC,mBAAmBhZ,GACpBtsB,KAAK2c,aACPuT,EAAKsV,kBAIXrB,cAAcn/B,UAAUy7B,KAAO,SAAU/D,EAAMxM,GAC7ClwB,KAAK6wB,OAAS,GACd7wB,KAAK08B,KAAOA,EACZ18B,KAAK+c,6BAA6B2f,GAClC18B,KAAKqlC,uBAAuB3I,EAAMxM,GAClClwB,KAAK48B,QAAUjmB,oBACf3W,KAAKysB,QAAS,EACdzsB,KAAKyO,GAAI,EACLzO,KAAKyc,kBAAkBvc,OACzBF,KAAKyO,GAAI,EAETzO,KAAK8c,UAAS,IAGlBqnB,cAAcn/B,UAAUygC,YAAc,WAChCzlC,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,UAG1C58B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,QACpC58B,KAAK4c,6BAGP4M,gBAAgB,CAAClN,0BAA2B6nB,eAM5C3a,gBAAgB,CAAC2a,eAAgBC,cACjCA,aAAap/B,UAAUqgC,uBAAyB,SAAU3I,EAAMxM,GAC9DlwB,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,EAAG,EAAG,IAAMlR,MACxDA,KAAKe,EAAIg3B,gBAAgB4F,QAAQjB,EAAMxM,EAAKnvB,EAAG,EAAG,IAAMf,MACxDA,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,EAAG9f,MACrDA,KAAK0lC,OAAS,EACd1lC,KAAK2lC,OAAS,EACd3lC,KAAK8c,SAAW9c,KAAKylC,YACrBzlC,KAAK4f,EAAIsQ,EAAKtQ,EACd5f,KAAK2c,cAAgB3c,KAAKkR,EAAE2rB,gBAAgB38B,UAAYF,KAAKe,EAAE87B,gBAAgB38B,UAAYF,KAAK8f,EAAE+c,gBAAgB38B,QAGpHkkC,aAAap/B,UAAUsgC,mBAAqB,SAAUhZ,GACpDA,EAAUsZ,UAAY,IAGxBxB,aAAap/B,UAAU6gC,oBAAsB,SAAU30B,EAAGnQ,EAAG+kC,EAAa/a,EAAagb,GACrF,IAAIr+B,EAAW,GACX3G,GAAK,EACP2G,EAASvE,KAAK,CACZ+N,EAAGA,EACHnQ,EAAGA,IAEImQ,GAAK,EACdxJ,EAASvE,KAAK,CACZ+N,EAAGA,EAAI,EACPnQ,EAAGA,EAAI,KAGT2G,EAASvE,KAAK,CACZ+N,EAAGA,EACHnQ,EAAG,IAEL2G,EAASvE,KAAK,CACZ+N,EAAG,EACHnQ,EAAGA,EAAI,KAGX,IACI+C,EAEAkiC,EAHAC,EAAgB,GAEhBruB,EAAMlQ,EAASxH,OAEnB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAGzB,IAAIoiC,EACAC,GAHNH,EAAYt+B,EAAS5D,IACL/C,EAAIglC,EAAsBhb,GAAeib,EAAU90B,EAAI60B,EAAsBhb,EAAc+a,IAIvGI,EADEF,EAAU90B,EAAI60B,GAAuBhb,EAC9B,GAECib,EAAU90B,EAAI60B,EAAsBhb,GAAe+a,EAG7DK,EADEH,EAAUjlC,EAAIglC,GAAuBhb,EAAc+a,EAC5C,GAEEE,EAAUjlC,EAAIglC,EAAsBhb,GAAe+a,EAEhEG,EAAc9iC,KAAK,CAAC+iC,EAAQC,KAMhC,OAHKF,EAAc/lC,QACjB+lC,EAAc9iC,KAAK,CAAC,EAAG,IAElB8iC,GAGT7B,aAAap/B,UAAUohC,iBAAmB,SAAUR,GAClD,IAAI9hC,EACA8T,EAAMguB,EAAU1lC,OACpB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB0oB,mBAAmB6Z,QAAQT,EAAU9hC,IAGvC,OADA8hC,EAAU1lC,OAAS,EACZ0lC,GAGTxB,aAAap/B,UAAUshC,cAAgB,SAAUvJ,GAC/C,IAAI7rB,EACAnQ,EAkCAwlC,EACAziC,EAlCJ,GAAI9D,KAAK6c,MAAQkgB,EAAe,CAC9B,IAAIjd,EAAK9f,KAAK8f,EAAEvF,EAAI,IAAO,IAmB3B,GAlBIuF,EAAI,IACNA,GAAK,IAGL5O,EADElR,KAAKkR,EAAEqJ,EAAI,EACT,EAAIuF,EACC9f,KAAKkR,EAAEqJ,EAAI,EAChB,EAAIuF,EAEJ9f,KAAKkR,EAAEqJ,EAAIuF,IAGf/e,EADEf,KAAKe,EAAEwZ,EAAI,EACT,EAAIuF,EACC9f,KAAKe,EAAEwZ,EAAI,EAChB,EAAIuF,EAEJ9f,KAAKe,EAAEwZ,EAAIuF,GAGN,CACT,IAAI0mB,EAAKt1B,EACTA,EAAInQ,EACJA,EAAIylC,EAENt1B,EAA4B,KAAxBvT,KAAK2a,MAAU,IAAJpH,GACfnQ,EAA4B,KAAxBpD,KAAK2a,MAAU,IAAJvX,GACff,KAAK0lC,OAASx0B,EACdlR,KAAK2lC,OAAS5kC,OAEdmQ,EAAIlR,KAAK0lC,OACT3kC,EAAIf,KAAK2lC,OAIX,IACI32B,EACAghB,EACA4V,EACA5T,EACAyU,EALA7uB,EAAM5X,KAAK6wB,OAAO3wB,OAMlB6lC,EAAsB,EAE1B,GAAIhlC,IAAMmQ,EACR,IAAKpN,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK6wB,OAAO/sB,GAAGs9B,qBAAqBK,gBACpCzhC,KAAK6wB,OAAO/sB,GAAGyhC,MAAM1oB,MAAO,EAC5B7c,KAAK6wB,OAAO/sB,GAAGyhC,MAAMtT,MAAQjyB,KAAK6wB,OAAO/sB,GAAGs9B,qBACxCphC,KAAK6c,OACP7c,KAAK6wB,OAAO/sB,GAAG8hC,UAAU1lC,OAAS,QAGjC,GAAa,IAANa,GAAiB,IAANmQ,GAAmB,IAANnQ,GAAiB,IAANmQ,GA0F1C,GAAIlR,KAAK6c,KACd,IAAK/Y,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAGxB9D,KAAK6wB,OAAO/sB,GAAG8hC,UAAU1lC,OAAS,EAClCF,KAAK6wB,OAAO/sB,GAAGyhC,MAAM1oB,MAAO,MA/F4B,CAC1D,IACIyP,EACA8U,EAFA15B,EAAW,GAGf,IAAK5D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAGxB,IAFAwoB,EAAYtsB,KAAK6wB,OAAO/sB,IAETyhC,MAAM1oB,MAAS7c,KAAK6c,MAASkgB,GAA4B,IAAX/8B,KAAK4f,EAE3D,CAIL,GAFAoQ,GADAuW,EAAaja,EAAUiZ,MAAMtT,OACXpF,QAClB4Z,EAAmB,GACdna,EAAUiZ,MAAM1oB,MAAQyP,EAAUsZ,UAAU1lC,OAC/CumC,EAAmBna,EAAUma,qBACxB,CAEL,IADAb,EAAY5lC,KAAKomC,iBAAiB9Z,EAAUsZ,WACvC52B,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBgjB,EAAWvC,IAAIpD,kBAAkBka,EAAW1V,OAAO7hB,IACnD42B,EAAUziC,KAAK6uB,GACfyU,GAAoBzU,EAASlF,YAE/BR,EAAUma,iBAAmBA,EAC7Bna,EAAUsZ,UAAYA,EAGxBG,GAAuBU,EACvBna,EAAUiZ,MAAM1oB,MAAO,OAnBvByP,EAAUiZ,MAAMtT,MAAQ3F,EAAU8U,qBAsBtC,IAGIsF,EAHAR,EAASh1B,EACTi1B,EAASplC,EACTgqB,EAAc,EAElB,IAAKjnB,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,EAE7B,IADAwoB,EAAYtsB,KAAK6wB,OAAO/sB,IACVyhC,MAAM1oB,KAAM,CAWxB,KAVAukB,EAAuB9U,EAAU8U,sBACZK,gBAEN,IAAXzhC,KAAK4f,GAAWhI,EAAM,GACxB8uB,EAAQ1mC,KAAK6lC,oBAAoB30B,EAAGnQ,EAAGurB,EAAUma,iBAAkB1b,EAAagb,GAChFhb,GAAeuB,EAAUma,kBAEzBC,EAAQ,CAAC,CAACR,EAAQC,IAEpBnW,EAAO0W,EAAMxmC,OACR8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAC5Bk3B,EAASQ,EAAM13B,GAAG,GAClBm3B,EAASO,EAAM13B,GAAG,GAClBtH,EAASxH,OAAS,EACdimC,GAAU,EACZz+B,EAASvE,KAAK,CACZ+N,EAAGob,EAAUma,iBAAmBP,EAChCnlC,EAAGurB,EAAUma,iBAAmBN,IAEzBD,GAAU,EACnBx+B,EAASvE,KAAK,CACZ+N,EAAGob,EAAUma,kBAAoBP,EAAS,GAC1CnlC,EAAGurB,EAAUma,kBAAoBN,EAAS,MAG5Cz+B,EAASvE,KAAK,CACZ+N,EAAGob,EAAUma,iBAAmBP,EAChCnlC,EAAGurB,EAAUma,mBAEf/+B,EAASvE,KAAK,CACZ+N,EAAG,EACHnQ,EAAGurB,EAAUma,kBAAoBN,EAAS,MAG9C,IAAIQ,EAAgB3mC,KAAK4mC,UAAUta,EAAW5kB,EAAS,IACvD,GAAIA,EAAS,GAAGwJ,IAAMxJ,EAAS,GAAG3G,EAAG,CACnC,GAAI2G,EAASxH,OAAS,EAEpB,GAD4BosB,EAAUiZ,MAAMtT,MAAMpB,OAAOvE,EAAUiZ,MAAMtT,MAAMpF,QAAU,GAC/D9sB,EAAG,CAC3B,IAAI8mC,EAAYF,EAAcG,MAC9B9mC,KAAK+mC,SAASJ,EAAevF,GAC7BuF,EAAgB3mC,KAAK4mC,UAAUta,EAAW5kB,EAAS,GAAIm/B,QAEvD7mC,KAAK+mC,SAASJ,EAAevF,GAC7BuF,EAAgB3mC,KAAK4mC,UAAUta,EAAW5kB,EAAS,IAGvD1H,KAAK+mC,SAASJ,EAAevF,IAGjC9U,EAAUiZ,MAAMtT,MAAQmP,KAahCgD,aAAap/B,UAAU+hC,SAAW,SAAUC,EAAU5F,GACpD,IAAIt9B,EACA8T,EAAMovB,EAAS9mC,OACnB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBs9B,EAAqBM,SAASsF,EAASljC,KAI3CsgC,aAAap/B,UAAUiiC,WAAa,SAAUpjB,EAAKC,EAAKC,EAAK2G,EAAKwc,EAAWj2B,EAAKk2B,GAChFD,EAAUtH,QAAQ9b,EAAI,GAAIA,EAAI,GAAI,IAAK7S,GACvCi2B,EAAUtH,QAAQ7b,EAAI,GAAIA,EAAI,GAAI,IAAK9S,EAAM,GACzCk2B,GACFD,EAAUtH,QAAQ/b,EAAI,GAAIA,EAAI,GAAI,IAAK5S,GAEzCi2B,EAAUtH,QAAQlV,EAAI,GAAIA,EAAI,GAAI,IAAKzZ,EAAM,IAG/CmzB,aAAap/B,UAAUoiC,oBAAsB,SAAUrf,EAAQmf,EAAWj2B,EAAKk2B,GAC7ED,EAAUtH,QAAQ7X,EAAO,GAAIA,EAAO,GAAI,IAAK9W,GAC7Ci2B,EAAUtH,QAAQ7X,EAAO,GAAIA,EAAO,GAAI,IAAK9W,EAAM,GAC/Ck2B,GACFD,EAAUtH,QAAQ7X,EAAO,GAAIA,EAAO,GAAI,IAAK9W,GAE/Ci2B,EAAUtH,QAAQ7X,EAAO,GAAIA,EAAO,GAAI,IAAK9W,EAAM,IAGrDmzB,aAAap/B,UAAU4hC,UAAY,SAAUta,EAAW+a,EAAcH,GACpE,IAEIpjC,EAEAkL,EACAghB,EAEAsX,EACAC,EACAlc,EACAmc,EAEAxb,EAZA4Z,EAAYtZ,EAAUsZ,UACtBW,EAAaja,EAAUiZ,MAAMtT,MAAMpB,OAEnCjZ,EAAM0U,EAAUiZ,MAAMtT,MAAMpF,QAG5B9B,EAAc,EAKd8F,EAAS,GAETsW,GAAW,EAUf,IATKD,GAKHK,EAAeL,EAAUra,QACzBb,EAAUkb,EAAUra,UALpBqa,EAAY1F,UAAUrW,aACtBoc,EAAe,EACfvb,EAAU,GAKZ6E,EAAO1tB,KAAK+jC,GACPpjC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAI3B,IAHAunB,EAAUua,EAAU9hC,GAAGunB,QACvB6b,EAAUnnC,EAAIwmC,EAAWziC,GAAG/D,EAC5BiwB,EAAOuW,EAAWziC,GAAG/D,EAAIsrB,EAAQnrB,OAASmrB,EAAQnrB,OAAS,EACtD8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAEzB,GAAI+b,GADJuc,EAAoBjc,EAAQrc,EAAI,IACI+b,YAAcsc,EAAan2B,EAC7D6Z,GAAeuc,EAAkBvc,YACjCmc,EAAUnnC,GAAI,MACT,IAAIgrB,EAAcsc,EAAatmC,EAAG,CACvCmmC,EAAUnnC,GAAI,EACd,MAEIsnC,EAAan2B,GAAK6Z,GAAesc,EAAatmC,GAAKgqB,EAAcuc,EAAkBvc,aACrF/qB,KAAKinC,WAAWV,EAAWziC,GAAGyW,EAAEvL,EAAI,GAAIu3B,EAAWziC,GAAGgc,EAAE9Q,EAAI,GAAIu3B,EAAWziC,GAAGA,EAAEkL,GAAIu3B,EAAWziC,GAAGyW,EAAEvL,GAAIk4B,EAAWK,EAAcJ,GACjIA,GAAW,IAEXK,EAAU/X,IAAI1C,cAAcwZ,EAAWziC,GAAGyW,EAAEvL,EAAI,GAAIu3B,EAAWziC,GAAGyW,EAAEvL,GAAIu3B,EAAWziC,GAAGgc,EAAE9Q,EAAI,GAAIu3B,EAAWziC,GAAGA,EAAEkL,IAAKq4B,EAAan2B,EAAI6Z,GAAeuc,EAAkBvc,aAAcsc,EAAatmC,EAAIgqB,GAAeuc,EAAkBvc,YAAaM,EAAQrc,EAAI,IAChQhP,KAAKonC,oBAAoBI,EAASN,EAAWK,EAAcJ,GAE3DA,GAAW,EACXD,EAAUnnC,GAAI,GAEhBgrB,GAAeuc,EAAkBvc,YACjCwc,GAAgB,EAGpB,GAAIhB,EAAWziC,GAAG/D,GAAKsrB,EAAQnrB,OAAQ,CAErC,GADAonC,EAAoBjc,EAAQrc,EAAI,GAC5B+b,GAAesc,EAAatmC,EAAG,CACjC,IAAIwqB,EAAgBF,EAAQrc,EAAI,GAAG+b,YAC/Bsc,EAAan2B,GAAK6Z,GAAesc,EAAatmC,GAAKgqB,EAAcQ,GACnEvrB,KAAKinC,WAAWV,EAAWziC,GAAGyW,EAAEvL,EAAI,GAAIu3B,EAAWziC,GAAGgc,EAAE9Q,EAAI,GAAIu3B,EAAWziC,GAAGA,EAAE,GAAIyiC,EAAWziC,GAAGyW,EAAE,GAAI2sB,EAAWK,EAAcJ,GACjIA,GAAW,IAEXK,EAAU/X,IAAI1C,cAAcwZ,EAAWziC,GAAGyW,EAAEvL,EAAI,GAAIu3B,EAAWziC,GAAGyW,EAAE,GAAIgsB,EAAWziC,GAAGgc,EAAE9Q,EAAI,GAAIu3B,EAAWziC,GAAGA,EAAE,IAAKujC,EAAan2B,EAAI6Z,GAAeQ,GAAgB8b,EAAatmC,EAAIgqB,GAAeQ,EAAeF,EAAQrc,EAAI,IAChOhP,KAAKonC,oBAAoBI,EAASN,EAAWK,EAAcJ,GAE3DA,GAAW,EACXD,EAAUnnC,GAAI,QAGhBmnC,EAAUnnC,GAAI,EAEhBgrB,GAAeuc,EAAkBvc,YACjCwc,GAAgB,EAMlB,GAJIL,EAAUra,UACZqa,EAAUtH,QAAQsH,EAAU3sB,EAAEyR,GAAS,GAAIkb,EAAU3sB,EAAEyR,GAAS,GAAI,IAAKA,GACzEkb,EAAUtH,QAAQsH,EAAU3sB,EAAE2sB,EAAUra,QAAU,GAAG,GAAIqa,EAAU3sB,EAAE2sB,EAAUra,QAAU,GAAG,GAAI,IAAKqa,EAAUra,QAAU,IAEvH9B,EAAcsc,EAAatmC,EAC7B,MAEE+C,EAAI8T,EAAM,IACZsvB,EAAY1F,UAAUrW,aACtBgc,GAAW,EACXtW,EAAO1tB,KAAK+jC,GACZK,EAAe,GAGnB,OAAO1W,GAGTkT,eAAeE,iBAAiB,KAAMG,cAKtC5a,gBAAgB,CAAC2a,eAAgBE,sBACjCA,qBAAqBr/B,UAAUqgC,uBAAyB,SAAU3I,EAAMxM,GACtElwB,KAAK8c,SAAW9c,KAAKylC,YACrBzlC,KAAKynC,GAAK1P,gBAAgB4F,QAAQjB,EAAMxM,EAAK1V,EAAG,EAAG,KAAMxa,MACzDA,KAAK2c,cAAgB3c,KAAKynC,GAAG5K,gBAAgB38B,QAG/CmkC,qBAAqBr/B,UAAU0iC,YAAc,SAAUxW,EAAM5Y,GAC3D,IAEIxU,EAFA6jC,EAAanG,UAAUrW,aAC3Bwc,EAAW5nC,EAAImxB,EAAKnxB,EAEpB,IACI6nC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAnI,EACAC,EACAC,EACAC,EACAC,EACAC,EAbAvoB,EAAMsZ,EAAKrE,QAOXhe,EAAQ,EAOZ,IAAK/K,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB8jC,EAAW1W,EAAK3W,EAAEzW,GAClBgkC,EAAW5W,EAAKpR,EAAEhc,GAClB+jC,EAAW3W,EAAKptB,EAAEA,GACd8jC,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAAN/jC,GAAWA,IAAM8T,EAAM,GAAOsZ,EAAKnxB,GAQpCgoC,EADQ,IAANjkC,EACQotB,EAAK3W,EAAE3C,EAAM,GAEbsZ,EAAK3W,EAAEzW,EAAI,GAGvBmkC,GADAD,EAAWrqC,KAAK0Z,KAAK1Z,KAAKwZ,IAAIywB,EAAS,GAAKG,EAAQ,GAAI,GAAKpqC,KAAKwZ,IAAIywB,EAAS,GAAKG,EAAQ,GAAI,KACxEpqC,KAAK4R,IAAIy4B,EAAW,EAAG1vB,GAAS0vB,EAAW,EAEnElI,EADAI,EAAK0H,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDlI,EADAI,EAAKyH,EAAS,IAAMA,EAAS,GAAKG,EAAQ,IAAME,EAEhDjI,EAAKF,GAAMA,EAAK8H,EAAS,IAAMzvB,YAC/B8nB,EAAKF,GAAMA,EAAK6H,EAAS,IAAMzvB,YAC/BwvB,EAAW9H,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAItxB,GAC/CA,GAAS,EAGPk5B,EADEjkC,IAAM8T,EAAM,EACJsZ,EAAK3W,EAAE,GAEP2W,EAAK3W,EAAEzW,EAAI,GAGvBmkC,GADAD,EAAWrqC,KAAK0Z,KAAK1Z,KAAKwZ,IAAIywB,EAAS,GAAKG,EAAQ,GAAI,GAAKpqC,KAAKwZ,IAAIywB,EAAS,GAAKG,EAAQ,GAAI,KACxEpqC,KAAK4R,IAAIy4B,EAAW,EAAG1vB,GAAS0vB,EAAW,EAEnElI,EADAE,EAAK4H,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDlI,EADAE,EAAK2H,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAEhD/H,EAAKJ,GAAMA,EAAK8H,EAAS,IAAMzvB,YAC/BgoB,EAAKJ,GAAMA,EAAK6H,EAAS,IAAMzvB,YAC/BwvB,EAAW9H,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAItxB,GAC/CA,GAAS,IApCT84B,EAAW9H,YAAY+H,EAAS,GAAIA,EAAS,GAAIE,EAAS,GAAIA,EAAS,GAAID,EAAS,GAAIA,EAAS,GAAIh5B,GAIrGA,GAAS,IAmCX84B,EAAW9H,YAAY3O,EAAK3W,EAAEzW,GAAG,GAAIotB,EAAK3W,EAAEzW,GAAG,GAAIotB,EAAKpR,EAAEhc,GAAG,GAAIotB,EAAKpR,EAAEhc,GAAG,GAAIotB,EAAKptB,EAAEA,GAAG,GAAIotB,EAAKptB,EAAEA,GAAG,GAAI+K,GAC3GA,GAAS,GAGb,OAAO84B,GAGTtD,qBAAqBr/B,UAAUshC,cAAgB,SAAUvJ,GACvD,IAAIwJ,EACAziC,EAEAkL,EACAghB,EAIE1D,EACA8U,EAPFxpB,EAAM5X,KAAK6wB,OAAO3wB,OAGlBunC,EAAKznC,KAAKynC,GAAGltB,EAEjB,GAAW,IAAPktB,EAGF,IAAK3jC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAG3B,GADAs9B,GADA9U,EAAYtsB,KAAK6wB,OAAO/sB,IACSs9B,qBAC1B9U,EAAUiZ,MAAM1oB,MAAS7c,KAAK6c,MAASkgB,EAK5C,IAJAqE,EAAqBK,gBACrBnV,EAAUiZ,MAAM1oB,MAAO,EACvB0pB,EAAaja,EAAUiZ,MAAMtT,MAAMpB,OACnCb,EAAO1D,EAAUiZ,MAAMtT,MAAMpF,QACxB7d,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBoyB,EAAqBM,SAAS1hC,KAAK0nC,YAAYnB,EAAWv3B,GAAIy4B,IAGlEnb,EAAUiZ,MAAMtT,MAAQ3F,EAAU8U,qBAGjCphC,KAAKyc,kBAAkBvc,SAC1BF,KAAK6c,MAAO,IAIhBknB,eAAeE,iBAAiB,KAAMI,sBAKtC7a,gBAAgB,CAAC2a,eAAgBG,wBACjCA,uBAAuBt/B,UAAUqgC,uBAAyB,SAAU3I,EAAMxM,GACxElwB,KAAK8c,SAAW9c,KAAKylC,YACrBzlC,KAAKkoC,OAASnQ,gBAAgB4F,QAAQjB,EAAMxM,EAAK/xB,EAAG,EAAG,KAAM6B,MAC7DA,KAAK2c,cAAgB3c,KAAKkoC,OAAOrL,gBAAgB38B,QAGnDokC,uBAAuBt/B,UAAU0iC,YAAc,SAAUxW,EAAMgX,GAC7D,IAAI3Z,EAAU2Z,EAAS,IACnBC,EAAc,CAAC,EAAG,GAClBC,EAAalX,EAAKrE,QAClB/oB,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIskC,EAAYtkC,GAAK,EAC/BqkC,EAAY,IAAMjX,EAAK3W,EAAEzW,GAAG,GAC5BqkC,EAAY,IAAMjX,EAAK3W,EAAEzW,GAAG,GAE9BqkC,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEItI,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAwH,EAAanG,UAAUrW,aAQ3B,IAPAwc,EAAW5nC,EAAImxB,EAAKnxB,EAOf+D,EAAI,EAAGA,EAAIskC,EAAYtkC,GAAK,EAC/Bg8B,EAAK5O,EAAK3W,EAAEzW,GAAG,IAAMqkC,EAAY,GAAKjX,EAAK3W,EAAEzW,GAAG,IAAMyqB,EACtDwR,EAAK7O,EAAK3W,EAAEzW,GAAG,IAAMqkC,EAAY,GAAKjX,EAAK3W,EAAEzW,GAAG,IAAMyqB,EACtDyR,EAAK9O,EAAKpR,EAAEhc,GAAG,IAAMqkC,EAAY,GAAKjX,EAAKpR,EAAEhc,GAAG,KAAOyqB,EACvD0R,EAAK/O,EAAKpR,EAAEhc,GAAG,IAAMqkC,EAAY,GAAKjX,EAAKpR,EAAEhc,GAAG,KAAOyqB,EACvD2R,EAAKhP,EAAKptB,EAAEA,GAAG,IAAMqkC,EAAY,GAAKjX,EAAKptB,EAAEA,GAAG,KAAOyqB,EACvD4R,EAAKjP,EAAKptB,EAAEA,GAAG,IAAMqkC,EAAY,GAAKjX,EAAKptB,EAAEA,GAAG,KAAOyqB,EACvDoZ,EAAW9H,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIr8B,GAEjD,OAAO6jC,GAGTrD,uBAAuBt/B,UAAUshC,cAAgB,SAAUvJ,GACzD,IAAIwJ,EACAziC,EAEAkL,EACAghB,EAIE1D,EACA8U,EAPFxpB,EAAM5X,KAAK6wB,OAAO3wB,OAGlBgoC,EAASloC,KAAKkoC,OAAO3tB,EAEzB,GAAe,IAAX2tB,EAGF,IAAKpkC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAG3B,GADAs9B,GADA9U,EAAYtsB,KAAK6wB,OAAO/sB,IACSs9B,qBAC1B9U,EAAUiZ,MAAM1oB,MAAS7c,KAAK6c,MAASkgB,EAK5C,IAJAqE,EAAqBK,gBACrBnV,EAAUiZ,MAAM1oB,MAAO,EACvB0pB,EAAaja,EAAUiZ,MAAMtT,MAAMpB,OACnCb,EAAO1D,EAAUiZ,MAAMtT,MAAMpF,QACxB7d,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBoyB,EAAqBM,SAAS1hC,KAAK0nC,YAAYnB,EAAWv3B,GAAIk5B,IAGlE5b,EAAUiZ,MAAMtT,MAAQ3F,EAAU8U,qBAGjCphC,KAAKyc,kBAAkBvc,SAC1BF,KAAK6c,MAAO,IAGhBknB,eAAeE,iBAAiB,KAAMK,wBAKtC9a,gBAAgB,CAAC2a,eAAgBI,kBAEjCA,iBAAiBv/B,UAAUqgC,uBAAyB,SAAU3I,EAAMxM,GAClElwB,KAAK8c,SAAW9c,KAAKylC,YACrBzlC,KAAKD,EAAIg4B,gBAAgB4F,QAAQjB,EAAMxM,EAAKnwB,EAAG,EAAG,KAAMC,MACxDA,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,KAAM9f,MACxDA,KAAKqoC,GAAKzK,yBAAyByB,qBAAqB3C,EAAMxM,EAAKmY,GAAIroC,MACvEA,KAAKsoC,GAAKvQ,gBAAgB4F,QAAQjB,EAAMxM,EAAKmY,GAAGC,GAAI,EAAG,IAAMtoC,MAC7DA,KAAKuoC,GAAKxQ,gBAAgB4F,QAAQjB,EAAMxM,EAAKmY,GAAGE,GAAI,EAAG,IAAMvoC,MAC7DA,KAAKkwB,KAAOA,EACPlwB,KAAKyc,kBAAkBvc,QAC1BF,KAAK8c,UAAS,GAEhB9c,KAAK2c,cAAgB3c,KAAKyc,kBAAkBvc,OAC5CF,KAAKwoC,QAAU,IAAItqB,OACnBle,KAAKyoC,QAAU,IAAIvqB,OACnBle,KAAK0oC,QAAU,IAAIxqB,OACnBle,KAAK2oC,QAAU,IAAIzqB,OACnBle,KAAK4oC,OAAS,IAAI1qB,QAGpBqmB,iBAAiBv/B,UAAU6jC,gBAAkB,SAAUL,EAASC,EAASC,EAASvoB,EAAWyK,EAAMke,GACjG,IAAI3c,EAAM2c,GAAO,EAAI,EACjBC,EAAS5oB,EAAUjP,EAAEqJ,EAAE,IAAM,EAAI4F,EAAUjP,EAAEqJ,EAAE,KAAO,EAAIqQ,GAC1Doe,EAAS7oB,EAAUjP,EAAEqJ,EAAE,IAAM,EAAI4F,EAAUjP,EAAEqJ,EAAE,KAAO,EAAIqQ,GAC9D4d,EAAQzoB,UAAUI,EAAUzF,EAAEH,EAAE,GAAK4R,EAAMvB,EAAMzK,EAAUzF,EAAEH,EAAE,GAAK4R,EAAMvB,EAAMzK,EAAUzF,EAAEH,EAAE,IAC9FkuB,EAAQ1oB,WAAWI,EAAUhiB,EAAEoc,EAAE,IAAK4F,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,IACtEkuB,EAAQ9pB,QAAQwB,EAAU3F,EAAED,EAAI4R,EAAMvB,GACtC6d,EAAQ1oB,UAAUI,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,IACpEmuB,EAAQ3oB,WAAWI,EAAUhiB,EAAEoc,EAAE,IAAK4F,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,IACtEmuB,EAAQjpB,MAAMqpB,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DN,EAAQ3oB,UAAUI,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,GAAI4F,EAAUhiB,EAAEoc,EAAE,KAGtEgqB,iBAAiBv/B,UAAUy7B,KAAO,SAAU/D,EAAM3gB,EAAK9K,EAAKg4B,GAW1D,IAVAjpC,KAAK08B,KAAOA,EACZ18B,KAAK+b,IAAMA,EACX/b,KAAKiR,IAAMA,EACXjR,KAAKipC,UAAYA,EACjBjpC,KAAKkpC,eAAiB,EACtBlpC,KAAKmpC,UAAY,GACjBnpC,KAAKopC,QAAU,GACfppC,KAAK48B,SAAW,EAChB58B,KAAK+c,6BAA6B2f,GAClC18B,KAAKqlC,uBAAuB3I,EAAM3gB,EAAI9K,IAC/BA,EAAM,GACXA,GAAO,EAEPjR,KAAKmpC,UAAUE,QAAQttB,EAAI9K,IAEzBjR,KAAKyc,kBAAkBvc,OACzBF,KAAKyO,GAAI,EAETzO,KAAK8c,UAAS,IAIlBynB,iBAAiBv/B,UAAUskC,cAAgB,SAAUC,GACnD,IAAIzlC,EACA8T,EAAM2xB,EAASrpC,OACnB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBylC,EAASzlC,GAAG0lC,YAAa,EACF,OAAnBD,EAASzlC,GAAGmc,IACdjgB,KAAKspC,cAAcC,EAASzlC,GAAG3C,KAKrCojC,iBAAiBv/B,UAAUykC,cAAgB,SAAUF,GACnD,IAAIG,EAAch3B,KAAKse,MAAMte,KAAKE,UAAU22B,IAE5C,OADAvpC,KAAKspC,cAAcI,GACZA,GAGTnF,iBAAiBv/B,UAAU2kC,kBAAoB,SAAUJ,EAAUK,GACjE,IAAI9lC,EACA8T,EAAM2xB,EAASrpC,OACnB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBylC,EAASzlC,GAAG+lC,QAAUD,EACC,OAAnBL,EAASzlC,GAAGmc,IACdjgB,KAAK2pC,kBAAkBJ,EAASzlC,GAAG3C,GAAIyoC,IAK7CrF,iBAAiBv/B,UAAUshC,cAAgB,SAAUvJ,GACnD,IAAI+M,EACAC,EACAjmC,EACAqoB,EACA6d,EACAC,GAAc,EAClB,GAAIjqC,KAAK6c,MAAQkgB,EAAe,CAC9B,IAmBI6M,EAnBAM,EAASvsC,KAAKmF,KAAK9C,KAAKD,EAAEwa,GAC9B,GAAIva,KAAKopC,QAAQlpC,OAASgqC,EAAQ,CAChC,KAAOlqC,KAAKopC,QAAQlpC,OAASgqC,GAAQ,CACnC,IAAIC,EAAQ,CACVhpC,GAAInB,KAAKypC,cAAczpC,KAAKmpC,WAC5BlpB,GAAI,MAENkqB,EAAMhpC,GAAGgC,KAAK,CACZhF,EAAG,CAAEA,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,CAAC,EAAG,IAAMyY,GAAI,YAAapH,EAAG,CAAE3hB,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,KAAOiM,EAAG,CAAEvc,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,CAAC,EAAG,IAAM+L,EAAG,CAAErc,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,CAAC,CAAEyC,EAAG,EAAGnQ,EAAG,EAAG6Z,EAAG,GAAK,CAAE1J,EAAG,EAAGnQ,EAAG,EAAG6Z,EAAG,KAAQ1J,EAAG,CAAE/S,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,CAAC,IAAK,MAAQ+vB,GAAI,CAAErgC,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,GAAK8vB,GAAI,CAAEpgC,EAAG,EAAGisC,GAAI,EAAG37B,EAAG,GAAKwR,GAAI,OAG/QjgB,KAAK+b,IAAIH,OAAO,EAAG,EAAGuuB,GACtBnqC,KAAKopC,QAAQxtB,OAAO,EAAG,EAAGuuB,GAC1BnqC,KAAKkpC,gBAAkB,EAEzBlpC,KAAK08B,KAAK2N,eACVJ,GAAc,EAIhB,IAFAD,EAAO,EAEFlmC,EAAI,EAAGA,GAAK9D,KAAKopC,QAAQlpC,OAAS,EAAG4D,GAAK,EAAG,CAIhD,GAHA8lC,EAAaI,EAAOE,EACpBlqC,KAAKopC,QAAQtlC,GAAG+lC,QAAUD,EAC1B5pC,KAAK2pC,kBAAkB3pC,KAAKopC,QAAQtlC,GAAG3C,GAAIyoC,IACtCA,EAAY,CACf,IAAIU,EAAQtqC,KAAKipC,UAAUnlC,GAAG3C,GAC1BopC,EAAgBD,EAAMA,EAAMpqC,OAAS,GACJ,IAAjCqqC,EAAcpqB,UAAUqqB,GAAGjwB,GAC7BgwB,EAAcpqB,UAAUqqB,GAAG3tB,MAAO,EAClC0tB,EAAcpqB,UAAUqqB,GAAGjwB,EAAI,GAE/BgwB,EAAcpqB,UAAUqqB,GAAG3tB,MAAO,EAGtCmtB,GAAQ,EAGVhqC,KAAKkpC,eAAiBgB,EAGtB,IAAIjvB,EAASjb,KAAK8f,EAAEvF,EAChBkwB,EAAexvB,EAAS,EACxByvB,EAAczvB,EAAS,EAAItd,KAAKoF,MAAMkY,GAAUtd,KAAKmF,KAAKmY,GAC1D0vB,EAAS3qC,KAAKwoC,QAAQrhC,MACtByjC,EAAS5qC,KAAKyoC,QAAQthC,MACtB0jC,EAAS7qC,KAAK0oC,QAAQvhC,MAC1BnH,KAAKwoC,QAAQ9pB,QACb1e,KAAKyoC,QAAQ/pB,QACb1e,KAAK0oC,QAAQhqB,QACb1e,KAAK2oC,QAAQjqB,QACb1e,KAAK4oC,OAAOlqB,QACZ,IAwBI1P,EACAghB,EAzBA8a,EAAY,EAEhB,GAAI7vB,EAAS,EAAG,CACd,KAAO6vB,EAAYJ,GACjB1qC,KAAK6oC,gBAAgB7oC,KAAKwoC,QAASxoC,KAAKyoC,QAASzoC,KAAK0oC,QAAS1oC,KAAKqoC,GAAI,GAAG,GAC3EyC,GAAa,EAEXL,IACFzqC,KAAK6oC,gBAAgB7oC,KAAKwoC,QAASxoC,KAAKyoC,QAASzoC,KAAK0oC,QAAS1oC,KAAKqoC,GAAIoC,GAAc,GACtFK,GAAaL,QAEV,GAAIxvB,EAAS,EAAG,CACrB,KAAO6vB,EAAYJ,GACjB1qC,KAAK6oC,gBAAgB7oC,KAAKwoC,QAASxoC,KAAKyoC,QAASzoC,KAAK0oC,QAAS1oC,KAAKqoC,GAAI,GAAG,GAC3EyC,GAAa,EAEXL,IACFzqC,KAAK6oC,gBAAgB7oC,KAAKwoC,QAASxoC,KAAKyoC,QAASzoC,KAAK0oC,QAAS1oC,KAAKqoC,IAAKoC,GAAc,GACvFK,GAAaL,GAQjB,IALA3mC,EAAoB,IAAhB9D,KAAKkwB,KAAKtQ,EAAU,EAAI5f,KAAKkpC,eAAiB,EAClD/c,EAAsB,IAAhBnsB,KAAKkwB,KAAKtQ,EAAU,GAAK,EAC/BoqB,EAAOhqC,KAAKkpC,eAGLc,GAAM,CAUX,GAPAha,GADA+Z,GADAD,EAAQ9pC,KAAKipC,UAAUnlC,GAAG3C,IACH2oC,EAAM5pC,OAAS,GAAGigB,UAAU4qB,OAAOxwB,EAAEpT,OACtCjH,OACtB4pC,EAAMA,EAAM5pC,OAAS,GAAGigB,UAAU4qB,OAAOluB,MAAO,EAChDitB,EAAMA,EAAM5pC,OAAS,GAAGigB,UAAUqqB,GAAG3tB,MAAO,EAC5CitB,EAAMA,EAAM5pC,OAAS,GAAGigB,UAAUqqB,GAAGjwB,EAA4B,IAAxBva,KAAKkpC,eAC1ClpC,KAAKsoC,GAAG/tB,EACRva,KAAKsoC,GAAG/tB,GAAKva,KAAKuoC,GAAGhuB,EAAIva,KAAKsoC,GAAG/tB,IAAMzW,GAAK9D,KAAKkpC,eAAiB,IAEpD,IAAd4B,EAAiB,CAQnB,KAPW,IAANhnC,GAAmB,IAARqoB,GAAeroB,IAAM9D,KAAKkpC,eAAiB,IAAc,IAAT/c,IAC9DnsB,KAAK6oC,gBAAgB7oC,KAAKwoC,QAASxoC,KAAKyoC,QAASzoC,KAAK0oC,QAAS1oC,KAAKqoC,GAAI,GAAG,GAE7EroC,KAAK4oC,OAAOzoB,UAAUyqB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvM5qC,KAAK4oC,OAAOzoB,UAAU0qB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvM7qC,KAAK4oC,OAAOzoB,UAAUwqB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAElM37B,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB+6B,EAAe/6B,GAAKhP,KAAK4oC,OAAOzhC,MAAM6H,GAExChP,KAAK4oC,OAAOlqB,aAGZ,IADA1e,KAAK4oC,OAAOlqB,QACP1P,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB+6B,EAAe/6B,GAAKhP,KAAK4oC,OAAOzhC,MAAM6H,GAG1C87B,GAAa,EACbd,GAAQ,EACRlmC,GAAKqoB,QAMP,IAHA6d,EAAOhqC,KAAKkpC,eACZplC,EAAI,EACJqoB,EAAM,EACC6d,GAELD,GADAD,EAAQ9pC,KAAKipC,UAAUnlC,GAAG3C,IACH2oC,EAAM5pC,OAAS,GAAGigB,UAAU4qB,OAAOxwB,EAAEpT,MAC5D2iC,EAAMA,EAAM5pC,OAAS,GAAGigB,UAAU4qB,OAAOluB,MAAO,EAChDitB,EAAMA,EAAM5pC,OAAS,GAAGigB,UAAUqqB,GAAG3tB,MAAO,EAC5CmtB,GAAQ,EACRlmC,GAAKqoB,EAGT,OAAO8d,GAGT1F,iBAAiBv/B,UAAU08B,SAAW,aAEtCqC,eAAeE,iBAAiB,KAAMM,kBAUtCC,gBAAgBx/B,UAAU08B,SAAW,SAAUpV,GACzCtsB,KAAK6sB,UAAY7sB,KAAKu/B,aACxBv/B,KAAK6wB,OAAS7wB,KAAK6wB,OAAOruB,OAAOuV,iBAAiB/X,KAAKu/B,aACvDv/B,KAAKu/B,YAAc,GAErBv/B,KAAK6wB,OAAO7wB,KAAK6sB,SAAWP,EAC5BtsB,KAAK6sB,SAAW,GAGlB2X,gBAAgBx/B,UAAUy8B,cAAgB,WACxC,IAAI39B,EACJ,IAAKA,EAAI,EAAGA,EAAI9D,KAAK6sB,QAAS/oB,GAAK,EACjC09B,UAAU6E,QAAQrmC,KAAK6wB,OAAO/sB,IAEhC9D,KAAK6sB,QAAU,GA6BjB4X,aAAaz/B,UAAU8X,SAAW,SAAU8hB,GAC1C,IAAI5+B,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,SAAYgC,KAGtD5+B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,QACpC58B,KAAK4c,2BACL5c,KAAK6c,KAAO7c,KAAK6c,MAAQ+hB,EACrB5+B,KAAK6c,MAAM,CACb,IAAI/Y,EAAI,EACJ8T,EAAM5X,KAAK0kC,UAAUxkC,OAIzB,IAHsB,QAAlBF,KAAK6H,WACP7H,KAAK2kC,QAAU,IAEZ7gC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACI,MAAxB9D,KAAK0kC,UAAU5gC,GAAG+b,EACE,QAAlB7f,KAAK6H,SACP7H,KAAK2kC,SAAW,IAAM3kC,KAAK0kC,UAAU5gC,GAAG4W,EAAEH,EAE1Cva,KAAK4kC,UAAU9gC,GAAK9D,KAAK0kC,UAAU5gC,GAAG4W,EAAEH,EAG1Cva,KAAK6kC,WAAW,GAAK7kC,KAAK0kC,UAAU5gC,GAAG4W,EAAEH,IAKjDiP,gBAAgB,CAAClN,0BAA2BmoB,cAkB5CK,iBAAiB9/B,UAAUgmC,cAAgB,SAAUt9B,EAAQqa,GAI3D,IAHA,IAAIjkB,EAAI,EACJ8T,EAAM5X,KAAK8f,EAAE5f,OAAS,EAEnB4D,EAAI8T,GAAK,CAEd,GADOja,KAAKka,IAAInK,EAAW,EAAJ5J,GAAS4J,EAAgB,EAATqa,EAAiB,EAAJjkB,IACzC,IACT,OAAO,EAETA,GAAK,EAEP,OAAO,GAGTghC,iBAAiB9/B,UAAUmgC,iBAAmB,WAC5C,GAAInlC,KAAK8f,EAAE5f,OAAS,IAAMF,KAAKD,EAAEG,OAAS,EACxC,OAAO,EAET,GAAIF,KAAKkwB,KAAKzhB,EAAEA,EAAE,GAAGyC,EAGnB,IAFA,IAAIpN,EAAI,EACJ8T,EAAM5X,KAAKkwB,KAAKzhB,EAAEA,EAAEvO,OACjB4D,EAAI8T,GAAK,CACd,IAAK5X,KAAKgrC,cAAchrC,KAAKkwB,KAAKzhB,EAAEA,EAAE3K,GAAGoN,EAAGlR,KAAKkwB,KAAKxV,GACpD,OAAO,EAET5W,GAAK,OAEF,IAAK9D,KAAKgrC,cAAchrC,KAAKkwB,KAAKzhB,EAAEA,EAAGzO,KAAKkwB,KAAKxV,GACtD,OAAO,EAET,OAAO,GAGToqB,iBAAiB9/B,UAAU8X,SAAW,SAAU8hB,GAK9C,GAJA5+B,KAAKwc,KAAKM,WACV9c,KAAK6c,MAAO,EACZ7c,KAAKglC,OAAQ,EACbhlC,KAAKilC,OAAQ,EACTjlC,KAAKwc,KAAKK,MAAQ+hB,EAAa,CACjC,IAAI96B,EAEA04B,EACA55B,EAFAgV,EAAoB,EAAd5X,KAAKkwB,KAAKxV,EAGpB,IAAK5W,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB04B,EAAO14B,EAAI,IAAM,EAAI,IAAM,IAC3BlB,EAAMjF,KAAK2a,MAAMtY,KAAKwc,KAAKjC,EAAEzW,GAAK04B,GAC9Bx8B,KAAKD,EAAE+D,KAAOlB,IAChB5C,KAAKD,EAAE+D,GAAKlB,EACZ5C,KAAKglC,OAASpG,GAGlB,GAAI5+B,KAAK8f,EAAE5f,OAET,IADA0X,EAAM5X,KAAKwc,KAAKjC,EAAEra,OACb4D,EAAkB,EAAd9D,KAAKkwB,KAAKxV,EAAO5W,EAAI8T,EAAK9T,GAAK,EACtC04B,EAAO14B,EAAI,IAAM,EAAI,IAAM,EAC3BlB,EAAMkB,EAAI,IAAM,EAAInG,KAAK2a,MAAuB,IAAjBtY,KAAKwc,KAAKjC,EAAEzW,IAAY9D,KAAKwc,KAAKjC,EAAEzW,GAC/D9D,KAAK8f,EAAEhc,EAAkB,EAAd9D,KAAKkwB,KAAKxV,KAAW9X,IAClC5C,KAAK8f,EAAEhc,EAAkB,EAAd9D,KAAKkwB,KAAKxV,GAAS9X,EAC9B5C,KAAKilC,OAASrG,GAIpB5+B,KAAK6c,MAAQ+hB,IAIjBpV,gBAAgB,CAAClN,0BAA2BwoB,kBAI5C,IAAImG,iBAAmB,SAAUC,EAAWhrC,EAAQusB,EAAQkS,GAC1D,GAAe,IAAXz+B,EACF,MAAO,GAET,IAGI4D,EAHAqnC,EAAKD,EAAUprB,EACfjP,EAAKq6B,EAAUpnC,EACfu+B,EAAK6I,EAAU3wB,EAEf6wB,EAAc,KAAOzM,EAAIta,wBAAwBge,EAAG,GAAG,GAAIA,EAAG,GAAG,IACrE,IAAKv+B,EAAI,EAAGA,EAAI5D,EAAQ4D,GAAK,EAC3BsnC,GAAe,KAAOzM,EAAIta,wBAAwB8mB,EAAGrnC,EAAI,GAAG,GAAIqnC,EAAGrnC,EAAI,GAAG,IAAM,IAAM66B,EAAIta,wBAAwBxT,EAAG/M,GAAG,GAAI+M,EAAG/M,GAAG,IAAM,IAAM66B,EAAIta,wBAAwBge,EAAGv+B,GAAG,GAAIu+B,EAAGv+B,GAAG,IAM5L,OAJI2oB,GAAUvsB,IACZkrC,GAAe,KAAOzM,EAAIta,wBAAwB8mB,EAAGrnC,EAAI,GAAG,GAAIqnC,EAAGrnC,EAAI,GAAG,IAAM,IAAM66B,EAAIta,wBAAwBxT,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAM8tB,EAAIta,wBAAwBge,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1L+I,GAAe,KAEVA,GAMLC,uBAA0B,WAC5B,SAASC,EAAgBC,GACvBvrC,KAAKwrC,OAAS,GACdxrC,KAAKurC,aAAeA,EACpBvrC,KAAKyrC,QAAU,EACfzrC,KAAK0rC,UAAW,EAwElB,OArEAJ,EAAgBtmC,UAAY,CAC1B2mC,SAAU,SAAUC,GAClB5rC,KAAKwrC,OAAOroC,KAAKyoC,IAEnB3kC,MAAO,WACL,IAAInD,EACA8T,EAAM5X,KAAKwrC,OAAOtrC,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwrC,OAAO1nC,GAAGmD,SAGnB4kC,OAAQ,WACN,IAAI/nC,EACA8T,EAAM5X,KAAKwrC,OAAOtrC,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwrC,OAAO1nC,GAAG+nC,UAGnBC,QAAS,SAAUC,GACjB,IAAIjoC,EACA8T,EAAM5X,KAAKwrC,OAAOtrC,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwrC,OAAO1nC,GAAGgoC,QAAQC,IAG3BC,YAAa,SAAUC,GACrB,OAAIjsC,KAAKurC,aACAvrC,KAAKurC,aAAaU,GACrBC,KACG,IAAIA,KAAK,CACdhoC,IAAK,CAAC+nC,KAGH,CACLE,WAAW,EACXnlC,KAAM,WAAchH,KAAKmsC,WAAY,GACrCC,KAAM,WAAcpsC,KAAKmsC,WAAY,GACrCE,QAAS,aACTC,KAAM,aACNC,UAAW,eAGfC,gBAAiB,SAAUjB,GACzBvrC,KAAKurC,aAAeA,GAEtBgB,UAAW,SAAUtrC,GACnBjB,KAAKyrC,QAAUxqC,EACfjB,KAAKysC,iBAEPC,KAAM,WACJ1sC,KAAK0rC,UAAW,EAChB1rC,KAAKysC,iBAEPE,OAAQ,WACN3sC,KAAK0rC,UAAW,EAChB1rC,KAAKysC,iBAEPG,UAAW,WACT,OAAO5sC,KAAKyrC,SAEdgB,cAAe,WACb,IAAI3oC,EACA8T,EAAM5X,KAAKwrC,OAAOtrC,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwrC,OAAO1nC,GAAG+oC,OAAO7sC,KAAKyrC,SAAWzrC,KAAK0rC,SAAW,EAAI,MAKzD,WACL,OAAO,IAAIJ,GA9Ee,GAqF1BwB,eAAkB,WACpB,IAAIC,EAAc,WAChB,IAAIC,EAAS3wB,UAAU,UACvB2wB,EAAO5jC,MAAQ,EACf4jC,EAAO3jC,OAAS,EAChB,IAAIjL,EAAM4uC,EAAOjY,WAAW,MAG5B,OAFA32B,EAAI6uC,UAAY,gBAChB7uC,EAAI8uC,SAAS,EAAG,EAAG,EAAG,GACfF,EAPS,GAUlB,SAASG,IACPntC,KAAKotC,cAAgB,EACjBptC,KAAKotC,eAAiBptC,KAAKqtC,aAAertC,KAAKstC,sBAAwBttC,KAAKutC,eAC1EvtC,KAAKwtC,gBACPxtC,KAAKwtC,eAAe,MAI1B,SAASC,IACPztC,KAAKstC,qBAAuB,EACxBttC,KAAKotC,eAAiBptC,KAAKqtC,aAAertC,KAAKstC,sBAAwBttC,KAAKutC,eAC1EvtC,KAAKwtC,gBACPxtC,KAAKwtC,eAAe,MAK1B,SAASE,EAAcC,EAAWC,EAAYC,GAC5C,IAAI3c,EAAO,GACX,GAAIyc,EAAU5sC,EACZmwB,EAAOyc,EAAUjzB,OACZ,GAAIkzB,EAAY,CACrB,IAAIE,EAAYH,EAAUjzB,GACY,IAAlCozB,EAAUpxB,QAAQ,aACpBoxB,EAAYA,EAAUxqC,MAAM,KAAK,IAEnC4tB,EAAO0c,EAAaE,OAEpB5c,EAAO2c,EACP3c,GAAQyc,EAAUI,EAAIJ,EAAUI,EAAI,GACpC7c,GAAQyc,EAAUjzB,EAEpB,OAAOwW,EAGT,SAAS8c,EAAgBC,GACvB,IAAI7zB,EAAS,EACT8zB,EAAaC,YAAY,YACjBF,EAAIG,UACNhlC,OAASgR,EAAS,OACxBpa,KAAKquC,eACLC,cAAcJ,IAEhB9zB,GAAU,GACVuB,KAAK3b,MAAO,IA6ChB,SAASuuC,EAAkBre,GACzB,IAAIjJ,EAAK,CACP0mB,UAAWzd,GAETgB,EAAOwc,EAAcxd,EAAMlwB,KAAK4tC,WAAY5tC,KAAKkxB,MAQrD,OAPAsd,YAAYC,KAAKvd,EAAM,SAAUwd,GAC/BznB,EAAGgnB,IAAMS,EACT1uC,KAAK2uC,kBACLhzB,KAAK3b,MAAO,WACZinB,EAAGgnB,IAAM,GACTjuC,KAAK2uC,kBACLhzB,KAAK3b,OACAinB,EA8DT,SAAS2nB,IACP5uC,KAAKquC,aAAelB,EAAYxxB,KAAK3b,MACrCA,KAAK2uC,eAAiBlB,EAAc9xB,KAAK3b,MACzCA,KAAKguC,gBAAkBA,EAAgBryB,KAAK3b,MAC5CA,KAAKuuC,kBAAoBA,EAAkB5yB,KAAK3b,MAChDA,KAAK4tC,WAAa,GAClB5tC,KAAKkxB,KAAO,GACZlxB,KAAKqtC,YAAc,EACnBrtC,KAAKutC,cAAgB,EACrBvtC,KAAKotC,aAAe,EACpBptC,KAAKstC,oBAAsB,EAC3BttC,KAAKwtC,eAAiB,KACtBxtC,KAAK6uC,OAAS,GAkBhB,OAfAD,EAAsB5pC,UAAY,CAChC8pC,WA3EF,SAAoBjd,EAAQkd,GAE1B,IAAIjrC,EADJ9D,KAAKwtC,eAAiBuB,EAEtB,IAAIn3B,EAAMia,EAAO3xB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnB+tB,EAAO/tB,GAAG8rB,SACRiC,EAAO/tB,GAAG8W,EAGY,IAAhBiX,EAAO/tB,GAAG8W,IACnB5a,KAAKutC,eAAiB,EACtBvtC,KAAK6uC,OAAO1rC,KAAKnD,KAAKuuC,kBAAkB1c,EAAO/tB,OAJ/C9D,KAAKqtC,aAAe,EACpBrtC,KAAK6uC,OAAO1rC,KAAKnD,KAAKgvC,iBAAiBnd,EAAO/tB,QAoEpDmrC,cAvDF,SAAuB/d,GACrBlxB,KAAK4tC,WAAa1c,GAAQ,IAuD1Bge,QA5DF,SAAiBhe,GACflxB,KAAKkxB,KAAOA,GAAQ,IA4DpBie,aApCF,WACE,OAAOnvC,KAAKqtC,cAAgBrtC,KAAKotC,cAoCjCgC,eAjCF,WACE,OAAOpvC,KAAKutC,gBAAkBvtC,KAAKstC,qBAiCnCplC,QA3CF,WACElI,KAAKwtC,eAAiB,KACtBxtC,KAAK6uC,OAAO3uC,OAAS,GA0CrBmvC,SAxDF,SAAkB1B,GAGhB,IAFA,IAAI7pC,EAAI,EACJ8T,EAAM5X,KAAK6uC,OAAO3uC,OACf4D,EAAI8T,GAAK,CACd,GAAI5X,KAAK6uC,OAAO/qC,GAAG6pC,YAAcA,EAC/B,OAAO3tC,KAAK6uC,OAAO/qC,GAAGmqC,IAExBnqC,GAAK,EAEP,OAAO,MAgDPwrC,cAlHF,SAAuB3B,GACrB,IAAIzc,EAAOwc,EAAcC,EAAW3tC,KAAK4tC,WAAY5tC,KAAKkxB,MACtD+c,EAAM5xB,UAAU,OACpB4xB,EAAIsB,YAAc,YAClBtB,EAAIplC,iBAAiB,OAAQ7I,KAAKquC,cAAc,GAChDJ,EAAIplC,iBAAiB,QAAS,WAC5Boe,EAAGgnB,IAAMlB,EACT/sC,KAAKquC,gBACL1yB,KAAK3b,OAAO,GACdiuC,EAAI/pC,IAAMgtB,EACV,IAAIjK,EAAK,CACPgnB,IAAKA,EACLN,UAAWA,GAEb,OAAO1mB,GAqGPuoB,gBA5IF,SAAyB7B,GACvB,IAAIzc,EAAOwc,EAAcC,EAAW3tC,KAAK4tC,WAAY5tC,KAAKkxB,MACtD+c,EAAM9xB,SAAS,SACfrF,SACF9W,KAAKguC,gBAAgBC,GAErBA,EAAIplC,iBAAiB,OAAQ7I,KAAKquC,cAAc,GAElDJ,EAAIplC,iBAAiB,QAAS,WAC5Boe,EAAGgnB,IAAMlB,EACT/sC,KAAKquC,gBACL1yB,KAAK3b,OAAO,GACdiuC,EAAIwB,eAAe,+BAAgC,OAAQve,GACvDlxB,KAAK0vC,eAAeC,OACtB3vC,KAAK0vC,eAAeC,OAAO1B,GAE3BjuC,KAAK0vC,eAAezrC,YAAYgqC,GAElC,IAAIhnB,EAAK,CACPgnB,IAAKA,EACLN,UAAWA,GAEb,OAAO1mB,GAuHPkmB,YAAaA,EACbM,cAAeA,EACfmC,aApCF,SAAsBpxC,EAAMqxC,GACb,QAATrxC,GACFwB,KAAK0vC,eAAiBG,EACtB7vC,KAAKgvC,iBAAmBhvC,KAAKwvC,gBAAgB7zB,KAAK3b,OAElDA,KAAKgvC,iBAAmBhvC,KAAKsvC,cAAc3zB,KAAK3b,QAkC7C4uC,EA5Ma,GAiNlBkB,eAAkB,WACpB,IAAI7oB,EAAK,CACP8oB,UAAU,GAKZ,OAHI,WAAW35B,KAAKI,UAAUO,YAAc,UAAUX,KAAKI,UAAUO,YAAc,WAAWX,KAAKI,UAAUO,YAAc,aAAaX,KAAKI,UAAUO,cACrJkQ,EAAG8oB,UAAW,GAET9oB,EAPa,GAalB+oB,eAAkB,WACpB,IAAI/oB,EAAK,CACTA,aAGA,SAAsBgpB,EAAOC,GAC3B,IAAIC,EAAMh0B,SAAS,UASnB,OARAg0B,EAAIzc,aAAa,KAAMuc,IACC,IAApBC,IACFC,EAAIzc,aAAa,cAAe,qBAChCyc,EAAIzc,aAAa,IAAK,MACtByc,EAAIzc,aAAa,IAAK,MACtByc,EAAIzc,aAAa,QAAS,QAC1Byc,EAAIzc,aAAa,SAAU,SAEtByc,GAZTlpB,6BAeA,WACE,IAAImpB,EAAgBj0B,SAAS,iBAI7B,OAHAi0B,EAAc1c,aAAa,OAAQ,UACnC0c,EAAc1c,aAAa,8BAA+B,QAC1D0c,EAAc1c,aAAa,SAAU,8CAC9B0c,IAGT,OAAOnpB,EA1Ba,GA+BlBunB,YAAe,WACjB,SAAS6B,EAAeC,GACtB,OAAIA,EAAIC,UAAoC,kBAAjBD,EAAIC,SACtBD,EAAIC,SACPD,EAAIC,UAAoC,kBAAjBD,EAAIC,SACxB79B,KAAKse,MAAMsf,EAAIC,UAClBD,EAAIE,aACD99B,KAAKse,MAAMsf,EAAIE,cAEjB,KA+BT,MAAO,CACL/B,KA7BF,SAAmBvd,EAAMnoB,EAAU0nC,GACjC,IAAIF,EACAD,EAAM,IAAII,eAEd,IAEEJ,EAAIK,aAAe,OACnB,MAAOC,IACTN,EAAIO,mBAAqB,WACvB,GAAuB,IAAnBP,EAAIQ,WACN,GAAmB,MAAfR,EAAIS,OACNR,EAAWF,EAAeC,GAC1BvnC,EAASwnC,QAET,IACEA,EAAWF,EAAeC,GAC1BvnC,EAASwnC,GACT,MAAOK,GACHH,GACFA,EAAcG,KAMxBN,EAAIjsC,KAAK,MAAO6sB,GAAM,GACtBof,EAAIU,SAtCW,GAgDnB,SAASC,qBAAqBC,EAAUC,EAAYzU,GAClD18B,KAAK+8B,eAAgB,EACrB/8B,KAAKoxC,gBAAiB,EACtBpxC,KAAKqxC,UAAY,EACjBrxC,KAAKsxC,UAAYJ,EACjBlxC,KAAKuxC,YAAcJ,EACnBnxC,KAAKwxC,MAAQ9U,EACb18B,KAAKyxC,eAAiB15B,iBAAiB/X,KAAKsxC,UAAUnzC,EAAE+B,QACxDF,KAAK0xC,UAAY,GACjB1xC,KAAK2xC,aAAe,CAClBC,UAAW,IAEb5xC,KAAK6xC,gBAAkB,GACvB7xC,KAAK8xC,oBAAqB,EAC1B9xC,KAAK+c,6BAA6B2f,GA6jBpC,SAASqV,yBAAyBrV,EAAMsV,EAAerqC,GACrD,IAAIsqC,EAAc,CAAE1Z,UAAU,GAC1BoF,EAAU5F,gBAAgB4F,QAC1BuU,EAA0BF,EAAc7zC,EAC5C6B,KAAK7B,EAAI,CACPqc,EAAG03B,EAAwB13B,EAAImjB,EAAQjB,EAAMwV,EAAwB13B,EAAG,EAAGvC,UAAWtQ,GAAasqC,EACnG9T,GAAI+T,EAAwB/T,GAAKR,EAAQjB,EAAMwV,EAAwB/T,GAAI,EAAGlmB,UAAWtQ,GAAasqC,EACtG7T,GAAI8T,EAAwB9T,GAAKT,EAAQjB,EAAMwV,EAAwB9T,GAAI,EAAGnmB,UAAWtQ,GAAasqC,EACtG1T,GAAI2T,EAAwB3T,GAAKZ,EAAQjB,EAAMwV,EAAwB3T,GAAI,EAAGtmB,UAAWtQ,GAAasqC,EACtGzT,GAAI0T,EAAwB1T,GAAKb,EAAQjB,EAAMwV,EAAwB1T,GAAI,EAAGvmB,UAAWtQ,GAAasqC,EACtG/gC,EAAGghC,EAAwBhhC,EAAIysB,EAAQjB,EAAMwV,EAAwBhhC,EAAG,EAAG,IAAMvJ,GAAasqC,EAC9F9zC,EAAG+zC,EAAwB/zC,EAAIw/B,EAAQjB,EAAMwV,EAAwB/zC,EAAG,EAAG,EAAGwJ,GAAasqC,EAC3FnyB,EAAGoyB,EAAwBpyB,EAAI6d,EAAQjB,EAAMwV,EAAwBpyB,EAAG,EAAG,IAAMnY,GAAasqC,EAC9Fv3B,EAAGw3B,EAAwBx3B,EAAIijB,EAAQjB,EAAMwV,EAAwBx3B,EAAG,EAAG,EAAG/S,GAAasqC,EAC3FE,GAAID,EAAwBC,GAAKxU,EAAQjB,EAAMwV,EAAwBC,GAAI,EAAG,EAAGxqC,GAAasqC,EAC9Flb,GAAImb,EAAwBnb,GAAK4G,EAAQjB,EAAMwV,EAAwBnb,GAAI,EAAG,EAAGpvB,GAAasqC,EAC9FG,GAAIF,EAAwBE,GAAKzU,EAAQjB,EAAMwV,EAAwBE,GAAI,EAAG,EAAGzqC,GAAasqC,EAC9FI,GAAIH,EAAwBG,GAAK1U,EAAQjB,EAAMwV,EAAwBG,GAAI,EAAG,EAAG1qC,GAAasqC,EAC9FK,GAAIJ,EAAwBI,GAAK3U,EAAQjB,EAAMwV,EAAwBI,GAAI,EAAG,IAAM3qC,GAAasqC,EACjGM,GAAIL,EAAwBK,GAAK5U,EAAQjB,EAAMwV,EAAwBK,GAAI,EAAG,IAAM5qC,GAAasqC,EACjGr3B,EAAGs3B,EAAwBt3B,EAAI+iB,EAAQjB,EAAMwV,EAAwBt3B,EAAG,EAAG,EAAGjT,GAAasqC,GAG7FjyC,KAAKkR,EAAIshC,iBAAiBC,oBAAoB/V,EAAMsV,EAAc9gC,EAAGvJ,GACrE3H,KAAKkR,EAAE0J,EAAIo3B,EAAc9gC,EAAE0J,EAG7B,SAAS83B,YAAY5yB,EAAGqyB,EAAIpb,EAAIqb,EAAIxyB,EAAGlF,GACrC1a,KAAK8f,EAAIA,EACT9f,KAAKmyC,GAAKA,EACVnyC,KAAK+2B,GAAKA,EACV/2B,KAAKoyC,GAAKA,EACVpyC,KAAK4f,EAAIA,EACT5f,KAAK0a,EAAIA,EACT1a,KAAK6c,KAAO,CACViD,GAAG,EACHqyB,KAAMA,EACNpb,KAAMA,EACNqb,KAAMA,EACNxyB,GAAG,EACHlF,GAAG,GAiDP,SAASi4B,aAAajW,EAAMxM,GAC1BlwB,KAAKqxC,SAAW16B,oBAChB3W,KAAKw4B,GAAK,GACVx4B,KAAKua,EAAI,GACTva,KAAKi9B,IAAK,EACVj9B,KAAK+8B,eAAgB,EACrB/8B,KAAK6c,MAAO,EACZ7c,KAAKkwB,KAAOA,EACZlwB,KAAK08B,KAAOA,EACZ18B,KAAKi8B,KAAOj8B,KAAK08B,KAAKT,KACtBj8B,KAAK4yC,UAAY,EACjB5yC,KAAK6yC,WAAY,EACjB7yC,KAAK8yC,gBAAkB,EACvB9yC,KAAK68B,gBAAkB,GACvB78B,KAAK+yC,YAAc,CACjBC,OAAQ,EACRC,SAAUjzC,KAAKkzC,gBACftyC,EAAG,GACHkyB,OAAQ,GACRC,QAAS,GACTqf,GAAI,GACJpjC,EAAG,GACHmkC,cAAe,GACfhiC,EAAG,GACHiiC,GAAI,EACJC,WAAY,GACZC,GAAI,GACJC,GAAI,GACJriC,EAAG,GACH6lB,GAAI,GACJob,GAAI,EACJv3B,EAAG,EACHytB,GAAI,EACJ3oB,GAAI,EACJ8zB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjBthB,YAAY,GAGdzyB,KAAKg0C,SAASh0C,KAAK+yC,YAAa/yC,KAAKkwB,KAAKpV,EAAErM,EAAE,GAAGyC,GAE5ClR,KAAKi0C,kBACRj0C,KAAKk0C,iBAAiBl0C,KAAK+yC,aAnsB/B9B,qBAAqBjsC,UAAUmvC,iBAAmB,WAChD,IAAIrwC,EAEAkuC,EADAp6B,EAAM5X,KAAKsxC,UAAUnzC,EAAE+B,OAEvBy9B,EAAU5F,gBAAgB4F,QAC9B,IAAK75B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkuC,EAAgBhyC,KAAKsxC,UAAUnzC,EAAE2F,GACjC9D,KAAKyxC,eAAe3tC,GAAK,IAAIiuC,yBAAyB/xC,KAAKwxC,MAAOQ,EAAehyC,MAE/EA,KAAKsxC,UAAU52B,GAAK,MAAO1a,KAAKsxC,UAAU52B,GAC5C1a,KAAK0xC,UAAY,CACf9wC,EAAG+8B,EAAQ39B,KAAKwxC,MAAOxxC,KAAKsxC,UAAU52B,EAAE9Z,EAAG,EAAG,EAAGZ,MACjDmR,EAAGwsB,EAAQ39B,KAAKwxC,MAAOxxC,KAAKsxC,UAAU52B,EAAEvJ,EAAG,EAAG,EAAGnR,MACjDwa,EAAGxa,KAAKsxC,UAAU52B,EAAEF,EACpBoF,EAAG5f,KAAKwxC,MAAM4C,YAAYC,gBAAgBr0C,KAAKsxC,UAAU52B,EAAEkF,IAE7D5f,KAAKoxC,gBAAiB,GAEtBpxC,KAAKoxC,gBAAiB,EAExBpxC,KAAK2xC,aAAaC,UAAYjU,EAAQ39B,KAAKwxC,MAAOxxC,KAAKsxC,UAAU1xB,EAAEzhB,EAAG,EAAG,EAAG6B,OAG9EixC,qBAAqBjsC,UAAUsvC,YAAc,SAAU3iB,EAAcmgB,GAEnE,GADA9xC,KAAK8xC,mBAAqBA,EACrB9xC,KAAK6c,MAAS7c,KAAK+8B,eAAkB+U,GAAwB9xC,KAAKoxC,gBAAmBpxC,KAAK0xC,UAAU9xB,EAAE/C,KAA3G,CAGA7c,KAAK+8B,eAAgB,EACrB,IAMIwX,EACAC,EACA1wC,EACA8T,EAEA68B,EACAC,EACAC,EACAppB,EACAlT,EACAu8B,EACAC,EACAC,EACA/sB,EACArgB,EACAgkB,EACAoB,EACAlC,EACAmqB,EACAjwB,EAzBA8sB,EAAY5xC,KAAK2xC,aAAaC,UAAUr3B,EACxCy6B,EAAYh1C,KAAKyxC,eACjBP,EAAWlxC,KAAKsxC,UAChB2D,EAAej1C,KAAKk1C,QACpB/D,EAAanxC,KAAKuxC,YAClB4D,EAAuBn1C,KAAK6xC,gBAAgB3xC,OAK5Ck1C,EAAUzjB,EAAaxgB,EAgB3B,GAAInR,KAAKoxC,eAAgB,CAEvB,GADAtsB,EAAO9kB,KAAK0xC,UAAU9xB,GACjB5f,KAAK0xC,UAAU7xB,GAAK7f,KAAK0xC,UAAU70B,KAAM,CAC5C,IAUIiP,EAVAmG,EAAQnN,EAAKvK,EAYjB,IAXIva,KAAK0xC,UAAUl3B,IACjByX,EAAQA,EAAMmO,WAGhBqU,EAAW,CACTY,QAAS,EACT3tC,SAAU,IAEZkQ,EAAMqa,EAAMpF,QAAU,EAEtBC,EAAc,EACThpB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBgoB,EAAa2D,IAAI9D,gBAAgBsG,EAAM1X,EAAEzW,GACvCmuB,EAAM1X,EAAEzW,EAAI,GACZ,CAACmuB,EAAMnS,EAAEhc,GAAG,GAAKmuB,EAAM1X,EAAEzW,GAAG,GAAImuB,EAAMnS,EAAEhc,GAAG,GAAKmuB,EAAM1X,EAAEzW,GAAG,IAC3D,CAACmuB,EAAMnuB,EAAEA,EAAI,GAAG,GAAKmuB,EAAM1X,EAAEzW,EAAI,GAAG,GAAImuB,EAAMnuB,EAAEA,EAAI,GAAG,GAAKmuB,EAAM1X,EAAEzW,EAAI,GAAG,KAC7E2wC,EAASY,SAAWvpB,EAAWP,cAC/BkpB,EAAS/sC,SAASvE,KAAK2oB,GACvBgB,GAAehB,EAAWP,cAE5BznB,EAAI8T,EACAkN,EAAKvK,EAAExa,IACT+rB,EAAa2D,IAAI9D,gBAAgBsG,EAAM1X,EAAEzW,GACvCmuB,EAAM1X,EAAE,GACR,CAAC0X,EAAMnS,EAAEhc,GAAG,GAAKmuB,EAAM1X,EAAEzW,GAAG,GAAImuB,EAAMnS,EAAEhc,GAAG,GAAKmuB,EAAM1X,EAAEzW,GAAG,IAC3D,CAACmuB,EAAMnuB,EAAE,GAAG,GAAKmuB,EAAM1X,EAAE,GAAG,GAAI0X,EAAMnuB,EAAE,GAAG,GAAKmuB,EAAM1X,EAAE,GAAG,KAC7Dk6B,EAASY,SAAWvpB,EAAWP,cAC/BkpB,EAAS/sC,SAASvE,KAAK2oB,GACvBgB,GAAehB,EAAWP,eAE5BvrB,KAAK0xC,UAAU4D,GAAKb,EAUtB,GARAA,EAAWz0C,KAAK0xC,UAAU4D,GAE1BZ,EAAgB10C,KAAK0xC,UAAU9wC,EAAE2Z,EACjCs6B,EAAa,EACbD,EAAW,EACXrpB,EAAgB,EAChBlT,GAAO,EACP3Q,EAAW+sC,EAAS/sC,SAChBgtC,EAAgB,GAAK5vB,EAAKvK,EAAExa,EAO9B,IANI00C,EAASY,QAAU13C,KAAKka,IAAI68B,KAC9BA,GAAiB/2C,KAAKka,IAAI68B,GAAiBD,EAASY,SAItDT,GADA7sB,EAASrgB,EADTmtC,EAAantC,EAASxH,OAAS,GACD6nB,QACZ7nB,OAAS,EACpBw0C,EAAgB,GACrBA,GAAiB3sB,EAAO6sB,GAAUlpB,eAClCkpB,GAAY,GACG,IAGbA,GADA7sB,EAASrgB,EADTmtC,GAAc,GACgB9sB,QACZ7nB,OAAS,GAKjC40C,GADA/sB,EAASrgB,EAASmtC,GAAY9sB,QACX6sB,EAAW,GAE9BlpB,GADAipB,EAAe5sB,EAAO6sB,IACOlpB,cAG/B9T,EAAMw9B,EAAQl1C,OACdq0C,EAAO,EACPC,EAAO,EACP,IAEIxC,EAEAhjC,EACAghB,EACAulB,EAIA/Y,EAVAgZ,EAAgC,IAAzB7jB,EAAakiB,UAAkB,KACtC4B,GAAY,EAOhBzlB,EAAOglB,EAAU90C,OAGjB,IACIw1C,EACAC,EACAC,EAKAC,EACA9e,EACAob,EACAC,EACA3jC,EACAqnC,EACAC,EACAC,EAGAC,EAlBA7c,GAAO,EAIP8c,EAAcxB,EACdyB,EAAiBtB,EACjBuB,EAAexB,EACfyB,GAAe,EASfC,GAAU,GACVC,GAAUv2C,KAAKw2C,kBAInB,GAAuB,IAAnB7kB,EAAa3iB,GAA8B,IAAnB2iB,EAAa3iB,EAAS,CAChD,IAAIynC,GAAwB,EACxBC,GAA0B,EAC1BC,GAAuC,IAAnBhlB,EAAa3iB,GAAW,IAAO,EACnD6pB,GAAY,EACZ+d,IAAY,EAEhB,IAAK9yC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAIsxC,EAAQtxC,GAAG+b,EAAG,CAIhB,IAHI42B,KACFA,IAAyBC,IAEpB7d,GAAY/0B,GACjBsxC,EAAQvc,IAAW4d,sBAAwBA,GAC3C5d,IAAa,EAEf4d,GAAwB,EACxBG,IAAY,MACP,CACL,IAAK5nC,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GACXyc,EAAE2d,WACdqe,IAAgC,IAAnBjlB,EAAa3iB,IAC5B0nC,IAA2B1E,EAAcp3B,EAAEL,EAAIo8B,KAGjDna,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,aAChE72C,OACPu2C,IAAyBzE,EAAcp3B,EAAEL,EAAIiiB,EAAK,GAAKma,GAEvDF,IAAyBzE,EAAcp3B,EAAEL,EAAIiiB,EAAOma,IAI1DC,IAAY,EAMhB,IAHIH,KACFA,IAAyBC,IAEpB7d,GAAY/0B,GACjBsxC,EAAQvc,IAAW4d,sBAAwBA,GAC3C5d,IAAa,EAKjB,IAAK/0B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAG3B,GAFAmxC,EAAav2B,QACbm3B,EAAc,EACVT,EAAQtxC,GAAG+b,EACb00B,EAAO,EACPC,GAAQ7iB,EAAaiiB,QACrBY,GAAQiB,EAAY,EAAI,EACxBf,EAAgBwB,EAChBT,GAAY,EACRz1C,KAAKoxC,iBAEPwD,EAAWwB,EAEXtB,GADA/sB,EAASrgB,EAFTmtC,EAAasB,GAEiBpuB,QACX6sB,EAAW,GAE9BlpB,GADAipB,EAAe5sB,EAAO6sB,IACOlpB,cAC7BH,EAAgB,GAElB+qB,GAAU,GACVN,EAAW,GACXF,EAAW,GACXG,EAAU,GACVM,GAAUv2C,KAAKw2C,sBACV,CACL,GAAIx2C,KAAKoxC,eAAgB,CACvB,GAAIiF,IAAgBjB,EAAQtxC,GAAGkzC,KAAM,CACnC,OAAQrlB,EAAa3iB,GACnB,KAAK,EACH0lC,GAAiB5nB,EAAc6E,EAAa0hB,WAAW+B,EAAQtxC,GAAGkzC,MAClE,MACF,KAAK,EACHtC,IAAkB5nB,EAAc6E,EAAa0hB,WAAW+B,EAAQtxC,GAAGkzC,OAAS,EAKhFX,EAAcjB,EAAQtxC,GAAGkzC,KAEvB5d,IAAQgc,EAAQtxC,GAAGs1B,MACjBgc,EAAQhc,KACVsb,GAAiBU,EAAQhc,GAAK6d,OAEhCvC,GAAiBU,EAAQtxC,GAAGozC,GAAK,EACjC9d,EAAMgc,EAAQtxC,GAAGs1B,KAEnBsb,GAAkB9C,EAAU,GAAKwD,EAAQtxC,GAAGozC,GAAM,KAClD,IAAIC,GAAiB,EACrB,IAAKnoC,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GACXuc,EAAE6d,YAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,aAChE72C,OACPi3C,IAAkBnF,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,GAE9C2a,IAAkBnF,EAAct3B,EAAEH,EAAE,GAAKiiB,GAGzCwV,EAAc7zC,EAAEo6B,YAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,aAChE72C,OACPi3C,IAAkBnF,EAAc7zC,EAAEoc,EAAE,GAAKiiB,EAAK,GAE9C2a,IAAkBnF,EAAc7zC,EAAEoc,EAAE,GAAKiiB,GAK/C,IADAnkB,GAAO,EACAA,GACDkT,EAAgBG,GAAiBgpB,EAAgByC,KAAmBpvB,GACtE6C,GAAQ8pB,EAAgByC,GAAiB5rB,GAAiBopB,EAAajpB,cACvEiqB,EAAWb,EAAUhkC,MAAM,IAAM6jC,EAAa7jC,MAAM,GAAKgkC,EAAUhkC,MAAM,IAAM8Z,EAC/EgrB,EAAWd,EAAUhkC,MAAM,IAAM6jC,EAAa7jC,MAAM,GAAKgkC,EAAUhkC,MAAM,IAAM8Z,EAC/EqqB,EAAal1B,WAAY6xB,EAAU,GAAKwD,EAAQtxC,GAAGozC,GAAM,MAAStF,EAAU,GAAK4D,EAAQ,KACzFn9B,GAAO,GACE0P,IACTwD,GAAiBopB,EAAajpB,eAC9BkpB,GAAY,IACI7sB,EAAO7nB,SACrB00C,EAAW,EAENltC,EADLmtC,GAAc,GAWZ9sB,EAASrgB,EAASmtC,GAAY9sB,OAT1BjD,EAAKvK,EAAExa,GACT60C,EAAW,EAEX7sB,EAASrgB,EADTmtC,EAAa,GACiB9sB,SAE9BwD,GAAiBopB,EAAajpB,cAC9B3D,EAAS,OAMXA,IACF+sB,EAAYH,EAEZjpB,GADAipB,EAAe5sB,EAAO6sB,IACOlpB,gBAInCgqB,EAAON,EAAQtxC,GAAGozC,GAAK,EAAI9B,EAAQtxC,GAAGszC,IACtCnC,EAAal1B,WAAW21B,EAAM,EAAG,QAEjCA,EAAON,EAAQtxC,GAAGozC,GAAK,EAAI9B,EAAQtxC,GAAGszC,IACtCnC,EAAal1B,WAAW21B,EAAM,EAAG,GAGjCT,EAAal1B,WAAY6xB,EAAU,GAAKwD,EAAQtxC,GAAGozC,GAAM,MAAStF,EAAU,GAAK4D,EAAQ,IAAM,GAGjG,IAAKxmC,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GACXyc,EAAE2d,WAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,YAE5D,IAATxC,GAAiC,IAAnB5iB,EAAa3iB,IACzBhP,KAAKoxC,eACH5U,EAAKt8B,OACPw0C,GAAiB1C,EAAcp3B,EAAEL,EAAIiiB,EAAK,GAE1CkY,GAAiB1C,EAAcp3B,EAAEL,EAAIiiB,EAE9BA,EAAKt8B,OACdq0C,GAAQvC,EAAcp3B,EAAEL,EAAIiiB,EAAK,GAEjC+X,GAAQvC,EAAcp3B,EAAEL,EAAIiiB,IAkBpC,IAbI7K,EAAagiB,kBACfxB,EAAKxgB,EAAawgB,IAAM,GAEtBxgB,EAAa+hB,kBAEb3c,EADEpF,EAAaoF,GACV,CAACpF,EAAaoF,GAAG,GAAIpF,EAAaoF,GAAG,GAAIpF,EAAaoF,GAAG,IAEzD,CAAC,EAAG,EAAG,IAGZpF,EAAa8hB,eAAiB9hB,EAAaygB,KAC7CA,EAAK,CAACzgB,EAAaygB,GAAG,GAAIzgB,EAAaygB,GAAG,GAAIzgB,EAAaygB,GAAG,KAE3DpjC,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GACXA,EAAEo6B,YAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,aAEhE72C,OACP+0C,EAAal1B,WAAWiyB,EAAc7zC,EAAEoc,EAAE,GAAKiiB,EAAK,IAAKwV,EAAc7zC,EAAEoc,EAAE,GAAKiiB,EAAK,GAAIwV,EAAc7zC,EAAEoc,EAAE,GAAKiiB,EAAK,IAErHyY,EAAal1B,WAAWiyB,EAAc7zC,EAAEoc,EAAE,GAAKiiB,GAAOwV,EAAc7zC,EAAEoc,EAAE,GAAKiiB,EAAMwV,EAAc7zC,EAAEoc,EAAE,GAAKiiB,IAIhH,IAAKxtB,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GACX+S,EAAEqnB,YAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,aAChE72C,OACP+0C,EAAax1B,MAAM,GAAMuyB,EAAc9gC,EAAEqJ,EAAE,GAAK,GAAKiiB,EAAK,GAAK,GAAMwV,EAAc9gC,EAAEqJ,EAAE,GAAK,GAAKiiB,EAAK,GAAK,GAE3GyY,EAAax1B,MAAM,GAAMuyB,EAAc9gC,EAAEqJ,EAAE,GAAK,GAAKiiB,EAAO,GAAMwV,EAAc9gC,EAAEqJ,EAAE,GAAK,GAAKiiB,EAAO,IAI3G,IAAKxtB,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CA8C5B,GA7CAgjC,EAAgBgD,EAAUhmC,GAAG7Q,EAE7Bq+B,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,YACrE/E,EAAczT,GAAGhG,WACfiE,EAAKt8B,OACP+0C,EAAaz1B,cAAcwyB,EAAczT,GAAGhkB,EAAIiiB,EAAK,GAAIwV,EAAcxT,GAAGjkB,EAAIiiB,EAAK,IAEnFyY,EAAaz1B,cAAcwyB,EAAczT,GAAGhkB,EAAIiiB,EAAMwV,EAAcxT,GAAGjkB,EAAIiiB,IAG3EwV,EAAcx3B,EAAE+d,WACdiE,EAAKt8B,OACP+0C,EAAah2B,SAAS+yB,EAAcx3B,EAAED,EAAIiiB,EAAK,IAE/CyY,EAAah2B,SAAS+yB,EAAcx3B,EAAED,EAAIiiB,IAG1CwV,EAAc5T,GAAG7F,WACfiE,EAAKt8B,OACP+0C,EAAaj2B,QAAQgzB,EAAc5T,GAAG7jB,EAAIiiB,EAAK,IAE/CyY,EAAaj2B,QAAQgzB,EAAc5T,GAAG7jB,EAAIiiB,IAG1CwV,EAAc7T,GAAG5F,WACfiE,EAAKt8B,OACP+0C,EAAal2B,QAAQizB,EAAc7T,GAAG5jB,EAAIiiB,EAAK,IAE/CyY,EAAal2B,QAAQizB,EAAc7T,GAAG5jB,EAAIiiB,IAG1CwV,EAAclyB,EAAEyY,WACdiE,EAAKt8B,OACP21C,IAAiB7D,EAAclyB,EAAEvF,EAAKiiB,EAAK,GAAKqZ,GAAerZ,EAAK,GAEpEqZ,IAAiB7D,EAAclyB,EAAEvF,EAAKiiB,EAAOqZ,GAAerZ,GAG5D7K,EAAagiB,iBAAmB3B,EAAcG,GAAG5Z,WAC/CiE,EAAKt8B,OACPiyC,GAAMH,EAAcG,GAAG53B,EAAIiiB,EAAK,GAEhC2V,GAAMH,EAAcG,GAAG53B,EAAIiiB,GAG3B7K,EAAa+hB,iBAAmB1B,EAAcjb,GAAGwB,SACnD,IAAK9pB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClB+tB,EAAKt8B,OACP62B,EAAGtoB,KAAOujC,EAAcjb,GAAGxc,EAAE9L,GAAKsoB,EAAGtoB,IAAM+tB,EAAK,GAEhDzF,EAAGtoB,KAAOujC,EAAcjb,GAAGxc,EAAE9L,GAAKsoB,EAAGtoB,IAAM+tB,EAIjD,GAAI7K,EAAa8hB,eAAiB9hB,EAAaygB,GAAI,CACjD,GAAIJ,EAAcI,GAAG7Z,SACnB,IAAK9pB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClB+tB,EAAKt8B,OACPkyC,EAAG3jC,KAAOujC,EAAcI,GAAG73B,EAAE9L,GAAK2jC,EAAG3jC,IAAM+tB,EAAK,GAEhD4V,EAAG3jC,KAAOujC,EAAcI,GAAG73B,EAAE9L,GAAK2jC,EAAG3jC,IAAM+tB,EAI7CwV,EAAcK,GAAG9Z,WAEjB6Z,EADE5V,EAAKt8B,OACFkb,YAAYg3B,EAAIJ,EAAcK,GAAG93B,EAAIiiB,EAAK,IAE1CphB,YAAYg3B,EAAIJ,EAAcK,GAAG93B,EAAIiiB,IAG1CwV,EAAcM,GAAG/Z,WAEjB6Z,EADE5V,EAAKt8B,OACF6a,mBAAmBq3B,EAAIJ,EAAcM,GAAG/3B,EAAIiiB,EAAK,IAEjDzhB,mBAAmBq3B,EAAIJ,EAAcM,GAAG/3B,EAAIiiB,IAGjDwV,EAAcO,GAAGha,WAEjB6Z,EADE5V,EAAKt8B,OACFib,mBAAmBi3B,EAAIJ,EAAcO,GAAGh4B,EAAIiiB,EAAK,IAEjDrhB,mBAAmBi3B,EAAIJ,EAAcO,GAAGh4B,EAAIiiB,KAMzD,IAAKxtB,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBgjC,EAAgBgD,EAAUhmC,GAAG7Q,GAEXuc,EAAE6d,WAElBiE,EADmBwY,EAAUhmC,GAAGkC,EACR2lC,QAAQzB,EAAQtxC,GAAGgzC,UAAU9nC,GAAIkiC,EAAS/yC,EAAE6Q,GAAGkC,EAAE6lC,YACrE/2C,KAAKoxC,eACH5U,EAAKt8B,OACP+0C,EAAal1B,UAAU,EAAGiyB,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,IAAKwV,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,IAEvFyY,EAAal1B,UAAU,EAAGiyB,EAAct3B,EAAEH,EAAE,GAAKiiB,GAAOwV,EAAct3B,EAAEH,EAAE,GAAKiiB,GAExEA,EAAKt8B,OACd+0C,EAAal1B,UAAUiyB,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,GAAIwV,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,IAAKwV,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAK,IAEpHyY,EAAal1B,UAAUiyB,EAAct3B,EAAEH,EAAE,GAAKiiB,EAAMwV,EAAct3B,EAAEH,EAAE,GAAKiiB,GAAOwV,EAAct3B,EAAEH,EAAE,GAAKiiB,IAc/G,GAVI7K,EAAagiB,kBACfmC,EAAW3D,EAAK,EAAI,EAAIA,GAEtBxgB,EAAa+hB,kBACfqC,EAAW,OAASp4C,KAAK2a,MAAc,IAARye,EAAG,IAAY,IAAMp5B,KAAK2a,MAAc,IAARye,EAAG,IAAY,IAAMp5B,KAAK2a,MAAc,IAARye,EAAG,IAAY,KAE5GpF,EAAa8hB,eAAiB9hB,EAAaygB,KAC7C4D,EAAW,OAASr4C,KAAK2a,MAAc,IAAR85B,EAAG,IAAY,IAAMz0C,KAAK2a,MAAc,IAAR85B,EAAG,IAAY,IAAMz0C,KAAK2a,MAAc,IAAR85B,EAAG,IAAY,KAG5GpyC,KAAKoxC,eAAgB,CAIvB,GAHA6D,EAAal1B,UAAU,GAAI4R,EAAa2hB,IAExC2B,EAAal1B,UAAU,EAAI6xB,EAAU,GAAK4D,EAAQ,IAAOhB,EAAM,GAC3DtD,EAASx2B,EAAEA,EAAG,CAChBq6B,GAAYJ,EAAa7jC,MAAM,GAAKgkC,EAAUhkC,MAAM,KAAO6jC,EAAa7jC,MAAM,GAAKgkC,EAAUhkC,MAAM,IACnG,IAAIumC,GAA6B,IAAtB15C,KAAK25C,KAAKvC,GAAmBp3C,KAAKua,GACzCy8B,EAAa7jC,MAAM,GAAKgkC,EAAUhkC,MAAM,KAC1CumC,IAAO,KAETpC,EAAat2B,QAAS04B,GAAM15C,KAAKua,GAAM,KAEzC+8B,EAAal1B,UAAU41B,EAAUC,EAAU,GAC3ClB,GAAkB9C,EAAU,GAAKwD,EAAQtxC,GAAGozC,GAAM,KAC9C9B,EAAQtxC,EAAI,IAAMs1B,IAAQgc,EAAQtxC,EAAI,GAAGs1B,MAC3Csb,GAAiBU,EAAQtxC,GAAGozC,GAAK,EACjCxC,GAAoC,KAAlB/iB,EAAa0W,GAAc1W,EAAakiB,eAEvD,CAOL,OANAoB,EAAal1B,UAAUw0B,EAAMC,EAAM,GAE/B7iB,EAAa6hB,IAEfyB,EAAal1B,UAAU4R,EAAa6hB,GAAG,GAAI7hB,EAAa6hB,GAAG,GAAK7hB,EAAaqhB,OAAQ,GAE/ErhB,EAAa3iB,GACnB,KAAK,EACHimC,EAAal1B,UAAUq1B,EAAQtxC,GAAG2yC,sBAAwB9kB,EAAawhB,eAAiBxhB,EAAashB,SAAWthB,EAAa0hB,WAAW+B,EAAQtxC,GAAGkzC,OAAQ,EAAG,GAC9J,MACF,KAAK,EACH/B,EAAal1B,UAAUq1B,EAAQtxC,GAAG2yC,sBAAwB9kB,EAAawhB,eAAiBxhB,EAAashB,SAAWthB,EAAa0hB,WAAW+B,EAAQtxC,GAAGkzC,OAAS,EAAG,EAAG,GAKtK/B,EAAal1B,UAAU,GAAI4R,EAAa2hB,IACxC2B,EAAal1B,UAAU21B,EAAM,EAAG,GAChCT,EAAal1B,UAAW6xB,EAAU,GAAKwD,EAAQtxC,GAAGozC,GAAM,KAAQtF,EAAU,GAAK4D,EAAQ,IAAM,GAC7FjB,GAAQa,EAAQtxC,GAAGqN,EAAuB,KAAlBwgB,EAAa0W,GAAc1W,EAAakiB,UAE/C,SAAf1C,EACFmF,GAAUrB,EAAa3wB,QACC,QAAf6sB,EACTmF,GAAUrB,EAAaxwB,UAEvB8xB,GAAU,CAACtB,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,GAAI8tC,EAAa9tC,MAAM,IAAK8tC,EAAa9tC,MAAM,IAAK8tC,EAAa9tC,MAAM,IAAK8tC,EAAa9tC,MAAM,IAAK8tC,EAAa9tC,MAAM,IAAK8tC,EAAa9tC,MAAM,KAE9X8uC,EAAUJ,EAGRV,GAAwBrxC,GAC1ByxC,EAAc,IAAI7C,YAAYuD,EAASH,EAAUC,EAAUC,EAAUM,GAASC,IAC9Ev2C,KAAK6xC,gBAAgB1uC,KAAKoyC,GAC1BJ,GAAwB,EACxBn1C,KAAK8xC,oBAAqB,IAE1ByD,EAAcv1C,KAAK6xC,gBAAgB/tC,GACnC9D,KAAK8xC,mBAAqByD,EAAYgC,OAAOtB,EAASH,EAAUC,EAAUC,EAAUM,GAASC,KAAYv2C,KAAK8xC,uBAKpHb,qBAAqBjsC,UAAU8X,SAAW,WACpC9c,KAAKwxC,MAAM7U,WAAWC,UAAY58B,KAAKqxC,WAG3CrxC,KAAKqxC,SAAWrxC,KAAKwxC,MAAM7U,WAAWC,QACtC58B,KAAK4c,6BAGPq0B,qBAAqBjsC,UAAUkwC,QAAU,IAAIh3B,OAC7C+yB,qBAAqBjsC,UAAUwxC,kBAAoB,GACnDhtB,gBAAgB,CAAClN,0BAA2B20B,sBAiD5CyB,YAAY1tC,UAAUuyC,OAAS,SAAUz3B,EAAGqyB,EAAIpb,EAAIqb,EAAIxyB,EAAGlF,GACzD1a,KAAK6c,KAAKiD,GAAI,EACd9f,KAAK6c,KAAKs1B,IAAK,EACfnyC,KAAK6c,KAAKka,IAAK,EACf/2B,KAAK6c,KAAKu1B,IAAK,EACfpyC,KAAK6c,KAAK+C,GAAI,EACd5f,KAAK6c,KAAKnC,GAAI,EACd,IAAI88B,GAAU,EAgCd,OA9BIx3C,KAAK8f,IAAMA,IACb9f,KAAK8f,EAAIA,EACT9f,KAAK6c,KAAKiD,GAAI,EACd03B,GAAU,GAERx3C,KAAKmyC,KAAOA,IACdnyC,KAAKmyC,GAAKA,EACVnyC,KAAK6c,KAAKs1B,IAAK,EACfqF,GAAU,GAERx3C,KAAK+2B,KAAOA,IACd/2B,KAAK+2B,GAAKA,EACV/2B,KAAK6c,KAAKka,IAAK,EACfygB,GAAU,GAERx3C,KAAKoyC,KAAOA,IACdpyC,KAAKoyC,GAAKA,EACVpyC,KAAK6c,KAAKu1B,IAAK,EACfoF,GAAU,GAERx3C,KAAK4f,IAAMA,IACb5f,KAAK4f,EAAIA,EACT5f,KAAK6c,KAAK+C,GAAI,EACd43B,GAAU,IAER98B,EAAExa,QAAWF,KAAK0a,EAAE,KAAOA,EAAE,IAAM1a,KAAK0a,EAAE,KAAOA,EAAE,IAAM1a,KAAK0a,EAAE,KAAOA,EAAE,IAAM1a,KAAK0a,EAAE,KAAOA,EAAE,IAAM1a,KAAK0a,EAAE,MAAQA,EAAE,KAAO1a,KAAK0a,EAAE,MAAQA,EAAE,MAChJ1a,KAAK0a,EAAIA,EACT1a,KAAK6c,KAAKnC,GAAI,EACd88B,GAAU,GAELA,GA0DT7E,aAAa3tC,UAAUkuC,gBAAkB,CAAC,EAAG,GAE7CP,aAAa3tC,UAAUgvC,SAAW,SAAUjuC,EAAKmqB,GAC/C,IAAK,IAAIhf,KAAKgf,EACRlyB,OAAOgH,UAAU9D,eAAed,KAAK8vB,EAAMhf,KAC7CnL,EAAImL,GAAKgf,EAAKhf,IAGlB,OAAOnL,GAGT4sC,aAAa3tC,UAAUyyC,eAAiB,SAAUvnB,GAC3CA,EAAKuC,YACRzyB,KAAKk0C,iBAAiBhkB,GAExBlwB,KAAK+yC,YAAc7iB,EACnBlwB,KAAK+yC,YAAYE,SAAWjzC,KAAK+yC,YAAYE,UAAYjzC,KAAKkzC,gBAC9DlzC,KAAK6c,MAAO,GAGd81B,aAAa3tC,UAAUivC,eAAiB,WACtC,OAAOj0C,KAAK03C,mBAGd/E,aAAa3tC,UAAU0yC,gBAAkB,WAKvC,OAJA13C,KAAKi9B,GAAKj9B,KAAKkwB,KAAKpV,EAAErM,EAAEvO,OAAS,EAC7BF,KAAKi9B,IACPj9B,KAAKk9B,UAAUl9B,KAAK23C,iBAAiBh8B,KAAK3b,OAErCA,KAAKi9B,IAGd0V,aAAa3tC,UAAUk4B,UAAY,SAAUC,GAC3Cn9B,KAAK68B,gBAAgB15B,KAAKg6B,GAC1Bn9B,KAAK08B,KAAKngB,mBAAmBvc,OAG/B2yC,aAAa3tC,UAAU8X,SAAW,SAAU86B,GAC1C,GAAK53C,KAAK08B,KAAKC,WAAWC,UAAY58B,KAAK48B,SAAY58B,KAAK68B,gBAAgB38B,QAAY03C,EAAxF,CAGA53C,KAAK+yC,YAAYn4B,EAAI5a,KAAKkwB,KAAKpV,EAAErM,EAAEzO,KAAK4yC,WAAW1hC,EAAE0J,EACrD,IAAIi9B,EAAe73C,KAAK+yC,YACpB+E,EAAe93C,KAAK4yC,UACxB,GAAI5yC,KAAK88B,KACP98B,KAAKy3C,eAAez3C,KAAK+yC,iBAD3B,CAMA,IAAIjvC,EAFJ9D,KAAK88B,MAAO,EACZ98B,KAAK6c,MAAO,EACL,IACLjF,EAAM5X,KAAK68B,gBAAgB38B,OACzB88B,EAAa4a,GAAe53C,KAAKkwB,KAAKpV,EAAErM,EAAEzO,KAAK4yC,WAAW1hC,EAC9D,IAAKpN,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAGtBk5B,EADE8a,IAAiB93C,KAAK4yC,UACX5yC,KAAK68B,gBAAgB/4B,GAAGk5B,EAAYA,EAAWpiB,GAE/C5a,KAAK68B,gBAAgB/4B,GAAG9D,KAAK+yC,YAAa/V,EAAWpiB,GAGlEi9B,IAAiB7a,GACnBh9B,KAAKy3C,eAAeza,GAEtBh9B,KAAKua,EAAIva,KAAK+yC,YACd/yC,KAAKw4B,GAAKx4B,KAAKua,EACfva,KAAK88B,MAAO,EACZ98B,KAAK48B,QAAU58B,KAAK08B,KAAKC,WAAWC,WAGtC+V,aAAa3tC,UAAU2yC,iBAAmB,WAKxC,IAJA,IAAII,EAAW/3C,KAAKkwB,KAAKpV,EAAErM,EACvB0pB,EAAWn4B,KAAK08B,KAAKT,KAAKC,cAC1Bp4B,EAAI,EACN8T,EAAMmgC,EAAS73C,OACV4D,GAAK8T,EAAM,KACZ9T,IAAM8T,EAAM,GAAKmgC,EAASj0C,EAAI,GAAG8W,EAAIud,IAGzCr0B,GAAK,EAKP,OAHI9D,KAAK4yC,YAAc9uC,IACrB9D,KAAK4yC,UAAY9uC,GAEZ9D,KAAKkwB,KAAKpV,EAAErM,EAAEzO,KAAK4yC,WAAW1hC,GAGvCyhC,aAAa3tC,UAAUgzC,eAAiB,SAAUC,GAMhD,IALA,IAIIC,EAJA7kB,EAAqBH,YAAYyC,4BACjCwiB,EAAkB,GAClBr0C,EAAI,EACN8T,EAAMqgC,EAAK/3C,OAEN4D,EAAI8T,GACTsgC,EAAWD,EAAK7mC,WAAWtN,IACmB,IAA1CuvB,EAAmB3W,QAAQw7B,GAC7BC,EAAgBA,EAAgBj4C,OAAS,IAAM+3C,EAAK7yC,OAAOtB,GAClDo0C,GAAY,OAAUA,GAAY,QAC3CA,EAAWD,EAAK7mC,WAAWtN,EAAI,KACf,OAAUo0C,GAAY,OACpCC,EAAgBh1C,KAAK80C,EAAKG,OAAOt0C,EAAG,IACpCA,GAAK,GAKPq0C,EAAgBh1C,KAAK80C,EAAK7yC,OAAOtB,IAEnCA,GAAK,EAEP,OAAOq0C,GAGTxF,aAAa3tC,UAAUkvC,iBAAmB,SAAUviB,GAClDA,EAAac,YAAa,EAC1B,IAGI3uB,EACF8T,EACEygC,EACFz1C,EAMEoM,EACFghB,EAEEsoB,EAfAxoB,EAAc9vB,KAAK08B,KAAKC,WAAW7M,YACnCI,EAAOlwB,KAAKkwB,KACZklB,EAAU,GAGOvmC,EAAQ,EAEzB0pC,EAAiBroB,EAAKtQ,EAAEnF,EACxB+9B,EAAc,EAAOC,EAAa,EAAOpC,EAAc,EACzDhD,EAAa,GACXqF,EAAY,EACZC,EAAe,EAGf/lB,EAAW9C,EAAYwH,cAAc3F,EAAa/wB,GAEpDmkC,EAAU,EAERpQ,EAAYhC,kBAAkBC,GAClCjB,EAAaoB,QAAU4B,EAAU1B,OACjCtB,EAAamB,OAAS6B,EAAU5wB,MAChC4tB,EAAakiB,UAAYliB,EAAazgB,EACtCygB,EAAamiB,UAAY9zC,KAAKg4C,eAAermB,EAAa/W,GAC1DhD,EAAM+Z,EAAamiB,UAAU5zC,OAC7ByxB,EAAaoiB,gBAAkBpiB,EAAayhB,GAC5C,IACI8E,EADAU,EAAkBjnB,EAAa0W,GAAK,IAAQ1W,EAAakiB,UAE7D,GAAIliB,EAAajS,GAMf,IALA,IAGIm5B,EACF/E,EAJEz7B,GAAO,EACP46B,EAAWthB,EAAajS,GAAG,GAC3Bo5B,EAAYnnB,EAAajS,GAAG,GAGzBrH,GAAM,CAEXwgC,EAAgB,EAChBH,EAAY,EACZ9gC,GAHAk8B,EAAY9zC,KAAKg4C,eAAermB,EAAa/W,IAG7B1a,OAChB04C,EAAkBjnB,EAAa0W,GAAK,IAAQ1W,EAAakiB,UACzD,IAAIkF,GAAkB,EACtB,IAAKj1C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBo0C,EAAWpE,EAAUhwC,GAAGsN,WAAW,GACnCinC,GAAc,EACO,MAAjBvE,EAAUhwC,GACZi1C,EAAiBj1C,EACK,KAAbo0C,GAAgC,IAAbA,IAC5BQ,EAAY,EACZL,GAAc,EACdQ,GAAiBlnB,EAAaoiB,iBAA4C,IAAzBpiB,EAAakiB,WAE5D/jB,EAAYiC,OACdumB,EAAWxoB,EAAYoH,YAAY4c,EAAUhwC,GAAI8uB,EAASE,OAAQF,EAASgC,SAC3EmQ,EAAUsT,EAAc,EAAKC,EAASljC,EAAIuc,EAAakiB,UAAa,KAGpE9O,EAAUjV,EAAY0H,YAAYsc,EAAUhwC,GAAI6tB,EAAa/wB,EAAG+wB,EAAakiB,WAE3E6E,EAAY3T,EAAUkO,GAA6B,MAAjBa,EAAUhwC,KACtB,IAApBi1C,EACFnhC,GAAO,EAEP9T,EAAIi1C,EAENF,GAAiBlnB,EAAaoiB,iBAA4C,IAAzBpiB,EAAakiB,UAC9DC,EAAUl4B,OAAO9X,EAAGi1C,IAAmBj1C,EAAI,EAAI,EAAG,MAElDi1C,GAAkB,EAClBL,EAAY,IAEZA,GAAa3T,EACb2T,GAAaE,GAGjBC,GAAkBjmB,EAASogB,OAASrhB,EAAakiB,UAAa,IAC1D7zC,KAAK6yC,WAAalhB,EAAakiB,UAAY7zC,KAAK8yC,iBAAmBgG,EAAYD,GACjFlnB,EAAakiB,WAAa,EAC1BliB,EAAaoiB,gBAAmBpiB,EAAakiB,UAAYliB,EAAayhB,GAAMzhB,EAAazgB,IAEzFygB,EAAamiB,UAAYA,EACzBl8B,EAAM+Z,EAAamiB,UAAU5zC,OAC7BmY,GAAO,GAIbqgC,GAAaE,EACb7T,EAAU,EACV,IACIiU,EADAC,EAAoB,EAExB,IAAKn1C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAkCxB,GAjCAu0C,GAAc,EAGG,MADjBH,GADAc,EAAcrnB,EAAamiB,UAAUhwC,IACdsN,WAAW,KACE,IAAb8mC,GACrBe,EAAoB,EACpB5F,EAAWlwC,KAAKu1C,GAChBC,EAAeD,EAAYC,EAAeD,EAAYC,EACtDD,GAAa,EAAIE,EACjBh2C,EAAM,GACNy1C,GAAc,EACdhC,GAAe,GAEfzzC,EAAMo2C,EAEJlpB,EAAYiC,OACdumB,EAAWxoB,EAAYoH,YAAY8hB,EAAapmB,EAASE,OAAQhD,EAAYwH,cAAc3F,EAAa/wB,GAAGg0B,SAC3GmQ,EAAUsT,EAAc,EAAKC,EAASljC,EAAIuc,EAAakiB,UAAa,KAIpE9O,EAAUjV,EAAY0H,YAAY50B,EAAK+uB,EAAa/wB,EAAG+wB,EAAakiB,WAIlD,MAAhBmF,EACFC,GAAqBlU,EAAU6T,GAE/BF,GAAa3T,EAAU6T,EAAiBK,EACxCA,EAAoB,GAEtB7D,EAAQjyC,KAAK,CACXgO,EAAG4zB,EAASmS,GAAInS,EAASqS,IAAKoB,EAAa34B,EAAGw4B,EAAavB,UAAW,GAAIl0C,IAAKA,EAAKo0C,KAAMX,EAAaI,sBAAuB,IAE1G,GAAlB8B,GAEF,GADAC,GAAezT,EACH,KAARniC,GAAsB,MAARA,GAAekB,IAAM8T,EAAM,EAAG,CAI9C,IAHY,KAARhV,GAAsB,MAARA,IAChB41C,GAAezT,GAEV0T,GAAc30C,GACnBsxC,EAAQqD,GAAYvB,GAAKsB,EACzBpD,EAAQqD,GAAYrf,IAAMvqB,EAC1BumC,EAAQqD,GAAYxB,MAAQlS,EAC5B0T,GAAc,EAEhB5pC,GAAS,EACT2pC,EAAc,QAEX,GAAsB,GAAlBD,GAET,GADAC,GAAezT,EACH,KAARniC,GAAckB,IAAM8T,EAAM,EAAG,CAI/B,IAHY,KAARhV,IACF41C,GAAezT,GAEV0T,GAAc30C,GACnBsxC,EAAQqD,GAAYvB,GAAKsB,EACzBpD,EAAQqD,GAAYrf,IAAMvqB,EAC1BumC,EAAQqD,GAAYxB,MAAQlS,EAC5B0T,GAAc,EAEhBD,EAAc,EACd3pC,GAAS,QAGXumC,EAAQvmC,GAAOuqB,IAAMvqB,EACrBumC,EAAQvmC,GAAOooC,MAAQ,EACvBpoC,GAAS,EAMb,GAHA8iB,EAAaxgB,EAAIikC,EACjBuD,EAAeD,EAAYC,EAAeD,EAAYC,EACtDtF,EAAWlwC,KAAKu1C,GACZ/mB,EAAajS,GACfiS,EAAashB,SAAWthB,EAAajS,GAAG,GACxCiS,EAAawhB,cAAgB,OAG7B,OADAxhB,EAAashB,SAAW0F,EAChBhnB,EAAa3iB,GACnB,KAAK,EACH2iB,EAAawhB,eAAiBxhB,EAAashB,SAC3C,MACF,KAAK,EACHthB,EAAawhB,eAAiBxhB,EAAashB,SAAW,EACtD,MACF,QACEthB,EAAawhB,cAAgB,EAGnCxhB,EAAa0hB,WAAaA,EAE1B,IAA4B6F,EAC1BC,EAEEC,EAAWhgB,EAHX4b,EAAY9kB,EAAK/xB,EAErB6xB,EAAOglB,EAAU90C,OACG,IAClBm5C,EAAU,GACZ,IAAKrqC,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAa5B,KAZAkqC,EAAelE,EAAUhmC,IACR7Q,EAAE44B,KACjBpF,EAAa+hB,iBAAkB,GAE7BwF,EAAa/6C,EAAEg0C,KACjBxgB,EAAagiB,iBAAkB,IAE7BuF,EAAa/6C,EAAEi0C,IAAM8G,EAAa/6C,EAAEk0C,IAAM6G,EAAa/6C,EAAEm0C,IAAM4G,EAAa/6C,EAAEo0C,MAChF5gB,EAAa8hB,eAAgB,GAE/Bra,EAAM,EACNggB,EAAQF,EAAahoC,EAAEpR,EAClBgE,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACxBq1C,EAAa/D,EAAQtxC,IACVgzC,UAAU9nC,GAAKoqB,GACZ,GAATggB,GAAiC,KAAnBD,EAAWv2C,KAAyB,GAATw2C,GAAiC,KAAnBD,EAAWv2C,KAAiC,MAAnBu2C,EAAWv2C,KAA0B,GAATw2C,IAAeD,EAAWt5B,GAAuB,KAAlBs5B,EAAWv2C,KAAckB,GAAK8T,EAAM,IAAiB,GAATwhC,IAAeD,EAAWt5B,GAAK/b,GAAK8T,EAAM,MAC1M,IAAtBshC,EAAahoC,EAAEooC,IACjBD,EAAQl2C,KAAKi2B,GAEfA,GAAO,GAGXlJ,EAAK/xB,EAAE6Q,GAAGkC,EAAE6lC,WAAa3d,EACzB,IACEmgB,EADEC,GAAc,EAElB,GAA0B,IAAtBN,EAAahoC,EAAEooC,GACjB,IAAKx1C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAEpB01C,IADJL,EAAa/D,EAAQtxC,IACQgzC,UAAU9nC,KACrCwqC,EAAaL,EAAWrC,UAAU9nC,GAClCuqC,EAASF,EAAQz9B,OAAOje,KAAKoF,MAAMpF,KAAK4E,SAAW82C,EAAQn5C,QAAS,GAAG,IAEzEi5C,EAAWrC,UAAU9nC,GAAKuqC,EAIhC5nB,EAAaiiB,QAAUjiB,EAAaoiB,iBAA4C,IAAzBpiB,EAAakiB,UACpEliB,EAAa2hB,GAAK3hB,EAAa2hB,IAAM,EACrC3hB,EAAaqhB,OAAUpgB,EAASogB,OAASrhB,EAAakiB,UAAa,KAGrElB,aAAa3tC,UAAUy0C,mBAAqB,SAAUC,EAAS7qC,GAC7DA,OAAkBjP,IAAViP,EAAsB7O,KAAK4yC,UAAY/jC,EAC/C,IAAI8qC,EAAQ35C,KAAKg0C,SAAS,GAAIh0C,KAAKkwB,KAAKpV,EAAErM,EAAEI,GAAOqC,GACnDyoC,EAAQ35C,KAAKg0C,SAAS2F,EAAOD,GAC7B15C,KAAKkwB,KAAKpV,EAAErM,EAAEI,GAAOqC,EAAIyoC,EACzB35C,KAAK45C,YAAY/qC,GACjB7O,KAAK08B,KAAKngB,mBAAmBvc,OAG/B2yC,aAAa3tC,UAAU40C,YAAc,SAAU/qC,GAC7C,IAAI8qC,EAAQ35C,KAAKkwB,KAAKpV,EAAErM,EAAEI,GAAOqC,EACjCyoC,EAAMlnB,YAAa,EACnBzyB,KAAK4yC,UAAY,EACjB5yC,KAAK+8B,eAAgB,EACrB/8B,KAAK8c,SAAS68B,IAGhBhH,aAAa3tC,UAAU60C,cAAgB,SAAUC,GAC/C95C,KAAK6yC,UAAYiH,EACjB95C,KAAK45C,YAAY55C,KAAK4yC,WACtB5yC,KAAK08B,KAAKngB,mBAAmBvc,OAG/B2yC,aAAa3tC,UAAU+0C,mBAAqB,SAAUC,GACpDh6C,KAAK8yC,gBAAkBn1C,KAAKoF,MAAMi3C,IAAe,EACjDh6C,KAAK45C,YAAY55C,KAAK4yC,WACtB5yC,KAAK08B,KAAKngB,mBAAmBvc,OAM/B,IAAIwyC,iBAAoB,WACtB,IAAIhjC,EAAM7R,KAAK6R,IACXD,EAAM5R,KAAK4R,IACXxM,EAAQpF,KAAKoF,MAEjB,SAASk3C,EAAwBvd,EAAMxM,GACrClwB,KAAKk6C,oBAAsB,EAC3Bl6C,KAAKyO,GAAI,EACTzO,KAAKkwB,KAAOA,EACZlwB,KAAK08B,KAAOA,EACZ18B,KAAKi8B,KAAOS,EAAKT,KACjBj8B,KAAKm6C,OAAS,EACdn6C,KAAKo6C,OAAS,EACdp6C,KAAK+c,6BAA6B2f,GAClC18B,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,GAAK,CAAEzC,EAAG,GAAK,EAAG,EAAGzO,MAE/DA,KAAKe,EADH,MAAOmvB,EACA6H,gBAAgB4F,QAAQjB,EAAMxM,EAAKnvB,EAAG,EAAG,EAAGf,MAE5C,CAAEua,EAAG,KAEhBva,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,GAAK,CAAErR,EAAG,GAAK,EAAG,EAAGzO,MACjEA,KAAKq6C,GAAKtiB,gBAAgB4F,QAAQjB,EAAMxM,EAAKmqB,IAAM,CAAE5rC,EAAG,GAAK,EAAG,EAAGzO,MACnEA,KAAKs6C,GAAKviB,gBAAgB4F,QAAQjB,EAAMxM,EAAKoqB,IAAM,CAAE7rC,EAAG,GAAK,EAAG,EAAGzO,MACnEA,KAAK7B,EAAI45B,gBAAgB4F,QAAQjB,EAAMxM,EAAK/xB,EAAG,EAAG,IAAM6B,MACnDA,KAAKyc,kBAAkBvc,QAC1BF,KAAK8c,WAoHT,OAhHAm9B,EAAwBj1C,UAAY,CAClC6xC,QAAS,SAAUzd,GACbp5B,KAAKk6C,qBAAuBl6C,KAAK08B,KAAK6d,aAAaxH,YAAY5hC,EAAEjR,QACnEF,KAAK8c,WAGP,IAAIoN,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLrqB,KAAKs6C,GAAG//B,EAAI,EACd2P,EAAKlqB,KAAKs6C,GAAG//B,EAAI,IAEjB4P,GAAMnqB,KAAKs6C,GAAG//B,EAAI,IAEhBva,KAAKq6C,GAAG9/B,EAAI,EACd6P,EAAK,EAAMpqB,KAAKq6C,GAAG9/B,EAAI,IAEvB8P,EAAK,EAAMrqB,KAAKq6C,GAAG9/B,EAAI,IAEzB,IAAIigC,EAAQxzB,cAAcsS,gBAAgBpP,EAAIC,EAAIC,EAAIC,GAAInsB,IAEtDs+B,EAAO,EACPtrB,EAAIlR,KAAKm6C,OACTp5C,EAAIf,KAAKo6C,OACT57C,EAAOwB,KAAKkwB,KAAKgK,GACrB,GAAa,IAAT17B,EAMFg+B,EAAOge,EAJLhe,EADEz7B,IAAMmQ,EACDkoB,GAAOr4B,EAAI,EAAI,EAEfyO,EAAI,EAAGD,EAAI,IAAOxO,EAAImQ,IAAMkoB,EAAMloB,IAAMnQ,EAAImQ,GAAI,UAGpD,GAAa,IAAT1S,EAOTg+B,EAAOge,EALLhe,EADEz7B,IAAMmQ,EACDkoB,GAAOr4B,EAAI,EAAI,EAEf,EAAIyO,EAAI,EAAGD,EAAI,IAAOxO,EAAImQ,IAAMkoB,EAAMloB,IAAMnQ,EAAImQ,GAAI,UAIxD,GAAa,IAAT1S,EACLuC,IAAMmQ,EACRsrB,EAAO,GAEPA,EAAOhtB,EAAI,EAAGD,EAAI,IAAOxO,EAAImQ,IAAMkoB,EAAMloB,IAAMnQ,EAAImQ,GAAI,KAC5C,GACTsrB,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,IAG3BA,EAAOge,EAAMhe,QACR,GAAa,IAATh+B,EAAY,CACrB,GAAIuC,IAAMmQ,EACRsrB,EAAO,MACF,CACL,IAAIie,EAAM15C,EAAImQ,EAIV2R,GAAK43B,EAAM,GADfrhB,EAAM7pB,EAAIC,EAAI,EAAG4pB,EAAM,GAAMloB,GAAInQ,EAAImQ,IAEjC/S,EAAIs8C,EAAM,EACdje,EAAO7+B,KAAK0Z,KAAK,EAAKwL,EAAIA,GAAM1kB,EAAIA,IAEtCq+B,EAAOge,EAAMhe,QACK,IAATh+B,GACLuC,IAAMmQ,EACRsrB,EAAO,GAEPpD,EAAM7pB,EAAIC,EAAI,EAAG4pB,EAAM,GAAMloB,GAAInQ,EAAImQ,GACrCsrB,GAAQ,EAAK7+B,KAAKygB,IAAKzgB,KAAKua,GAAe,EAAVva,KAAKua,GAAUkhB,GAAQr4B,EAAImQ,KAAS,GAEvEsrB,EAAOge,EAAMhe,KAETpD,GAAOr2B,EAAMmO,KAEbsrB,EAAOhtB,EAAI,EAAGD,EADZ6pB,EAAMloB,EAAI,EACM3B,EAAIxO,EAAG,IAAMmQ,EAAIkoB,GAEjBr4B,EAAIq4B,EAFmB,KAK7CoD,EAAOge,EAAMhe,IAEf,OAAOA,EAAOx8B,KAAK7B,EAAEoc,GAEvBuC,SAAU,SAAU49B,GAClB16C,KAAK4c,2BACL5c,KAAK6c,KAAO69B,GAAgB16C,KAAK6c,KACjC7c,KAAKk6C,mBAAqBl6C,KAAK08B,KAAK6d,aAAaxH,YAAY5hC,EAAEjR,QAAU,EACrEw6C,GAAgC,IAAhB16C,KAAKkwB,KAAK1V,IAC5Bxa,KAAKe,EAAEwZ,EAAIva,KAAKk6C,oBAElB,IAAIS,EAA0B,IAAhB36C,KAAKkwB,KAAK1V,EAAU,EAAI,IAAMxa,KAAKkwB,KAAK6mB,WAClDj3B,EAAI9f,KAAK8f,EAAEvF,EAAIogC,EACfzpC,EAAIlR,KAAKkR,EAAEqJ,EAAIogC,EAAU76B,EACzB/e,EAAKf,KAAKe,EAAEwZ,EAAIogC,EAAW76B,EAC/B,GAAI5O,EAAInQ,EAAG,CACT,IAAIylC,EAAKt1B,EACTA,EAAInQ,EACJA,EAAIylC,EAENxmC,KAAKm6C,OAASjpC,EACdlR,KAAKo6C,OAASr5C,IAGlByoB,gBAAgB,CAAClN,0BAA2B29B,GAMrC,CACLxH,oBALF,SAA6B/V,EAAMxM,EAAMnU,GACvC,OAAO,IAAIk+B,EAAwBvd,EAAMxM,EAAMnU,KA1I3B,GAqJpB6+B,YACK,SAAUC,EAAe1oC,EAAS2oC,GACvC,IAAIjuB,EAAU,EACV0S,EAAasb,EACbn2B,EAAO3M,iBAAiBwnB,GA8B5B,MA5BS,CACPpU,WAIF,WAQE,OANI0B,EAEQnI,EADVmI,GAAW,GAGD1a,KATZk0B,QAcF,SAAiB7tB,GACXqU,IAAY0S,IACd7a,EAAOq2B,QAAQn0B,OAAOlC,GACtB6a,GAAc,GAEZub,GACFA,EAAStiC,GAEXkM,EAAKmI,GAAWrU,EAChBqU,GAAW,KAUbkuB,QAKK,CACLn0B,OALF,SAAgB7K,GACd,OAAOA,EAAIvZ,OAAOuV,iBAAiBgE,EAAI7b,WAWvCw/B,UAIKkb,YAAY,GAHnB,WACE,OAAO/+B,iBAAiB,UAAW,MAQnC2lB,UAAa,WAiCf,IAAIjrB,EAAUqkC,YAAY,GAhC1B,WACE,OAAO,IAAItb,aAGb,SAAiB4H,GACf,IACIpjC,EADA8T,EAAMsvB,EAAUra,QAEpB,IAAK/oB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB47B,UAAU2G,QAAQa,EAAU3sB,EAAEzW,IAC9B47B,UAAU2G,QAAQa,EAAUpjC,EAAEA,IAC9B47B,UAAU2G,QAAQa,EAAUpnB,EAAEhc,IAC9BojC,EAAU3sB,EAAEzW,GAAK,KACjBojC,EAAUpjC,EAAEA,GAAK,KACjBojC,EAAUpnB,EAAEhc,GAAK,KAEnBojC,EAAUra,QAAU,EACpBqa,EAAUnnC,GAAI,KAmBhB,OAFAwW,EAAQmM,MAdR,SAAe6iB,GACb,IACIzhC,EADAk3C,EAASzkC,EAAQ4U,aAEjBvT,OAAwBhY,IAAlB2lC,EAAM1Y,QAAwB0Y,EAAMhrB,EAAEra,OAASqlC,EAAM1Y,QAI/D,IAHAmuB,EAAOvb,UAAU7nB,GACjBojC,EAAOj7C,EAAIwlC,EAAMxlC,EAEZ+D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBk3C,EAAOnb,YAAY0F,EAAMhrB,EAAEzW,GAAG,GAAIyhC,EAAMhrB,EAAEzW,GAAG,GAAIyhC,EAAMzlB,EAAEhc,GAAG,GAAIyhC,EAAMzlB,EAAEhc,GAAG,GAAIyhC,EAAMzhC,EAAEA,GAAG,GAAIyhC,EAAMzhC,EAAEA,GAAG,GAAIA,GAE/G,OAAOk3C,GAMFzkC,EApCQ,GA0CbqrB,oBAAuB,WACzB,IAAI3a,EAAK,CACP4a,mBAQF,WAQE,OANIhV,EAEgBnI,EADlBmI,GAAW,GAGO,IAAI2X,iBAbxB6B,QAkBF,SAAiB4U,GACf,IAAIn3C,EACA8T,EAAMqjC,EAAgBpuB,QAC1B,IAAK/oB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB09B,UAAU6E,QAAQ4U,EAAgBpqB,OAAO/sB,IAE3Cm3C,EAAgBpuB,QAAU,EAEtBA,IAAY0S,IACd7a,EAAOq2B,QAAQn0B,OAAOlC,GACtB6a,GAAc,GAEhB7a,EAAKmI,GAAWouB,EAChBpuB,GAAW,IA5BTA,EAAU,EACV0S,EAAa,EACb7a,EAAO3M,iBAAiBwnB,GA6B5B,OAAOtY,EArCkB,GA2CvBuF,mBAiBKouB,YAAY,GAhBnB,WACE,MAAO,CACLvvB,QAAS,GACTyB,YAAa,MAIjB,SAAiBtU,GACf,IAAI1U,EACA8T,EAAMY,EAAQ6S,QAAQnrB,OAC1B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBonB,iBAAiBmb,QAAQ7tB,EAAQ6S,QAAQvnB,IAE3C0U,EAAQ6S,QAAQnrB,OAAS,KASzBgrB,iBAQK0vB,YAAY,GAPnB,WACE,MAAO,CACL7vB,YAAa,EACbK,SAAUvP,iBAAiB,UAAW7D,sBACtCqT,QAASxP,iBAAiB,UAAW7D,0BAQvCkjC,aAEF,WACE,SAASC,EAAkBC,GAKzB,IAJA,IAEIpE,EAFAqE,EAAQD,EAAQ93C,MAAM,QACtBlB,EAAO,GAEPk5C,EAAY,EACPx3C,EAAI,EAAGA,EAAIu3C,EAAMn7C,OAAQ4D,GAAK,EAEjB,KADpBkzC,EAAOqE,EAAMv3C,GAAGR,MAAM,MACbpD,SACPkC,EAAK40C,EAAK,IAAMA,EAAK,GAAGuE,OACxBD,GAAa,GAGjB,GAAkB,IAAdA,EACF,MAAM,IAAIE,MAEZ,OAAOp5C,EAGT,OAAO,SAAUq5C,GAEf,IADA,IAAIC,EAAU,GACL53C,EAAI,EAAGA,EAAI23C,EAASv7C,OAAQ4D,GAAK,EAAG,CAC3C,IAAI63C,EAAUF,EAAS33C,GACnB83C,EAAa,CACfC,KAAMF,EAAQG,GACdC,SAAUJ,EAAQK,IAEpB,IACEJ,EAAWR,QAAU1oC,KAAKse,MAAMyqB,EAAS33C,GAAGm4C,IAC5C,MAAOC,GACP,IACEN,EAAWR,QAAUD,EAAkBM,EAAS33C,GAAGm4C,IACnD,MAAOE,GACPP,EAAWR,QAAU,CACnB38C,KAAMg9C,EAAS33C,KAIrB43C,EAAQv4C,KAAKy4C,GAEf,OAAOF,GAxCX,GA8CF,SAASU,gBAuJT,SAASC,YAAYC,EAAeC,GAClCv8C,KAAKs8C,cAAgBA,EACrBt8C,KAAK4vB,OAAS,KACd5vB,KAAKk8B,eAAiB,EACtBl8B,KAAKw8C,WAAargC,SAAS,OAC3B,IAAI5S,EAAY,GAChB,GAAIgzC,GAAUA,EAAO9yC,MAAO,CAC1B,IAAIgzC,EAAetgC,SAAS,SACxBugC,EAAUviC,kBACdsiC,EAAa/oB,aAAa,KAAMgpB,GAChCD,EAAa5nB,YAAc0nB,EAAO9yC,MAClCzJ,KAAKw8C,WAAWv4C,YAAYw4C,GAC5BlzC,GAAamzC,EAEf,GAAIH,GAAUA,EAAOI,YAAa,CAChC,IAAIC,EAAczgC,SAAS,QACvB0gC,EAAS1iC,kBACbyiC,EAAYlpB,aAAa,KAAMmpB,GAC/BD,EAAY/nB,YAAc0nB,EAAOI,YACjC38C,KAAKw8C,WAAWv4C,YAAY24C,GAC5BrzC,GAAa,IAAMszC,EAEjBtzC,GACFvJ,KAAKw8C,WAAW9oB,aAAa,kBAAmBnqB,GAElD,IAAIysB,EAAO7Z,SAAS,QACpBnc,KAAKw8C,WAAWv4C,YAAY+xB,GAC5B,IAAI8mB,EAAc3gC,SAAS,KAC3Bnc,KAAKw8C,WAAWv4C,YAAY64C,GAC5B98C,KAAK+8C,aAAeD,EACpB98C,KAAKg9C,aAAe,CAClBC,oBAAsBV,GAAUA,EAAOU,qBAAwB,gBAC/DC,yBAA2BX,GAAUA,EAAOW,0BAA6B,iBACzEC,gBAAkBZ,GAAUA,EAAOY,kBAAoB,EACvDC,oBAAsBb,IAAuC,IAA7BA,EAAOa,mBACvCC,YAAcd,GAAUA,EAAOc,cAAgB,EAC/CC,YAAcf,GAAUA,EAAOe,cAAgB,EAC/CC,UAAYhB,GAAUA,EAAOgB,WAAc,GAC3Cl7C,GAAKk6C,GAAUA,EAAOl6C,IAAO,GAC7Bm7C,UAAWjB,GAAUA,EAAOiB,UAC5BC,WAAY,CACVr0C,MAAQmzC,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAWr0C,OAAU,OACnEC,OAASkzC,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAWp0C,QAAW,OACrEwZ,EAAI05B,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAW56B,GAAM,KAC3DC,EAAIy5B,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAW36B,GAAM,OAI/D9iB,KAAK28B,WAAa,CAChB9f,MAAM,EACNsb,UAAW,EACXnC,KAAMA,EACNgnB,aAAch9C,KAAKg9C,cAErBh9C,KAAKupC,SAAW,GAChBvpC,KAAK09C,gBAAkB,GACvB19C,KAAK29C,WAAY,EACjB39C,KAAK49C,aAAe,MAkNtB,SAASC,eAAevB,EAAeC,GACrCv8C,KAAKs8C,cAAgBA,EACrBt8C,KAAKg9C,aAAe,CAClBc,aAAcvB,QAAiC38C,IAAvB28C,EAAOuB,aAA6BvB,EAAOuB,YACnEC,QAAUxB,GAAUA,EAAOwB,SAAY,KACvCZ,gBAAkBZ,GAAUA,EAAOY,kBAAoB,EACvDF,oBAAsBV,GAAUA,EAAOU,qBAAwB,gBAC/DC,yBAA2BX,GAAUA,EAAOW,0BAA6B,iBACzEK,UAAYhB,GAAUA,EAAOgB,WAAc,GAC3Cl7C,GAAKk6C,GAAUA,EAAOl6C,IAAO,IAE/BrC,KAAKg9C,aAAagB,IAAOzB,GAAUA,EAAOyB,KAAQ,EAC9Ch+C,KAAKs8C,cAAc2B,UACrBj+C,KAAKg9C,aAAagB,IAAOzB,GAAUA,EAAOyB,KAAQtgD,OAAOwgD,kBAAoB,GAE/El+C,KAAKk8B,eAAiB,EACtBl8B,KAAK28B,WAAa,CAChBxE,UAAW,EACXtb,MAAM,EACNmgC,aAAch9C,KAAKg9C,aACnBmB,oBAAqB,GAEvBn+C,KAAKo+C,YAAc,IAAIC,cACvBr+C,KAAKupC,SAAW,GAChBvpC,KAAK09C,gBAAkB,GACvB19C,KAAKs+C,aAAe,IAAIpgC,OACxBle,KAAK2vB,gBAAiB,EACtB3vB,KAAK49C,aAAe,SA6TtB,SAASW,eAAejC,EAAeC,GACrCv8C,KAAKs8C,cAAgBA,EACrBt8C,KAAK4vB,OAAS,KACd5vB,KAAKk8B,eAAiB,EACtBl8B,KAAKg9C,aAAe,CAClBO,UAAYhB,GAAUA,EAAOgB,WAAc,GAC3CL,yBAA2BX,GAAUA,EAAOW,0BAA6B,iBACzEE,oBAAqBb,IAAuC,IAA7BA,EAAOa,mBACtCK,WAAY,CACVr0C,MAAQmzC,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAWr0C,OAAU,OACnEC,OAASkzC,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAWp0C,QAAW,OACrEwZ,EAAI05B,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAW56B,GAAM,QAC3DC,EAAIy5B,GAAUA,EAAOkB,YAAclB,EAAOkB,WAAW36B,GAAM,UAG/D9iB,KAAK28B,WAAa,CAChB9f,MAAM,EACNsb,UAAW,EACX6kB,aAAch9C,KAAKg9C,cAErBh9C,KAAK09C,gBAAkB,GACvB19C,KAAKupC,SAAW,GAChBvpC,KAAKw+C,eAAiB,GACtBx+C,KAAK29C,WAAY,EACjB39C,KAAKy+C,OAAS,KACdz+C,KAAK0+C,YAAa,EAClB1+C,KAAK49C,aAAe,OAgTtB,SAASe,YAAYzuB,EAAM1X,EAASmkB,GAClC38B,KAAKkwB,KAAOA,EACZlwB,KAAKwY,QAAUA,EACfxY,KAAK28B,WAAaA,EAClB38B,KAAK4rB,WAAa,GAClB5rB,KAAKwwB,gBAAkBxwB,KAAKkwB,KAAKM,iBAAmB,GACpDxwB,KAAK88C,YAAc,KACnB,IACIh5C,EAKAotB,EANA8E,EAAOh2B,KAAK28B,WAAW3G,KAEvBpe,EAAM5X,KAAKwwB,gBAAkBxwB,KAAKwwB,gBAAgBtwB,OAAS,EAC/DF,KAAK4+C,SAAW7mC,iBAAiBH,GACjC5X,KAAK6+C,UAAY,GAGjB,IAGI7vC,EACAghB,EAEA8uB,EACAC,EACAC,EACAn8B,EATAo8B,EAAaj/C,KAAKwwB,gBAClBtL,EAAQ,EACRg6B,EAAe,GAGfC,EAAUhlC,kBAKV41B,EAAW,WACXqP,EAAU,YACd,IAAKt7C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAiBxB,IAhB4B,MAAvBm7C,EAAWn7C,GAAGV,MAAuC,MAAvB67C,EAAWn7C,GAAGV,MAAiB67C,EAAWn7C,GAAGglC,KAA6B,MAAtBmW,EAAWn7C,GAAGgc,EAAErR,GAAawwC,EAAWn7C,GAAGgc,EAAE+C,KAClIktB,EAAW,OACXqP,EAAU,QAGgB,MAAvBH,EAAWn7C,GAAGV,MAAuC,MAAvB67C,EAAWn7C,GAAGV,MAA2B,IAAV8hB,EAOhE45B,EAAO,OANPA,EAAO3iC,SAAS,SACXuX,aAAa,OAAQ,WAC1BorB,EAAKprB,aAAa,QAAS1zB,KAAKwY,QAAQyjB,KAAK/L,KAAK9a,GAAK,GACvD0pC,EAAKprB,aAAa,SAAU1zB,KAAKwY,QAAQyjB,KAAK/L,KAAK5V,GAAK,GACxD4kC,EAAa/7C,KAAK27C,IAKpB5tB,EAAO/U,SAAS,QACW,MAAvB8iC,EAAWn7C,GAAGV,KAEhBpD,KAAK4+C,SAAS96C,GAAK,CACjB0mC,GAAIzS,gBAAgB4F,QAAQ39B,KAAKwY,QAASymC,EAAWn7C,GAAGgc,EAAG,EAAG,IAAM9f,KAAKwY,SACzEgE,KAAMmkB,qBAAqB0e,aAAar/C,KAAKwY,QAASymC,EAAWn7C,GAAI,GACrE44B,KAAMxL,EACNouB,SAAU,IAEZtpB,EAAK/xB,YAAYitB,OACZ,CAKL,IAAIquB,EA+BJ,GAnCAr6B,GAAS,EAETgM,EAAKwC,aAAa,OAA+B,MAAvBurB,EAAWn7C,GAAGV,KAAe,UAAY,WACnE8tB,EAAKwC,aAAa,YAAa,WAGL,IAAtBurB,EAAWn7C,GAAG+e,EAAEpU,GAClBshC,EAAW,OACXqP,EAAU,OACVv8B,EAAIkV,gBAAgB4F,QAAQ39B,KAAKwY,QAASymC,EAAWn7C,GAAG+e,EAAG,EAAG,KAAM7iB,KAAKwY,SACzE+mC,EAAWplC,mBACX4kC,EAAW5iC,SAAS,WACXuX,aAAa,KAAM6rB,IAC5BP,EAAU7iC,SAAS,iBACXuX,aAAa,WAAY,SACjCsrB,EAAQtrB,aAAa,KAAM,iBAC3BsrB,EAAQtrB,aAAa,SAAU,KAC/BqrB,EAAS96C,YAAY+6C,GACrBhpB,EAAK/xB,YAAY86C,GACjB7tB,EAAKwC,aAAa,SAAiC,MAAvBurB,EAAWn7C,GAAGV,KAAe,UAAY,aAErE47C,EAAU,KACVn8B,EAAI,MAIN7iB,KAAK4rB,WAAW9nB,GAAK,CACnB44B,KAAMxL,EACNrO,EAAGA,EACH28B,MAAOR,EACPM,SAAU,GACVG,aAAc,GACdC,SAAUH,EACVI,WAAY,GAEa,MAAvBV,EAAWn7C,GAAGV,KAAc,CAC9B4sB,EAAOkvB,EAAah/C,OACpB,IAAIua,EAAI0B,SAAS,KACjB,IAAKnN,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzByL,EAAExW,YAAYi7C,EAAalwC,IAE7B,IAAI8V,EAAO3I,SAAS,QACpB2I,EAAK4O,aAAa,YAAa,SAC/B5O,EAAK4O,aAAa,KAAMyrB,EAAU,IAAMj6B,GACxCJ,EAAK7gB,YAAYitB,GACjB8E,EAAK/xB,YAAY6gB,GACjBrK,EAAEiZ,aAAa,OAAQ,OAAShd,aAAe,IAAMyoC,EAAU,IAAMj6B,EAAQ,KAE7Eg6B,EAAah/C,OAAS,EACtBg/C,EAAa/7C,KAAKsX,QAElBykC,EAAa/7C,KAAK+tB,GAEhB+tB,EAAWn7C,GAAGglC,MAAQ9oC,KAAK6+C,YAC7B7+C,KAAK6+C,UAAY7+C,KAAK4/C,wBAGxB5/C,KAAK4+C,SAAS96C,GAAK,CACjB44B,KAAMxL,EACNouB,SAAU,GACV9U,GAAIzS,gBAAgB4F,QAAQ39B,KAAKwY,QAASymC,EAAWn7C,GAAGgc,EAAG,EAAG,IAAM9f,KAAKwY,SACzEgE,KAAMmkB,qBAAqB0e,aAAar/C,KAAKwY,QAASymC,EAAWn7C,GAAI,GACrE+7C,QAASf,GAEN9+C,KAAK4+C,SAAS96C,GAAG0Y,KAAK/N,GACzBzO,KAAK8/C,SAASb,EAAWn7C,GAAI9D,KAAK4+C,SAAS96C,GAAG0Y,KAAKjC,EAAGva,KAAK4+C,SAAS96C,IAQ1E,IAHA9D,KAAK88C,YAAc3gC,SAAS4zB,GAE5Bn4B,EAAMsnC,EAAah/C,OACd4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK88C,YAAY74C,YAAYi7C,EAAap7C,IAGxCohB,EAAQ,IACVllB,KAAK88C,YAAYppB,aAAa,KAAMyrB,GACpCn/C,KAAKwY,QAAQunC,cAAcrsB,aAAa0rB,EAAS,OAAS1oC,aAAe,IAAMyoC,EAAU,KACzFnpB,EAAK/xB,YAAYjE,KAAK88C,cAEpB98C,KAAK4+C,SAAS1+C,QAChBF,KAAKwY,QAAQwnC,uBAAuBhgD,MAiGxC,SAASigD,oBAoDT,SAASC,gBAgDT,SAASC,oBA6ET,SAASC,qBAwFT,SAASC,wBAgET,SAASC,iBAAiB9nC,EAASC,GACjCzY,KAAK08B,KAAOlkB,EACZxY,KAAKiR,IAAMwH,EAKb,SAAS8nC,aAAarwB,EAAMswB,GAC1BxgD,KAAKkwB,KAAOA,EACZlwB,KAAKxB,KAAO0xB,EAAKjQ,GACjBjgB,KAAK8a,EAAI,GACT9a,KAAKygD,IAAMD,EACXxgD,KAAK6c,MAAO,EACZ7c,KAAKysB,QAAqB,IAAZyD,EAAKwwB,GACnB1gD,KAAK2gD,MAAQxkC,SAAS,QACtBnc,KAAK4gD,OAAS,KAQhB,SAASC,aAAaC,EAAcN,EAAOjb,GACzCvlC,KAAK+gD,OAAS,GACd/gD,KAAK6yB,OAAS,GACd7yB,KAAK8gD,aAAeA,EACpB9gD,KAAKghD,KAAO,GACZhhD,KAAKk6B,GAAKqL,EACVvlC,KAAKygD,IAAMD,EAIXxgD,KAAK2c,cAAgB4oB,EAAM92B,EAI3B,IAFA,IAAI3K,EAAI,EACJ8T,EAAMkpC,EAAa5gD,OAChB4D,EAAI8T,GAAK,CACd,GAAIkpC,EAAah9C,GAAGinC,OAAOtuB,kBAAkBvc,OAAQ,CACnDF,KAAK2c,aAAc,EACnB,MAEF7Y,GAAK,GAUT,SAASm9C,iBAAiBlW,EAAQP,EAAI7iC,GACpC3H,KAAKmgB,UAAY,CACf4qB,OAAQA,EACRP,GAAIA,EACJ7iC,UAAWA,GAEb3H,KAAKupC,SAAW,GAChBvpC,KAAK2c,YAAc3c,KAAKmgB,UAAU4qB,OAAOtuB,kBAAkBvc,QAAUF,KAAKmgB,UAAUqqB,GAAG3N,gBAAgB38B,OAKzG,SAASghD,mBAAmBxkB,EAAMxM,EAAMixB,GACtCnhD,KAAK+c,6BAA6B2f,GAClC18B,KAAK8c,SAAW9c,KAAK4c,yBACrB5c,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,IAAM9f,MACxDA,KAAKoV,EAAI2iB,gBAAgB4F,QAAQjB,EAAMxM,EAAK9a,EAAG,EAAG,KAAMpV,MACxDA,KAAK8a,EAAI,IAAI2pB,aAAa/H,EAAMxM,EAAKpV,GAAK,GAAI,MAAO9a,MACrDA,KAAKD,EAAIg4B,gBAAgB4F,QAAQjB,EAAMxM,EAAKnwB,EAAG,EAAG,IAAKC,MACvDA,KAAK+D,MAAQo9C,EACbnhD,KAAK2c,cAAgB3c,KAAK2c,YAO5B,SAASykC,iBAAiB1kB,EAAMxM,EAAMixB,GACpCnhD,KAAK+c,6BAA6B2f,GAClC18B,KAAK8c,SAAW9c,KAAK4c,yBACrB5c,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,IAAM9f,MACxDA,KAAKD,EAAIg4B,gBAAgB4F,QAAQjB,EAAMxM,EAAKnwB,EAAG,EAAG,IAAKC,MACvDA,KAAK+D,MAAQo9C,EAQf,SAASE,yBAAyB3kB,EAAMxM,EAAMixB,GAC5CnhD,KAAK+c,6BAA6B2f,GAClC18B,KAAK8c,SAAW9c,KAAK4c,yBACrB5c,KAAKshD,iBAAiB5kB,EAAMxM,EAAMixB,GA2EpC,SAASI,2BAA2B7kB,EAAMxM,EAAMixB,GAC9CnhD,KAAK+c,6BAA6B2f,GAClC18B,KAAK8c,SAAW9c,KAAK4c,yBACrB5c,KAAKoV,EAAI2iB,gBAAgB4F,QAAQjB,EAAMxM,EAAK9a,EAAG,EAAG,KAAMpV,MACxDA,KAAK8a,EAAI,IAAI2pB,aAAa/H,EAAMxM,EAAKpV,GAAK,GAAI,MAAO9a,MACrDA,KAAKshD,iBAAiB5kB,EAAMxM,EAAMixB,GAClCnhD,KAAK2c,cAAgB3c,KAAK2c,YAQ5B,SAAS6kC,iBACPxhD,KAAKmB,GAAK,GACVnB,KAAKyhD,aAAe,GACpBzhD,KAAK0hD,GAAKvlC,SAAS,KAhzDrBigC,aAAap3C,UAAU28C,YAAc,SAAUC,GAC7C,IAAI99C,EAEAosB,EADAtY,EAAM5X,KAAK4vB,OAAO1vB,OAGtB,IADAF,KAAK2vB,gBAAiB,EACjB7rB,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,EACxB9D,KAAKupC,SAASzlC,KACjBosB,EAAOlwB,KAAK4vB,OAAO9rB,IACV+9C,GAAK3xB,EAAKsN,IAAOokB,EAAM5hD,KAAK4vB,OAAO9rB,GAAG05B,IAAOtN,EAAKsa,GAAKta,EAAKsN,GAAMokB,EAAM5hD,KAAK4vB,OAAO9rB,GAAG05B,IAC9Fx9B,KAAK8hD,UAAUh+C,GAGnB9D,KAAK2vB,iBAAiB3vB,KAAKupC,SAASzlC,IAAK9D,KAAK2vB,eAEhD3vB,KAAK+hD,wBAGP3F,aAAap3C,UAAUg9C,WAAa,SAAUC,GAC5C,OAAQA,EAAMhiC,IACZ,KAAK,EACH,OAAOjgB,KAAKkiD,YAAYD,GAC1B,KAAK,EACH,OAAOjiD,KAAKmiD,WAAWF,GACzB,KAAK,EACH,OAAOjiD,KAAKoiD,YAAYH,GAC1B,KAAK,EACH,OAAOjiD,KAAKqiD,WAAWJ,GACzB,KAAK,EACH,OAAOjiD,KAAKsiD,YAAYL,GAC1B,KAAK,EACH,OAAOjiD,KAAKuiD,WAAWN,GACzB,KAAK,EACH,OAAOjiD,KAAKgsC,YAAYiW,GAC1B,KAAK,GACH,OAAOjiD,KAAKwiD,aAAaP,GAC3B,KAAK,GACH,OAAOjiD,KAAKyiD,cAAcR,GAC5B,QACE,OAAOjiD,KAAKqiD,WAAWJ,KAI7B7F,aAAap3C,UAAUw9C,aAAe,WACpC,MAAM,IAAIhH,MAAM,qDAGlBY,aAAap3C,UAAUgnC,YAAc,SAAU9b,GAC7C,OAAO,IAAIwyB,aAAaxyB,EAAMlwB,KAAK28B,WAAY38B,OAGjDo8C,aAAap3C,UAAUy9C,cAAgB,SAAUvyB,GAC/C,OAAO,IAAIyyB,eAAezyB,EAAMlwB,KAAK28B,WAAY38B,OAGnDo8C,aAAap3C,UAAU49C,cAAgB,WACrC,IAAI9+C,EACA8T,EAAM5X,KAAK4vB,OAAO1vB,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK8hD,UAAUh+C,GAEjB9D,KAAK+hD,wBAGP3F,aAAap3C,UAAU69C,cAAgB,SAAUC,GAE/C,IAAIh/C,EADJ9D,KAAK2vB,gBAAiB,EAEtB,IACI3gB,EADA4I,EAAMkrC,EAAU5iD,OAEhB8vB,EAAOhwB,KAAK4vB,OAAO1vB,OACvB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAExB,IADAkL,EAAI,EACGA,EAAIghB,GAAM,CACf,GAAIhwB,KAAK4vB,OAAO5gB,GAAG3M,KAAOygD,EAAUh/C,GAAGzB,GAAI,CACzCrC,KAAK4vB,OAAO5gB,GAAK8zC,EAAUh/C,GAC3B,MAEFkL,GAAK,IAKXotC,aAAap3C,UAAU+9C,oBAAsB,SAAUC,GACrDhjD,KAAK28B,WAAWsmB,iBAAmBD,GAGrC5G,aAAap3C,UAAUk+C,UAAY,WAC5BljD,KAAK28B,WAAWwgB,iBACnBn9C,KAAK4iD,iBAGTxG,aAAap3C,UAAUm+C,sBAAwB,SAAU3qC,EAAS4qC,EAAYC,GAK5E,IAJA,IAAI9Z,EAAWvpC,KAAKupC,SAChB3Z,EAAS5vB,KAAK4vB,OACd9rB,EAAI,EACJ8T,EAAMgY,EAAO1vB,OACV4D,EAAI8T,GACLgY,EAAO9rB,GAAGs1B,KAAOgqB,IACd7Z,EAASzlC,KAAsB,IAAhBylC,EAASzlC,IAI3Bu/C,EAAUlgD,KAAKomC,EAASzlC,IACxBylC,EAASzlC,GAAGw/C,mBACa1jD,IAArBgwB,EAAO9rB,GAAG0wB,OACZx0B,KAAKmjD,sBAAsB3qC,EAASoX,EAAO9rB,GAAG0wB,OAAQ6uB,GAEtD7qC,EAAQ+qC,aAAaF,KARvBrjD,KAAK8hD,UAAUh+C,GACf9D,KAAKwjD,kBAAkBhrC,KAW3B1U,GAAK,GAITs4C,aAAap3C,UAAUw+C,kBAAoB,SAAUhrC,GACnDxY,KAAK09C,gBAAgBv6C,KAAKqV,IAG5B4jC,aAAap3C,UAAUy+C,wBAA0B,SAAU5xB,GACzD,IAAI/tB,EACA8T,EAAMia,EAAO3xB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAI+tB,EAAO/tB,GAAG4/C,GAAI,CAChB,IAAIznB,EAAOj8B,KAAKmiD,WAAWtwB,EAAO/tB,IAClCm4B,EAAK0nB,kBACL3jD,KAAK28B,WAAWsmB,iBAAiBW,oBAAoB3nB,KAK3DmgB,aAAap3C,UAAU6+C,gBAAkB,SAAUC,EAAUC,GAC3D/jD,KAAK28B,WAAW7M,YAAc,IAAIoD,YAClClzB,KAAK28B,WAAW7M,YAAY8F,SAASkuB,EAAS/xB,OAC9C/xB,KAAK28B,WAAW7M,YAAYiG,SAAS+tB,EAAS7uB,MAAO8uB,GACrD/jD,KAAK28B,WAAWqnB,aAAehkD,KAAKs8C,cAAc0H,aAAaroC,KAAK3b,KAAKs8C,eACzEt8C,KAAK28B,WAAW+Q,cAAgB1tC,KAAKs8C,cAAc5O,cAAc/xB,KAAK3b,KAAKs8C,eAC3Et8C,KAAK28B,WAAWsnB,YAAcjkD,KAAKs8C,cAAc4H,eACjDlkD,KAAK28B,WAAWwnB,gBAAkBnkD,KAAKs8C,cAAc6H,gBACrDnkD,KAAK28B,WAAWC,QAAU,EAC1B58B,KAAK28B,WAAWmC,UAAYglB,EAASM,GACrCpkD,KAAK28B,WAAWzV,GAAK48B,EAAS58B,GAC9BlnB,KAAK28B,WAAW0nB,SAAW,CACzBjvC,EAAG0uC,EAAS1uC,EACZkF,EAAGwpC,EAASxpC,IAmEhBkP,gBAAgB,CAAC4yB,cAAeC,aAEhCA,YAAYr3C,UAAUq9C,WAAa,SAAUnyB,GAC3C,OAAO,IAAIo0B,YAAYp0B,EAAMlwB,KAAK28B,WAAY38B,OAGhDq8C,YAAYr3C,UAAUs9C,YAAc,SAAUpyB,GAC5C,OAAO,IAAIq0B,gBAAgBr0B,EAAMlwB,KAAK28B,WAAY38B,OAGpDq8C,YAAYr3C,UAAUu9C,WAAa,SAAUryB,GAC3C,OAAO,IAAIs0B,qBAAqBt0B,EAAMlwB,KAAK28B,WAAY38B,OAGzDq8C,YAAYr3C,UAAUk9C,YAAc,SAAUhyB,GAC5C,OAAO,IAAIu0B,cAAcv0B,EAAMlwB,KAAK28B,WAAY38B,OAGlDq8C,YAAYr3C,UAAUm9C,WAAa,SAAUjyB,GAC3C,OAAO,IAAIw0B,eAAex0B,EAAMlwB,KAAK28B,WAAY38B,OAGnDq8C,YAAYr3C,UAAUo9C,YAAc,SAAUlyB,GAC5C,OAAO,IAAIy0B,cAAcz0B,EAAMlwB,KAAK28B,WAAY38B,OAGlDq8C,YAAYr3C,UAAU4/C,gBAAkB,SAAUd,GAChD9jD,KAAKw8C,WAAW9oB,aAAa,QAAS,8BAClC1zB,KAAKg9C,aAAaM,YACpBt9C,KAAKw8C,WAAW9oB,aAAa,UAAW1zB,KAAKg9C,aAAaM,aAE1Dt9C,KAAKw8C,WAAW9oB,aAAa,UAAW,OAASowB,EAAS1uC,EAAI,IAAM0uC,EAASxpC,GAG1Eta,KAAKg9C,aAAaK,cACrBr9C,KAAKw8C,WAAW9oB,aAAa,QAASowB,EAAS1uC,GAC/CpV,KAAKw8C,WAAW9oB,aAAa,SAAUowB,EAASxpC,GAChDta,KAAKw8C,WAAWz4C,MAAMqF,MAAQ,OAC9BpJ,KAAKw8C,WAAWz4C,MAAMsF,OAAS,OAC/BrJ,KAAKw8C,WAAWz4C,MAAMoc,UAAY,sBAEhCngB,KAAKg9C,aAAaO,WACpBv9C,KAAKw8C,WAAW9oB,aAAa,QAAS1zB,KAAKg9C,aAAaO,WAEtDv9C,KAAKg9C,aAAa36C,IACpBrC,KAAKw8C,WAAW9oB,aAAa,KAAM1zB,KAAKg9C,aAAa36C,SAEnBzC,IAAhCI,KAAKg9C,aAAaQ,WACpBx9C,KAAKw8C,WAAW9oB,aAAa,YAAa1zB,KAAKg9C,aAAaQ,WAE9Dx9C,KAAKw8C,WAAW9oB,aAAa,sBAAuB1zB,KAAKg9C,aAAaC,qBAGtEj9C,KAAKs8C,cAAc2B,QAAQh6C,YAAYjE,KAAKw8C,YAE5C,IAAIxmB,EAAOh2B,KAAK28B,WAAW3G,KAE3Bh2B,KAAK6jD,gBAAgBC,EAAU9tB,GAC/Bh2B,KAAK28B,WAAWwgB,gBAAkBn9C,KAAKg9C,aAAaG,gBACpDn9C,KAAKkwB,KAAO4zB,EAEZ,IAAIhH,EAAc3gC,SAAS,YACvB2iC,EAAO3iC,SAAS,QACpB2iC,EAAKprB,aAAa,QAASowB,EAAS1uC,GACpC0pC,EAAKprB,aAAa,SAAUowB,EAASxpC,GACrCwkC,EAAKprB,aAAa,IAAK,GACvBorB,EAAKprB,aAAa,IAAK,GACvB,IAAImxB,EAAS1qC,kBACb2iC,EAAYppB,aAAa,KAAMmxB,GAC/B/H,EAAY74C,YAAY66C,GACxB9+C,KAAK+8C,aAAarpB,aAAa,YAAa,OAAShd,aAAe,IAAMmuC,EAAS,KAEnF7uB,EAAK/xB,YAAY64C,GACjB98C,KAAK4vB,OAASk0B,EAASl0B,OACvB5vB,KAAKupC,SAAWxxB,iBAAiB+rC,EAASl0B,OAAO1vB,SAGnDm8C,YAAYr3C,UAAUkD,QAAU,WAM9B,IAAIpE,EALA9D,KAAKs8C,cAAc2B,UACrBj+C,KAAKs8C,cAAc2B,QAAQpqB,UAAY,IAEzC7zB,KAAK+8C,aAAe,KACpB/8C,KAAK28B,WAAW3G,KAAO,KAEvB,IAAIpe,EAAM5X,KAAK4vB,OAAS5vB,KAAK4vB,OAAO1vB,OAAS,EAC7C,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB9D,KAAKupC,SAASzlC,IAChB9D,KAAKupC,SAASzlC,GAAGoE,UAGrBlI,KAAKupC,SAASrpC,OAAS,EACvBF,KAAK29C,WAAY,EACjB39C,KAAKs8C,cAAgB,MAGvBD,YAAYr3C,UAAU8/C,oBAAsB,aAG5CzI,YAAYr3C,UAAU88C,UAAY,SAAU7wC,GAC1C,IAAIs4B,EAAWvpC,KAAKupC,SACpB,IAAIA,EAASt4B,IAAgC,KAAxBjR,KAAK4vB,OAAO3e,GAAKgP,GAAtC,CAGAspB,EAASt4B,IAAO,EAChB,IAAIuH,EAAUxY,KAAKgiD,WAAWhiD,KAAK4vB,OAAO3e,IAE1Cs4B,EAASt4B,GAAOuH,EACZ3B,oBAC0B,IAAxB7W,KAAK4vB,OAAO3e,GAAKgP,IACnBjgB,KAAK28B,WAAWsmB,iBAAiBW,oBAAoBprC,GAEvDA,EAAQmrC,mBAEV3jD,KAAK+kD,mBAAmBvsC,EAASvH,GAC7BjR,KAAK4vB,OAAO3e,GAAKmf,KACdpwB,KAAKupC,SAASt4B,EAAM,KAAiC,IAA3BjR,KAAKupC,SAASt4B,EAAM,GAIjDuH,EAAQwsC,SAASzb,EAASt4B,EAAM,GAAGkuC,UAHnCn/C,KAAK8hD,UAAU7wC,EAAM,GACrBjR,KAAKwjD,kBAAkBhrC,OAO7B6jC,YAAYr3C,UAAU+8C,qBAAuB,WAC3C,KAAO/hD,KAAK09C,gBAAgBx9C,QAAQ,CAClC,IAAIsY,EAAUxY,KAAK09C,gBAAgB5W,MAEnC,GADAtuB,EAAQysC,iBACJzsC,EAAQ0X,KAAKE,GAGf,IAFA,IAAItsB,EAAI,EACJ8T,EAAM5X,KAAKupC,SAASrpC,OACjB4D,EAAI8T,GAAK,CACd,GAAI5X,KAAKupC,SAASzlC,KAAO0U,EAAS,CAChCA,EAAQwsC,SAAShlD,KAAKupC,SAASzlC,EAAI,GAAGq7C,SACtC,MAEFr7C,GAAK,KAMbu4C,YAAYr3C,UAAUkgD,YAAc,SAAUtD,GAC5C,GAAI5hD,KAAKk8B,gBAAkB0lB,IAAO5hD,KAAK29C,UAAvC,CAcA,IAAI75C,EAXQ,OAAR89C,EACFA,EAAM5hD,KAAKk8B,cAEXl8B,KAAKk8B,cAAgB0lB,EAIvB5hD,KAAK28B,WAAWxE,SAAWypB,EAC3B5hD,KAAK28B,WAAWC,SAAW,EAC3B58B,KAAK28B,WAAWsmB,iBAAiBkC,aAAevD,EAChD5hD,KAAK28B,WAAW9f,MAAO,EAEvB,IAAIjF,EAAM5X,KAAK4vB,OAAO1vB,OAItB,IAHKF,KAAK2vB,gBACR3vB,KAAK2hD,YAAYC,GAEd99C,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,GACzB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGshD,aAAaxD,EAAM5hD,KAAK4vB,OAAO9rB,GAAG05B,IAGvD,GAAIx9B,KAAK28B,WAAW9f,KAClB,IAAK/Y,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACpB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGohD,gBAMzB7I,YAAYr3C,UAAU+/C,mBAAqB,SAAUvsC,EAASvH,GAC5D,IAAIka,EAAa3S,EAAQ6sC,iBACzB,GAAKl6B,EAAL,CAKA,IAFA,IACIm6B,EADAxhD,EAAI,EAEDA,EAAImN,GACLjR,KAAKupC,SAASzlC,KAA2B,IAArB9D,KAAKupC,SAASzlC,IAAe9D,KAAKupC,SAASzlC,GAAGuhD,mBACpEC,EAActlD,KAAKupC,SAASzlC,GAAGuhD,kBAEjCvhD,GAAK,EAEHwhD,EACFtlD,KAAK+8C,aAAawI,aAAap6B,EAAYm6B,GAE3CtlD,KAAK+8C,aAAa94C,YAAYknB,KAIlCkxB,YAAYr3C,UAAU3G,KAAO,WAC3B2B,KAAK+8C,aAAah5C,MAAMC,QAAU,QAGpCq4C,YAAYr3C,UAAUwgD,KAAO,WAC3BxlD,KAAK+8C,aAAah5C,MAAMC,QAAU,SAmCpCwlB,gBAAgB,CAAC4yB,cAAeyB,gBAEhCA,eAAe74C,UAAUs9C,YAAc,SAAUpyB,GAC/C,OAAO,IAAIu1B,eAAev1B,EAAMlwB,KAAK28B,WAAY38B,OAGnD69C,eAAe74C,UAAUu9C,WAAa,SAAUryB,GAC9C,OAAO,IAAIw1B,cAAcx1B,EAAMlwB,KAAK28B,WAAY38B,OAGlD69C,eAAe74C,UAAUk9C,YAAc,SAAUhyB,GAC/C,OAAO,IAAIy1B,eAAez1B,EAAMlwB,KAAK28B,WAAY38B,OAGnD69C,eAAe74C,UAAUm9C,WAAa,SAAUjyB,GAC9C,OAAO,IAAI01B,cAAc11B,EAAMlwB,KAAK28B,WAAY38B,OAGlD69C,eAAe74C,UAAUo9C,YAAc,SAAUlyB,GAC/C,OAAO,IAAI21B,eAAe31B,EAAMlwB,KAAK28B,WAAY38B,OAGnD69C,eAAe74C,UAAUq9C,WAAahG,YAAYr3C,UAAUq9C,WAE5DxE,eAAe74C,UAAU8gD,aAAe,SAAU3+C,GAChD,GAAiB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,IAGrG,GAAKnH,KAAKg9C,aAAac,YAAvB,CAIA99C,KAAKs+C,aAAa37B,eAAexb,GACjC,IAAI4+C,EAAS/lD,KAAKo+C,YAAY4H,IAAI7+C,MAClCnH,KAAKs+C,aAAan+B,UAAU4lC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAE7M/lD,KAAKo+C,YAAY4H,IAAIrjC,eAAe3iB,KAAKs+C,aAAan3C,OACtD,IAAI8+C,EAAUjmD,KAAKo+C,YAAY4H,IAAI7+C,MACnCnH,KAAKkmD,cAAcvmC,aAAasmC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,UATnGjmD,KAAKkmD,cAAc/lC,UAAUhZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,MAY1F02C,eAAe74C,UAAUmhD,WAAa,SAAU3b,GAI9C,IAAKxqC,KAAKg9C,aAAac,YAGrB,OAFA99C,KAAKkmD,cAAcE,aAAe5b,EAAK,EAAI,EAAIA,OAC/CxqC,KAAK28B,WAAWwhB,mBAAqBn+C,KAAKo+C,YAAYiI,IAGxDrmD,KAAKo+C,YAAYiI,IAAM7b,EAAK,EAAI,EAAIA,EAChCxqC,KAAK28B,WAAWwhB,qBAAuBn+C,KAAKo+C,YAAYiI,KAC1DrmD,KAAKkmD,cAAcE,YAAcpmD,KAAKo+C,YAAYiI,GAClDrmD,KAAK28B,WAAWwhB,mBAAqBn+C,KAAKo+C,YAAYiI,KAI1DxI,eAAe74C,UAAU0Z,MAAQ,WAC1B1e,KAAKg9C,aAAac,YAIvB99C,KAAKo+C,YAAY1/B,QAHf1e,KAAKkmD,cAAcI,WAMvBzI,eAAe74C,UAAUuhD,KAAO,SAAUC,GACxC,GAAKxmD,KAAKg9C,aAAac,YAAvB,CAII0I,GACFxmD,KAAKkmD,cAAcK,OAErB,IAIIziD,EAJAqD,EAAQnH,KAAKo+C,YAAY4H,IAAI7+C,MAC7BnH,KAAKo+C,YAAYvxB,SAAW7sB,KAAKo+C,YAAYqI,SAC/CzmD,KAAKo+C,YAAYsI,YAGnB,IAAI3qC,EAAM/b,KAAKo+C,YAAYuI,MAAM3mD,KAAKo+C,YAAYqI,SAClD,IAAK3iD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBiY,EAAIjY,GAAKqD,EAAMrD,GAEjB9D,KAAKo+C,YAAYwI,QAAQ5mD,KAAKo+C,YAAYqI,SAAWzmD,KAAKo+C,YAAYiI,GACtErmD,KAAKo+C,YAAYqI,SAAW,OAhB1BzmD,KAAKkmD,cAAcK,QAmBvB1I,eAAe74C,UAAUshD,QAAU,SAAUE,GAC3C,GAAKxmD,KAAKg9C,aAAac,YAAvB,CAII0I,IACFxmD,KAAKkmD,cAAcI,UACnBtmD,KAAK28B,WAAWkqB,UAAY,eAE9B7mD,KAAKo+C,YAAYqI,SAAW,EAC5B,IACI3iD,EADAgjD,EAAS9mD,KAAKo+C,YAAYuI,MAAM3mD,KAAKo+C,YAAYqI,SAEjD1qC,EAAM/b,KAAKo+C,YAAY4H,IAAI7+C,MAC/B,IAAKrD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBiY,EAAIjY,GAAKgjD,EAAOhjD,GAElB9D,KAAKkmD,cAAcvmC,aAAamnC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,KAC/FA,EAAS9mD,KAAKo+C,YAAYwI,QAAQ5mD,KAAKo+C,YAAYqI,SACnDzmD,KAAKo+C,YAAYiI,GAAKS,EAClB9mD,KAAK28B,WAAWwhB,qBAAuB2I,IACzC9mD,KAAKkmD,cAAcE,YAAcU,EACjC9mD,KAAK28B,WAAWwhB,mBAAqB2I,QAnBrC9mD,KAAKkmD,cAAcI,WAuBvBzI,eAAe74C,UAAU4/C,gBAAkB,SAAUd,GACnD,GAAI9jD,KAAKs8C,cAAc2B,QAAS,CAC9Bj+C,KAAKs8C,cAAc30C,UAAY0U,UAAU,UACzC,IAAI0qC,EAAiB/mD,KAAKs8C,cAAc30C,UAAU5D,MAClDgjD,EAAe39C,MAAQ,OACvB29C,EAAe19C,OAAS,OACxB,IAAIstB,EAAS,cACbowB,EAAenuC,gBAAkB+d,EACjCowB,EAAeC,mBAAqBrwB,EACpCowB,EAAeluC,sBAAwB8d,EACvCowB,EAAe,qBAAuBpwB,EACtC32B,KAAKs8C,cAAc2B,QAAQh6C,YAAYjE,KAAKs8C,cAAc30C,WAC1D3H,KAAKkmD,cAAgBlmD,KAAKs8C,cAAc30C,UAAUotB,WAAW,MACzD/0B,KAAKg9C,aAAaO,WACpBv9C,KAAKs8C,cAAc30C,UAAU+rB,aAAa,QAAS1zB,KAAKg9C,aAAaO,WAEnEv9C,KAAKg9C,aAAa36C,IACpBrC,KAAKs8C,cAAc30C,UAAU+rB,aAAa,KAAM1zB,KAAKg9C,aAAa36C,SAGpErC,KAAKkmD,cAAgBlmD,KAAKg9C,aAAae,QAEzC/9C,KAAKkwB,KAAO4zB,EACZ9jD,KAAK4vB,OAASk0B,EAASl0B,OACvB5vB,KAAKinD,gBAAkB,CACrB7xC,EAAG0uC,EAAS1uC,EACZkF,EAAGwpC,EAASxpC,EACZ6E,GAAI,EACJC,GAAI,EACJY,GAAI,EACJC,GAAI,GAENjgB,KAAK6jD,gBAAgBC,EAAU1/C,SAAS+vB,MACxCn0B,KAAK28B,WAAWupB,cAAgBlmD,KAAKkmD,cACrClmD,KAAK28B,WAAW90B,SAAW7H,KAC3BA,KAAK28B,WAAWuqB,UAAW,EAC3BlnD,KAAK28B,WAAWwgB,gBAAkBn9C,KAAKg9C,aAAaG,gBACpDn9C,KAAK28B,WAAWsqB,gBAAkBjnD,KAAKinD,gBACvCjnD,KAAKupC,SAAWxxB,iBAAiB+rC,EAASl0B,OAAO1vB,QAEjDF,KAAK8kD,uBAGPjH,eAAe74C,UAAU8/C,oBAAsB,WAE7C,IAAIqC,EACAC,EAUAC,EACAC,EACJ,GAdAtnD,KAAK0e,QAGD1e,KAAKs8C,cAAc2B,SAAWj+C,KAAKs8C,cAAc30C,WACnDw/C,EAAennD,KAAKs8C,cAAc2B,QAAQ7pB,YAC1CgzB,EAAgBpnD,KAAKs8C,cAAc2B,QAAQsJ,aAC3CvnD,KAAKs8C,cAAc30C,UAAU+rB,aAAa,QAASyzB,EAAennD,KAAKg9C,aAAagB,KACpFh+C,KAAKs8C,cAAc30C,UAAU+rB,aAAa,SAAU0zB,EAAgBpnD,KAAKg9C,aAAagB,OAEtFmJ,EAAennD,KAAKkmD,cAAclZ,OAAO5jC,MAAQpJ,KAAKg9C,aAAagB,IACnEoJ,EAAgBpnD,KAAKkmD,cAAclZ,OAAO3jC,OAASrJ,KAAKg9C,aAAagB,MAIR,IAA3Dh+C,KAAKg9C,aAAaC,oBAAoBvgC,QAAQ,UAA8E,IAA5D1c,KAAKg9C,aAAaC,oBAAoBvgC,QAAQ,SAAiB,CACjI,IAAI8qC,EAAMxnD,KAAKg9C,aAAaC,oBAAoB35C,MAAM,KAClDmkD,EAAWD,EAAI,IAAM,OACrBv2C,EAAMu2C,EAAI,IAAM,WAChBjT,EAAOtjC,EAAImnC,OAAO,EAAG,GACrB5D,EAAOvjC,EAAImnC,OAAO,GACtBiP,EAAaF,EAAeC,GAC5BE,EAAetnD,KAAKinD,gBAAgB7xC,EAAIpV,KAAKinD,gBAAgB3sC,GACzC+sC,GAA2B,SAAbI,GAAyBH,EAAeD,GAA2B,UAAbI,GACtFznD,KAAKinD,gBAAgB9nC,GAAKgoC,GAAgBnnD,KAAKinD,gBAAgB7xC,EAAIpV,KAAKg9C,aAAagB,KACrFh+C,KAAKinD,gBAAgB7nC,GAAK+nC,GAAgBnnD,KAAKinD,gBAAgB7xC,EAAIpV,KAAKg9C,aAAagB,OAErFh+C,KAAKinD,gBAAgB9nC,GAAKioC,GAAiBpnD,KAAKinD,gBAAgB3sC,EAAIta,KAAKg9C,aAAagB,KACtFh+C,KAAKinD,gBAAgB7nC,GAAKgoC,GAAiBpnD,KAAKinD,gBAAgB3sC,EAAIta,KAAKg9C,aAAagB,MAItFh+C,KAAKinD,gBAAgBjnC,GADV,SAATu0B,IAAqB+S,EAAeD,GAA2B,SAAbI,GAAyBH,EAAeD,GAA2B,UAAbI,IAC9EN,EAAennD,KAAKinD,gBAAgB7xC,GAAKgyC,EAAgBpnD,KAAKinD,gBAAgB3sC,IAAM,EAAKta,KAAKg9C,aAAagB,IACrH,SAATzJ,IAAqB+S,EAAeD,GAA2B,SAAbI,GAAyBH,EAAeD,GAA2B,UAAbI,IACtFN,EAAennD,KAAKinD,gBAAgB7xC,GAAKgyC,EAAgBpnD,KAAKinD,gBAAgB3sC,IAAMta,KAAKg9C,aAAagB,IAEvG,EAG1Bh+C,KAAKinD,gBAAgBhnC,GADV,SAATu0B,IAAqB8S,EAAeD,GAA2B,SAAbI,GAAyBH,EAAeD,GAA2B,UAAbI,IAC9EL,EAAgBpnD,KAAKinD,gBAAgB3sC,GAAK6sC,EAAennD,KAAKinD,gBAAgB7xC,IAAM,EAAKpV,KAAKg9C,aAAagB,IACrH,SAATxJ,IAAqB8S,EAAeD,GAA2B,SAAbI,GAAyBH,EAAeD,GAA2B,UAAbI,IACrFL,EAAgBpnD,KAAKinD,gBAAgB3sC,GAAK6sC,EAAennD,KAAKinD,gBAAgB7xC,IAAOpV,KAAKg9C,aAAagB,IAEzG,MAEuB,SAA1Ch+C,KAAKg9C,aAAaC,qBAC3Bj9C,KAAKinD,gBAAgB9nC,GAAKgoC,GAAgBnnD,KAAKinD,gBAAgB7xC,EAAIpV,KAAKg9C,aAAagB,KACrFh+C,KAAKinD,gBAAgB7nC,GAAKgoC,GAAiBpnD,KAAKinD,gBAAgB3sC,EAAIta,KAAKg9C,aAAagB,KACtFh+C,KAAKinD,gBAAgBjnC,GAAK,EAC1BhgB,KAAKinD,gBAAgBhnC,GAAK,IAE1BjgB,KAAKinD,gBAAgB9nC,GAAKnf,KAAKg9C,aAAagB,IAC5Ch+C,KAAKinD,gBAAgB7nC,GAAKpf,KAAKg9C,aAAagB,IAC5Ch+C,KAAKinD,gBAAgBjnC,GAAK,EAC1BhgB,KAAKinD,gBAAgBhnC,GAAK,GAE5BjgB,KAAKinD,gBAAgB9/C,MAAQ,CAACnH,KAAKinD,gBAAgB9nC,GAAI,EAAG,EAAG,EAAG,EAAGnf,KAAKinD,gBAAgB7nC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGpf,KAAKinD,gBAAgBjnC,GAAIhgB,KAAKinD,gBAAgBhnC,GAAI,EAAG,GAOnKjgB,KAAK8lD,aAAa9lD,KAAKinD,gBAAgB9/C,OACvCnH,KAAKkmD,cAAcwB,YACnB1nD,KAAKkmD,cAAcpH,KAAK,EAAG,EAAG9+C,KAAKinD,gBAAgB7xC,EAAGpV,KAAKinD,gBAAgB3sC,GAC3Eta,KAAKkmD,cAAcyB,YACnB3nD,KAAKkmD,cAAc0B,OAEnB5nD,KAAKklD,YAAYllD,KAAKk8B,eAAe,IAGvC2hB,eAAe74C,UAAUkD,QAAU,WAIjC,IAAIpE,EAEJ,IALI9D,KAAKg9C,aAAac,aAAe99C,KAAKs8C,cAAc2B,UACtDj+C,KAAKs8C,cAAc2B,QAAQpqB,UAAY,IAIpC/vB,GADK9D,KAAK4vB,OAAS5vB,KAAK4vB,OAAO1vB,OAAS,GAC9B,EAAG4D,GAAK,EAAGA,GAAK,EACzB9D,KAAKupC,SAASzlC,IAChB9D,KAAKupC,SAASzlC,GAAGoE,UAGrBlI,KAAKupC,SAASrpC,OAAS,EACvBF,KAAK28B,WAAWupB,cAAgB,KAChClmD,KAAKs8C,cAAc30C,UAAY,KAC/B3H,KAAK29C,WAAY,GAGnBE,eAAe74C,UAAUkgD,YAAc,SAAUtD,EAAKhjB,GACpD,IAAK5+B,KAAKk8B,gBAAkB0lB,IAAyC,IAAlC5hD,KAAKg9C,aAAac,aAAyBlf,KAAgB5+B,KAAK29C,YAAsB,IAATiE,EAAhH,CAWA,IAAI99C,EARJ9D,KAAKk8B,cAAgB0lB,EACrB5hD,KAAK28B,WAAWxE,SAAWypB,EAAM5hD,KAAKs8C,cAAcvf,cACpD/8B,KAAK28B,WAAWC,SAAW,EAC3B58B,KAAK28B,WAAW9f,MAAQ7c,KAAKg9C,aAAac,aAAelf,EACzD5+B,KAAK28B,WAAWsmB,iBAAiBkC,aAAevD,EAKhD,IAAIhqC,EAAM5X,KAAK4vB,OAAO1vB,OAKtB,IAJKF,KAAK2vB,gBACR3vB,KAAK2hD,YAAYC,GAGd99C,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACpB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGshD,aAAaxD,EAAM5hD,KAAK4vB,OAAO9rB,GAAG05B,IAGvD,GAAIx9B,KAAK28B,WAAW9f,KAAM,CAMxB,KALsC,IAAlC7c,KAAKg9C,aAAac,YACpB99C,KAAKkmD,cAAc2B,UAAU,EAAG,EAAG7nD,KAAKinD,gBAAgB7xC,EAAGpV,KAAKinD,gBAAgB3sC,GAEhFta,KAAKumD,OAEFziD,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,GACzB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGohD,eAGiB,IAAlCllD,KAAKg9C,aAAac,aACpB99C,KAAKsmD,aAKXzI,eAAe74C,UAAU88C,UAAY,SAAU7wC,GAC7C,IAAIs4B,EAAWvpC,KAAKupC,SACpB,IAAIA,EAASt4B,IAAgC,KAAxBjR,KAAK4vB,OAAO3e,GAAKgP,GAAtC,CAGA,IAAIzH,EAAUxY,KAAKgiD,WAAWhiD,KAAK4vB,OAAO3e,GAAMjR,KAAMA,KAAK28B,YAC3D4M,EAASt4B,GAAOuH,EAChBA,EAAQmrC,oBAMV9F,eAAe74C,UAAU+8C,qBAAuB,WAC9C,KAAO/hD,KAAK09C,gBAAgBx9C,QACZF,KAAK09C,gBAAgB5W,MAC3Bme,kBAIZpH,eAAe74C,UAAU3G,KAAO,WAC9B2B,KAAKs8C,cAAc30C,UAAU5D,MAAMC,QAAU,QAG/C65C,eAAe74C,UAAUwgD,KAAO,WAC9BxlD,KAAKs8C,cAAc30C,UAAU5D,MAAMC,QAAU,SAoC/CwlB,gBAAgB,CAAC4yB,cAAemC,gBAEhCA,eAAev5C,UAAU88C,UAAYzF,YAAYr3C,UAAU88C,UAE3DvD,eAAev5C,UAAU+8C,qBAAuB,WAC9C,KAAO/hD,KAAK09C,gBAAgBx9C,QACZF,KAAK09C,gBAAgB5W,MAC3Bme,kBAIZ1G,eAAev5C,UAAU+/C,mBAAqB,SAAUvsC,EAASvH,GAC/D,IAAI62C,EAAgBtvC,EAAQ6sC,iBAC5B,GAAKyC,EAAL,CAGA,IAAI7F,EAAQjiD,KAAK4vB,OAAO3e,GACxB,GAAKgxC,EAAM8F,KAAQ/nD,KAAK0+C,WAyBtB1+C,KAAKgoD,iBAAiBF,EAAe72C,QAxBrC,GAAIjR,KAAKw+C,eACPx+C,KAAKgoD,iBAAiBF,EAAe72C,OAChC,CAKL,IAJA,IACIg3C,EACAC,EAFApkD,EAAI,EAIDA,EAAImN,GACLjR,KAAKupC,SAASzlC,KAA2B,IAArB9D,KAAKupC,SAASzlC,IAAe9D,KAAKupC,SAASzlC,GAAGuhD,iBACpE6C,EAAYloD,KAAKupC,SAASzlC,GAE1BmkD,GADgBjoD,KAAK4vB,OAAO9rB,GAAGikD,IAAM/nD,KAAKmoD,wBAAwBrkD,GAAKokD,EAAU7C,mBAC/C4C,GAEpCnkD,GAAK,EAEHmkD,EACGhG,EAAM8F,KAAQ/nD,KAAK0+C,YACtB1+C,KAAK+8C,aAAawI,aAAauC,EAAeG,GAEtChG,EAAM8F,KAAQ/nD,KAAK0+C,YAC7B1+C,KAAK+8C,aAAa94C,YAAY6jD,MAQtCvJ,eAAev5C,UAAUs9C,YAAc,SAAUpyB,GAC/C,OAAKlwB,KAAK0+C,WAGH,IAAI0J,cAAcl4B,EAAMlwB,KAAK28B,WAAY38B,MAFvC,IAAIukD,gBAAgBr0B,EAAMlwB,KAAK28B,WAAY38B,OAKtDu+C,eAAev5C,UAAUu9C,WAAa,SAAUryB,GAC9C,OAAKlwB,KAAK0+C,WAGH,IAAI2J,aAAan4B,EAAMlwB,KAAK28B,WAAY38B,MAFtC,IAAIwkD,qBAAqBt0B,EAAMlwB,KAAK28B,WAAY38B,OAK3Du+C,eAAev5C,UAAUw9C,aAAe,SAAUtyB,GAEhD,OADAlwB,KAAKy+C,OAAS,IAAI6J,eAAep4B,EAAMlwB,KAAK28B,WAAY38B,MACjDA,KAAKy+C,QAGdF,eAAev5C,UAAUk9C,YAAc,SAAUhyB,GAC/C,OAAKlwB,KAAK0+C,WAGH,IAAI6J,cAAcr4B,EAAMlwB,KAAK28B,WAAY38B,MAFvC,IAAIykD,cAAcv0B,EAAMlwB,KAAK28B,WAAY38B,OAKpDu+C,eAAev5C,UAAUm9C,WAAa,SAAUjyB,GAC9C,OAAKlwB,KAAK0+C,WAGH,IAAI8J,aAAat4B,EAAMlwB,KAAK28B,WAAY38B,MAFtC,IAAI0kD,eAAex0B,EAAMlwB,KAAK28B,WAAY38B,OAKrDu+C,eAAev5C,UAAUo9C,YAAc,SAAUlyB,GAC/C,OAAKlwB,KAAK0+C,WAGH,IAAI+J,cAAcv4B,EAAMlwB,KAAK28B,WAAY38B,MAFvC,IAAI2kD,cAAcz0B,EAAMlwB,KAAK28B,WAAY38B,OAKpDu+C,eAAev5C,UAAUq9C,WAAahG,YAAYr3C,UAAUq9C,WAE5D9D,eAAev5C,UAAUmjD,wBAA0B,SAAUl3C,GAG3D,IAFA,IAAInN,EAAI,EACJ8T,EAAM5X,KAAKw+C,eAAet+C,OACvB4D,EAAI8T,GAAK,CACd,GAAI5X,KAAKw+C,eAAe16C,GAAG4kD,UAAYz3C,GAAOjR,KAAKw+C,eAAe16C,GAAG6kD,QAAU13C,EAC7E,OAAOjR,KAAKw+C,eAAe16C,GAAG8kD,gBAEhC9kD,GAAK,EAEP,OAAO,MAGTy6C,eAAev5C,UAAU6jD,sBAAwB,SAAU53C,EAAKzS,GAC9D,IACIuF,EACAgjD,EAFA6B,EAAkBvsC,UAAU,OAGhC9D,SAASqwC,GACT,IAAIjhD,EAAY0U,UAAU,OAE1B,GADA9D,SAAS5Q,GACI,OAATnJ,EAAe,EACjBuF,EAAQ6kD,EAAgB7kD,OAClBqF,MAAQpJ,KAAK28B,WAAW0nB,SAASjvC,EAAI,KAC3CrR,EAAMsF,OAASrJ,KAAK28B,WAAW0nB,SAAS/pC,EAAI,KAC5C,IAAIwuC,EAAS,UACb/kD,EAAM8U,sBAAwBiwC,EAC9B/kD,EAAMijD,mBAAqB8B,EAC3B/kD,EAAM6U,gBAAkBkwC,EAExB,IAAIlgB,EAAS,6CADbme,EAAiBp/C,EAAU5D,OAEZoc,UAAYyoB,EAC3Bme,EAAegC,gBAAkBngB,EAGnCggB,EAAgB3kD,YAAY0D,GAE5B,IAAIqhD,EAAsB,CACxBrhD,UAAWA,EACXihD,gBAAiBA,EACjBF,SAAUz3C,EACV03C,OAAQ13C,EACRzS,KAAMA,GAGR,OADAwB,KAAKw+C,eAAer7C,KAAK6lD,GAClBA,GAGTzK,eAAev5C,UAAUikD,kBAAoB,WAC3C,IAAInlD,EAEAolD,EADAtxC,EAAM5X,KAAK4vB,OAAO1vB,OAElBipD,EAAmB,GACvB,IAAKrlD,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB9D,KAAK4vB,OAAO9rB,GAAGikD,KAA6B,IAAtB/nD,KAAK4vB,OAAO9rB,GAAGmc,IACd,OAArBkpC,IACFA,EAAmB,KACnBD,EAA0BlpD,KAAK6oD,sBAAsB/kD,EAAG,OAE1DolD,EAAwBP,OAAShrD,KAAK6R,IAAI05C,EAAwBP,OAAQ7kD,KAEjD,OAArBqlD,IACFA,EAAmB,KACnBD,EAA0BlpD,KAAK6oD,sBAAsB/kD,EAAG,OAE1DolD,EAAwBP,OAAShrD,KAAK6R,IAAI05C,EAAwBP,OAAQ7kD,IAI9E,IAAKA,GADL8T,EAAM5X,KAAKw+C,eAAet+C,QACX,EAAG4D,GAAK,EAAGA,GAAK,EAC7B9D,KAAKopD,YAAYnlD,YAAYjE,KAAKw+C,eAAe16C,GAAG8kD,kBAIxDrK,eAAev5C,UAAUgjD,iBAAmB,SAAUtrB,EAAMzrB,GAG1D,IAFA,IAAInN,EAAI,EACJ8T,EAAM5X,KAAKw+C,eAAet+C,OACvB4D,EAAI8T,GAAK,CACd,GAAI3G,GAAOjR,KAAKw+C,eAAe16C,GAAG6kD,OAAQ,CAGxC,IAFA,IACIrD,EADAt2C,EAAIhP,KAAKw+C,eAAe16C,GAAG4kD,SAExB15C,EAAIiC,GACLjR,KAAKupC,SAASv6B,IAAMhP,KAAKupC,SAASv6B,GAAGq2C,iBACvCC,EAActlD,KAAKupC,SAASv6B,GAAGq2C,kBAEjCr2C,GAAK,EAEHs2C,EACFtlD,KAAKw+C,eAAe16C,GAAG6D,UAAU49C,aAAa7oB,EAAM4oB,GAEpDtlD,KAAKw+C,eAAe16C,GAAG6D,UAAU1D,YAAYy4B,GAE/C,MAEF54B,GAAK,IAITy6C,eAAev5C,UAAU4/C,gBAAkB,SAAUd,GACnD,IAAIsF,EAAc/sC,UAAU,OACxB4hC,EAAUj+C,KAAKs8C,cAAc2B,QAC7Bl6C,EAAQqlD,EAAYrlD,MACxBA,EAAMqF,MAAQ06C,EAAS1uC,EAAI,KAC3BrR,EAAMsF,OAASy6C,EAASxpC,EAAI,KAC5Bta,KAAKopD,YAAcA,EACnB7wC,SAAS6wC,GACTrlD,EAAMiV,eAAiB,OACvBjV,EAAMmV,kBAAoB,OAC1BnV,EAAMkV,qBAAuB,OACzBjZ,KAAKg9C,aAAaO,WACpB6L,EAAY11B,aAAa,QAAS1zB,KAAKg9C,aAAaO,WAEtDU,EAAQh6C,YAAYmlD,GAEpBrlD,EAAM8F,SAAW,SACjB,IAAIw/C,EAAMltC,SAAS,OACnBktC,EAAI31B,aAAa,QAAS,KAC1B21B,EAAI31B,aAAa,SAAU,KAC3Bnb,SAAS8wC,GACTrpD,KAAKopD,YAAYnlD,YAAYolD,GAC7B,IAAIrzB,EAAO7Z,SAAS,QACpBktC,EAAIplD,YAAY+xB,GAChBh2B,KAAKkwB,KAAO4zB,EAEZ9jD,KAAK6jD,gBAAgBC,EAAUuF,GAC/BrpD,KAAK28B,WAAW3G,KAAOA,EACvBh2B,KAAK4vB,OAASk0B,EAASl0B,OACvB5vB,KAAK+8C,aAAe/8C,KAAKopD,YACzBppD,KAAKipD,oBACLjpD,KAAK8kD,uBAGPvG,eAAev5C,UAAUkD,QAAU,WAMjC,IAAIpE,EALA9D,KAAKs8C,cAAc2B,UACrBj+C,KAAKs8C,cAAc2B,QAAQpqB,UAAY,IAEzC7zB,KAAKs8C,cAAc30C,UAAY,KAC/B3H,KAAK28B,WAAW3G,KAAO,KAEvB,IAAIpe,EAAM5X,KAAK4vB,OAAS5vB,KAAK4vB,OAAO1vB,OAAS,EAC7C,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKupC,SAASzlC,GAAGoE,UAEnBlI,KAAKupC,SAASrpC,OAAS,EACvBF,KAAK29C,WAAY,EACjB39C,KAAKs8C,cAAgB,MAGvBiC,eAAev5C,UAAU8/C,oBAAsB,WAC7C,IAII3lC,EACAC,EACAY,EACAC,EAPAknC,EAAennD,KAAKs8C,cAAc2B,QAAQ7pB,YAC1CgzB,EAAgBpnD,KAAKs8C,cAAc2B,QAAQsJ,aAC3CF,EAAaF,EAAeC,EACbpnD,KAAK28B,WAAW0nB,SAASjvC,EAAIpV,KAAK28B,WAAW0nB,SAAS/pC,EAKtD+sC,GACjBloC,EAAKgoC,EAAgBnnD,KAAK28B,WAAW0nB,SAASjvC,EAC9CgK,EAAK+nC,EAAgBnnD,KAAK28B,WAAW0nB,SAASjvC,EAC9C4K,EAAK,EACLC,GAAOmnC,EAAgBpnD,KAAK28B,WAAW0nB,SAAS/pC,GAAK6sC,EAAennD,KAAK28B,WAAW0nB,SAASjvC,IAAM,IAEnG+J,EAAKioC,EAAiBpnD,KAAK28B,WAAW0nB,SAAS/pC,EAC/C8E,EAAKgoC,EAAiBpnD,KAAK28B,WAAW0nB,SAAS/pC,EAC/C0F,GAAMmnC,EAAennD,KAAK28B,WAAW0nB,SAASjvC,GAAKgyC,EAAgBpnD,KAAK28B,WAAW0nB,SAAS/pC,IAAM,EAClG2F,EAAK,GAEP,IAAIlc,EAAQ/D,KAAKopD,YAAYrlD,MAC7BA,EAAMglD,gBAAkB,YAAc5pC,EAAK,YAAcC,EAAK,gBAAkBY,EAAK,IAAMC,EAAK,QAChGlc,EAAMoc,UAAYpc,EAAMglD,iBAG1BxK,eAAev5C,UAAUkgD,YAAc7I,YAAYr3C,UAAUkgD,YAE7D3G,eAAev5C,UAAU3G,KAAO,WAC9B2B,KAAKopD,YAAYrlD,MAAMC,QAAU,QAGnCu6C,eAAev5C,UAAUwgD,KAAO,WAC9BxlD,KAAKopD,YAAYrlD,MAAMC,QAAU,SAGnCu6C,eAAev5C,UAAUk+C,UAAY,WAEnC,GADAljD,KAAK4iD,gBACD5iD,KAAKy+C,OACPz+C,KAAKy+C,OAAO6K,YACP,CACL,IAEIxlD,EAFAylD,EAASvpD,KAAK28B,WAAW0nB,SAASjvC,EAClCo0C,EAAUxpD,KAAK28B,WAAW0nB,SAAS/pC,EAEnC1C,EAAM5X,KAAKw+C,eAAet+C,OAC9B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAC3B,IAAIC,EAAQ/D,KAAKw+C,eAAe16C,GAAG8kD,gBAAgB7kD,MACnDA,EAAM0lD,kBAAoB9rD,KAAK0Z,KAAK1Z,KAAKwZ,IAAIoyC,EAAQ,GAAK5rD,KAAKwZ,IAAIqyC,EAAS,IAAM,KAClFzlD,EAAM2lD,YAAc3lD,EAAM0lD,qBAKhClL,eAAev5C,UAAUy+C,wBAA0B,SAAU5xB,GAC3D,IAAI/tB,EACA8T,EAAMia,EAAO3xB,OACbypD,EAAoBttC,UAAU,OAClC,IAAKvY,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAI+tB,EAAO/tB,GAAG4/C,GAAI,CAChB,IAAIznB,EAAOj8B,KAAKmiD,WAAWtwB,EAAO/tB,GAAI6lD,EAAmB3pD,KAAK28B,WAAWV,KAAM,MAC/EA,EAAK0nB,kBACL3jD,KAAK28B,WAAWsmB,iBAAiBW,oBAAoB3nB,KAmJ3D0iB,YAAY35C,UAAUqvC,gBAAkB,SAAUpjC,GAChD,OAAOjR,KAAK4+C,SAAS3tC,GAAKuL,MAG5BmiC,YAAY35C,UAAUkgD,YAAc,SAAU0E,GAC5C,IACI9lD,EADA+lD,EAAW7pD,KAAKwY,QAAQsxC,eAAenrB,IAEvC/mB,EAAM5X,KAAKwwB,gBAAgBtwB,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAOxB,IANI9D,KAAK4+C,SAAS96C,GAAG0Y,KAAKK,MAAQ+sC,IAChC5pD,KAAK8/C,SAAS9/C,KAAKwwB,gBAAgB1sB,GAAI9D,KAAK4+C,SAAS96C,GAAG0Y,KAAKjC,EAAGva,KAAK4+C,SAAS96C,KAE5E9D,KAAK4+C,SAAS96C,GAAG0mC,GAAG3tB,MAAQ+sC,IAC9B5pD,KAAK4+C,SAAS96C,GAAG44B,KAAKhJ,aAAa,eAAgB1zB,KAAK4+C,SAAS96C,GAAG0mC,GAAGjwB,GAEpC,MAAjCva,KAAKwwB,gBAAgB1sB,GAAGV,OACtBpD,KAAK4+C,SAAS96C,GAAG+7C,UAAY7/C,KAAKwY,QAAQsxC,eAAeC,MAAMltC,MAAQ+sC,IACzE5pD,KAAK4+C,SAAS96C,GAAG+7C,QAAQnsB,aAAa,YAAam2B,EAAS1mC,mBAAmBsB,WAE7EzkB,KAAK4rB,WAAW9nB,GAAG+e,IAAM7iB,KAAK4rB,WAAW9nB,GAAG+e,EAAEhG,MAAQ+sC,IAAe,CACvE,IAAI5K,EAAUh/C,KAAK4rB,WAAW9nB,GAAG07C,MAC7Bx/C,KAAK4rB,WAAW9nB,GAAG+e,EAAEtI,EAAI,GACa,UAApCva,KAAK4rB,WAAW9nB,GAAG27C,eACrBz/C,KAAK4rB,WAAW9nB,GAAG27C,aAAe,QAClCz/C,KAAK4rB,WAAW9nB,GAAG44B,KAAKhJ,aAAa,SAAU,OAAShd,aAAe,IAAM1W,KAAK4rB,WAAW9nB,GAAG47C,SAAW,MAE7GV,EAAQtrB,aAAa,UAAW1zB,KAAK4rB,WAAW9nB,GAAG+e,EAAEtI,KAEb,WAApCva,KAAK4rB,WAAW9nB,GAAG27C,eACrBz/C,KAAK4rB,WAAW9nB,GAAG27C,aAAe,SAClCz/C,KAAK4rB,WAAW9nB,GAAG44B,KAAKhJ,aAAa,SAAU,OAEjD1zB,KAAK4rB,WAAW9nB,GAAG44B,KAAKhJ,aAAa,eAAyC,EAAzB1zB,KAAK4rB,WAAW9nB,GAAG+e,EAAEtI,MAOpFokC,YAAY35C,UAAUglD,eAAiB,WACrC,OAAOhqD,KAAK88C,aAGd6B,YAAY35C,UAAU46C,qBAAuB,WAC3C,IAAI1uB,EAAO,QAKX,OAJAA,GAAQ,KAAOlxB,KAAK28B,WAAW0nB,SAASjvC,EACxC8b,GAAQ,KAAOlxB,KAAK28B,WAAW0nB,SAAS/pC,EACxC4W,GAAQ,MAAQlxB,KAAK28B,WAAW0nB,SAASjvC,EACzC8b,GAAQ,MAAQlxB,KAAK28B,WAAW0nB,SAAS/pC,EAAI,KAI/CqkC,YAAY35C,UAAU86C,SAAW,SAAU9tB,EAAUkZ,EAAW0T,GAC9D,IACI96C,EACA8T,EAFAqyC,EAAa,KAAO/e,EAAU3wB,EAAE,GAAG,GAAK,IAAM2wB,EAAU3wB,EAAE,GAAG,GAIjE,IADA3C,EAAMszB,EAAUre,QACX/oB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAExBmmD,GAAc,KAAO/e,EAAUprB,EAAEhc,EAAI,GAAG,GAAK,IAAMonC,EAAUprB,EAAEhc,EAAI,GAAG,GAAK,IAAMonC,EAAUpnC,EAAEA,GAAG,GAAK,IAAMonC,EAAUpnC,EAAEA,GAAG,GAAK,IAAMonC,EAAU3wB,EAAEzW,GAAG,GAAK,IAAMonC,EAAU3wB,EAAEzW,GAAG,GAQhL,GALIonC,EAAUnrC,GAAK6X,EAAM,IACvBqyC,GAAc,KAAO/e,EAAUprB,EAAEhc,EAAI,GAAG,GAAK,IAAMonC,EAAUprB,EAAEhc,EAAI,GAAG,GAAK,IAAMonC,EAAUpnC,EAAE,GAAG,GAAK,IAAMonC,EAAUpnC,EAAE,GAAG,GAAK,IAAMonC,EAAU3wB,EAAE,GAAG,GAAK,IAAM2wB,EAAU3wB,EAAE,GAAG,IAI5KqkC,EAASU,WAAa2K,EAAY,CACpC,IAAIC,EAAiB,GACjBtL,EAASliB,OACPwO,EAAUnrC,IACZmqD,EAAiBl4B,EAAS8W,IAAM9oC,KAAK6+C,UAAYoL,EAAaA,GAEhErL,EAASliB,KAAKhJ,aAAa,IAAKw2B,IAElCtL,EAASU,SAAW2K,IAIxBtL,YAAY35C,UAAUkD,QAAU,WAC9BlI,KAAKwY,QAAU,KACfxY,KAAK28B,WAAa,KAClB38B,KAAK88C,YAAc,KACnB98C,KAAKkwB,KAAO,KACZlwB,KAAKwwB,gBAAkB,MAWzByvB,iBAAiBj7C,UAAY,CAM3BmlD,cAAe,WAEbnqD,KAAKqjD,UAAY,GAEjBrjD,KAAKoqD,WAAY,EACjBpqD,KAAKilD,kBASP1B,aAAc,SAAUF,GACtBrjD,KAAKqjD,UAAYA,GAOnBC,YAAa,WACXtjD,KAAKoqD,WAAY,GAOnBnF,eAAgB,gBACWrlD,IAArBI,KAAKkwB,KAAKsE,QACZx0B,KAAKi8B,KAAKknB,sBAAsBnjD,KAAMA,KAAKkwB,KAAKsE,OAAQ,MAc9D0rB,aAAal7C,UAAY,CAMvBgzB,UAAW,WAETh4B,KAAK+8B,eAAgB,EAErB/8B,KAAKyc,kBAAoB,GAEzBzc,KAAK6c,MAAO,GAYdwtC,kBAAmB,SAAUzI,EAAK0I,GAChC,IAAIxmD,EACA8T,EAAM5X,KAAKyc,kBAAkBvc,OACjC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACpBwmD,GAActqD,KAAKoqD,WAAoD,cAAvCpqD,KAAKyc,kBAAkB3Y,GAAGy0B,YAC5Dv4B,KAAKyc,kBAAkB3Y,GAAGgZ,WACtB9c,KAAKyc,kBAAkB3Y,GAAG+Y,OAC5B7c,KAAK28B,WAAW9f,MAAO,EACvB7c,KAAK6c,MAAO,KAKpBN,mBAAoB,SAAUC,IACkB,IAA1Cxc,KAAKyc,kBAAkBC,QAAQF,IACjCxc,KAAKyc,kBAAkBtZ,KAAKqZ,KASlC2jC,iBAAiBn7C,UAAY,CAC3BulD,cAAe,WACbvqD,KAAK8pD,eAAiB,CACpBC,MAAO/pD,KAAKkwB,KAAKe,GAAK2M,yBAAyByB,qBAAqBr/B,KAAMA,KAAKkwB,KAAKe,GAAIjxB,MAAQ,CAAE8f,EAAG,GACrG0qC,SAAS,EACTC,QAAQ,EACR9rB,IAAK,IAAIzgB,QAEPle,KAAKkwB,KAAKw6B,KACZ1qD,KAAK8pD,eAAeC,MAAMhrB,cAAe,GAIvC/+B,KAAKkwB,KAAKjQ,IAIhB0qC,gBAAiB,WAIf,GAHA3qD,KAAK8pD,eAAeW,OAASzqD,KAAK8pD,eAAeC,MAAMjqC,EAAEjD,MAAQ7c,KAAK+8B,cACtE/8B,KAAK8pD,eAAeU,QAAUxqD,KAAK8pD,eAAeC,MAAMltC,MAAQ7c,KAAK+8B,cAEjE/8B,KAAKqjD,UAAW,CAClB,IAAI1kB,EACAkrB,EAAW7pD,KAAK8pD,eAAenrB,IAC/B76B,EAAI,EACJ8T,EAAM5X,KAAKqjD,UAAUnjD,OAEzB,IAAKF,KAAK8pD,eAAeU,QACvB,KAAO1mD,EAAI8T,GAAK,CACd,GAAI5X,KAAKqjD,UAAUv/C,GAAGgmD,eAAeC,MAAMltC,KAAM,CAC/C7c,KAAK8pD,eAAeU,SAAU,EAC9B,MAEF1mD,GAAK,EAIT,GAAI9D,KAAK8pD,eAAeU,QAGtB,IAFA7rB,EAAM3+B,KAAK8pD,eAAeC,MAAMxvC,EAAEpT,MAClC0iD,EAASlnC,eAAegc,GACnB76B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB66B,EAAM3+B,KAAKqjD,UAAUv/C,GAAGgmD,eAAeC,MAAMxvC,EAAEpT,MAC/C0iD,EAAS1pC,UAAUwe,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,OAK5JisB,cAAe,SAAUrnC,GACvB,IAAIsnC,EAAa,GACjBA,EAAW1nD,KAAKnD,KAAK8pD,gBAGrB,IAFA,IAYIhmD,EAZAuU,GAAO,EACP4jB,EAAOj8B,KAAKi8B,KACT5jB,GACD4jB,EAAK6tB,gBACH7tB,EAAK/L,KAAKI,SACZu6B,EAAWjvC,OAAO,EAAG,EAAGqgB,EAAK6tB,gBAE/B7tB,EAAOA,EAAKA,MAEZ5jB,GAAO,EAIX,IACIyyC,EADAlzC,EAAMizC,EAAW3qD,OAErB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBgnD,EAAQD,EAAW/mD,GAAG66B,IAAInb,kBAAkB,EAAG,EAAG,GAElDD,EAAK,CAACA,EAAG,GAAKunC,EAAM,GAAIvnC,EAAG,GAAKunC,EAAM,GAAI,GAE5C,OAAOvnC,GAET2xB,QAAS,IAAIh3B,QAOfkiC,kBAAkBp7C,UAAY,CAC5B+lD,eAAgB,WAEd/qD,KAAKgrD,WAAY,EAEjBhrD,KAAKirD,QAAS,EAEdjrD,KAAKkrD,eAAgB,EAErBlrD,KAAKmrD,qBAAuB,IAE9BnL,uBAAwB,SAAUoL,IACsB,IAAlDprD,KAAKmrD,qBAAqBzuC,QAAQ0uC,IACpCprD,KAAKmrD,qBAAqBhoD,KAAKioD,IAGnCC,0BAA2B,SAAUD,IACmB,IAAlDprD,KAAKmrD,qBAAqBzuC,QAAQ0uC,IACpCprD,KAAKmrD,qBAAqBvvC,OAAO5b,KAAKmrD,qBAAqBzuC,QAAQ0uC,GAAY,IAGnFE,uBAAwB,SAAU1J,GAChC5hD,KAAKurD,iBAAiB3J,IAExB4J,kBAAmB,WACbxrD,KAAK8pD,eAAeC,MAAMjqC,EAAEvF,GAAK,GAC9Bva,KAAKkrD,eAAiBlrD,KAAK28B,WAAWqgB,aAAaI,oBACtDp9C,KAAKkrD,eAAgB,EACrBlrD,KAAK3B,QAEE2B,KAAKkrD,gBACdlrD,KAAKkrD,eAAgB,EACrBlrD,KAAKwlD,SAWT+F,iBAAkB,SAAU3J,GACtB5hD,KAAKkwB,KAAK2xB,GAAK7hD,KAAKkwB,KAAKsN,IAAMokB,GAAO5hD,KAAKkwB,KAAKsa,GAAKxqC,KAAKkwB,KAAKsN,GAAKokB,GAC/C,IAAnB5hD,KAAKgrD,YACPhrD,KAAK28B,WAAW9f,MAAO,EACvB7c,KAAK6c,MAAO,EACZ7c,KAAKgrD,WAAY,EACjBhrD,KAAKwlD,SAEqB,IAAnBxlD,KAAKgrD,YACdhrD,KAAK28B,WAAW9f,MAAO,EACvB7c,KAAKgrD,WAAY,EACjBhrD,KAAK3B,SAGTotD,iBAAkB,WAChB,IAAI3nD,EACA8T,EAAM5X,KAAKmrD,qBAAqBjrD,OACpC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKmrD,qBAAqBrnD,GAAGohD,YAAYllD,KAAK+8B,gBAKlD2uB,iBAAkB,WAChB,MAAO,CACLhzC,IAAK,EACLC,KAAM,EACNvP,MAAO,IACPC,OAAQ,MAGZsiD,aAAc,WACZ,OAAqB,IAAjB3rD,KAAKkwB,KAAKjQ,GACL,CAAE7K,EAAGpV,KAAKkwB,KAAKghB,SAAS9nC,MAAOkR,EAAGta,KAAKkwB,KAAKghB,SAAS7nC,QAEvD,CAAE+L,EAAGpV,KAAKkwB,KAAK9mB,MAAOkR,EAAGta,KAAKkwB,KAAK7mB,UAiE5CmgB,gBAAgB,CAAC42B,kBAAmBt2B,oBAxDnB,CACf8hC,YAAa,SAAU17B,EAAMyM,EAAYV,GACvCj8B,KAAKg4B,YACLh4B,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAKuqD,cAAcr6B,EAAMyM,EAAYV,GACrCj8B,KAAKmqD,gBACLnqD,KAAK+qD,iBACL/qD,KAAK8rD,sBACL9rD,KAAK+rD,0BACL/rD,KAAKgsD,6BACLhsD,KAAKisD,gBACLjsD,KAAK3B,QAEPA,KAAM,WACC2B,KAAKirD,QAAYjrD,KAAKgrD,YAAahrD,KAAKkrD,iBAChClrD,KAAKksD,aAAelsD,KAAK+8C,cAC/Bh5C,MAAMC,QAAU,OACrBhE,KAAKirD,QAAS,IAGlBzF,KAAM,WACAxlD,KAAKgrD,YAAchrD,KAAKkrD,gBACrBlrD,KAAKkwB,KAAKwwB,MACF1gD,KAAKksD,aAAelsD,KAAK+8C,cAC/Bh5C,MAAMC,QAAU,SAEvBhE,KAAKirD,QAAS,EACdjrD,KAAK+8B,eAAgB,IAGzBmoB,YAAa,WAGPllD,KAAKkwB,KAAKwwB,IAAM1gD,KAAKirD,SAGzBjrD,KAAK2qD,kBACL3qD,KAAKyrD,mBACLzrD,KAAKmsD,gBACLnsD,KAAKosD,qBACDpsD,KAAK+8B,gBACP/8B,KAAK+8B,eAAgB,KAGzBqvB,mBAAoB,aACpBhH,aAAc,SAAUxD,GACtB5hD,KAAK6c,MAAO,EACZ7c,KAAKsrD,uBAAuB1J,GAC5B5hD,KAAKqqD,kBAAkBzI,EAAK5hD,KAAKgrD,WACjChrD,KAAKwrD,qBAEPtjD,QAAS,WACPlI,KAAKqsD,UAAY,KACjBrsD,KAAKssD,yBAG6DjM,sBAuBxEE,aAAav7C,UAAU0Z,MAAQ,WAC7B1e,KAAK8a,EAAI,GACT9a,KAAK6c,MAAO,GA0BdgkC,aAAa77C,UAAUwgC,cAAgB,WACrCxlC,KAAK2c,aAAc,GA4BrB6M,gBAAgB,CAAClN,0BAA2B4kC,oBAY5C13B,gBAAgB,CAAClN,0BAA2B8kC,kBAW5CC,yBAAyBr8C,UAAUs8C,iBAAmB,SAAU5kB,EAAMxM,EAAMixB,GAC1EnhD,KAAK8f,EAAIiY,gBAAgB4F,QAAQjB,EAAMxM,EAAKpQ,EAAG,EAAG,IAAM9f,MACxDA,KAAKkR,EAAI6mB,gBAAgB4F,QAAQjB,EAAMxM,EAAKhf,EAAG,EAAG,KAAMlR,MACxDA,KAAKe,EAAIg3B,gBAAgB4F,QAAQjB,EAAMxM,EAAKnvB,EAAG,EAAG,KAAMf,MACxDA,KAAKsa,EAAIyd,gBAAgB4F,QAAQjB,EAAMxM,EAAK5V,GAAK,CAAE7L,EAAG,GAAK,EAAG,IAAMzO,MACpEA,KAAK7B,EAAI45B,gBAAgB4F,QAAQjB,EAAMxM,EAAK/xB,GAAK,CAAEsQ,EAAG,GAAK,EAAGwJ,UAAWjY,MACzEA,KAAKya,EAAI,IAAIqqB,iBAAiBpI,EAAMxM,EAAKzV,EAAGza,MAC5CA,KAAK+D,MAAQo9C,EACbnhD,KAAKusD,MAAQ,GACbvsD,KAAKwsD,gBAAgBrL,EAAQR,MAAOzwB,GACpClwB,KAAKysD,mBAAmBv8B,EAAMixB,GAC9BnhD,KAAK2c,cAAgB3c,KAAK2c,aAG5B0kC,yBAAyBr8C,UAAUwnD,gBAAkB,SAAUE,EAAax8B,GAC1E,IAAIy8B,EAAaxyC,kBACbyyC,EAAQzwC,SAAoB,IAAX+T,EAAKtV,EAAU,iBAAmB,kBACvDgyC,EAAMl5B,aAAa,KAAMi5B,GACzBC,EAAMl5B,aAAa,eAAgB,OACnCk5B,EAAMl5B,aAAa,gBAAiB,kBACpC,IACItrB,EACA4G,EACAghB,EAHAu8B,EAAQ,GAKZ,IADAv8B,EAAkB,EAAXE,EAAKzV,EAAEC,EACT1L,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB5G,EAAO+T,SAAS,QAChBywC,EAAM3oD,YAAYmE,GAClBmkD,EAAMppD,KAAKiF,GAEbskD,EAAYh5B,aAAyB,OAAZxD,EAAKjQ,GAAc,OAAS,SAAU,OAASvJ,aAAe,IAAMi2C,EAAa,KAE1G3sD,KAAK6sD,GAAKD,EACV5sD,KAAK8sD,IAAMP,GAGblL,yBAAyBr8C,UAAUynD,mBAAqB,SAAUv8B,EAAMixB,GACtE,GAAInhD,KAAKya,EAAE2qB,cAAgBplC,KAAKya,EAAEyqB,aAAc,CAC9C,IAAI98B,EACA4G,EACAghB,EACAlL,EAAO3I,SAAS,QAChB2gC,EAAc3gC,SAAS,QAC3B2I,EAAK7gB,YAAY64C,GACjB,IAAIiQ,EAAY5yC,kBACZ0qC,EAAS1qC,kBACb2K,EAAK4O,aAAa,KAAMmxB,GACxB,IAAImI,EAAS7wC,SAAoB,IAAX+T,EAAKtV,EAAU,iBAAmB,kBACxDoyC,EAAOt5B,aAAa,KAAMq5B,GAC1BC,EAAOt5B,aAAa,eAAgB,OACpCs5B,EAAOt5B,aAAa,gBAAiB,kBACrC1D,EAAOE,EAAKzV,EAAEhM,EAAEA,EAAE,GAAGyC,EAAIgf,EAAKzV,EAAEhM,EAAEA,EAAE,GAAGyC,EAAEhR,OAASgwB,EAAKzV,EAAEhM,EAAEA,EAAEvO,OAC7D,IAAIqsD,EAAQvsD,KAAKusD,MACjB,IAAKv9C,EAAe,EAAXkhB,EAAKzV,EAAEC,EAAO1L,EAAIghB,EAAMhhB,GAAK,GACpC5G,EAAO+T,SAAS,SACXuX,aAAa,aAAc,oBAChCs5B,EAAO/oD,YAAYmE,GACnBmkD,EAAMppD,KAAKiF,GAEb00C,EAAYppB,aAAyB,OAAZxD,EAAKjQ,GAAc,OAAS,SAAU,OAASvJ,aAAe,IAAMq2C,EAAY,KACzG/sD,KAAKuzC,GAAKyZ,EACVhtD,KAAKitD,GAAKnoC,EACV9kB,KAAKktD,IAAMX,EACXvsD,KAAK6kD,OAASA,EACd1D,EAAQP,OAAS9D,IAIrBtzB,gBAAgB,CAAClN,0BAA2B+kC,0BAa5C73B,gBAAgB,CAAC63B,yBAA0B/kC,0BAA2BilC,4BActE,IAAI4L,oBAAuB,WACzB,IAAIC,EAAkB,IAAIlvC,OACtBmvC,EAAgB,IAAInvC,OA4BxB,SAASovC,EAAuBC,EAAWC,EAAU5D,IAC/CA,GAAgB4D,EAASrtC,UAAUqqB,GAAG3tB,OACxC2wC,EAASrtC,UAAUxY,UAAU+rB,aAAa,UAAW85B,EAASrtC,UAAUqqB,GAAGjwB,IAEzEqvC,GAAgB4D,EAASrtC,UAAU4qB,OAAOluB,OAC5C2wC,EAASrtC,UAAUxY,UAAU+rB,aAAa,YAAa85B,EAASrtC,UAAU4qB,OAAOxwB,EAAEkK,WAIvF,SAASgpC,EAAWF,EAAWC,EAAU5D,GACvC,IAAI56C,EACAghB,EACA09B,EACAC,EACAziB,EACA/5B,EAGA8gB,EACA0M,EACAx3B,EACAymD,EACAn/C,EANAo/C,EAAOL,EAAS36B,OAAO3yB,OACvBugD,EAAM+M,EAAS/M,IAMnB,IAAKtvC,EAAI,EAAGA,EAAI08C,EAAM18C,GAAK,EAAG,CAE5B,GADAw8C,EAASH,EAAStzB,GAAGrd,MAAQ+sC,EACzB4D,EAAS36B,OAAO1hB,GAAGsvC,IAAMA,EAAK,CAIhC,IAHA9hB,EAAM0uB,EAAc3uC,QACpBkvC,EAAanN,EAAM+M,EAAS36B,OAAO1hB,GAAGsvC,IACtChyC,EAAI++C,EAAS1M,aAAa5gD,OAAS,GAC3BytD,GAAUC,EAAa,GAC7BD,EAASH,EAAS1M,aAAaryC,GAAGs8B,OAAOluB,MAAQ8wC,EACjDC,GAAc,EACdn/C,GAAK,EAEP,GAAIk/C,EAGF,IAFAC,EAAanN,EAAM+M,EAAS36B,OAAO1hB,GAAGsvC,IACtChyC,EAAI++C,EAAS1M,aAAa5gD,OAAS,EAC5B0tD,EAAa,GAClBzmD,EAAQqmD,EAAS1M,aAAaryC,GAAGs8B,OAAOxwB,EAAEpT,MAC1Cw3B,EAAIxe,UAAUhZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAC/KymD,GAAc,EACdn/C,GAAK,OAITkwB,EAAMyuB,EAIR,GADAp9B,GADAiC,EAAQu7B,EAAStzB,GAAGjI,OACPpF,QACT8gC,EAAQ,CAEV,IADAD,EAAwB,GACnB1+C,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,GACzBk8B,EAAYjZ,EAAMpB,OAAO7hB,KACRk8B,EAAUre,UACzB6gC,GAAyBziB,iBAAiBC,EAAWA,EAAUre,QAASqe,EAAUnrC,EAAG4+B,IAGzF6uB,EAASzM,OAAO5vC,GAAKu8C,OAErBA,EAAwBF,EAASzM,OAAO5vC,GAE1Cq8C,EAAS36B,OAAO1hB,GAAG2J,IAAsB,IAAjByyC,EAAU7M,GAAc,GAAKgN,EACrDF,EAAS36B,OAAO1hB,GAAG0L,KAAO8wC,GAAUH,EAAS36B,OAAO1hB,GAAG0L,MAI3D,SAASixC,EAAWP,EAAWC,EAAU5D,GACvC,IAAImE,EAAYP,EAASzpD,OAErBypD,EAASztD,EAAE8c,MAAQ+sC,IACrBmE,EAAUpN,MAAMjtB,aAAa,OAAQ,OAASpc,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,MAEzIizC,EAAS1tC,EAAEjD,MAAQ+sC,IACrBmE,EAAUpN,MAAMjtB,aAAa,eAAgB85B,EAAS1tC,EAAEvF,GAI5D,SAASyzC,EAAqBT,EAAWC,EAAU5D,GACjDqE,EAAeV,EAAWC,EAAU5D,GACpCsE,EAAaX,EAAWC,EAAU5D,GAGpC,SAASqE,EAAeV,EAAWC,EAAU5D,GAC3C,IAmBI2C,EACAzoD,EACA8T,EACAxP,EAqCEy6B,EA3DF+pB,EAAQY,EAASX,GACjBsB,EAAaX,EAAS/yC,EAAE2qB,YACxBvhB,EAAM2pC,EAASt8C,EAAEqJ,EACjBuJ,EAAM0pC,EAASzsD,EAAEwZ,EAErB,GAAIizC,EAAS1tC,EAAEjD,MAAQ+sC,EAAc,CACnC,IAAIhgC,EAAwB,OAAjB2jC,EAAUttC,GAAc,eAAiB,iBACpDutC,EAASzpD,MAAM48C,MAAMjtB,aAAa9J,EAAM4jC,EAAS1tC,EAAEvF,GAErD,GAAIizC,EAASt8C,EAAE2L,MAAQ+sC,EAAc,CACnC,IAAIwE,EAAwB,IAAhBb,EAAU3yC,EAAU,KAAO,KACnCyzC,EAAkB,OAAVD,EAAiB,KAAO,KACpCxB,EAAMl5B,aAAa06B,EAAOvqC,EAAI,IAC9B+oC,EAAMl5B,aAAa26B,EAAOxqC,EAAI,IAC1BsqC,IAAeX,EAAS/yC,EAAEyqB,eAC5BsoB,EAASja,GAAG7f,aAAa06B,EAAOvqC,EAAI,IACpC2pC,EAASja,GAAG7f,aAAa26B,EAAOxqC,EAAI,KAOxC,GAAI2pC,EAAS/yC,EAAEuqB,OAAS4kB,EAAc,CACpC2C,EAAQiB,EAASV,IACjB,IAAIwB,EAAUd,EAAS/yC,EAAE1a,EAEzB,IADA6X,EAAM20C,EAAMrsD,OACP4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACxBsE,EAAOmkD,EAAMzoD,IACR4vB,aAAa,SAAU46B,EAAY,EAAJxqD,GAAS,KAC7CsE,EAAKsrB,aAAa,aAAc,OAAS46B,EAAY,EAAJxqD,EAAQ,GAAK,IAAMwqD,EAAY,EAAJxqD,EAAQ,GAAK,IAAMwqD,EAAY,EAAJxqD,EAAQ,GAAK,KAGxH,GAAIqqD,IAAeX,EAAS/yC,EAAEwqB,OAAS2kB,GAAe,CACpD,IAAI2E,EAAUf,EAAS/yC,EAAEqF,EAOzB,IADAlI,GAJE20C,EADEiB,EAAS/yC,EAAEyqB,aACLsoB,EAASV,IAETU,EAASN,KAEPhtD,OACP4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBsE,EAAOmkD,EAAMzoD,GACR0pD,EAAS/yC,EAAEyqB,cACd98B,EAAKsrB,aAAa,SAAU66B,EAAY,EAAJzqD,GAAS,KAE/CsE,EAAKsrB,aAAa,eAAgB66B,EAAY,EAAJzqD,EAAQ,IAGtD,GAAoB,IAAhBypD,EAAU3yC,GACR4yC,EAASzsD,EAAE8b,MAAQ+sC,KACrBgD,EAAMl5B,aAAa,KAAM5P,EAAI,IAC7B8oC,EAAMl5B,aAAa,KAAM5P,EAAI,IACzBqqC,IAAeX,EAAS/yC,EAAEyqB,eAC5BsoB,EAASja,GAAG7f,aAAa,KAAM5P,EAAI,IACnC0pC,EAASja,GAAG7f,aAAa,KAAM5P,EAAI,WAYvC,IAPI0pC,EAASt8C,EAAE2L,MAAQ2wC,EAASzsD,EAAE8b,MAAQ+sC,KACxC/mB,EAAMllC,KAAK0Z,KAAK1Z,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,GAAKnmB,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,IACzE8oC,EAAMl5B,aAAa,IAAKmP,GACpBsrB,IAAeX,EAAS/yC,EAAEyqB,cAC5BsoB,EAASja,GAAG7f,aAAa,IAAKmP,IAG9B2qB,EAASzsD,EAAE8b,MAAQ2wC,EAASlzC,EAAEuC,MAAQ2wC,EAASrvD,EAAE0e,MAAQ+sC,EAAc,CACpE/mB,IACHA,EAAMllC,KAAK0Z,KAAK1Z,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,GAAKnmB,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,KAE3E,IAAI0qC,EAAM7wD,KAAK88B,MAAM3W,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAE/C0K,EAAUi/B,EAASlzC,EAAEC,EACrBgU,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAEb,IAAIkgC,EAAO5rB,EAAMtU,EACb1L,EAAIllB,KAAKygB,IAAIowC,EAAMhB,EAASrvD,EAAEoc,GAAKk0C,EAAO5qC,EAAI,GAC9Cf,EAAInlB,KAAK2gB,IAAIkwC,EAAMhB,EAASrvD,EAAEoc,GAAKk0C,EAAO5qC,EAAI,GAClD+oC,EAAMl5B,aAAa,KAAM7Q,GACzB+pC,EAAMl5B,aAAa,KAAM5Q,GACrBqrC,IAAeX,EAAS/yC,EAAEyqB,eAC5BsoB,EAASja,GAAG7f,aAAa,KAAM7Q,GAC/B2qC,EAASja,GAAG7f,aAAa,KAAM5Q,KAOvC,SAASorC,EAAaX,EAAWC,EAAU5D,GACzC,IAAImE,EAAYP,EAASzpD,MACrB+W,EAAI0yC,EAAS1yC,EACbA,IAAMA,EAAE+B,MAAQ+sC,IAAiB9uC,EAAE6pB,UACrCopB,EAAUpN,MAAMjtB,aAAa,mBAAoB5Y,EAAE6pB,SACnDopB,EAAUpN,MAAMjtB,aAAa,oBAAqB5Y,EAAE+pB,WAAW,KAE7D2oB,EAASztD,IAAMytD,EAASztD,EAAE8c,MAAQ+sC,IACpCmE,EAAUpN,MAAMjtB,aAAa,SAAU,OAASpc,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,MAE3IizC,EAAS1tC,EAAEjD,MAAQ+sC,IACrBmE,EAAUpN,MAAMjtB,aAAa,iBAAkB85B,EAAS1tC,EAAEvF,IAExDizC,EAASp4C,EAAEyH,MAAQ+sC,KACrBmE,EAAUpN,MAAMjtB,aAAa,eAAgB85B,EAASp4C,EAAEmF,GACpDwzC,EAAUnN,QACZmN,EAAUnN,OAAOltB,aAAa,eAAgB85B,EAASp4C,EAAEmF,IAK/D,MA/NS,CACPm0C,qBAGF,SAA8Bx+B,GAC5B,OAAQA,EAAKjQ,IACX,IAAK,KACH,OAAO6tC,EACT,IAAK,KACH,OAAOG,EACT,IAAK,KACH,OAAOD,EACT,IAAK,KACH,OAAOE,EACT,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOT,EACT,IAAK,KACH,OAAOH,EACT,QACE,OAAO,QA1BY,GAwO3B,SAASqB,wBACP3uD,KAAK4uD,UAAY,GACjB5uD,KAAK6uD,aAAe,GACpB7uD,KAAK8uD,oBAAsB,EA2D7B,SAASC,YAAYv2C,EAAS0X,EAAM2C,EAAQm8B,GAC1ChvD,KAAKivD,aAAe,GACpBjvD,KAAKqoC,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IASIvkC,EATAmc,EAAK,EACO,OAAZiQ,EAAKjQ,GACPA,EAAK,EACgB,OAAZiQ,EAAKjQ,GACdA,EAAK,EACgB,OAAZiQ,EAAKjQ,KACdA,EAAK,GAEPjgB,KAAKk6B,GAAKyG,qBAAqB0e,aAAa7mC,EAAS0X,EAAMjQ,EAAIzH,GAE/D,IACI02C,EADAt3C,EAAMib,EAAO3yB,OAEjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnB+uB,EAAO/uB,GAAG2oB,SACbyiC,EAAc,CACZrE,WAAYmE,EAAkBG,qBAAqBt8B,EAAO/uB,GAAG+mD,YAC7DuE,QAAS,IAEXpvD,KAAKivD,aAAa9rD,KAAK+rD,GACvBr8B,EAAO/uB,GAAGylC,SAASpmC,KAAK+rD,IAU9B,SAASG,eA+DT,SAAS/K,YAAYp0B,EAAMyM,EAAYV,GACrCj8B,KAAKg4B,YACLh4B,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAKg4B,YACLh4B,KAAKuqD,cAAcr6B,EAAMyM,EAAYV,GACrCj8B,KAAKmqD,gBA2BP,SAASmF,kBAgKT,SAASC,iBAoFT,SAASC,gBAqFT,SAASC,gBAmGT,SAAShL,cAAcv0B,EAAMyM,EAAYV,GACvCj8B,KAAK2tC,UAAYhR,EAAWqnB,aAAa9zB,EAAKS,OAC9C3wB,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GACnCj8B,KAAK0vD,WAAa,CAChBh3C,IAAK,EAAGC,KAAM,EAAGvP,MAAOpJ,KAAK2tC,UAAUv4B,EAAG/L,OAAQrJ,KAAK2tC,UAAUrzB,GAwBrE,SAASqqC,cAAcz0B,EAAMyM,EAAYV,GACvCj8B,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAiBrC,SAASymB,aAAaxyB,EAAMyM,EAAYV,GACtCj8B,KAAKg4B,YACLh4B,KAAK+qD,iBACL/qD,KAAK2tC,UAAYhR,EAAWqnB,aAAa9zB,EAAKS,OAC9C3wB,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAK2vD,YAAa,EAClB3vD,KAAK4vD,UAAW,EAChB,IAAI3jB,EAAYjsC,KAAK28B,WAAW+Q,cAAc1tC,KAAK2tC,WACnD3tC,KAAK4rC,MAAQ5rC,KAAK28B,WAAWwnB,gBAAgBnY,YAAYC,GACzDjsC,KAAK6vD,aAAe,EACpB7vD,KAAK28B,WAAWwnB,gBAAgBxY,SAAS3rC,MACzCA,KAAK87C,GAAK5rB,EAAK4rB,GAAK/jB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK4rB,GAAI,EAAGnf,EAAWmC,UAAW9+B,MAAQ,CAAE8vD,cAAc,GAwE9G,SAASnN,eAAezyB,EAAMyM,EAAYV,GACxCj8B,KAAKg4B,YACLh4B,KAAK+qD,iBACL/qD,KAAK2tC,UAAYhR,EAAWqnB,aAAa9zB,EAAKS,OAC9C3wB,KAAK0uC,YAAc/R,EAAWsnB,YAAY5U,SAASrvC,KAAK2tC,WACxD3tC,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GA4BtC,SAASyoB,eAAex0B,EAAMyM,EAAYV,GACxCj8B,KAAK4vB,OAASM,EAAKN,OACnB5vB,KAAK0+C,YAAa,EAClB1+C,KAAK2vB,gBAAiB,EACtB3vB,KAAK09C,gBAAkB,GACvB19C,KAAKupC,SAAWvpC,KAAK4vB,OAAS7X,iBAAiB/X,KAAK4vB,OAAO1vB,QAAU,GAErEF,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GACnCj8B,KAAK87C,GAAK5rB,EAAK4rB,GAAK/jB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK4rB,GAAI,EAAGnf,EAAWmC,UAAW9+B,MAAQ,CAAE8vD,cAAc,GAQ9G,SAAStL,qBAAqBt0B,EAAMyM,EAAYV,GAC9Cj8B,KAAK+vD,UAAY,GACjB/vD,KAAKmxC,WAAa,MAClBnxC,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GA8NrC,SAASsoB,gBAAgBr0B,EAAMyM,EAAYV,GAEzCj8B,KAAK6wB,OAAS,GAEd7wB,KAAKgwD,WAAa9/B,EAAKW,OAEvB7wB,KAAKiwD,WAAa,GAElBjwD,KAAKkwD,eAAiB,GAEtBlwD,KAAKmwD,UAAY,GAEjBnwD,KAAKowD,kBAAoB,GAEzBpwD,KAAKqwD,iBAAmB,GACxBrwD,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAGnCj8B,KAAKyhD,aAAe,GAyTtB,SAAS6O,cAAcC,EAAQC,GAC7BxwD,KAAKwwD,cAAgBA,EACrB,IAAIpgB,EAAgBj0B,SAAS,iBAa7B,GAZAi0B,EAAc1c,aAAa,OAAQ,UACnC0c,EAAc1c,aAAa,8BAA+B,aAC1D0c,EAAc1c,aAAa,SAAU,wFACrC0c,EAAc1c,aAAa,SAAU,MACrC68B,EAAOtsD,YAAYmsC,IACnBA,EAAgBj0B,SAAS,kBACXuX,aAAa,OAAQ,UACnC0c,EAAc1c,aAAa,8BAA+B,QAC1D0c,EAAc1c,aAAa,SAAU,2CACrC0c,EAAc1c,aAAa,SAAU,MACrC68B,EAAOtsD,YAAYmsC,GACnBpwC,KAAKywD,aAAergB,EACwB,MAAxCogB,EAAcE,eAAe,GAAGh2C,EAAEH,GAAai2C,EAAcE,eAAe,GAAGh2C,EAAEjM,EAAG,CACtF,IAEIkiD,EAFAC,EAAUz0C,SAAS,WACvBo0C,EAAOtsD,YAAY2sD,IAEnBD,EAAcx0C,SAAS,gBACXuX,aAAa,KAAM,iBAC/Bk9B,EAAQ3sD,YAAY0sD,IACpBA,EAAcx0C,SAAS,gBACXuX,aAAa,KAAM,MAC/Bk9B,EAAQ3sD,YAAY0sD,IAexB,SAASE,cAAcN,EAAQC,GAC7BxwD,KAAKwwD,cAAgBA,EACrB,IAAIpgB,EAAgBj0B,SAAS,iBAC7Bi0B,EAAc1c,aAAa,OAAQ,UACnC0c,EAAc1c,aAAa,8BAA+B,QAC1D0c,EAAc1c,aAAa,SAAU,2CACrC68B,EAAOtsD,YAAYmsC,GACnBpwC,KAAKywD,aAAergB,EAYtB,SAAS0gB,sBAAsBP,EAAQC,GAErCD,EAAO78B,aAAa,IAAK,SACzB68B,EAAO78B,aAAa,IAAK,SACzB68B,EAAO78B,aAAa,QAAS,QAC7B68B,EAAO78B,aAAa,SAAU,QAE9B1zB,KAAKwwD,cAAgBA,EACrB,IAAIO,EAAiB50C,SAAS,kBAC9Bo0C,EAAOtsD,YAAY8sD,GACnB/wD,KAAK+wD,eAAiBA,EAgCxB,SAASC,gBAAgBt0B,EAAM8zB,GAC7BxwD,KAAKixD,aAAc,EACnBjxD,KAAKwwD,cAAgBA,EACrBxwD,KAAK08B,KAAOA,EACZ18B,KAAKiyB,MAAQ,GA6Gf,SAASi/B,iBAAiBX,EAAQC,GAChCxwD,KAAKwwD,cAAgBA,EACrB,IAAIpgB,EAAgBj0B,SAAS,iBAC7Bi0B,EAAc1c,aAAa,OAAQ,UACnC0c,EAAc1c,aAAa,8BAA+B,aAC1D0c,EAAc1c,aAAa,SAAU,wFACrC0c,EAAc1c,aAAa,SAAU,MACrC68B,EAAOtsD,YAAYmsC,GACnB,IAAI+gB,EAAsBh1C,SAAS,uBACnCg1C,EAAoBz9B,aAAa,8BAA+B,QAChE68B,EAAOtsD,YAAYktD,GACnBnxD,KAAKywD,aAAeU,EACpB,IAAIC,EAAUj1C,SAAS,WACvBi1C,EAAQ19B,aAAa,OAAQ,SAC7By9B,EAAoBltD,YAAYmtD,GAChCpxD,KAAKoxD,QAAUA,EACf,IAAIC,EAAUl1C,SAAS,WACvBk1C,EAAQ39B,aAAa,OAAQ,SAC7By9B,EAAoBltD,YAAYotD,GAChCrxD,KAAKqxD,QAAUA,EACf,IAAIC,EAAUn1C,SAAS,WACvBm1C,EAAQ59B,aAAa,OAAQ,SAC7By9B,EAAoBltD,YAAYqtD,GAChCtxD,KAAKsxD,QAAUA,EAqBjB,SAASC,mBAAmBhB,EAAQC,GAClCxwD,KAAKwwD,cAAgBA,EACrB,IAAIE,EAAiB1wD,KAAKwwD,cAAcE,eACpCS,EAAsBh1C,SAAS,wBAE/Bu0C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,KACzRva,KAAKoxD,QAAUpxD,KAAKwxD,aAAa,UAAWL,KAE1CT,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,KACzRva,KAAKqxD,QAAUrxD,KAAKwxD,aAAa,UAAWL,KAE1CT,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,KACzRva,KAAKsxD,QAAUtxD,KAAKwxD,aAAa,UAAWL,KAE1CT,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,GAAWm2C,EAAe,IAAIh2C,EAAEjM,GAAgC,IAA3BiiD,EAAe,IAAIh2C,EAAEH,KACzRva,KAAKyxD,QAAUzxD,KAAKwxD,aAAa,UAAWL,KAG1CnxD,KAAKoxD,SAAWpxD,KAAKqxD,SAAWrxD,KAAKsxD,SAAWtxD,KAAKyxD,WACvDN,EAAoBz9B,aAAa,8BAA+B,QAChE68B,EAAOtsD,YAAYktD,GACnBA,EAAsBh1C,SAAS,yBAG7Bu0C,EAAe,GAAGh2C,EAAEjM,GAA+B,IAA1BiiD,EAAe,GAAGh2C,EAAEH,GAAWm2C,EAAe,GAAGh2C,EAAEjM,GAA+B,IAA1BiiD,EAAe,GAAGh2C,EAAEH,GAAWm2C,EAAe,GAAGh2C,EAAEjM,GAA+B,IAA1BiiD,EAAe,GAAGh2C,EAAEH,GAAWm2C,EAAe,GAAGh2C,EAAEjM,GAA+B,IAA1BiiD,EAAe,GAAGh2C,EAAEH,GAAWm2C,EAAe,GAAGh2C,EAAEjM,GAA+B,IAA1BiiD,EAAe,GAAGh2C,EAAEH,KAC/Q42C,EAAoBz9B,aAAa,8BAA+B,QAChE68B,EAAOtsD,YAAYktD,GACnBnxD,KAAK0xD,gBAAkB1xD,KAAKwxD,aAAa,UAAWL,GACpDnxD,KAAK2xD,gBAAkB3xD,KAAKwxD,aAAa,UAAWL,GACpDnxD,KAAK4xD,gBAAkB5xD,KAAKwxD,aAAa,UAAWL,IAyExD,SAASU,oBAAoBtB,EAAQC,GACnC,IAAI/S,EAAa+S,EAAc7oD,UAAUg1B,WAAWqgB,aAAaS,WACjE8S,EAAO78B,aAAa,IAAK+pB,EAAW56B,GACpC0tC,EAAO78B,aAAa,IAAK+pB,EAAW36B,GACpCytC,EAAO78B,aAAa,QAAS+pB,EAAWr0C,OACxCmnD,EAAO78B,aAAa,SAAU+pB,EAAWp0C,QACzCrJ,KAAKwwD,cAAgBA,EAErB,IAAIO,EAAiB50C,SAAS,kBAC9B40C,EAAer9B,aAAa,KAAM,eAClCq9B,EAAer9B,aAAa,SAAU,iBACtCq9B,EAAer9B,aAAa,eAAgB,KAC5C1zB,KAAK+wD,eAAiBA,EACtBR,EAAOtsD,YAAY8sD,GAEnB,IAAIe,EAAW31C,SAAS,YACxB21C,EAASp+B,aAAa,KAAM,MAC5Bo+B,EAASp+B,aAAa,KAAM,KAC5Bo+B,EAASp+B,aAAa,KAAM,iBAC5Bo+B,EAASp+B,aAAa,SAAU,iBAChC1zB,KAAK8xD,SAAWA,EAChBvB,EAAOtsD,YAAY6tD,GACnB,IAAIC,EAAU51C,SAAS,WACvB41C,EAAQr+B,aAAa,cAAe,WACpCq+B,EAAQr+B,aAAa,gBAAiB,KACtCq+B,EAAQr+B,aAAa,SAAU,iBAC/B1zB,KAAK+xD,QAAUA,EACfxB,EAAOtsD,YAAY8tD,GAEnB,IAAIC,EAAc71C,SAAS,eAC3B61C,EAAYt+B,aAAa,KAAM,iBAC/Bs+B,EAAYt+B,aAAa,MAAO,iBAChCs+B,EAAYt+B,aAAa,WAAY,MACrCs+B,EAAYt+B,aAAa,SAAU,iBACnC68B,EAAOtsD,YAAY+tD,GAEnB,IAEIrB,EAFAC,EAAUz0C,SAAS,WACvBo0C,EAAOtsD,YAAY2sD,GAEnBD,EAAcx0C,SAAS,eACvBy0C,EAAQ3sD,YAAY0sD,IACpBA,EAAcx0C,SAAS,gBACXuX,aAAa,KAAM,iBAC/B1zB,KAAK2wD,YAAcA,EACnB3wD,KAAK4wD,QAAUA,EACf5wD,KAAKiyD,mBAAoB,EACzBrB,EAAQ3sD,YAAY0sD,GAttDtBhC,sBAAsB3pD,UAAY,CAChCmqD,qBAAsB,SAAUtE,GAC9B,IAAI/mD,EACA8T,EAAMizC,EAAW3qD,OACjBvB,EAAM,IACV,IAAKmF,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBnF,GAAOksD,EAAW/mD,GAAGqc,UAAUxhB,IAAM,IAEvC,IAAIuzD,EAAWlyD,KAAK4uD,UAAUjwD,GAU9B,OATKuzD,IACHA,EAAW,CACTrH,WAAY,GAAGroD,OAAOqoD,GACtBf,eAAgB,IAAI5rC,OACpBrB,MAAM,GAER7c,KAAK4uD,UAAUjwD,GAAOuzD,EACtBlyD,KAAK6uD,aAAa1rD,KAAK+uD,IAElBA,GAETC,gBAAiB,SAAUD,EAAUtI,GAInC,IAHA,IAWMziD,EAXFrD,EAAI,EACJ8T,EAAMs6C,EAASrH,WAAW3qD,OAC1B2c,EAAO+sC,EACJ9lD,EAAI8T,IAAQgyC,GAAc,CAC/B,GAAIsI,EAASrH,WAAW/mD,GAAGqc,UAAU4qB,OAAOluB,KAAM,CAChDA,GAAO,EACP,MAEF/Y,GAAK,EAEP,GAAI+Y,EAGF,IADAq1C,EAASpI,eAAeprC,QACnB5a,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,EAC7BqD,EAAQ+qD,EAASrH,WAAW/mD,GAAGqc,UAAU4qB,OAAOxwB,EAAEpT,MAClD+qD,EAASpI,eAAe3pC,UAAUhZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAGvM+qD,EAASr1C,KAAOA,GAElBu1C,iBAAkB,SAAUxI,GAC1B,IAAI9lD,EACA8T,EAAM5X,KAAK6uD,aAAa3uD,OAC5B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKmyD,gBAAgBnyD,KAAK6uD,aAAa/qD,GAAI8lD,IAG/CyI,UAAW,WAET,OADAryD,KAAK8uD,qBAAuB,EACrB,IAAM9uD,KAAK8uD,sBAiCtBC,YAAY/pD,UAAUwgC,cAAgBqb,aAAa77C,UAAUwgC,cAQ7D6pB,YAAYrqD,UAAY,CACtBstD,WAAY,WACV,IAAKtyD,KAAKkwB,KAAKI,QACb,OAAO,EAIT,IAFA,IAAIxsB,EAAI,EACJ8T,EAAM5X,KAAKkwB,KAAKM,gBAAgBtwB,OAC7B4D,EAAI8T,GAAK,CACd,GAA2C,MAAtC5X,KAAKkwB,KAAKM,gBAAgB1sB,GAAGV,OAAoD,IAApCpD,KAAKkwB,KAAKM,gBAAgB1sB,GAAGyuB,GAC7E,OAAO,EAETzuB,GAAK,EAEP,OAAO,GAET6/C,gBAAiB,WACf3jD,KAAKuyD,eAAiBC,yBAAyBxyD,MAC3CA,KAAKkwB,KAAKI,SAAWtwB,KAAKo0C,aAC5Bp0C,KAAKuyD,eAAeE,sBAAsBzyD,KAAKo0C,aAEjD,IAAIse,EAAmBC,2BAA2BC,uBAAuB5yD,KAAMA,KAAKuyD,gBACpFvyD,KAAKuyD,eAAeM,yBAAyBH,GAExB,IAAjB1yD,KAAKkwB,KAAKjQ,IAAYjgB,KAAKkwB,KAAKwzB,GAClC1jD,KAAK8yD,cAAgBC,wBAAwB/yD,MACnB,IAAjBA,KAAKkwB,KAAKjQ,IACnBjgB,KAAKuyD,eAAeS,eAAiBC,yBAAyBjzD,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKuyD,gBACpGvyD,KAAKuyD,eAAeW,QAAUlzD,KAAKuyD,eAAeS,gBACxB,IAAjBhzD,KAAKkwB,KAAKjQ,KACnBjgB,KAAKuyD,eAAeY,cAAgBC,wBAAwBpzD,MAC5DA,KAAKuyD,eAAeta,KAAOj4C,KAAKuyD,eAAeY,gBAGnDE,aAAc,WACZ,IAAIC,EAAiBt2C,aAAahd,KAAKkwB,KAAKqjC,KACjCvzD,KAAKksD,aAAelsD,KAAK+8C,cAE/Bh5C,MAAM,kBAAoBuvD,GAEjCzH,aAAc,SAAU37B,EAAMyM,EAAYV,GACxCj8B,KAAK28B,WAAaA,EAClB38B,KAAKi8B,KAAOA,EACZj8B,KAAKkwB,KAAOA,EACZlwB,KAAKm/C,QAAUhlC,kBAGVna,KAAKkwB,KAAKsjC,KACbxzD,KAAKkwB,KAAKsjC,GAAK,GAGjBxzD,KAAKyzD,eAAiB,IAAIC,eAAe1zD,KAAKkwB,KAAMlwB,KAAMA,KAAKyc,oBAEjEk3C,QAAS,WACP,OAAO3zD,KAAKxB,MAEdktD,iBAAkB,cAapBpH,YAAYt/C,UAAUogD,aAAe,SAAUxD,GAC7C5hD,KAAKqqD,kBAAkBzI,GAAK,IAG9B0C,YAAYt/C,UAAUkgD,YAAc,aAGpCZ,YAAYt/C,UAAUqgD,eAAiB,WACrC,OAAO,MAGTf,YAAYt/C,UAAUkD,QAAU,aAGhCo8C,YAAYt/C,UAAU0mD,iBAAmB,aAGzCpH,YAAYt/C,UAAU3G,KAAO,aAG7BmrB,gBAAgB,CAAC6lC,YAAalP,iBAAkBF,iBAAkBC,cAAeoE,aAOjFgL,eAAetqD,UAAY,CACzB8mD,oBAAqB,WACnB9rD,KAAK+8C,aAAe5gC,SAAS,MAE/B4vC,wBAAyB,WACvB/rD,KAAK4zD,aAAez3C,SAAS,KAC7Bnc,KAAK6zD,mBAAqB7zD,KAAK+8C,aAC/B/8C,KAAK+/C,cAAgB//C,KAAK+8C,aAC1B/8C,KAAK8zD,cAAe,EACpB,IAEI7jB,EACAE,EACA4jB,EAJAC,EAAqB,KAKzB,GAAIh0D,KAAKkwB,KAAKG,IACZ,GAAoB,GAAhBrwB,KAAKkwB,KAAKG,IAA2B,GAAhBrwB,KAAKkwB,KAAKG,GAAS,CAC1C,IAAI4jC,EAAS93C,SAAS,QACtB83C,EAAOvgC,aAAa,KAAM1zB,KAAKm/C,SAC/B8U,EAAOvgC,aAAa,YAA6B,GAAhB1zB,KAAKkwB,KAAKG,GAAU,YAAc,SACnE4jC,EAAOhwD,YAAYjE,KAAK+8C,cACxBiX,EAAqBC,EACrBj0D,KAAK28B,WAAW3G,KAAK/xB,YAAYgwD,GAE5BnkB,eAAeC,UAA4B,GAAhB/vC,KAAKkwB,KAAKG,KACxC4jC,EAAOvgC,aAAa,YAAa,aACjCuc,EAAQ91B,kBACRg2B,EAAMH,eAAekkB,aAAajkB,GAClCjwC,KAAK28B,WAAW3G,KAAK/xB,YAAYksC,GACjCA,EAAIlsC,YAAY+rC,eAAemkB,iCAC/BJ,EAAK53C,SAAS,MACXlY,YAAYjE,KAAK+8C,cACpBiX,EAAqBD,EACrBE,EAAOhwD,YAAY8vD,GACnBA,EAAGrgC,aAAa,SAAU,OAAShd,aAAe,IAAMu5B,EAAQ,WAE7D,GAAoB,GAAhBjwC,KAAKkwB,KAAKG,GAAS,CAC5B,IAAI+jC,EAAYj4C,SAAS,QACzBi4C,EAAU1gC,aAAa,KAAM1zB,KAAKm/C,SAClCiV,EAAU1gC,aAAa,YAAa,SACpC,IAAI2gC,EAAcl4C,SAAS,KAC3Bi4C,EAAUnwD,YAAYowD,GACtBpkB,EAAQ91B,kBACRg2B,EAAMH,eAAekkB,aAAajkB,GAUlC,IAAIqkB,EAAQn4C,SAAS,uBACrBm4C,EAAM5gC,aAAa,KAAM,iBACzByc,EAAIlsC,YAAYqwD,GAChB,IAAIC,EAASp4C,SAAS,WACtBo4C,EAAO7gC,aAAa,OAAQ,SAC5B6gC,EAAO7gC,aAAa,cAAe,WACnC4gC,EAAMrwD,YAAYswD,GAElBv0D,KAAK28B,WAAW3G,KAAK/xB,YAAYksC,GACjC,IAAIqkB,EAAYr4C,SAAS,QACzBq4C,EAAU9gC,aAAa,QAAS1zB,KAAKi8B,KAAK/L,KAAK9a,GAC/Co/C,EAAU9gC,aAAa,SAAU1zB,KAAKi8B,KAAK/L,KAAK5V,GAChDk6C,EAAU9gC,aAAa,IAAK,KAC5B8gC,EAAU9gC,aAAa,IAAK,KAC5B8gC,EAAU9gC,aAAa,OAAQ,WAC/B8gC,EAAU9gC,aAAa,UAAW,KAClC2gC,EAAY3gC,aAAa,SAAU,OAAShd,aAAe,IAAMu5B,EAAQ,KACzEokB,EAAYpwD,YAAYuwD,GACxBH,EAAYpwD,YAAYjE,KAAK+8C,cAC7BiX,EAAqBK,EAChBvkB,eAAeC,WAClBqkB,EAAU1gC,aAAa,YAAa,aACpCyc,EAAIlsC,YAAY+rC,eAAemkB,gCAC/BJ,EAAK53C,SAAS,KACdk4C,EAAYpwD,YAAYuwD,GACxBT,EAAG9vD,YAAYjE,KAAK+8C,cACpBiX,EAAqBD,EACrBM,EAAYpwD,YAAY8vD,IAE1B/zD,KAAK28B,WAAW3G,KAAK/xB,YAAYmwD,SAE1Bp0D,KAAKkwB,KAAKE,IACnBpwB,KAAK4zD,aAAa3vD,YAAYjE,KAAK+8C,cACnCiX,EAAqBh0D,KAAK4zD,aAC1B5zD,KAAKksD,YAAclsD,KAAK4zD,cAExB5zD,KAAKksD,YAAclsD,KAAK+8C,aAS1B,GAPI/8C,KAAKkwB,KAAKukC,IACZz0D,KAAK+8C,aAAarpB,aAAa,KAAM1zB,KAAKkwB,KAAKukC,IAE7Cz0D,KAAKkwB,KAAKqC,IACZvyB,KAAK+8C,aAAarpB,aAAa,QAAS1zB,KAAKkwB,KAAKqC,IAG/B,IAAjBvyB,KAAKkwB,KAAKjQ,KAAajgB,KAAKkwB,KAAKwwB,GAAI,CACvC,IAAIgU,EAAKv4C,SAAS,YACdoH,EAAKpH,SAAS,QAClBoH,EAAGmQ,aAAa,IAAK,SAAW1zB,KAAKkwB,KAAK9a,EAAI,OAASpV,KAAKkwB,KAAK9a,EAAI,IAAMpV,KAAKkwB,KAAK5V,EAAI,OAASta,KAAKkwB,KAAK5V,EAAI,KAChH,IAAIq6C,EAASx6C,kBAKb,GAJAu6C,EAAGhhC,aAAa,KAAMihC,GACtBD,EAAGzwD,YAAYsf,GACfvjB,KAAK28B,WAAW3G,KAAK/xB,YAAYywD,GAE7B10D,KAAKsyD,aAAc,CACrB,IAAIsC,EAAUz4C,SAAS,KACvBy4C,EAAQlhC,aAAa,YAAa,OAAShd,aAAe,IAAMi+C,EAAS,KACzEC,EAAQ3wD,YAAYjE,KAAK+8C,cACzB/8C,KAAK6zD,mBAAqBe,EACtBZ,EACFA,EAAmB/vD,YAAYjE,KAAK6zD,oBAEpC7zD,KAAKksD,YAAclsD,KAAK6zD,wBAG1B7zD,KAAK+8C,aAAarpB,aAAa,YAAa,OAAShd,aAAe,IAAMi+C,EAAS,KAGlE,IAAjB30D,KAAKkwB,KAAKqjC,IACZvzD,KAAKqzD,gBAGTlH,cAAe,WACTnsD,KAAK8pD,eAAeU,SACtBxqD,KAAK6zD,mBAAmBngC,aAAa,YAAa1zB,KAAK8pD,eAAenrB,IAAIla,WAExEzkB,KAAK8pD,eAAeW,QACtBzqD,KAAK6zD,mBAAmBngC,aAAa,UAAW1zB,KAAK8pD,eAAeC,MAAMjqC,EAAEvF,IAGhF+xC,mBAAoB,WAClBtsD,KAAK+8C,aAAe,KACpB/8C,KAAK4zD,aAAe,KACpB5zD,KAAKo0C,YAAYlsC,WAEnBm9C,eAAgB,WACd,OAAIrlD,KAAKkwB,KAAKwwB,GACL,KAEF1gD,KAAKksD,aAEdF,2BAA4B,WAC1BhsD,KAAKo0C,YAAc,IAAIuK,YAAY3+C,KAAKkwB,KAAMlwB,KAAMA,KAAK28B,YACzD38B,KAAK60D,yBAA2B,IAAIC,WAAW90D,OAEjDglD,SAAU,SAAU3iD,GACbrC,KAAK4zD,cAGV5zD,KAAK4zD,aAAalgC,aAAa,OAAQ,OAAShd,aAAe,IAAMrU,EAAK,OAS9EktD,cAAcvqD,UAAY,CACxB+vD,oBAAqB,SAAU7kC,GAC7B,IAAIpsB,EACA8T,EAAM5X,KAAKkwD,eAAehwD,OAC9B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKkwD,eAAepsD,GAAG49B,SAASxR,IAGpC8kC,2BAA4B,SAAU9kC,GAGpC,IAFA,IACItY,EAAM5X,KAAKkwD,eAAehwD,OADtB,EAEG0X,GACT,GAAI5X,KAAKkwD,eAHH,GAGqB+E,oBAAoB/kC,GAC7C,OAAO,EAGX,OAAO,GAETglC,gBAAiB,WACf,GAAKl1D,KAAKkwD,eAAehwD,OAAzB,CAGA,IAAI4D,EACA8T,EAAM5X,KAAK6wB,OAAO3wB,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK6wB,OAAO/sB,GAAGo2B,GAAGxb,QAKpB,IAAK5a,GAFL8T,EAAM5X,KAAKkwD,eAAehwD,QAEX,EAAG4D,GAAK,IACA9D,KAAKkwD,eAAepsD,GAAGwiC,cAActmC,KAAK+8B,eADvCj5B,GAAK,MASjCqxD,OAAQ,CACNh4C,EAAG,OACHC,EAAG,QACHC,EAAG,UAEL+3C,OAAQ,CACNj4C,EAAG,QACHC,EAAG,QACHC,EAAG,SAELg4C,uBAAwB,SAAU34B,GAIhC,IAHA,IAAI6M,EAAWvpC,KAAKowD,kBAChBtsD,EAAI,EACJ8T,EAAM2xB,EAASrpC,OACZ4D,EAAI8T,GAAK,CACd,GAAI2xB,EAASzlC,GAAG44B,OAASA,EACvB,OAAO6M,EAASzlC,GAAGmN,IAErBnN,GAAK,EAEP,OAAO,GAETwxD,oBAAqB,SAAU54B,EAAMzrB,GAGnC,IAFA,IAAIs4B,EAAWvpC,KAAKowD,kBAChBtsD,EAAIylC,EAASrpC,OACV4D,GAEL,GAAIylC,EADJzlC,GAAK,GACW44B,OAASA,EAEvB,YADA6M,EAASzlC,GAAGmN,IAAMA,GAItBs4B,EAASpmC,KAAK,IAAIm9C,iBAAiB5jB,EAAMzrB,KAE3Cm0C,aAAc,SAAUxD,GACtB5hD,KAAKsrD,uBAAuB1J,GAC5B5hD,KAAKqqD,kBAAkBzI,EAAK5hD,KAAKgrD,aASrCwE,aAAaxqD,UAAU4mD,YAAc,SAAU17B,EAAMyM,EAAYV,GAC/Dj8B,KAAK8xC,oBAAqB,EAC1B9xC,KAAKg4B,YACLh4B,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAKu6C,aAAe,IAAI5H,aAAa3yC,KAAMkwB,EAAKtV,EAAG5a,KAAKyc,mBACxDzc,KAAKu1D,aAAe,IAAItkB,qBAAqB/gB,EAAKtV,EAAG5a,KAAKmxC,WAAYnxC,MACtEA,KAAKuqD,cAAcr6B,EAAMyM,EAAYV,GACrCj8B,KAAKmqD,gBACLnqD,KAAK+qD,iBACL/qD,KAAK8rD,sBACL9rD,KAAK+rD,0BACL/rD,KAAKgsD,6BACLhsD,KAAKisD,gBACLjsD,KAAK3B,OACL2B,KAAKu1D,aAAaphB,iBAAiBn0C,KAAKyc,oBAG1C+yC,aAAaxqD,UAAUogD,aAAe,SAAUxD,GAC9C5hD,KAAK6c,MAAO,EACZ7c,KAAKsrD,uBAAuB1J,GAC5B5hD,KAAKqqD,kBAAkBzI,EAAK5hD,KAAKgrD,YAC7BhrD,KAAKu6C,aAAa19B,MAAQ7c,KAAKu6C,aAAaxd,iBAC9C/8B,KAAKw1D,eACLx1D,KAAKu6C,aAAaxd,eAAgB,EAClC/8B,KAAKu6C,aAAa19B,MAAO,IAI7B2yC,aAAaxqD,UAAUywD,gBAAkB,SAAUxgB,EAAcpkB,GAC/D,IAAI7hB,EAEAk8B,EADAlb,EAAOa,EAAO3wB,OAEdw1D,EAAW,GACf,IAAK1mD,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBk8B,EAAYra,EAAO7hB,GAAGiiB,GAAGxiB,EACzBinD,GAAYzqB,iBAAiBC,EAAWA,EAAUpnC,EAAE5D,QAAQ,EAAM+0C,GAEpE,OAAOygB,GAGTlG,aAAaxqD,UAAUy0C,mBAAqB,SAAUC,EAAS7qC,GAC7D7O,KAAKu6C,aAAad,mBAAmBC,EAAS7qC,IAGhD2gD,aAAaxqD,UAAU60C,cAAgB,SAAUC,GAC/C95C,KAAKu6C,aAAaV,cAAcC,IAGlC0V,aAAaxqD,UAAU+0C,mBAAqB,SAAU4b,GACpD31D,KAAKu6C,aAAaR,mBAAmB4b,IAGvCnG,aAAaxqD,UAAU4wD,4BAA8B,SAAUjkC,EAAcsjB,EAAc4gB,EAAYthB,EAAMC,GAK3G,OAJI7iB,EAAa6hB,IACfyB,EAAal1B,UAAU4R,EAAa6hB,GAAG,GAAI7hB,EAAa6hB,GAAG,GAAK7hB,EAAaqhB,OAAQ,GAEvFiC,EAAal1B,UAAU,GAAI4R,EAAa2hB,GAAI,GACpC3hB,EAAa3iB,GACnB,KAAK,EACHimC,EAAal1B,UAAU4R,EAAawhB,eAAiBxhB,EAAashB,SAAWthB,EAAa0hB,WAAWwiB,IAAc,EAAG,GACtH,MACF,KAAK,EACH5gB,EAAal1B,UAAU4R,EAAawhB,eAAiBxhB,EAAashB,SAAWthB,EAAa0hB,WAAWwiB,IAAe,EAAG,EAAG,GAK9H5gB,EAAal1B,UAAUw0B,EAAMC,EAAM,IAGrCgb,aAAaxqD,UAAU8wD,WAAa,SAAUC,GAC5C,MAAO,OAASp4D,KAAK2a,MAAqB,IAAfy9C,EAAU,IAAY,IAAMp4D,KAAK2a,MAAqB,IAAfy9C,EAAU,IAAY,IAAMp4D,KAAK2a,MAAqB,IAAfy9C,EAAU,IAAY,KAGjIvG,aAAaxqD,UAAUgxD,UAAY,IAAItjB,YAEvC8c,aAAaxqD,UAAUkD,QAAU,aAQjCshB,gBAAgB,CAAC6lC,YAAalP,iBAAkBF,iBAAkBC,aAAcG,sBAAuBoP,cAEvGA,aAAazqD,UAAU4mD,YAAc,SAAU17B,EAAMyM,EAAYV,GAC/Dj8B,KAAKg4B,YACLh4B,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAKuqD,cAAcr6B,EAAMyM,EAAYV,GACrCj8B,KAAK+qD,iBACL/qD,KAAKmqD,gBACLnqD,KAAK8rD,sBACL9rD,KAAK+rD,0BACL/rD,KAAKgsD,8BACDhsD,KAAKkwB,KAAKwzB,IAAO/mB,EAAWwgB,iBAC9Bn9C,KAAK4iD,gBAEP5iD,KAAK3B,QAePoxD,aAAazqD,UAAUogD,aAAe,SAAUxD,GAI9C,GAHA5hD,KAAK6c,MAAO,EACZ7c,KAAKsrD,uBAAuB1J,GAC5B5hD,KAAKqqD,kBAAkBzI,EAAK5hD,KAAKgrD,WAC5BhrD,KAAKgrD,WAAchrD,KAAKkwB,KAAKwzB,GAAlC,CAIA,GAAK1jD,KAAK87C,GAAGgU,aAOX9vD,KAAKk8B,cAAgB0lB,EAAM5hD,KAAKkwB,KAAKsjC,OAPZ,CACzB,IAAIyC,EAAej2D,KAAK87C,GAAGvhC,EACvB07C,IAAiBj2D,KAAKkwB,KAAKsa,KAC7ByrB,EAAej2D,KAAKkwB,KAAKsa,GAAK,GAEhCxqC,KAAKk8B,cAAgB+5B,EAIvB,IAAInyD,EACA8T,EAAM5X,KAAKupC,SAASrpC,OAKxB,IAJKF,KAAK2vB,gBACR3vB,KAAK2hD,YAAY3hD,KAAKk8B,eAGnBp4B,EAAI8T,EAAM,EAAG9T,GAAK,EAAGA,GAAK,GACzB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,MACvC9D,KAAKupC,SAASzlC,GAAGshD,aAAaplD,KAAKk8B,cAAgBl8B,KAAK4vB,OAAO9rB,GAAG05B,IAC9Dx9B,KAAKupC,SAASzlC,GAAG+Y,OACnB7c,KAAK6c,MAAO,MAMpB4yC,aAAazqD,UAAUonD,mBAAqB,WAC1C,IAAItoD,EACA8T,EAAM5X,KAAK4vB,OAAO1vB,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACpB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGohD,eAKvBuK,aAAazqD,UAAUkxD,YAAc,SAAU5rB,GAC7CtqC,KAAKupC,SAAWe,GAGlBmlB,aAAazqD,UAAUmxD,YAAc,WACnC,OAAOn2D,KAAKupC,UAGdkmB,aAAazqD,UAAUoxD,gBAAkB,WACvC,IAAItyD,EACA8T,EAAM5X,KAAK4vB,OAAO1vB,OACtB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB9D,KAAKupC,SAASzlC,IAChB9D,KAAKupC,SAASzlC,GAAGoE,WAKvBunD,aAAazqD,UAAUkD,QAAU,WAC/BlI,KAAKo2D,kBACLp2D,KAAKssD,sBAaP9iC,gBAAgB,CAAC6lC,YAAalP,iBAAkBmP,eAAgBrP,iBAAkBC,aAAcG,sBAAuBoE,eAEvHA,cAAcz/C,UAAUinD,cAAgB,WACtC,IAAIhgB,EAAYjsC,KAAK28B,WAAW+Q,cAAc1tC,KAAK2tC,WAEnD3tC,KAAKqsD,UAAYlwC,SAAS,SAC1Bnc,KAAKqsD,UAAU34B,aAAa,QAAS1zB,KAAK2tC,UAAUv4B,EAAI,MACxDpV,KAAKqsD,UAAU34B,aAAa,SAAU1zB,KAAK2tC,UAAUrzB,EAAI,MACzDta,KAAKqsD,UAAU34B,aAAa,sBAAuB1zB,KAAK2tC,UAAU0oB,IAAMr2D,KAAK28B,WAAWqgB,aAAaE,0BACrGl9C,KAAKqsD,UAAU5c,eAAe,+BAAgC,OAAQxD,GAEtEjsC,KAAK+8C,aAAa94C,YAAYjE,KAAKqsD,YAGrC5H,cAAcz/C,UAAU0mD,iBAAmB,WACzC,OAAO1rD,KAAK0vD,YAQdlmC,gBAAgB,CAACi7B,eAAgBE,eAEjCA,cAAc3/C,UAAUinD,cAAgB,WACtC,IAAInN,EAAO3iC,SAAS,QAIpB2iC,EAAKprB,aAAa,QAAS1zB,KAAKkwB,KAAKiiB,IACrC2M,EAAKprB,aAAa,SAAU1zB,KAAKkwB,KAAKgK,IACtC4kB,EAAKprB,aAAa,OAAQ1zB,KAAKkwB,KAAK6G,IACpC/2B,KAAK+8C,aAAa94C,YAAY66C,IAmBhC4D,aAAa19C,UAAUogD,aAAe,SAAUxD,GAG9C,GAFA5hD,KAAKsrD,uBAAuB1J,GAAK,GACjC5hD,KAAKqqD,kBAAkBzI,GAAK,GACvB5hD,KAAK87C,GAAGgU,aAIX9vD,KAAK6vD,aAAejO,EAAM5hD,KAAKkwB,KAAKsjC,OAJX,CACzB,IAAIyC,EAAej2D,KAAK87C,GAAGvhC,EAC3Bva,KAAK6vD,aAAeoG,IAMxBzsC,gBAAgB,CAAC42B,kBAAmBiP,YAAanP,cAAewC,cAEhEA,aAAa19C,UAAUkgD,YAAc,WAC/BllD,KAAKgrD,WAAahrD,KAAK4vD,WACpB5vD,KAAK2vD,aAIE3vD,KAAK4rC,MAAMS,WAClB1uC,KAAKka,IAAI7X,KAAK6vD,aAAe7vD,KAAK28B,WAAWmC,UAAY9+B,KAAK4rC,MAAMQ,QAAU,KAEjFpsC,KAAK4rC,MAAMQ,KAAKpsC,KAAK6vD,aAAe7vD,KAAK28B,WAAWmC,YANpD9+B,KAAK4rC,MAAM5kC,OACXhH,KAAK4rC,MAAMQ,KAAKpsC,KAAK6vD,aAAe7vD,KAAK28B,WAAWmC,WACpD9+B,KAAK2vD,YAAa,KASxBjN,aAAa19C,UAAUwgD,KAAO,aAI9B9C,aAAa19C,UAAU3G,KAAO,WAC5B2B,KAAK4rC,MAAM3kC,QACXjH,KAAK2vD,YAAa,GAGpBjN,aAAa19C,UAAUiC,MAAQ,WAC7BjH,KAAK4rC,MAAM3kC,QACXjH,KAAK2vD,YAAa,EAClB3vD,KAAK4vD,UAAW,GAGlBlN,aAAa19C,UAAU6mC,OAAS,WAC9B7rC,KAAK4vD,UAAW,GAGlBlN,aAAa19C,UAAU8mC,QAAU,SAAUC,GACzC/rC,KAAK4rC,MAAMU,KAAKP,IAGlB2W,aAAa19C,UAAU6nC,OAAS,SAAUypB,GACxCt2D,KAAK4rC,MAAMiB,OAAOypB,IAGpB5T,aAAa19C,UAAUqgD,eAAiB,WACtC,OAAO,MAGT3C,aAAa19C,UAAUkD,QAAU,aAGjCw6C,aAAa19C,UAAU0mD,iBAAmB,aAG1ChJ,aAAa19C,UAAU2+C,gBAAkB,aAazChB,eAAe39C,UAAUogD,aAAe,aAGxC57B,gBAAgB,CAAC42B,kBAAmBiP,YAAanP,cAAeyC,gBAEhEA,eAAe39C,UAAUqgD,eAAiB,WACxC,OAAO,MAGT1C,eAAe39C,UAAUkgD,YAAc,aAGvCvC,eAAe39C,UAAUkD,QAAU,aAGnCy6C,eAAe39C,UAAU2+C,gBAAkB,WACzC3jD,KAAKuyD,eAAiBgE,iBAAiBv2D,OAGzC2iD,eAAe39C,UAAUwxD,eAAiB,WACxC,OAAOx2D,KAAK0uC,aAgBdllB,gBAAgB,CAAC6yB,YAAaoT,aAAcH,gBAAiB5K,gBAW7Dl7B,gBAAgB,CAAC6lC,YAAalP,iBAAkBmP,eAAgBrP,iBAAkBC,aAAcG,qBAAsBmP,cAAehL,sBAErIA,qBAAqBx/C,UAAUinD,cAAgB,WACzCjsD,KAAKkwB,KAAKY,cAAgB9wB,KAAK28B,WAAW7M,YAAYiC,QACxD/xB,KAAKy2D,cAAgBt6C,SAAS,UAIlCqoC,qBAAqBx/C,UAAU0xD,kBAAoB,SAAUC,GAK3D,IAJA,IAAI7yD,EAAI,EACJ8T,EAAM++C,EAAUz2D,OAChB02D,EAAe,GACfC,EAAqB,GAClB/yD,EAAI8T,GACL++C,EAAU7yD,KAAO4M,OAAOkV,aAAa,KAAO+wC,EAAU7yD,KAAO4M,OAAOkV,aAAa,IACnFgxC,EAAazzD,KAAK0zD,GAClBA,EAAqB,IAErBA,GAAsBF,EAAU7yD,GAElCA,GAAK,EAGP,OADA8yD,EAAazzD,KAAK0zD,GACXD,GAGTpS,qBAAqBx/C,UAAUwwD,aAAe,WAC5C,IAAI1xD,EACA8T,EAEA+Z,EAAe3xB,KAAKu6C,aAAaxH,YACrC/yC,KAAK6xC,gBAAkB95B,iBAAiB4Z,EAAeA,EAAaxgB,EAAEjR,OAAS,GAC3EyxB,EAAaygB,GACfpyC,KAAK+8C,aAAarpB,aAAa,OAAQ1zB,KAAK81D,WAAWnkC,EAAaygB,KAEpEpyC,KAAK+8C,aAAarpB,aAAa,OAAQ,iBAErC/B,EAAaoF,KACf/2B,KAAK+8C,aAAarpB,aAAa,SAAU1zB,KAAK81D,WAAWnkC,EAAaoF,KACtE/2B,KAAK+8C,aAAarpB,aAAa,eAAgB/B,EAAawgB,KAE9DnyC,KAAK+8C,aAAarpB,aAAa,YAAa/B,EAAakiB,WACzD,IAAIjhB,EAAW5yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GACtE,GAAIgyB,EAASkC,OACX90B,KAAK+8C,aAAarpB,aAAa,QAASd,EAASkC,YAC5C,CACL90B,KAAK+8C,aAAarpB,aAAa,cAAed,EAASgC,SACvD,IAAI7B,EAAUpB,EAAaoB,QACvBD,EAASnB,EAAamB,OAC1B9yB,KAAK+8C,aAAarpB,aAAa,aAAcZ,GAC7C9yB,KAAK+8C,aAAarpB,aAAa,cAAeX,GAEhD/yB,KAAK+8C,aAAarpB,aAAa,aAAc/B,EAAa/W,GAE1D,IAIIk8C,EAJA1hB,EAAUzjB,EAAaxgB,GAAK,GAC5B4lD,IAAe/2D,KAAK28B,WAAW7M,YAAYiC,MAC/Cna,EAAMw9B,EAAQl1C,OAGd,IACI2wB,EADAokB,EAAej1C,KAAKk1C,QAEpBwgB,EAAW,GACX5kC,EAAc9wB,KAAKkwB,KAAKY,YACxByjB,EAAO,EACPC,EAAO,EACPiB,GAAY,EACZmD,EAAmC,KAAlBjnB,EAAa0W,GAAa1W,EAAakiB,UAC5D,IAAI/iB,GAAgBimC,GAAeplC,EAAajS,GA+BzC,CACL,IACI4M,EACAgsB,EAFA0e,EAAoBh3D,KAAK+vD,UAAU7vD,OAGvC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnBizD,GAAejmC,GAAqB,IAANhtB,IACjCgzD,EAAQE,EAAoBlzD,EAAI9D,KAAK+vD,UAAUjsD,GAAKqY,SAAS46C,EAAa,OAAS,QAC/EC,GAAqBlzD,IACvBgzD,EAAMpjC,aAAa,iBAAkB,QACrCojC,EAAMpjC,aAAa,kBAAmB,SACtCojC,EAAMpjC,aAAa,oBAAqB,KACxC1zB,KAAK+vD,UAAUjsD,GAAKgzD,EACpB92D,KAAK+8C,aAAa94C,YAAY6yD,IAEhCA,EAAM/yD,MAAMC,QAAU,WAGxBixC,EAAav2B,QACbu2B,EAAax1B,MAAMkS,EAAakiB,UAAY,IAAKliB,EAAakiB,UAAY,KACtE/iB,IACEskB,EAAQtxC,GAAG+b,IACb00B,GAAQqE,EACRpE,GAAQ7iB,EAAaiiB,QACrBY,GAAQiB,EAAY,EAAI,EACxBA,GAAY,GAEdz1C,KAAK41D,4BAA4BjkC,EAAcsjB,EAAcG,EAAQtxC,GAAGkzC,KAAMzC,EAAMC,GACpFD,GAAQa,EAAQtxC,GAAGqN,GAAK,EAExBojC,GAAQqE,GAENme,GAGFlmC,GADAvE,GADAgsB,EAAWt4C,KAAK28B,WAAW7M,YAAYoH,YAAYvF,EAAamiB,UAAUhwC,GAAI8uB,EAASE,OAAQ9yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GAAGg0B,WAChI0jB,EAASpoB,MAAS,IACxBW,OAASvE,EAAUuE,OAAO,GAAG1vB,GAAK,GAChD2vB,EAGH4kC,GAAY11D,KAAKy1D,gBAAgBxgB,EAAcpkB,GAF/CimC,EAAMpjC,aAAa,IAAK1zB,KAAKy1D,gBAAgBxgB,EAAcpkB,MAKzDC,GACFgmC,EAAMpjC,aAAa,YAAa,aAAeuhB,EAAa9tC,MAAM,IAAM,IAAM8tC,EAAa9tC,MAAM,IAAM,KAEzG2vD,EAAMjiC,YAAcugB,EAAQtxC,GAAGlB,IAC/Bk0D,EAAMrnB,eAAe,uCAAwC,YAAa,aAI1E3e,GAAegmC,GACjBA,EAAMpjC,aAAa,IAAKgiC,OAjFwB,CAClD,IAAIuB,EAAWj3D,KAAKy2D,cAChBS,EAAU,QACd,OAAQvlC,EAAa3iB,GACnB,KAAK,EACHkoD,EAAU,MACV,MACF,KAAK,EACHA,EAAU,SACV,MACF,QACEA,EAAU,QAGdD,EAASvjC,aAAa,cAAewjC,GACrCD,EAASvjC,aAAa,iBAAkBklB,GACxC,IAAI/jB,EAAc70B,KAAK02D,kBAAkB/kC,EAAamiB,WAGtD,IAFAl8B,EAAMid,EAAY30B,OAClBs0C,EAAO7iB,EAAa6hB,GAAK7hB,EAAa6hB,GAAG,GAAK7hB,EAAaqhB,OAAS,EAC/DlvC,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACxBgzD,EAAQ92D,KAAK+vD,UAAUjsD,IAAMqY,SAAS,UAChC0Y,YAAcA,EAAY/wB,GAChCgzD,EAAMpjC,aAAa,IAAK,GACxBojC,EAAMpjC,aAAa,IAAK8gB,GACxBsiB,EAAM/yD,MAAMC,QAAU,UACtBizD,EAAShzD,YAAY6yD,GACrB92D,KAAK+vD,UAAUjsD,GAAKgzD,EACpBtiB,GAAQ7iB,EAAaoiB,gBAGvB/zC,KAAK+8C,aAAa94C,YAAYgzD,GAsDhC,KAAOnzD,EAAI9D,KAAK+vD,UAAU7vD,QACxBF,KAAK+vD,UAAUjsD,GAAGC,MAAMC,QAAU,OAClCF,GAAK,EAGP9D,KAAK8zD,cAAe,GAGtBtP,qBAAqBx/C,UAAU0mD,iBAAmB,WAGhD,GAFA1rD,KAAKolD,aAAaplD,KAAKi8B,KAAKC,cAAgBl8B,KAAKkwB,KAAKsN,IACtDx9B,KAAKosD,qBACDpsD,KAAK8zD,aAAc,CACrB9zD,KAAK8zD,cAAe,EACpB,IAAIqD,EAAUn3D,KAAK+8C,aAAa3O,UAChCpuC,KAAKo3D,KAAO,CACV1+C,IAAKy+C,EAAQr0C,EACbnK,KAAMw+C,EAAQt0C,EACdzZ,MAAO+tD,EAAQ/tD,MACfC,OAAQ8tD,EAAQ9tD,QAGpB,OAAOrJ,KAAKo3D,MAGd5S,qBAAqBx/C,UAAUonD,mBAAqB,WAClD,IAAKpsD,KAAKkwB,KAAKY,cACb9wB,KAAKu1D,aAAajhB,YAAYt0C,KAAKu6C,aAAaxH,YAAa/yC,KAAK8xC,oBAC9D9xC,KAAK8xC,oBAAsB9xC,KAAKu1D,aAAazjB,oBAAoB,CAEnE,IAAIhuC,EACA8T,EAFJ5X,KAAK8zD,cAAe,EAGpB,IAKIuD,EACAC,EANAzlB,EAAkB7xC,KAAKu1D,aAAa1jB,gBAEpCuD,EAAUp1C,KAAKu6C,aAAaxH,YAAY5hC,EAK5C,IAHAyG,EAAMw9B,EAAQl1C,OAGT4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnBsxC,EAAQtxC,GAAG+b,IACdw3C,EAAiBxlB,EAAgB/tC,GACjCwzD,EAAWt3D,KAAK+vD,UAAUjsD,GACtBuzD,EAAex6C,KAAK+C,GACtB03C,EAAS5jC,aAAa,YAAa2jC,EAAez3C,GAEhDy3C,EAAex6C,KAAKiD,GACtBw3C,EAAS5jC,aAAa,UAAW2jC,EAAev3C,GAE9Cu3C,EAAex6C,KAAKs1B,IACtBmlB,EAAS5jC,aAAa,eAAgB2jC,EAAellB,IAEnDklB,EAAex6C,KAAKka,IACtBugC,EAAS5jC,aAAa,SAAU2jC,EAAetgC,IAE7CsgC,EAAex6C,KAAKu1B,IACtBklB,EAAS5jC,aAAa,OAAQ2jC,EAAejlB,OAmCzD5oB,gBAAgB,CAAC6lC,YAAalP,iBAAkBmP,eAAgBC,cAAetP,iBAAkBC,aAAcG,sBAAuBkE,iBAEtIA,gBAAgBv/C,UAAUuyD,qBAAuB,aAGjDhT,gBAAgBv/C,UAAUwyD,eAAiB,IAAIt5C,OAE/CqmC,gBAAgBv/C,UAAUyyD,yBAA2B,aAErDlT,gBAAgBv/C,UAAUinD,cAAgB,WACxCjsD,KAAK03D,aAAa13D,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKyhD,aAAczhD,KAAK+8C,aAAc,EAAG,IAAI,GAChG/8C,KAAK23D,sBAMPpT,gBAAgBv/C,UAAU2yD,mBAAqB,WAC7C,IAAI7zD,EAEAyhC,EACAv2B,EAEAjL,EAJA6T,EAAM5X,KAAK6wB,OAAO3wB,OAGlB8vB,EAAOhwB,KAAKiwD,WAAW/vD,OAEvB03D,EAAa,GACbC,GAAc,EAClB,IAAK7oD,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAI5B,IAHAjL,EAAQ/D,KAAKiwD,WAAWjhD,GACxB6oD,GAAc,EACdD,EAAW13D,OAAS,EACf4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GAEa,KADrCyhC,EAAQvlC,KAAK6wB,OAAO/sB,IACV+uB,OAAOnW,QAAQ3Y,KACvB6zD,EAAWz0D,KAAKoiC,GAChBsyB,EAActyB,EAAM5oB,aAAek7C,GAGnCD,EAAW13D,OAAS,GAAK23D,GAC3B73D,KAAK83D,oBAAoBF,KAK/BrT,gBAAgBv/C,UAAU8yD,oBAAsB,SAAUjnC,GACxD,IAAI/sB,EACA8T,EAAMiZ,EAAO3wB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB+sB,EAAO/sB,GAAG0hC,iBAId+e,gBAAgBv/C,UAAU+yD,mBAAqB,SAAU7nC,EAAMswB,GAE7D,IAAIwX,EACA7W,EAAU,IAAIZ,aAAarwB,EAAMswB,GAEjCkM,EAAcvL,EAAQR,MAwC1B,MAvCgB,OAAZzwB,EAAKjQ,GACP+3C,EAAc,IAAI9W,mBAAmBlhD,KAAMkwB,EAAMixB,GAC5B,OAAZjxB,EAAKjQ,GACd+3C,EAAc,IAAI5W,iBAAiBphD,KAAMkwB,EAAMixB,GAC1B,OAAZjxB,EAAKjQ,IAA2B,OAAZiQ,EAAKjQ,KAElC+3C,EAAc,IADwB,OAAZ9nC,EAAKjQ,GAAcohC,yBAA2BE,4BAClCvhD,KAAMkwB,EAAMixB,GAClDnhD,KAAK28B,WAAW3G,KAAK/xB,YAAY+zD,EAAYnL,IACzCmL,EAAYnT,SACd7kD,KAAK28B,WAAW3G,KAAK/xB,YAAY+zD,EAAY/K,IAC7CjtD,KAAK28B,WAAW3G,KAAK/xB,YAAY+zD,EAAYzkB,IAC7CmZ,EAAYh5B,aAAa,OAAQ,OAAShd,aAAe,IAAMshD,EAAYnT,OAAS,OAIxE,OAAZ30B,EAAKjQ,IAA2B,OAAZiQ,EAAKjQ,KAC3BysC,EAAYh5B,aAAa,iBAAkB1zB,KAAKm1D,OAAOjlC,EAAK+nC,KAAO,SACnEvL,EAAYh5B,aAAa,kBAAmB1zB,KAAKo1D,OAAOllC,EAAKgoC,KAAO,SACpExL,EAAYh5B,aAAa,eAAgB,KACzB,IAAZxD,EAAKgoC,IACPxL,EAAYh5B,aAAa,oBAAqBxD,EAAKioC,KAIxC,IAAXjoC,EAAK1V,GACPkyC,EAAYh5B,aAAa,YAAa,WAGpCxD,EAAKukC,IACP/H,EAAYh5B,aAAa,KAAMxD,EAAKukC,IAElCvkC,EAAKqC,IACPm6B,EAAYh5B,aAAa,QAASxD,EAAKqC,IAErCrC,EAAKqjC,KACP7G,EAAY3oD,MAAM,kBAAoBiZ,aAAakT,EAAKqjC,KAE1DvzD,KAAKiwD,WAAW9sD,KAAKg+C,GACrBnhD,KAAKo4D,sBAAsBloC,EAAM8nC,GAC1BA,GAGTzT,gBAAgBv/C,UAAUqzD,mBAAqB,SAAUnoC,GACvD,IAAI8nC,EAAc,IAAIxW,eAUtB,OATItxB,EAAKukC,IACPuD,EAAYtW,GAAGhuB,aAAa,KAAMxD,EAAKukC,IAErCvkC,EAAKqC,IACPylC,EAAYtW,GAAGhuB,aAAa,QAASxD,EAAKqC,IAExCrC,EAAKqjC,KACPyE,EAAYtW,GAAG39C,MAAM,kBAAoBiZ,aAAakT,EAAKqjC,KAEtDyE,GAGTzT,gBAAgBv/C,UAAUszD,uBAAyB,SAAUpoC,EAAMvoB,GACjE,IAAI4wD,EAAoB36B,yBAAyByB,qBAAqBr/B,KAAMkwB,EAAMlwB,MAC9Eg4D,EAAc,IAAI/W,iBAAiBsX,EAAmBA,EAAkBz4C,EAAGnY,GAE/E,OADA3H,KAAKo4D,sBAAsBloC,EAAM8nC,GAC1BA,GAGTzT,gBAAgBv/C,UAAUwzD,mBAAqB,SAAUtoC,EAAMuoC,EAAiBjY,GAC9E,IAAIvgC,EAAK,EACO,OAAZiQ,EAAKjQ,GACPA,EAAK,EACgB,OAAZiQ,EAAKjQ,GACdA,EAAK,EACgB,OAAZiQ,EAAKjQ,KACdA,EAAK,GAEP,IACI+3C,EAAc,IAAInX,aAAa4X,EAAiBjY,EADhC7f,qBAAqB0e,aAAar/C,KAAMkwB,EAAMjQ,EAAIjgB,OAKtE,OAHAA,KAAK6wB,OAAO1tB,KAAK60D,GACjBh4D,KAAK+0D,oBAAoBiD,GACzBh4D,KAAKo4D,sBAAsBloC,EAAM8nC,GAC1BA,GAGTzT,gBAAgBv/C,UAAUozD,sBAAwB,SAAUloC,EAAM1X,GAGhE,IAFA,IAAI1U,EAAI,EACJ8T,EAAM5X,KAAKqwD,iBAAiBnwD,OACzB4D,EAAI8T,GAAK,CACd,GAAI5X,KAAKqwD,iBAAiBvsD,GAAG0U,UAAYA,EACvC,OAEF1U,GAAK,EAEP9D,KAAKqwD,iBAAiBltD,KAAK,CACzBR,GAAIwqD,oBAAoBuB,qBAAqBx+B,GAC7C1X,QAASA,EACT0X,KAAMA,KAIVq0B,gBAAgBv/C,UAAU0zD,iBAAmB,SAAUV,GACrD,IACIhpD,EADA+M,EAAMi8C,EAAYnlC,OAElB7C,EAAOhwB,KAAKiwD,WAAW/vD,OAC3B,IAAK8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACpBhP,KAAKiwD,WAAWjhD,GAAGyd,QACtB1Q,EAAI5Y,KAAKnD,KAAKiwD,WAAWjhD,KAK/Bu1C,gBAAgBv/C,UAAUqlC,aAAe,WAEvC,IAAIvmC,EADJ9D,KAAK+8B,eAAgB,EAErB,IAAInlB,EAAM5X,KAAKmwD,UAAUjwD,OACzB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKyhD,aAAa39C,GAAK9D,KAAKmwD,UAAUrsD,GAKxC,IAHA9D,KAAK03D,aAAa13D,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKyhD,aAAczhD,KAAK+8C,aAAc,EAAG,IAAI,GAChG/8C,KAAK23D,qBACL//C,EAAM5X,KAAKyc,kBAAkBvc,OACxB4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKyc,kBAAkB3Y,GAAGgZ,WAE5B9c,KAAKk1D,mBAGP3Q,gBAAgBv/C,UAAU0yD,aAAe,SAAU37C,EAAKo0C,EAAW1O,EAAc95C,EAAW64C,EAAOM,EAAc6X,GAC/G,IACI70D,EAEAkL,EACAghB,EAGA4oC,EACAC,EACAC,EATAL,EAAkB,GAAGj2D,OAAOs+C,GAE5BlpC,EAAMmE,EAAI7b,OAAS,EAGnB64D,EAAY,GACZC,EAAe,GAInB,IAAKl1D,EAAI8T,EAAK9T,GAAK,EAAGA,GAAK,EAAG,CAO5B,IANAg1D,EAAe94D,KAAKq1D,uBAAuBt5C,EAAIjY,KAI7CqsD,EAAUrsD,GAAK29C,EAAaqX,EAAe,GAF3C/8C,EAAIjY,GAAG+lC,QAAU8uB,EAID,OAAd58C,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,GACtE64C,EAGH3I,EAAUrsD,GAAGC,MAAM0oB,QAAS,EAF5B0jC,EAAUrsD,GAAK9D,KAAK+3D,mBAAmBh8C,EAAIjY,GAAI08C,GAI7CzkC,EAAIjY,GAAG+lC,SACTliC,EAAU1D,YAAYksD,EAAUrsD,GAAGC,MAAM48C,OAE3CoY,EAAU51D,KAAKgtD,EAAUrsD,GAAGC,YACvB,GAAkB,OAAdgY,EAAIjY,GAAGmc,GAAa,CAC7B,GAAK64C,EAIH,IADA9oC,EAAOmgC,EAAUrsD,GAAG3C,GAAGjB,OAClB8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBmhD,EAAUrsD,GAAG29C,aAAazyC,GAAKmhD,EAAUrsD,GAAG3C,GAAG6N,QAJjDmhD,EAAUrsD,GAAK9D,KAAKq4D,mBAAmBt8C,EAAIjY,IAO7C9D,KAAK03D,aAAa37C,EAAIjY,GAAG3C,GAAIgvD,EAAUrsD,GAAG3C,GAAIgvD,EAAUrsD,GAAG29C,aAAc0O,EAAUrsD,GAAG49C,GAAIlB,EAAQ,EAAGiY,EAAiBE,GAClH58C,EAAIjY,GAAG+lC,SACTliC,EAAU1D,YAAYksD,EAAUrsD,GAAG49C,QAEd,OAAd3lC,EAAIjY,GAAGmc,IACX64C,IACH3I,EAAUrsD,GAAK9D,KAAKs4D,uBAAuBv8C,EAAIjY,GAAI6D,IAErDixD,EAAmBzI,EAAUrsD,GAAGqc,UAChCs4C,EAAgBt1D,KAAKy1D,IACE,OAAd78C,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAC7E64C,IACH3I,EAAUrsD,GAAK9D,KAAKw4D,mBAAmBz8C,EAAIjY,GAAI20D,EAAiBjY,IAElExgD,KAAK04D,iBAAiBvI,EAAUrsD,KACT,OAAdiY,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAC7E64C,GAMHD,EAAW1I,EAAUrsD,IACZ2oB,QAAS,IANlBosC,EAAW90B,eAAeG,YAAYnoB,EAAIjY,GAAGmc,KACpCwgB,KAAKzgC,KAAM+b,EAAIjY,IACxBqsD,EAAUrsD,GAAK+0D,EACf74D,KAAKkwD,eAAe/sD,KAAK01D,IAK3BG,EAAa71D,KAAK01D,IACK,OAAd98C,EAAIjY,GAAGmc,KACX64C,GAOHD,EAAW1I,EAAUrsD,IACZ2oB,QAAS,GAPlBosC,EAAW90B,eAAeG,YAAYnoB,EAAIjY,GAAGmc,IAC7CkwC,EAAUrsD,GAAK+0D,EACfA,EAASp4B,KAAKzgC,KAAM+b,EAAKjY,EAAGqsD,GAC5BnwD,KAAKkwD,eAAe/sD,KAAK01D,GACzBF,GAAS,GAKXK,EAAa71D,KAAK01D,IAEpB74D,KAAKs1D,oBAAoBv5C,EAAIjY,GAAIA,EAAI,GAGvC,IADA8T,EAAMmhD,EAAU74D,OACX4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBi1D,EAAUj1D,GAAG2oB,QAAS,EAGxB,IADA7U,EAAMohD,EAAa94D,OACd4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBk1D,EAAal1D,GAAG2oB,QAAS,GAI7B83B,gBAAgBv/C,UAAUonD,mBAAqB,WAE7C,IAAItoD,EADJ9D,KAAKk1D,kBAEL,IAAIt9C,EAAM5X,KAAKiwD,WAAW/vD,OAC1B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKiwD,WAAWnsD,GAAG4a,QAIrB,IAFA1e,KAAKi5D,cAEAn1D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,GACpB9D,KAAKiwD,WAAWnsD,GAAG+Y,MAAQ7c,KAAK+8B,iBAC9B/8B,KAAKiwD,WAAWnsD,GAAG88C,SACrB5gD,KAAKiwD,WAAWnsD,GAAG88C,OAAOltB,aAAa,IAAK1zB,KAAKiwD,WAAWnsD,GAAGgX,GAE/D9a,KAAKiwD,WAAWnsD,GAAGgX,EAAI,OAAS9a,KAAKiwD,WAAWnsD,GAAGgX,GAErD9a,KAAKiwD,WAAWnsD,GAAG68C,MAAMjtB,aAAa,IAAK1zB,KAAKiwD,WAAWnsD,GAAGgX,GAAK,UAKzEypC,gBAAgBv/C,UAAUi0D,YAAc,WACtC,IAAIn1D,EAEAo1D,EADAthD,EAAM5X,KAAKqwD,iBAAiBnwD,OAEhC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBo1D,EAAkBl5D,KAAKqwD,iBAAiBvsD,IACnC9D,KAAK+8B,eAAiBm8B,EAAgB1gD,QAAQmE,eAAyC,IAAzBu8C,EAAgBhpC,MACjFgpC,EAAgBv2D,GAAGu2D,EAAgBhpC,KAAMgpC,EAAgB1gD,QAASxY,KAAK+8B,gBAK7EwnB,gBAAgBv/C,UAAUkD,QAAU,WAClClI,KAAKssD,qBACLtsD,KAAKgwD,WAAa,KAClBhwD,KAAKmwD,UAAY,MAiCnBG,cAActrD,UAAUkgD,YAAc,SAAUtmB,GAC9C,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAC1C,IAAIs8C,EAAan5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACpD6+C,EAAap5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACpD8+C,EAAUr5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IACzDva,KAAKywD,aAAa/8B,aAAa,SAAW0lC,EAAW,GAAKD,EAAW,GAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,UAAYE,EAAU,QAezQxI,cAAc7rD,UAAUkgD,YAAc,SAAUtmB,GAC9C,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAC1C,IAAI7B,EAAQhb,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAC/C8+C,EAAUr5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACrDva,KAAKywD,aAAa/8B,aAAa,SAAU,WAAa1Y,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAYq+C,EAAU,QAmB7IvI,sBAAsB9rD,UAAUkgD,YAAc,SAAUtmB,GACtD,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAE1C,IACIy8C,EADqB,GACbt5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAQ/Cg/C,EAAav5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACpDi/C,EAAwB,GAAdD,EAAmB,EAAID,EACjCG,EAAwB,GAAdF,EAAmB,EAAID,EAErCt5D,KAAK+wD,eAAer9B,aAAa,eAAgB8lC,EAAS,IAAMC,GAMhE,IAAIC,EAAwD,GAA5C15D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAU,OAAS,YAC1Eva,KAAK+wD,eAAer9B,aAAa,WAAYgmC,KAajD1I,gBAAgBhsD,UAAU20D,WAAa,WACrC,IACIzoC,EACA0oC,EACA91D,EACA8T,EAJAiiD,EAAe75D,KAAK08B,KAAKqgB,aAAa+c,UAAY95D,KAAK08B,KAAKqgB,aAAagd,WAgB7E,IAXiD,IAA7C/5D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,GACzC3C,EAAM5X,KAAK08B,KAAK0X,YAAY5jB,gBAAgBtwB,OAC5C4D,EAAI,GAGJ8T,EAAU,GADV9T,EAAI9D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IAGjDq/C,EAAYz9C,SAAS,MACXuX,aAAa,OAAQ,QAC/BkmC,EAAUlmC,aAAa,iBAAkB,SACzCkmC,EAAUlmC,aAAa,oBAAqB,GACpC5vB,EAAI8T,EAAK9T,GAAK,EACpBotB,EAAO/U,SAAS,QAChBy9C,EAAU31D,YAAYitB,GACtBlxB,KAAKiyB,MAAM9uB,KAAK,CAAEuX,EAAGwW,EAAMtR,EAAG9b,IAEhC,GAAkD,IAA9C9D,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,EAAS,CACnD,IAAIuK,EAAO3I,SAAS,QAChB9Z,EAAK8X,kBACT2K,EAAK4O,aAAa,KAAMrxB,GACxByiB,EAAK4O,aAAa,YAAa,SAC/B5O,EAAK7gB,YAAY21D,GACjB55D,KAAK08B,KAAKC,WAAW3G,KAAK/xB,YAAY6gB,GACtC,IAAIrK,EAAI0B,SAAS,KAEjB,IADA1B,EAAEiZ,aAAa,OAAQ,OAAShd,aAAe,IAAMrU,EAAK,KACnDw3D,EAAa,IAClBp/C,EAAExW,YAAY41D,EAAa,IAE7B75D,KAAK08B,KAAKqgB,aAAa94C,YAAYwW,GACnCza,KAAKi0D,OAASnvC,EACd80C,EAAUlmC,aAAa,SAAU,aAC5B,GAAkD,IAA9C1zB,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,GAAyD,IAA9Cva,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,EAAS,CAC7G,GAAkD,IAA9Cva,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,EAE1C,IADAs/C,EAAe75D,KAAK08B,KAAKqgB,aAAa+c,UAAY95D,KAAK08B,KAAKqgB,aAAagd,WAClEF,EAAa35D,QAClBF,KAAK08B,KAAKqgB,aAAajlB,YAAY+hC,EAAa,IAGpD75D,KAAK08B,KAAKqgB,aAAa94C,YAAY21D,GACnC55D,KAAK08B,KAAKqgB,aAAaid,gBAAgB,QACvCJ,EAAUlmC,aAAa,SAAU,QAEnC1zB,KAAKixD,aAAc,EACnBjxD,KAAKi6D,WAAaL,GAGpB5I,gBAAgBhsD,UAAUkgD,YAAc,SAAUtmB,GAIhD,IAAI96B,EAHC9D,KAAKixD,aACRjxD,KAAK25D,aAGP,IACI70C,EACAoM,EAFAtZ,EAAM5X,KAAKiyB,MAAM/xB,OAGrB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,IAAyB,IAArB9D,KAAKiyB,MAAMnuB,GAAG8b,IAChBkF,EAAO9kB,KAAK08B,KAAK0X,YAAYwK,SAAS5+C,KAAKiyB,MAAMnuB,GAAG8b,GACpDsR,EAAOlxB,KAAKiyB,MAAMnuB,GAAG4W,GACjBkkB,GAAe5+B,KAAKwwD,cAAc3zC,MAAQiI,EAAKtI,KAAKK,OACtDqU,EAAKwC,aAAa,IAAK5O,EAAKw6B,UAE1B1gB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAQ7c,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAQ7c,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAQ7c,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAQiI,EAAKtI,KAAKK,MAAM,CAC7N,IAAIq9C,EACJ,GAAiD,IAA7Cl6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,GAAwD,MAA7Cva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAW,CACtG,IAAIrJ,EAAmG,IAA/FvT,KAAK4R,IAAIvP,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAGva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,GAC9FxZ,EAAmG,IAA/FpD,KAAK6R,IAAIxP,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAGva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,GAC9FpJ,EAAI+f,EAAKipC,iBACbD,EAAiB,SAAW/oD,EAAID,EAAI,IACpC,IAGIlC,EAHAorD,EAAajpD,GAAKpQ,EAAImQ,GACtBs2B,EAAU,EAA+C,EAA3CxnC,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAQva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IACxG8/C,EAAQ18D,KAAKoF,MAAMq3D,EAAa5yB,GAEpC,IAAKx4B,EAAI,EAAGA,EAAIqrD,EAAOrrD,GAAK,EAC1BkrD,GAAkB,KAAkD,EAA3Cl6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAQva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IAAO,IAE5H2/C,GAAkB,KAAW,GAAJ/oD,EAAS,YAElC+oD,EAAiB,KAAkD,EAA3Cl6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAQva,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IAEpH2W,EAAKwC,aAAa,mBAAoBwmC,GAW5C,IAPIt7B,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,OACxD7c,KAAKi6D,WAAWvmC,aAAa,eAA2D,EAA3C1zB,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,IAGlFqkB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,OACxD7c,KAAKi6D,WAAWvmC,aAAa,UAAW1zB,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,IAE/B,IAA9Cva,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,GAAyD,IAA9Cva,KAAKwwD,cAAcE,eAAe,IAAIh2C,EAAEH,KACzFqkB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAM,CAC9D,IAAI7B,EAAQhb,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACnDva,KAAKi6D,WAAWvmC,aAAa,SAAU,OAASpc,QAAmB,IAAX0D,EAAM,IAAY,IAAM1D,QAAmB,IAAX0D,EAAM,IAAY,IAAM1D,QAAmB,IAAX0D,EAAM,IAAY,OAiChJk2C,iBAAiBlsD,UAAUkgD,YAAc,SAAUtmB,GACjD,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAC1C,IAAIy9C,EAASt6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAChDggD,EAASv6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAChDigD,EAASx6D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAChDkgD,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDI,EAASF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDK,EAASH,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxDt6D,KAAKoxD,QAAQ19B,aAAa,cAAe+mC,GACzCz6D,KAAKqxD,QAAQ39B,aAAa,cAAegnC,GACzC16D,KAAKsxD,QAAQ59B,aAAa,cAAeinC,KAyC7CpJ,mBAAmBvsD,UAAUwsD,aAAe,SAAUhzD,EAAM2yD,GAC1D,IAAIoD,EAASp4C,SAAS3d,GAGtB,OAFA+1D,EAAO7gC,aAAa,OAAQ,SAC5By9B,EAAoBltD,YAAYswD,GACzBA,GAGThD,mBAAmBvsD,UAAU41D,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GAWjG,IAVA,IAEIrwC,EAIAswC,EANAx6B,EAAM,EAGNnxB,EAAM5R,KAAK4R,IAAIsrD,EAAYC,GAC3BtrD,EAAM7R,KAAK6R,IAAIqrD,EAAYC,GAC3BK,EAAQz0D,MAAMtG,KAAK,KAAM,CAAEF,OAJhB,MAMX+Q,EAAM,EACNmqD,EAAcH,EAAcD,EAC5BK,EAAaP,EAAaD,EACvBn6B,GAAO,KAGVw6B,GAFFtwC,EAAO8V,EAAM,MACDnxB,EACG8rD,EAAa,EAAIJ,EAAcD,EACnCpwC,GAAQpb,EACJ6rD,EAAa,EAAIL,EAAcC,EAE9BD,EAAcI,EAAcz9D,KAAKwZ,KAAKyT,EAAOiwC,GAAcQ,EAAY,EAAIN,GAE3FI,EAAMlqD,GAAOiqD,EACbjqD,GAAO,EACPyvB,GAAO,IAAM,IAEf,OAAOy6B,EAAMzsD,KAAK,MAGpB6iD,mBAAmBvsD,UAAUkgD,YAAc,SAAUtmB,GACnD,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAC1C,IAAIja,EACA8tD,EAAiB1wD,KAAKwwD,cAAcE,eACpC1wD,KAAK0xD,kBAAoB9yB,GAAe8xB,EAAe,GAAGh2C,EAAEmC,MAAQ6zC,EAAe,GAAGh2C,EAAEmC,MAAQ6zC,EAAe,GAAGh2C,EAAEmC,MAAQ6zC,EAAe,GAAGh2C,EAAEmC,MAAQ6zC,EAAe,GAAGh2C,EAAEmC,QAC9Kja,EAAM5C,KAAK46D,cAAclK,EAAe,GAAGh2C,EAAEH,EAAGm2C,EAAe,GAAGh2C,EAAEH,EAAGm2C,EAAe,GAAGh2C,EAAEH,EAAGm2C,EAAe,GAAGh2C,EAAEH,EAAGm2C,EAAe,GAAGh2C,EAAEH,GACzIva,KAAK0xD,gBAAgBh+B,aAAa,cAAe9wB,GACjD5C,KAAK2xD,gBAAgBj+B,aAAa,cAAe9wB,GACjD5C,KAAK4xD,gBAAgBl+B,aAAa,cAAe9wB,IAG/C5C,KAAKoxD,UAAYxyB,GAAe8xB,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,QAC3Kja,EAAM5C,KAAK46D,cAAclK,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,GAC9Iva,KAAKoxD,QAAQ19B,aAAa,cAAe9wB,IAGvC5C,KAAKqxD,UAAYzyB,GAAe8xB,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,QAC3Kja,EAAM5C,KAAK46D,cAAclK,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,GAC9Iva,KAAKqxD,QAAQ39B,aAAa,cAAe9wB,IAGvC5C,KAAKsxD,UAAY1yB,GAAe8xB,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,QAC3Kja,EAAM5C,KAAK46D,cAAclK,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,GAC9Iva,KAAKsxD,QAAQ59B,aAAa,cAAe9wB,IAGvC5C,KAAKyxD,UAAY7yB,GAAe8xB,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,MAAQ6zC,EAAe,IAAIh2C,EAAEmC,QAC3Kja,EAAM5C,KAAK46D,cAAclK,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,EAAGm2C,EAAe,IAAIh2C,EAAEH,GAC9Iva,KAAKyxD,QAAQ/9B,aAAa,cAAe9wB,MAwD/CivD,oBAAoB7sD,UAAUkgD,YAAc,SAAUtmB,GACpD,GAAIA,GAAe5+B,KAAKwwD,cAAc3zC,KAAM,CAI1C,IAHI+hB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,OACxD7c,KAAK+wD,eAAer9B,aAAa,eAAgB1zB,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,GAE1FqkB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,KAAM,CAC9D,IAAIy+C,EAAMt7D,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EACjDva,KAAK+xD,QAAQr+B,aAAa,cAAerY,SAAS1d,KAAK2a,MAAe,IAATgjD,EAAI,IAAW39D,KAAK2a,MAAe,IAATgjD,EAAI,IAAW39D,KAAK2a,MAAe,IAATgjD,EAAI,MAKvH,IAHI18B,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,OACxD7c,KAAK+xD,QAAQr+B,aAAa,gBAAiB1zB,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,KAEpFqkB,GAAe5+B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,MAAQ7c,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEmC,KAAM,CAC7G,IAAImrB,EAAWhoC,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAClDqE,GAAS5e,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAAI,IAAMtC,UAC1D4K,EAAImlB,EAAWrqC,KAAKygB,IAAIQ,GACxBkE,EAAIklB,EAAWrqC,KAAK2gB,IAAIM,GAC5B5e,KAAK8xD,SAASp+B,aAAa,KAAM7Q,GACjC7iB,KAAK8xD,SAASp+B,aAAa,KAAM5Q,MAgBvC,IAAIy4C,iBAAmB,GAEvB,SAASC,gBAAgBC,EAAYjL,EAAe9zB,GAClD18B,KAAKixD,aAAc,EACnBjxD,KAAKwwD,cAAgBA,EACrBxwD,KAAKy7D,WAAaA,EAClBz7D,KAAK08B,KAAOA,EACZA,EAAKk3B,aAAez3C,SAAS,KAC7BugB,EAAKk3B,aAAa3vD,YAAYy4B,EAAKqgB,cACnCrgB,EAAKk3B,aAAa3vD,YAAYy4B,EAAKm3B,oBACnCn3B,EAAKwvB,YAAcxvB,EAAKk3B,aAwF1B,SAASkB,WAAWp4B,GAClB,IAAI54B,EAMA0sD,EALA54C,EAAM8kB,EAAKxM,KAAKwrC,GAAKh/B,EAAKxM,KAAKwrC,GAAGx7D,OAAS,EAC3C+vC,EAAQ91B,kBACRg2B,EAAMH,eAAekkB,aAAajkB,GAAO,GACzC/qB,EAAQ,EAGZ,IAFAllB,KAAK27D,QAAU,GAEV73D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB0sD,EAAgB,KACW,KAAvB9zB,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,IAClBiF,GAAS,EACTsrC,EAAgB,IAAIF,cAAcngB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAC1C,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,IACzBiF,GAAS,EACTsrC,EAAgB,IAAIK,cAAc1gB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAC1C,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,GACzBuwC,EAAgB,IAAIQ,gBAAgBt0B,EAAMA,EAAK+2B,eAAe/C,eAAe5sD,IAC7C,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,IACzBiF,GAAS,EACTsrC,EAAgB,IAAIU,iBAAiB/gB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAC7C,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,IACzBiF,GAAS,EACTsrC,EAAgB,IAAIe,mBAAmBphB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAC/C,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,IACzBiF,GAAS,EACTsrC,EAAgB,IAAIqB,oBAAoB1hB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAChD,KAAvB44B,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,GAEzBuwC,EAAgB,IAAIgL,gBAAgBrrB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,GAAI44B,GAChD,KAAvBA,EAAKxM,KAAKwrC,GAAG53D,GAAGmc,KACzBiF,GAAS,EACTsrC,EAAgB,IAAIM,sBAAsB3gB,EAAKzT,EAAK+2B,eAAe/C,eAAe5sD,KAEhF0sD,GACFxwD,KAAK27D,QAAQx4D,KAAKqtD,GAGlBtrC,IACFwX,EAAKC,WAAW3G,KAAK/xB,YAAYksC,GACjCzT,EAAKqgB,aAAarpB,aAAa,SAAU,OAAShd,aAAe,IAAMu5B,EAAQ,MAE7EjwC,KAAK27D,QAAQz7D,QACfw8B,EAAKsjB,uBAAuBhgD,MAchC,SAASq+C,gBAKP,IAAIv6C,EAGJ,IAPA9D,KAAK2mD,MAAQ,GACb3mD,KAAKymD,QAAU,EACfzmD,KAAKgmD,IAAM,IAAI9nC,OACfle,KAAKqmD,GAAK,EAGVrmD,KAAK4mD,QAAU/qC,iBAAiB,UADtB,IAEL/X,EAAI,EAAGA,EAFF,GAEWA,GAAK,EACxB9D,KAAK2mD,MAAM7iD,GAAK+X,iBAAiB,UAAW,IAE9C7b,KAAK6sB,QALK,GA4BZ,SAAS+uC,iBAoET,SAASjW,eAAez1B,EAAMyM,EAAYV,GACxCj8B,KAAK2tC,UAAYhR,EAAWqnB,aAAa9zB,EAAKS,OAC9C3wB,KAAKiuC,IAAMtR,EAAWsnB,YAAY5U,SAASrvC,KAAK2tC,WAChD3tC,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GA2CrC,SAAS2pB,cAAc11B,EAAMyM,EAAYV,GACvCj8B,KAAK2vB,gBAAiB,EACtB3vB,KAAK4vB,OAASM,EAAKN,OACnB5vB,KAAK09C,gBAAkB,GACvB19C,KAAKupC,SAAWxxB,iBAAiB/X,KAAK4vB,OAAO1vB,QAC7CF,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GACnCj8B,KAAK87C,GAAK5rB,EAAK4rB,GAAK/jB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK4rB,GAAI,EAAGnf,EAAWmC,UAAW9+B,MAAQ,CAAE8vD,cAAc,GAqC9G,SAAS+L,cAAc3rC,EAAM1X,GAK3B,IAAI1U,EAJJ9D,KAAKkwB,KAAOA,EACZlwB,KAAKwY,QAAUA,EACfxY,KAAKwwB,gBAAkBxwB,KAAKkwB,KAAKM,iBAAmB,GACpDxwB,KAAK4+C,SAAW7mC,iBAAiB/X,KAAKwwB,gBAAgBtwB,QAEtD,IAAI0X,EAAM5X,KAAKwwB,gBAAgBtwB,OAC3B47D,GAAW,EACf,IAAKh4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACa,MAAjC9D,KAAKwwB,gBAAgB1sB,GAAGV,OAC1B04D,GAAW,GAEb97D,KAAK4+C,SAAS96C,GAAK68B,qBAAqB0e,aAAar/C,KAAKwY,QAASxY,KAAKwwB,gBAAgB1sB,GAAI,GAE9F9D,KAAK87D,SAAWA,EACZA,GACF97D,KAAKwY,QAAQwnC,uBAAuBhgD,MAoDxC,SAASylD,eAAev1B,EAAMyM,EAAYV,GACxCj8B,KAAK6wB,OAAS,GACd7wB,KAAKgwD,WAAa9/B,EAAKW,OACvB7wB,KAAKiwD,WAAa,GAClBjwD,KAAKmwD,UAAY,GACjBnwD,KAAKyhD,aAAe,GACpBzhD,KAAKkwD,eAAiB,GACtBlwD,KAAKowD,kBAAoB,GACzBpwD,KAAKgvD,kBAAoB,IAAIL,sBAC7B3uD,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GA8drC,SAAS4pB,eAAe31B,EAAMyM,EAAYV,GACxCj8B,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAiBrC,SAASypB,cAAcx1B,EAAMyM,EAAYV,GACvCj8B,KAAK+vD,UAAY,GACjB/vD,KAAK4zC,QAAU,EACf5zC,KAAKyzC,eAAgB,EACrBzzC,KAAK0zC,iBAAkB,EACvB1zC,KAAK2zC,iBAAkB,EACvB3zC,KAAK+7D,QAAS,EACd/7D,KAAKg8D,MAAO,EACZh8D,KAAKmzC,cAAgB,EACrBnzC,KAAKi8D,cAAgB,KACrBj8D,KAAKmxC,WAAa,SAClBnxC,KAAK0N,OAAS,CACZsuD,KAAM,gBACND,OAAQ,gBACRG,OAAQ,EACRC,OAAQ,IAEVn8D,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAmMrC,SAASmgC,aAOT,SAASC,gBAgFT,SAAS5T,cAAcv4B,EAAMyM,EAAYV,GACvCj8B,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAwBrC,SAASusB,aAAat4B,EAAMyM,EAAYV,GACtCj8B,KAAK4vB,OAASM,EAAKN,OACnB5vB,KAAK0+C,YAAcxuB,EAAKI,QACxBtwB,KAAK2vB,gBAAiB,EACtB3vB,KAAK09C,gBAAkB,GACvB19C,KAAKupC,SAAWvpC,KAAK4vB,OAAS7X,iBAAiB/X,KAAK4vB,OAAO1vB,QAAU,GACrEF,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GACnCj8B,KAAK87C,GAAK5rB,EAAK4rB,GAAK/jB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK4rB,GAAI,EAAGnf,EAAWmC,UAAW9+B,MAAQ,CAAE8vD,cAAc,GAqC9G,SAAS1H,cAAcl4B,EAAMyM,EAAYV,GAEvCj8B,KAAK6wB,OAAS,GAEd7wB,KAAKgwD,WAAa9/B,EAAKW,OAEvB7wB,KAAKiwD,WAAa,GAElBjwD,KAAKkwD,eAAiB,GAEtBlwD,KAAKmwD,UAAY,GAEjBnwD,KAAKowD,kBAAoB,GAEzBpwD,KAAKqwD,iBAAmB,GACxBrwD,KAAKs8D,gBAAkBngD,SAAS,KAChCnc,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAGnCj8B,KAAKyhD,aAAe,GACpBzhD,KAAKu8D,YAAc,CACjB15C,EAAG,OACHC,GAAI,OACJxI,EAAG,EACHlF,EAAG,GAsMP,SAASizC,aAAan4B,EAAMyM,EAAYV,GACtCj8B,KAAK+vD,UAAY,GACjB/vD,KAAKw8D,UAAY,GACjBx8D,KAAKu8D,YAAc,CACjB15C,EAAG,OACHC,GAAI,OACJxI,EAAG,EACHlF,EAAG,GAELpV,KAAKmxC,WAAa,MAClBnxC,KAAKy8D,UAAW,EAChBz8D,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GAiQrC,SAASssB,cAAcr4B,EAAMyM,EAAYV,GACvCj8B,KAAK2tC,UAAYhR,EAAWqnB,aAAa9zB,EAAKS,OAC9C3wB,KAAK4rD,YAAY17B,EAAMyM,EAAYV,GA6BrC,SAASqsB,eAAep4B,EAAMyM,EAAYV,GACxCj8B,KAAKg4B,YACLh4B,KAAK6rD,aAAa37B,EAAMyM,EAAYV,GACpCj8B,KAAKmqD,gBACL,IAAIxsB,EAAU5F,gBAAgB4F,QAY9B,GAXA39B,KAAK08D,GAAK/+B,EAAQ39B,KAAMkwB,EAAKwsC,GAAI,EAAG,EAAG18D,MACnCkwB,EAAKe,GAAGvW,EAAExJ,GACZlR,KAAKsC,GAAKq7B,EAAQ39B,KAAMkwB,EAAKe,GAAGvW,EAAEmI,EAAG,EAAG,EAAG7iB,MAC3CA,KAAKi+B,GAAKN,EAAQ39B,KAAMkwB,EAAKe,GAAGvW,EAAEoI,EAAG,EAAG,EAAG9iB,MAC3CA,KAAKk+B,GAAKP,EAAQ39B,KAAMkwB,EAAKe,GAAGvW,EAAEqI,EAAG,EAAG,EAAG/iB,OAE3CA,KAAK0a,EAAIijB,EAAQ39B,KAAMkwB,EAAKe,GAAGvW,EAAG,EAAG,EAAG1a,MAEtCkwB,EAAKe,GAAG9yB,IACV6B,KAAK7B,EAAIw/B,EAAQ39B,KAAMkwB,EAAKe,GAAG9yB,EAAG,EAAG,EAAG6B,OAEtCkwB,EAAKe,GAAGqN,GAAG7vB,EAAEvO,QAAUgwB,EAAKe,GAAGqN,GAAG7vB,EAAE,GAAGyqB,GAAI,CAC7C,IAAIp1B,EACA8T,EAAMsY,EAAKe,GAAGqN,GAAG7vB,EAAEvO,OACvB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBosB,EAAKe,GAAGqN,GAAG7vB,EAAE3K,GAAGo1B,GAAK,KACrBhJ,EAAKe,GAAGqN,GAAG7vB,EAAE3K,GAAGq1B,GAAK,KAGzBn5B,KAAKs+B,GAAKX,EAAQ39B,KAAMkwB,EAAKe,GAAGqN,GAAI,EAAGrmB,UAAWjY,MAClDA,KAAKs+B,GAAGpE,IAAK,EACbl6B,KAAKm+B,GAAKR,EAAQ39B,KAAMkwB,EAAKe,GAAGkN,GAAI,EAAGlmB,UAAWjY,MAClDA,KAAKo+B,GAAKT,EAAQ39B,KAAMkwB,EAAKe,GAAGmN,GAAI,EAAGnmB,UAAWjY,MAClDA,KAAKq+B,GAAKV,EAAQ39B,KAAMkwB,EAAKe,GAAGoN,GAAI,EAAGpmB,UAAWjY,MAClDA,KAAK2+B,IAAM,IAAIzgB,OACfle,KAAK28D,SAAW,IAAIz+C,OACpBle,KAAK+8B,eAAgB,EAGrB/8B,KAAK8pD,eAAiB,CACpBC,MAAO/pD,MA0HX,SAAS48D,YAh6DTpB,gBAAgBx2D,UAAU63D,WAAa,SAAU/3C,GAG/C,IAFA,IAAIhhB,EAAI,EACJ8T,EAAM2jD,iBAAiBr7D,OACpB4D,EAAI8T,GAAK,CACd,GAAI2jD,iBAAiBz3D,KAAOghB,EAC1B,OAAOy2C,iBAAiBz3D,GAE1BA,GAAK,EAEP,OAAO,MAGT03D,gBAAgBx2D,UAAU83D,gBAAkB,SAAUh4C,EAAMi4C,GAC1D,IAAItpC,EAAa3O,EAAKi4B,aAAatpB,WACnC,GAAKA,EAAL,CAMA,IAHA,IASIupC,EATAlD,EAAWrmC,EAAWqmC,SACtBh2D,EAAI,EACJ8T,EAAMkiD,EAAS55D,OACZ4D,EAAI8T,GACLkiD,EAASh2D,KAAOghB,EAAKi4B,cAGzBj5C,GAAK,EAGHA,GAAK8T,EAAM,IACbolD,EAAYlD,EAASh2D,EAAI,IAE3B,IAAIm5D,EAAU9gD,SAAS,OACvB8gD,EAAQvpC,aAAa,OAAQ,IAAMqpC,GAC/BC,EACFvpC,EAAW8xB,aAAa0X,EAASD,GAEjCvpC,EAAWxvB,YAAYg5D,KAI3BzB,gBAAgBx2D,UAAUk4D,iBAAmB,SAAUxgC,EAAM5X,GAC3D,IAAK9kB,KAAK68D,WAAW/3C,GAAO,CAC1B,IAAIi4C,EAAW5iD,kBACX85C,EAAS93C,SAAS,QACtB83C,EAAOvgC,aAAa,KAAM5O,EAAKq6B,SAC/B8U,EAAOvgC,aAAa,YAAa,SACjC6nC,iBAAiBp4D,KAAK2hB,GACtB,IAAIkR,EAAO0G,EAAKC,WAAW3G,KAC3BA,EAAK/xB,YAAYgwD,GACjB,IAAIkJ,EAAShhD,SAAS,UACtBghD,EAAOzpC,aAAa,KAAMqpC,GAC1B/8D,KAAK88D,gBAAgBh4C,EAAMi4C,GAC3BI,EAAOl5D,YAAY6gB,EAAKi4B,cACxB/mB,EAAK/xB,YAAYk5D,GACjB,IAAIF,EAAU9gD,SAAS,OACvB8gD,EAAQvpC,aAAa,OAAQ,IAAMqpC,GACnC9I,EAAOhwD,YAAYg5D,GACnBn4C,EAAKoL,KAAKwwB,IAAK,EACf57B,EAAK0gC,OAEP9oB,EAAKsoB,SAASlgC,EAAKq6B,UAGrBqc,gBAAgBx2D,UAAU20D,WAAa,WAKrC,IAJA,IAAIvgC,EAAMp5B,KAAKwwD,cAAcE,eAAe,GAAGh2C,EAAEH,EAC7CgvB,EAAWvpC,KAAK08B,KAAKT,KAAKsN,SAC1BzlC,EAAI,EACJ8T,EAAM2xB,EAASrpC,OACZ4D,EAAI8T,GACL2xB,EAASzlC,IAAMylC,EAASzlC,GAAGosB,KAAKkJ,MAAQA,GAC1Cp5B,KAAKk9D,iBAAiBl9D,KAAK08B,KAAM6M,EAASzlC,IAE5CA,GAAK,EAEP9D,KAAKixD,aAAc,GAGrBuK,gBAAgBx2D,UAAUkgD,YAAc,WACjCllD,KAAKixD,aACRjxD,KAAK25D,cAsDT7E,WAAW9vD,UAAUkgD,YAAc,SAAUnoB,GAC3C,IAAIj5B,EACA8T,EAAM5X,KAAK27D,QAAQz7D,OACvB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK27D,QAAQ73D,GAAGohD,YAAYnoB,IAoBhCshB,cAAcr5C,UAAU0hD,UAAY,WAClC,IAAI0W,EAA2B,EAAfp9D,KAAK6sB,QACjBwwC,EAAiBr9D,KAAK4mD,QAC1B5mD,KAAK4mD,QAAU/qC,iBAAiB,UAAWuhD,GAC3Cp9D,KAAK4mD,QAAQtyC,IAAI+oD,GACjB,IAAIv5D,EAAI,EACR,IAAKA,EAAI9D,KAAK6sB,QAAS/oB,EAAIs5D,EAAWt5D,GAAK,EACzC9D,KAAK2mD,MAAM7iD,GAAK+X,iBAAiB,UAAW,IAE9C7b,KAAK6sB,QAAUuwC,GAGjB/e,cAAcr5C,UAAU0Z,MAAQ,WAC9B1e,KAAKymD,QAAU,EACfzmD,KAAKgmD,IAAItnC,QACT1e,KAAKqmD,GAAK,GAQZuV,cAAc52D,UAAY,CACxBs4D,eAAgB,aAChBxR,oBAAqB,aACrBC,wBAAyB,WACvB/rD,KAAKkmD,cAAgBlmD,KAAK28B,WAAWupB,cACrClmD,KAAK60D,yBAA2B,IAAIuH,UAAUp8D,OAEhDisD,cAAe,aACfoH,aAAc,WACZ,IAAI12B,EAAa38B,KAAK28B,WACtB,GAAIA,EAAWkqB,YAAc7mD,KAAKkwB,KAAKqjC,GAAI,CACzC52B,EAAWkqB,UAAY7mD,KAAKkwB,KAAKqjC,GACjC,IAAID,EAAiBt2C,aAAahd,KAAKkwB,KAAKqjC,IAC5C52B,EAAWupB,cAAcqX,yBAA2BjK,IAGxDtH,2BAA4B,WAC1BhsD,KAAKo0C,YAAc,IAAIynB,cAAc77D,KAAKkwB,KAAMlwB,OAElDw9D,YAAa,WACNx9D,KAAKirD,QAAYjrD,KAAKgrD,YAAahrD,KAAKkrD,gBAC3ClrD,KAAKirD,QAAS,IAGlBwS,YAAa,WACPz9D,KAAKgrD,YAAchrD,KAAKkrD,gBAC1BlrD,KAAKirD,QAAS,EACdjrD,KAAK+8B,eAAgB,EACrB/8B,KAAKo0C,YAAYrX,eAAgB,IAGrCmoB,YAAa,WACX,IAAIllD,KAAKirD,SAAUjrD,KAAKkwB,KAAKwwB,GAA7B,CAGA1gD,KAAK2qD,kBACL3qD,KAAKyrD,mBACLzrD,KAAKqzD,eACL,IAAIqK,EAAkC,IAAjB19D,KAAKkwB,KAAKjQ,GAC/BjgB,KAAK28B,WAAW90B,SAAS0+C,KAAKmX,GAC9B19D,KAAK28B,WAAW90B,SAASi+C,aAAa9lD,KAAK8pD,eAAenrB,IAAIx3B,OAC9DnH,KAAK28B,WAAW90B,SAASs+C,WAAWnmD,KAAK8pD,eAAeC,MAAMjqC,EAAEvF,GAChEva,KAAKosD,qBACLpsD,KAAK28B,WAAW90B,SAASy+C,QAAQoX,GAC7B19D,KAAKo0C,YAAY0nB,UACnB97D,KAAK28B,WAAW90B,SAASy+C,SAAQ,GAE/BtmD,KAAK+8B,gBACP/8B,KAAK+8B,eAAgB,KAGzB70B,QAAS,WACPlI,KAAKkmD,cAAgB,KACrBlmD,KAAKkwB,KAAO,KACZlwB,KAAK28B,WAAa,KAClB38B,KAAKo0C,YAAYlsC,WAEnBgtC,QAAS,IAAIh3B,QAEf09C,cAAc52D,UAAU3G,KAAOu9D,cAAc52D,UAAUw4D,YACvD5B,cAAc52D,UAAUwgD,KAAOoW,cAAc52D,UAAUy4D,YAUvDj0C,gBAAgB,CAAC6lC,YAAalP,iBAAkByb,cAAe3b,iBAAkBC,aAAcE,mBAAoBuF,gBAEnHA,eAAe3gD,UAAU4mD,YAAcrH,gBAAgBv/C,UAAU4mD,YACjEjG,eAAe3gD,UAAUogD,aAAeX,cAAcz/C,UAAUogD,aAEhEO,eAAe3gD,UAAUinD,cAAgB,WACvC,GAAIjsD,KAAKiuC,IAAI7kC,QAAUpJ,KAAK2tC,UAAUv4B,IAAMpV,KAAKiuC,IAAI7kC,OAASpJ,KAAK2tC,UAAUrzB,IAAMta,KAAKiuC,IAAI5kC,QAAS,CACnG,IAAI2jC,EAAS3wB,UAAU,UACvB2wB,EAAO5jC,MAAQpJ,KAAK2tC,UAAUv4B,EAC9B43B,EAAO3jC,OAASrJ,KAAK2tC,UAAUrzB,EAC/B,IAMIqjD,EACAC,EAPAx/D,EAAM4uC,EAAOjY,WAAW,MAExB8oC,EAAO79D,KAAKiuC,IAAI7kC,MAChB00D,EAAO99D,KAAKiuC,IAAI5kC,OAChB00D,EAASF,EAAOC,EAChBE,EAAYh+D,KAAK2tC,UAAUv4B,EAAIpV,KAAK2tC,UAAUrzB,EAG9CktC,EAAMxnD,KAAK2tC,UAAU0oB,IAAMr2D,KAAK28B,WAAWqgB,aAAaE,yBACvD6gB,EAASC,GAAqB,mBAARxW,GAA8BuW,EAASC,GAAqB,mBAARxW,EAE7EmW,GADAC,EAAaE,GACYE,EAGzBJ,GADAD,EAAYE,GACaG,EAE3B5/D,EAAI6/D,UAAUj+D,KAAKiuC,KAAM4vB,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAG59D,KAAK2tC,UAAUv4B,EAAGpV,KAAK2tC,UAAUrzB,GACvIta,KAAKiuC,IAAMjB,IAIf2Y,eAAe3gD,UAAUonD,mBAAqB,WAC5CpsD,KAAKkmD,cAAc+X,UAAUj+D,KAAKiuC,IAAK,EAAG,IAG5C0X,eAAe3gD,UAAUkD,QAAU,WACjClI,KAAKiuC,IAAM,MAcbzkB,gBAAgB,CAACq0B,eAAgB4R,aAAcmM,eAAgBhW,eAE/DA,cAAc5gD,UAAUonD,mBAAqB,WAC3C,IAQItoD,EARA1F,EAAM4B,KAAKkmD,cAUf,IATA9nD,EAAIspD,YACJtpD,EAAI8/D,OAAO,EAAG,GACd9/D,EAAI+/D,OAAOn+D,KAAKkwB,KAAK9a,EAAG,GACxBhX,EAAI+/D,OAAOn+D,KAAKkwB,KAAK9a,EAAGpV,KAAKkwB,KAAK5V,GAClClc,EAAI+/D,OAAO,EAAGn+D,KAAKkwB,KAAK5V,GACxBlc,EAAI+/D,OAAO,EAAG,GACd//D,EAAIwpD,OAGC9jD,EADK9D,KAAK4vB,OAAO1vB,OACP,EAAG4D,GAAK,EAAGA,GAAK,GACzB9D,KAAK2vB,gBAAkB3vB,KAAKupC,SAASzlC,KACvC9D,KAAKupC,SAASzlC,GAAGohD,eAKvBU,cAAc5gD,UAAUkD,QAAU,WAChC,IAAIpE,EAEJ,IAAKA,EADK9D,KAAK4vB,OAAO1vB,OACP,EAAG4D,GAAK,EAAGA,GAAK,EACzB9D,KAAKupC,SAASzlC,IAChB9D,KAAKupC,SAASzlC,GAAGoE,UAGrBlI,KAAK4vB,OAAS,KACd5vB,KAAKupC,SAAW,MAyBlBsyB,cAAc72D,UAAUkgD,YAAc,WACpC,GAAKllD,KAAK87D,SAAV,CAGA,IAEIh4D,EAEAyf,EACAG,EACAwM,EANA/P,EAAYngB,KAAKwY,QAAQsxC,eAAenrB,IACxCvgC,EAAM4B,KAAKwY,QAAQ0tC,cAEnBtuC,EAAM5X,KAAKwwB,gBAAgBtwB,OAK/B,IADA9B,EAAIspD,YACC5jD,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,GAAqC,MAAjC9D,KAAKwwB,gBAAgB1sB,GAAGV,KAAc,CAWxC,IAAI4L,EAVAhP,KAAKwwB,gBAAgB1sB,GAAGglC,MAC1B1qC,EAAI8/D,OAAO,EAAG,GACd9/D,EAAI+/D,OAAOn+D,KAAKwY,QAAQmkB,WAAW0nB,SAASjvC,EAAG,GAC/ChX,EAAI+/D,OAAOn+D,KAAKwY,QAAQmkB,WAAW0nB,SAASjvC,EAAGpV,KAAKwY,QAAQmkB,WAAW0nB,SAAS/pC,GAChFlc,EAAI+/D,OAAO,EAAGn+D,KAAKwY,QAAQmkB,WAAW0nB,SAAS/pC,GAC/Clc,EAAI+/D,OAAO,EAAG,IAEhBjuC,EAAOlwB,KAAK4+C,SAAS96C,GAAGyW,EACxBgJ,EAAKpD,EAAUqD,kBAAkB0M,EAAK3V,EAAE,GAAG,GAAI2V,EAAK3V,EAAE,GAAG,GAAI,GAC7Dnc,EAAI8/D,OAAO36C,EAAG,GAAIA,EAAG,IAErB,IAAIyM,EAAOE,EAAKrD,QAChB,IAAK7d,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB0U,EAAMvD,EAAUyD,oBAAoBsM,EAAKpQ,EAAE9Q,EAAI,GAAIkhB,EAAKpsB,EAAEkL,GAAIkhB,EAAK3V,EAAEvL,IACrE5Q,EAAIggE,cAAc16C,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAEhEA,EAAMvD,EAAUyD,oBAAoBsM,EAAKpQ,EAAE9Q,EAAI,GAAIkhB,EAAKpsB,EAAE,GAAIosB,EAAK3V,EAAE,IACrEnc,EAAIggE,cAAc16C,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGlE1jB,KAAKwY,QAAQmkB,WAAW90B,SAAS0+C,MAAK,GACtCnoD,EAAIwpD,SAGNiU,cAAc72D,UAAUqvC,gBAAkBsK,YAAY35C,UAAUqvC,gBAEhEwnB,cAAc72D,UAAUkD,QAAU,WAChClI,KAAKwY,QAAU,MAmBjBgR,gBAAgB,CAAC6lC,YAAalP,iBAAkByb,cAAerM,cAAetP,iBAAkBC,aAAcE,mBAAoBqF,gBAElIA,eAAezgD,UAAU4mD,YAAcvL,qBAAqBr7C,UAAU4mD,YAEtEnG,eAAezgD,UAAUq5D,gBAAkB,CAAEhF,QAAS,EAAG5O,QAAQ,GAEjEhF,eAAezgD,UAAUs5D,aAAe,GAExC7Y,eAAezgD,UAAUinD,cAAgB,WACvCjsD,KAAK03D,aAAa13D,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKyhD,cAAc,EAAM,KAG9EgE,eAAezgD,UAAU+yD,mBAAqB,SAAU7nC,EAAM26B,GAC5D,IAAIkD,EAAY,CACd79B,KAAMA,EACN1xB,KAAM0xB,EAAKjQ,GACXs+C,cAAev+D,KAAKgvD,kBAAkBG,qBAAqBtE,GAC3DA,WAAY,GACZthB,SAAU,GACV9c,QAAoB,IAAZyD,EAAKwwB,IAEXsX,EAAc,GAclB,GAbgB,OAAZ9nC,EAAKjQ,IAA2B,OAAZiQ,EAAKjQ,IAC3B+3C,EAAYj4D,EAAIg4B,gBAAgB4F,QAAQ39B,KAAMkwB,EAAKnwB,EAAG,EAAG,IAAKC,MACzDg4D,EAAYj4D,EAAE0O,IACjBs/C,EAAUyQ,GAAK,OAASlnD,QAAQ0gD,EAAYj4D,EAAEwa,EAAE,IAAM,IAAMjD,QAAQ0gD,EAAYj4D,EAAEwa,EAAE,IAAM,IAAMjD,QAAQ0gD,EAAYj4D,EAAEwa,EAAE,IAAM,MAE3G,OAAZ2V,EAAKjQ,IAA2B,OAAZiQ,EAAKjQ,KAClC+3C,EAAY9mD,EAAI6mB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAKhf,EAAG,EAAG,KAAMlR,MAC/Dg4D,EAAYj3D,EAAIg3B,gBAAgB4F,QAAQ39B,KAAMkwB,EAAKnvB,EAAG,EAAG,KAAMf,MAC/Dg4D,EAAY19C,EAAIyd,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK5V,GAAK,CAAE7L,EAAG,GAAK,EAAG,IAAMzO,MAC3Eg4D,EAAY75D,EAAI45B,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK/xB,GAAK,CAAEsQ,EAAG,GAAK,EAAGwJ,UAAWjY,MAChFg4D,EAAYv9C,EAAI,IAAIqqB,iBAAiB9kC,KAAMkwB,EAAKzV,EAAGza,OAErDg4D,EAAYl4C,EAAIiY,gBAAgB4F,QAAQ39B,KAAMkwB,EAAKpQ,EAAG,EAAG,IAAM9f,MAC/C,OAAZkwB,EAAKjQ,IAA2B,OAAZiQ,EAAKjQ,IAU3B,GATA8tC,EAAUkK,GAAKj4D,KAAKm1D,OAAOjlC,EAAK+nC,KAAO,QACvClK,EAAUmK,GAAKl4D,KAAKo1D,OAAOllC,EAAKgoC,KAAO,QACxB,GAAXhoC,EAAKgoC,KACPnK,EAAUoK,GAAKjoC,EAAKioC,IAEtBH,EAAY5iD,EAAI2iB,gBAAgB4F,QAAQ39B,KAAMkwB,EAAK9a,EAAG,EAAG,KAAMpV,MAC1Dg4D,EAAY5iD,EAAE3G,IACjBs/C,EAAU0Q,GAAKzG,EAAY5iD,EAAEmF,GAE3B2V,EAAKpV,EAAG,CACV,IAAIA,EAAI,IAAI2pB,aAAazkC,KAAMkwB,EAAKpV,EAAG,SAAU9a,MACjDg4D,EAAYl9C,EAAIA,EACXk9C,EAAYl9C,EAAErM,IACjBs/C,EAAU2Q,GAAK1G,EAAYl9C,EAAE8pB,UAC7BmpB,EAAU4Q,GAAK3G,EAAYl9C,EAAE+pB,WAAW,UAI5CkpB,EAAUvzC,EAAe,IAAX0V,EAAK1V,EAAU,UAAY,UAI3C,OAFAxa,KAAKiwD,WAAW9sD,KAAK4qD,GACrBiK,EAAYj0D,MAAQgqD,EACbiK,GAGTvS,eAAezgD,UAAUqzD,mBAAqB,WAK5C,MAJkB,CAChBl3D,GAAI,GACJsgD,aAAc,KAKlBgE,eAAezgD,UAAUszD,uBAAyB,SAAUpoC,GAU1D,MATkB,CAChB/P,UAAW,CACTk5C,QAAS,EACT5O,QAAQ,EACR9rD,IAAKqB,KAAKgvD,kBAAkBqD,YAC5B7nB,GAAIzS,gBAAgB4F,QAAQ39B,KAAMkwB,EAAKpQ,EAAG,EAAG,IAAM9f,MACnD+qC,OAAQnN,yBAAyByB,qBAAqBr/B,KAAMkwB,EAAMlwB,SAMxEylD,eAAezgD,UAAUwzD,mBAAqB,SAAUtoC,GACtD,IAAI8nC,EAAc,IAAIjJ,YAAY/uD,KAAMkwB,EAAMlwB,KAAKiwD,WAAYjwD,KAAKgvD,mBAIpE,OAFAhvD,KAAK6wB,OAAO1tB,KAAK60D,GACjBh4D,KAAK+0D,oBAAoBiD,GAClBA,GAGTvS,eAAezgD,UAAUqlC,aAAe,WAEtC,IAAIvmC,EADJ9D,KAAK+8B,eAAgB,EAErB,IAAInlB,EAAM5X,KAAKmwD,UAAUjwD,OACzB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKyhD,aAAa39C,GAAK9D,KAAKmwD,UAAUrsD,GAIxC,IAFA9D,KAAK03D,aAAa13D,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKyhD,cAAc,EAAM,IAC5E7pC,EAAM5X,KAAKyc,kBAAkBvc,OACxB4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKyc,kBAAkB3Y,GAAGgZ,WAE5B9c,KAAKk1D,kBACLl1D,KAAKgvD,kBAAkBoD,iBAAiBpyD,KAAK+8B,gBAG/C0oB,eAAezgD,UAAU45D,wBAA0B,SAAUz+C,GAC3D,IAAIrc,EACA8T,EAAM5X,KAAKiwD,WAAW/vD,OAC1B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnB9D,KAAKiwD,WAAWnsD,GAAG2oB,QACtBzsB,KAAKiwD,WAAWnsD,GAAG+mD,WAAW1nD,KAAKgd,IAKzCslC,eAAezgD,UAAU65D,6BAA+B,WACtD,IAAI/6D,EACA8T,EAAM5X,KAAKiwD,WAAW/vD,OAC1B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACnB9D,KAAKiwD,WAAWnsD,GAAG2oB,QACtBzsB,KAAKiwD,WAAWnsD,GAAG+mD,WAAW/jB,OAKpC2e,eAAezgD,UAAU85D,YAAc,SAAUjsC,GAC/C,IAAI/uB,EACA8T,EAAMib,EAAO3yB,OACjB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB+uB,EAAO/uB,GAAG2oB,QAAS,GAIvBg5B,eAAezgD,UAAU0yD,aAAe,SAAU37C,EAAKo0C,EAAW1O,EAAcsd,EAAclU,GAC5F,IAAI/mD,EAEAkL,EACAghB,EAGA8oC,EACAD,EACAD,EAPAhhD,EAAMmE,EAAI7b,OAAS,EAGnB64D,EAAY,GACZC,EAAe,GAIfgG,EAAgB,GAAGx8D,OAAOqoD,GAC9B,IAAK/mD,EAAI8T,EAAK9T,GAAK,EAAGA,GAAK,EAAG,CAO5B,IANAg1D,EAAe94D,KAAKq1D,uBAAuBt5C,EAAIjY,KAI7CqsD,EAAUrsD,GAAK29C,EAAaqX,EAAe,GAF3C/8C,EAAIjY,GAAGm7D,cAAgBF,EAIP,OAAdhjD,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,GACtE64C,EAGH3I,EAAUrsD,GAAGC,MAAM0oB,QAAS,EAF5B0jC,EAAUrsD,GAAK9D,KAAK+3D,mBAAmBh8C,EAAIjY,GAAIk7D,GAKjDjG,EAAU51D,KAAKgtD,EAAUrsD,GAAGC,YACvB,GAAkB,OAAdgY,EAAIjY,GAAGmc,GAAa,CAC7B,GAAK64C,EAIH,IADA9oC,EAAOmgC,EAAUrsD,GAAG3C,GAAGjB,OAClB8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzBmhD,EAAUrsD,GAAG29C,aAAazyC,GAAKmhD,EAAUrsD,GAAG3C,GAAG6N,QAJjDmhD,EAAUrsD,GAAK9D,KAAKq4D,mBAAmBt8C,EAAIjY,IAO7C9D,KAAK03D,aAAa37C,EAAIjY,GAAG3C,GAAIgvD,EAAUrsD,GAAG3C,GAAIgvD,EAAUrsD,GAAG29C,aAAcsd,EAAcC,OAChE,OAAdjjD,EAAIjY,GAAGmc,IACX64C,IACHF,EAAmB54D,KAAKs4D,uBAAuBv8C,EAAIjY,IACnDqsD,EAAUrsD,GAAK80D,GAEjBoG,EAAc77D,KAAKgtD,EAAUrsD,IAC7B9D,KAAK4+D,wBAAwBzO,EAAUrsD,KAChB,OAAdiY,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,GAC7E64C,IACH3I,EAAUrsD,GAAK9D,KAAKw4D,mBAAmBz8C,EAAIjY,KAEtB,OAAdiY,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IAA6B,OAAdlE,EAAIjY,GAAGmc,IACvD64C,GAMHD,EAAW1I,EAAUrsD,IACZ2oB,QAAS,IANlBosC,EAAW90B,eAAeG,YAAYnoB,EAAIjY,GAAGmc,KACpCwgB,KAAKzgC,KAAM+b,EAAIjY,IACxBqsD,EAAUrsD,GAAK+0D,EACf74D,KAAKkwD,eAAe/sD,KAAK01D,IAK3BG,EAAa71D,KAAK01D,IACK,OAAd98C,EAAIjY,GAAGmc,KACX64C,GAOHD,EAAW1I,EAAUrsD,IACZ2oB,QAAS,GAPlBosC,EAAW90B,eAAeG,YAAYnoB,EAAIjY,GAAGmc,IAC7CkwC,EAAUrsD,GAAK+0D,EACfA,EAASp4B,KAAKzgC,KAAM+b,EAAKjY,EAAGqsD,GAC5BnwD,KAAKkwD,eAAe/sD,KAAK01D,GACzBkG,GAAe,GAKjB/F,EAAa71D,KAAK01D,IAEpB74D,KAAKs1D,oBAAoBv5C,EAAIjY,GAAIA,EAAI,GAKvC,IAHA9D,KAAK6+D,+BACL7+D,KAAK8+D,YAAY/F,GACjBnhD,EAAMohD,EAAa94D,OACd4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBk1D,EAAal1D,GAAG2oB,QAAS,GAI7Bg5B,eAAezgD,UAAUonD,mBAAqB,WAC5CpsD,KAAKq+D,gBAAgBhF,QAAU,EAC/Br5D,KAAKq+D,gBAAgB5T,QAAS,EAC9BzqD,KAAKk1D,kBACLl1D,KAAKgvD,kBAAkBoD,iBAAiBpyD,KAAK+8B,eAC7C/8B,KAAKi5D,YAAYj5D,KAAKq+D,gBAAiBr+D,KAAKgwD,WAAYhwD,KAAKmwD,WAAW,IAG1E1K,eAAezgD,UAAUk6D,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgB1U,QAAU2U,EAAe50B,GAAG3tB,MAAQ7c,KAAK+8B,iBAC3DqiC,EAAe/F,QAAU8F,EAAgB9F,QACzC+F,EAAe/F,SAAW+F,EAAe50B,GAAGjwB,EAC5C6kD,EAAe3U,QAAS,IAI5BhF,eAAezgD,UAAUq6D,UAAY,WACnC,IAAIv7D,EAEAkL,EACAghB,EACAvhB,EACAwhB,EACAqa,EACAg1B,EAGA9gE,EACA+gE,EAVA3nD,EAAM5X,KAAKiwD,WAAW/vD,OAOtB2H,EAAW7H,KAAK28B,WAAW90B,SAC3BzJ,EAAM4B,KAAK28B,WAAWupB,cAG1B,IAAKpiD,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EASxB,IAAiB,QAPjBtF,GADA+gE,EAAev/D,KAAKiwD,WAAWnsD,IACXtF,OAOc,OAATA,GAAsC,IAApB+gE,EAAad,KAAcc,EAAarvC,KAAK+uC,eAAuC,IAAtBM,EAAaC,MAAqD,IAAvCx/D,KAAK28B,WAAWwhB,mBAA2B,CAkB7K,IAjBAt2C,EAAS0+C,OACTjc,EAAQi1B,EAAah2B,SACR,OAAT/qC,GAA0B,OAATA,GACnBJ,EAAIqhE,YAAuB,OAATjhE,EAAgB+gE,EAAaf,GAAKe,EAAaG,IACjEthE,EAAIs6C,UAAY6mB,EAAad,GAC7BrgE,EAAIuhE,QAAUJ,EAAatH,GAC3B75D,EAAIwhE,SAAWL,EAAarH,GAC5B95D,EAAIyhE,WAAaN,EAAapH,IAAM,GAEpC/5D,EAAI6uC,UAAqB,OAATzuC,EAAgB+gE,EAAaf,GAAKe,EAAaG,IAEjE73D,EAASs+C,WAAWoZ,EAAaC,MACpB,OAAThhE,GAA0B,OAATA,GACnBJ,EAAIspD,YAEN7/C,EAASi+C,aAAayZ,EAAahB,cAAczU,eAAe3iD,OAChE6oB,EAAOsa,EAAMpqC,OACR8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAW5B,IAVa,OAATxQ,GAA0B,OAATA,IACnBJ,EAAIspD,YACA6X,EAAab,KACftgE,EAAI0hE,YAAYP,EAAab,IAC7BtgE,EAAI2hE,eAAiBR,EAAaZ,KAItC1uC,GADAqvC,EAAQh1B,EAAMt7B,GAAGogD,SACJlvD,OAERuO,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACN,MAAf6wD,EAAM7wD,GAAGmM,EACXxc,EAAI8/D,OAAOoB,EAAM7wD,GAAGiM,EAAE,GAAI4kD,EAAM7wD,GAAGiM,EAAE,IACb,MAAf4kD,EAAM7wD,GAAGmM,EAClBxc,EAAIggE,cAAckB,EAAM7wD,GAAGiV,IAAI,GAAI47C,EAAM7wD,GAAGiV,IAAI,GAAI47C,EAAM7wD,GAAGiV,IAAI,GAAI47C,EAAM7wD,GAAGiV,IAAI,GAAI47C,EAAM7wD,GAAGiV,IAAI,GAAI47C,EAAM7wD,GAAGiV,IAAI,IAEpHtlB,EAAIupD,YAGK,OAATnpD,GAA0B,OAATA,IACnBJ,EAAI29D,SACAwD,EAAab,IACftgE,EAAI0hE,YAAY9/D,KAAKs+D,eAId,OAAT9/D,GAA0B,OAATA,GACnBJ,EAAI49D,KAAKuD,EAAa/kD,GAExB3S,EAASy+C,YAKfb,eAAezgD,UAAUi0D,YAAc,SAAUkG,EAAiBr1B,EAAO5Z,EAAM8vC,GAC7E,IAAIl8D,EAEAs7D,EAEJ,IADAA,EAAiBD,EACZr7D,EAHKgmC,EAAM5pC,OAAS,EAGX4D,GAAK,EAAGA,GAAK,EACL,OAAhBgmC,EAAMhmC,GAAGmc,IACXm/C,EAAiBlvC,EAAKpsB,GAAGqc,UACzBngB,KAAKk/D,qBAAqBC,EAAiBC,IAClB,OAAhBt1B,EAAMhmC,GAAGmc,IAA+B,OAAhB6pB,EAAMhmC,GAAGmc,IAA+B,OAAhB6pB,EAAMhmC,GAAGmc,IAA+B,OAAhB6pB,EAAMhmC,GAAGmc,GAC1FjgB,KAAKytD,WAAW3jB,EAAMhmC,GAAIosB,EAAKpsB,IACN,OAAhBgmC,EAAMhmC,GAAGmc,GAClBjgB,KAAK8tD,WAAWhkB,EAAMhmC,GAAIosB,EAAKpsB,GAAIs7D,GACV,OAAhBt1B,EAAMhmC,GAAGmc,GAClBjgB,KAAKkuD,aAAapkB,EAAMhmC,GAAIosB,EAAKpsB,GAAIs7D,GACZ,OAAhBt1B,EAAMhmC,GAAGmc,IAA+B,OAAhB6pB,EAAMhmC,GAAGmc,GAC1CjgB,KAAKigE,mBAAmBn2B,EAAMhmC,GAAIosB,EAAKpsB,GAAIs7D,GAClB,OAAhBt1B,EAAMhmC,GAAGmc,GAClBjgB,KAAKi5D,YAAYmG,EAAgBt1B,EAAMhmC,GAAG3C,GAAI+uB,EAAKpsB,GAAG3C,IAC7C2oC,EAAMhmC,GAAGmc,GAIlB+/C,GACFhgE,KAAKq/D,aAIT5Z,eAAezgD,UAAUk7D,kBAAoB,SAAUhR,EAAa3pB,GAClE,GAAIvlC,KAAK+8B,eAAiBwI,EAAM1oB,MAAQqyC,EAAYrE,WAAWhuC,KAAM,CACnE,IAEI/Y,EACA8T,EACA5I,EAJAmxD,EAAajR,EAAYE,QACzBn9B,EAAQsT,EAAMtT,MAIdjC,EAAOiC,EAAMpF,QACjBszC,EAAWjgE,OAAS,EACpB,IAAIkgE,EAAoBlR,EAAYrE,WAAWf,eAC/C,IAAK96C,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAC5B,IAAIk8B,EAAYjZ,EAAMpB,OAAO7hB,GAC7B,GAAIk8B,GAAaA,EAAU3wB,EAAG,CAE5B,IADA3C,EAAMszB,EAAUre,QACX/oB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACd,IAANA,GACFq8D,EAAWh9D,KAAK,CACdyX,EAAG,IACHF,EAAG0lD,EAAkB58C,kBAAkB0nB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,KAGjF4lD,EAAWh9D,KAAK,CACdyX,EAAG,IACH8I,IAAK08C,EAAkBx8C,oBAAoBsnB,EAAUprB,EAAEhc,EAAI,GAAIonC,EAAUpnC,EAAEA,GAAIonC,EAAU3wB,EAAEzW,MAGnF,IAAR8T,GACFuoD,EAAWh9D,KAAK,CACdyX,EAAG,IACHF,EAAG0lD,EAAkB58C,kBAAkB0nB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,KAG7E2wB,EAAUnrC,GAAK6X,IACjBuoD,EAAWh9D,KAAK,CACdyX,EAAG,IACH8I,IAAK08C,EAAkBx8C,oBAAoBsnB,EAAUprB,EAAEhc,EAAI,GAAIonC,EAAUpnC,EAAE,GAAIonC,EAAU3wB,EAAE,MAE7F4lD,EAAWh9D,KAAK,CACdyX,EAAG,QAKXs0C,EAAYE,QAAU+Q,IAI1B1a,eAAezgD,UAAUyoD,WAAa,SAAUz7B,EAAUw7B,GACxD,IAAoB,IAAhBx7B,EAAS0uB,IAAe1uB,EAASitC,cAAe,CAClD,IAAIn7D,EACA8T,EAAM41C,EAASyB,aAAa/uD,OAChC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKkgE,kBAAkB1S,EAASyB,aAAanrD,GAAI0pD,EAAStzB,MAKhEurB,eAAezgD,UAAU8oD,WAAa,SAAUP,EAAWC,EAAU4R,GACnE,IAAIrR,EAAYP,EAASzpD,OAErBypD,EAASztD,EAAE8c,MAAQ7c,KAAK+8B,iBAC1BgxB,EAAUyQ,GAAK,OACTlnD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAC3BjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAC3BjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,MAE/BizC,EAAS1tC,EAAEjD,MAAQuiD,EAAe3U,QAAUzqD,KAAK+8B,iBACnDgxB,EAAUyR,KAAOhS,EAAS1tC,EAAEvF,EAAI6kD,EAAe/F,UAInD5T,eAAezgD,UAAUi7D,mBAAqB,SAAU1S,EAAWC,EAAU4R,GAC3E,IACIM,EADA3R,EAAYP,EAASzpD,MAEzB,IAAKgqD,EAAU2R,KAAOlS,EAAS/yC,EAAEoC,MAAQ2wC,EAASt8C,EAAE2L,MAAQ2wC,EAASzsD,EAAE8b,MAAyB,IAAhB0wC,EAAU3yC,IAAY4yC,EAASlzC,EAAEuC,MAAQ2wC,EAASrvD,EAAE0e,MAAQ,CAC1I,IAqBI/Y,EArBA1F,EAAM4B,KAAK28B,WAAWupB,cACtBriC,EAAM2pC,EAASt8C,EAAEqJ,EACjBuJ,EAAM0pC,EAASzsD,EAAEwZ,EACrB,GAAoB,IAAhBgzC,EAAU3yC,EACZ8kD,EAAMthE,EAAIiiE,qBAAqBx8C,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,IAAI+e,EAAMllC,KAAK0Z,KAAK1Z,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,GAAKnmB,KAAKwZ,IAAI0M,EAAI,GAAKC,EAAI,GAAI,IACzE0qC,EAAM7wD,KAAK88B,MAAM3W,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAE/C0K,EAAUi/B,EAASlzC,EAAEC,EACrBgU,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAEb,IAAIkgC,EAAO5rB,EAAMtU,EACb1L,EAAIllB,KAAKygB,IAAIowC,EAAMhB,EAASrvD,EAAEoc,GAAKk0C,EAAO5qC,EAAI,GAC9Cf,EAAInlB,KAAK2gB,IAAIkwC,EAAMhB,EAASrvD,EAAEoc,GAAKk0C,EAAO5qC,EAAI,GAClD67C,EAAMthE,EAAIkiE,qBAAqBz9C,EAAGC,EAAG,EAAGe,EAAI,GAAIA,EAAI,GAAIgf,GAI1D,IAAIjrB,EAAM21C,EAAU9yC,EAAEC,EAClB4zC,EAAUd,EAAS/yC,EAAE1a,EACrBs5D,EAAU,EAEd,IAAKv1D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpB0pD,EAAS/yC,EAAE2qB,aAAeooB,EAAS/yC,EAAEyqB,eACvCm0B,EAAU7L,EAAS/yC,EAAEqF,EAAM,EAAJhc,EAAQ,IAEjC47D,EAAIa,aAAajS,EAAY,EAAJxqD,GAAS,IAAK,QAAUwqD,EAAY,EAAJxqD,EAAQ,GAAK,IAAMwqD,EAAY,EAAJxqD,EAAQ,GAAK,IAAMwqD,EAAY,EAAJxqD,EAAQ,GAAK,IAAMu1D,EAAU,KAE9ItL,EAAU2R,IAAMA,EAElB3R,EAAUyR,KAAOhS,EAAS1tC,EAAEvF,EAAI6kD,EAAe/F,SAGjD5T,eAAezgD,UAAUkpD,aAAe,SAAUX,EAAWC,EAAU4R,GACrE,IAAIrR,EAAYP,EAASzpD,MACrB+W,EAAI0yC,EAAS1yC,EACbA,IAAMA,EAAE+B,MAAQ7c,KAAK+8B,iBACvBgxB,EAAU2Q,GAAK5jD,EAAE8pB,UACjBmpB,EAAU4Q,GAAK7jD,EAAE+pB,WAAW,KAE1B2oB,EAASztD,EAAE8c,MAAQ7c,KAAK+8B,iBAC1BgxB,EAAUyQ,GAAK,OAASlnD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,IAAMjD,QAAQk2C,EAASztD,EAAEwa,EAAE,IAAM,MAEnHizC,EAAS1tC,EAAEjD,MAAQuiD,EAAe3U,QAAUzqD,KAAK+8B,iBACnDgxB,EAAUyR,KAAOhS,EAAS1tC,EAAEvF,EAAI6kD,EAAe/F,UAE7C7L,EAASp4C,EAAEyH,MAAQ7c,KAAK+8B,iBAC1BgxB,EAAU0Q,GAAKjR,EAASp4C,EAAEmF,IAI9BkrC,eAAezgD,UAAUkD,QAAU,WACjClI,KAAKgwD,WAAa,KAClBhwD,KAAK28B,WAAa,KAClB38B,KAAKkmD,cAAgB,KACrBlmD,KAAKiwD,WAAW/vD,OAAS,EACzBF,KAAKmwD,UAAUjwD,OAAS,GAS1BspB,gBAAgB,CAAC6lC,YAAalP,iBAAkByb,cAAe3b,iBAAkBC,aAAcE,mBAAoByF,gBAEnHA,eAAe7gD,UAAU4mD,YAAcrH,gBAAgBv/C,UAAU4mD,YACjE/F,eAAe7gD,UAAUogD,aAAeX,cAAcz/C,UAAUogD,aAEhES,eAAe7gD,UAAUonD,mBAAqB,WAC5C,IAAIhuD,EAAM4B,KAAKkmD,cACf9nD,EAAI6uC,UAAYjtC,KAAKkwB,KAAK6G,GAC1B34B,EAAI8uC,SAAS,EAAG,EAAGltC,KAAKkwB,KAAKiiB,GAAInyC,KAAKkwB,KAAKgK,KA0B7C1Q,gBAAgB,CAAC6lC,YAAalP,iBAAkByb,cAAe3b,iBAAkBC,aAAcE,kBAAmBoP,cAAe9J,eAEjIA,cAAc1gD,UAAU0vB,QAAUrY,UAAU,UAAU0Y,WAAW,MAEjE2wB,cAAc1gD,UAAUwwD,aAAe,WACrC,IAAI7jC,EAAe3xB,KAAKu6C,aAAaxH,YACrC/yC,KAAK6xC,gBAAkB95B,iBAAiB4Z,EAAaxgB,EAAIwgB,EAAaxgB,EAAEjR,OAAS,GAEjF,IAAIsgE,GAAU,EACV7uC,EAAaygB,IACfouB,GAAU,EACVxgE,KAAK0N,OAAOsuD,KAAOh8D,KAAK81D,WAAWnkC,EAAaygB,KAEhDpyC,KAAK0N,OAAOsuD,KAAO,gBAErBh8D,KAAKg8D,KAAOwE,EACZ,IAAIC,GAAY,EACZ9uC,EAAaoF,KACf0pC,GAAY,EACZzgE,KAAK0N,OAAOquD,OAAS/7D,KAAK81D,WAAWnkC,EAAaoF,IAClD/2B,KAAK0N,OAAOwuD,OAASvqC,EAAawgB,IAEpC,IACIruC,EACA8T,EAOA0gC,EACAhsB,EACA7d,EACAwhB,EACAY,EACA7hB,EACAghB,EACAkb,EACAw1B,EACAC,EAlBA/tC,EAAW5yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GAGlEw0C,EAAUzjB,EAAaxgB,EACvB8jC,EAAej1C,KAAKk1C,QACxBl1C,KAAK+7D,OAAS0E,EACdzgE,KAAK0N,OAAOyuD,OAASxqC,EAAakiB,UAAY,MAAQ7zC,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GAAGg0B,QAChHhd,EAAM+Z,EAAamiB,UAAU5zC,OAY7B,IAAI4wB,EAAc9wB,KAAKkwB,KAAKY,YACxB8nB,EAAmC,KAAlBjnB,EAAa0W,GAAa1W,EAAakiB,UACxDU,EAAO,EACPC,EAAO,EACPiB,GAAY,EACZ/U,EAAM,EACV,IAAK58B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAkB3B,IAhBAwoB,GADAgsB,EAAWt4C,KAAK28B,WAAW7M,YAAYoH,YAAYvF,EAAamiB,UAAUhwC,GAAI8uB,EAASE,OAAQ9yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GAAGg0B,WAChI0jB,EAASpoB,MAAS,GAC3C+kB,EAAav2B,QACToS,GAAeskB,EAAQtxC,GAAG+b,IAC5B00B,GAAQqE,EACRpE,GAAQ7iB,EAAaiiB,QACrBY,GAAQiB,EAAY,EAAI,EACxBA,GAAY,GAIdzlB,GADAa,EAASvE,EAAUuE,OAASvE,EAAUuE,OAAO,GAAG1vB,GAAK,IACvCjB,OACd+0C,EAAax1B,MAAMkS,EAAakiB,UAAY,IAAKliB,EAAakiB,UAAY,KACtE/iB,GACF9wB,KAAK41D,4BAA4BjkC,EAAcsjB,EAAcG,EAAQtxC,GAAGkzC,KAAMzC,EAAMC,GAEtFksB,EAAW3oD,iBAAiBiY,GACvBhhB,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAAG,CAI5B,IAHAihB,EAAOY,EAAO7hB,GAAGiiB,GAAGxiB,EAAE3K,EAAE5D,OACxBgrC,EAAYra,EAAO7hB,GAAGiiB,GAAGxiB,EACzBkyD,EAAU,GACLlyD,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACf,IAANA,GACFkyD,EAAQx9D,KAAK8xC,EAAajyB,SAASkoB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,GAAI06B,EAAahyB,SAASioB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,IAE3IomD,EAAQx9D,KAAK8xC,EAAajyB,SAASkoB,EAAUprB,EAAErR,EAAI,GAAG,GAAIy8B,EAAUprB,EAAErR,EAAI,GAAG,GAAI,GAAIwmC,EAAahyB,SAASioB,EAAUprB,EAAErR,EAAI,GAAG,GAAIy8B,EAAUprB,EAAErR,EAAI,GAAG,GAAI,GAAIwmC,EAAajyB,SAASkoB,EAAUpnC,EAAE2K,GAAG,GAAIy8B,EAAUpnC,EAAE2K,GAAG,GAAI,GAAIwmC,EAAahyB,SAASioB,EAAUpnC,EAAE2K,GAAG,GAAIy8B,EAAUpnC,EAAE2K,GAAG,GAAI,GAAIwmC,EAAajyB,SAASkoB,EAAU3wB,EAAE9L,GAAG,GAAIy8B,EAAU3wB,EAAE9L,GAAG,GAAI,GAAIwmC,EAAahyB,SAASioB,EAAU3wB,EAAE9L,GAAG,GAAIy8B,EAAU3wB,EAAE9L,GAAG,GAAI,IAE3ZkyD,EAAQx9D,KAAK8xC,EAAajyB,SAASkoB,EAAUprB,EAAErR,EAAI,GAAG,GAAIy8B,EAAUprB,EAAErR,EAAI,GAAG,GAAI,GAAIwmC,EAAahyB,SAASioB,EAAUprB,EAAErR,EAAI,GAAG,GAAIy8B,EAAUprB,EAAErR,EAAI,GAAG,GAAI,GAAIwmC,EAAajyB,SAASkoB,EAAUpnC,EAAE,GAAG,GAAIonC,EAAUpnC,EAAE,GAAG,GAAI,GAAImxC,EAAahyB,SAASioB,EAAUpnC,EAAE,GAAG,GAAIonC,EAAUpnC,EAAE,GAAG,GAAI,GAAImxC,EAAajyB,SAASkoB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,GAAI06B,EAAahyB,SAASioB,EAAU3wB,EAAE,GAAG,GAAI2wB,EAAU3wB,EAAE,GAAG,GAAI,IACzZmmD,EAAS1xD,GAAK2xD,EAEZ7vC,IACFyjB,GAAQa,EAAQtxC,GAAGqN,EACnBojC,GAAQqE,GAEN54C,KAAK+vD,UAAUrvB,GACjB1gC,KAAK+vD,UAAUrvB,GAAKhE,KAAOgkC,EAE3B1gE,KAAK+vD,UAAUrvB,GAAO,CAAEhE,KAAMgkC,GAEhChgC,GAAO,IAIXglB,cAAc1gD,UAAUonD,mBAAqB,WAC3C,IAUItoD,EACA8T,EACA5I,EACAghB,EACAvhB,EACAwhB,EAfA7xB,EAAM4B,KAAKkmD,cACf9nD,EAAIm1B,KAAOvzB,KAAK0N,OAAOyuD,OACvB/9D,EAAIuhE,QAAU,OACdvhE,EAAIwhE,SAAW,QACfxhE,EAAIyhE,WAAa,EAEZ7/D,KAAKkwB,KAAKY,aACb9wB,KAAKu1D,aAAajhB,YAAYt0C,KAAKu6C,aAAaxH,YAAa/yC,KAAK8xC,oBASpE,IAKIulB,EALAxlB,EAAkB7xC,KAAKu1D,aAAa1jB,gBAEpCuD,EAAUp1C,KAAKu6C,aAAaxH,YAAY5hC,EAE5CyG,EAAMw9B,EAAQl1C,OAEd,IAGIwgE,EACAC,EAJAC,EAAW,KACXC,EAAa,KACbC,EAAc,KAGlB,IAAKh9D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB,IAAKsxC,EAAQtxC,GAAG+b,EAAG,CAOjB,IANAw3C,EAAiBxlB,EAAgB/tC,MAE/B9D,KAAK28B,WAAW90B,SAAS0+C,OACzBvmD,KAAK28B,WAAW90B,SAASi+C,aAAauR,EAAe38C,GACrD1a,KAAK28B,WAAW90B,SAASs+C,WAAWkR,EAAev3C,IAEjD9f,KAAKg8D,KAAM,CAab,IAZI3E,GAAkBA,EAAejlB,GAC/BwuB,IAAavJ,EAAejlB,KAC9BwuB,EAAWvJ,EAAejlB,GAC1Bh0C,EAAI6uC,UAAYoqB,EAAejlB,IAExBwuB,IAAa5gE,KAAK0N,OAAOsuD,OAClC4E,EAAW5gE,KAAK0N,OAAOsuD,KACvB59D,EAAI6uC,UAAYjtC,KAAK0N,OAAOsuD,MAG9BhsC,GADA0wC,EAAW1gE,KAAK+vD,UAAUjsD,GAAG44B,MACbx8B,OAChBF,KAAK28B,WAAWupB,cAAcwB,YACzB14C,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAIzB,IAFAihB,GADA0wC,EAAUD,EAAS1xD,IACJ9O,OACfF,KAAK28B,WAAWupB,cAAcgY,OAAOyC,EAAQ,GAAIA,EAAQ,IACpDlyD,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzBzO,KAAK28B,WAAWupB,cAAckY,cAAcuC,EAAQlyD,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,IAGxIzO,KAAK28B,WAAWupB,cAAcyB,YAC9B3nD,KAAK28B,WAAWupB,cAAc8V,OAGhC,GAAIh8D,KAAK+7D,OAAQ,CAsBf,IArBI1E,GAAkBA,EAAellB,GAC/B2uB,IAAgBzJ,EAAellB,KACjC2uB,EAAczJ,EAAellB,GAC7B/zC,EAAIs6C,UAAY2e,EAAellB,IAExB2uB,IAAgB9gE,KAAK0N,OAAOwuD,SACrC4E,EAAc9gE,KAAK0N,OAAOwuD,OAC1B99D,EAAIs6C,UAAY14C,KAAK0N,OAAOwuD,QAE1B7E,GAAkBA,EAAetgC,GAC/B8pC,IAAexJ,EAAetgC,KAChC8pC,EAAaxJ,EAAetgC,GAC5B34B,EAAIqhE,YAAcpI,EAAetgC,IAE1B8pC,IAAe7gE,KAAK0N,OAAOquD,SACpC8E,EAAa7gE,KAAK0N,OAAOquD,OACzB39D,EAAIqhE,YAAcz/D,KAAK0N,OAAOquD,QAGhC/rC,GADA0wC,EAAW1gE,KAAK+vD,UAAUjsD,GAAG44B,MACbx8B,OAChBF,KAAK28B,WAAWupB,cAAcwB,YACzB14C,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAIzB,IAFAihB,GADA0wC,EAAUD,EAAS1xD,IACJ9O,OACfF,KAAK28B,WAAWupB,cAAcgY,OAAOyC,EAAQ,GAAIA,EAAQ,IACpDlyD,EAAI,EAAGA,EAAIwhB,EAAMxhB,GAAK,EACzBzO,KAAK28B,WAAWupB,cAAckY,cAAcuC,EAAQlyD,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,GAAIkyD,EAAQlyD,EAAI,IAGxIzO,KAAK28B,WAAWupB,cAAcyB,YAC9B3nD,KAAK28B,WAAWupB,cAAc6V,SAG5B1E,GACFr3D,KAAK28B,WAAW90B,SAASy+C,YASjC8V,UAAUp3D,UAAUkgD,YAAc,aAKlCmX,aAAar3D,UAAY,CACvB+7D,eAAgB,aAChBjV,oBAAqB,WACnB9rD,KAAKksD,YAAc7vC,UAAUrc,KAAKkwB,KAAK8wC,IAAM,OACzChhE,KAAKkwB,KAAKI,SACZtwB,KAAKw8C,WAAargC,SAAS,OAC3Bnc,KAAK+8C,aAAe5gC,SAAS,KAC7Bnc,KAAK+/C,cAAgB//C,KAAK+8C,aAC1B/8C,KAAKw8C,WAAWv4C,YAAYjE,KAAK+8C,cACjC/8C,KAAKksD,YAAYjoD,YAAYjE,KAAKw8C,aAElCx8C,KAAK+8C,aAAe/8C,KAAKksD,YAE3B3zC,SAASvY,KAAKksD,cAEhBH,wBAAyB,WACvB/rD,KAAK60D,yBAA2B,IAAIuH,UAAUp8D,MAC9CA,KAAK6zD,mBAAqB7zD,KAAKksD,YAC/BlsD,KAAK+/C,cAAgB//C,KAAK+8C,aACtB/8C,KAAKkwB,KAAKukC,IACZz0D,KAAK+8C,aAAarpB,aAAa,KAAM1zB,KAAKkwB,KAAKukC,IAE7Cz0D,KAAKkwB,KAAKqC,IACZvyB,KAAK+8C,aAAarpB,aAAa,QAAS1zB,KAAKkwB,KAAKqC,IAE/B,IAAjBvyB,KAAKkwB,KAAKqjC,IACZvzD,KAAKqzD,gBAGTlH,cAAe,WACb,IAAI8U,EAA0BjhE,KAAK6zD,mBAAqB7zD,KAAK6zD,mBAAmB9vD,MAAQ,GACxF,GAAI/D,KAAK8pD,eAAeU,QAAS,CAC/B,IAAI0W,EAAclhE,KAAK8pD,eAAenrB,IAAIra,QAC1C28C,EAAwB9gD,UAAY+gD,EACpCD,EAAwBlY,gBAAkBmY,EAExClhE,KAAK8pD,eAAeW,SACtBwW,EAAwB5H,QAAUr5D,KAAK8pD,eAAeC,MAAMjqC,EAAEvF,IAGlE2qC,YAAa,WAGPllD,KAAKkwB,KAAKwwB,IAAM1gD,KAAKirD,SAGzBjrD,KAAK2qD,kBACL3qD,KAAKyrD,mBACLzrD,KAAKmsD,gBACLnsD,KAAKosD,qBACDpsD,KAAK+8B,gBACP/8B,KAAK+8B,eAAgB,KAGzB70B,QAAS,WACPlI,KAAK+8C,aAAe,KACpB/8C,KAAK6zD,mBAAqB,KACtB7zD,KAAK4zD,eACP5zD,KAAK4zD,aAAe,MAElB5zD,KAAKo0C,cACPp0C,KAAKo0C,YAAYlsC,UACjBlI,KAAKo0C,YAAc,OAGvB4X,2BAA4B,WAC1BhsD,KAAKo0C,YAAc,IAAIuK,YAAY3+C,KAAKkwB,KAAMlwB,KAAMA,KAAK28B,aAE3DwkC,WAAY,aAEZnc,SAAU,cAEZqX,aAAar3D,UAAUqgD,eAAiBiK,eAAetqD,UAAUqgD,eACjEgX,aAAar3D,UAAUsnD,mBAAqB+P,aAAar3D,UAAUkD,QACnEm0D,aAAar3D,UAAUm+C,sBAAwB5E,eAAev5C,UAAUm+C,sBAQxE35B,gBAAgB,CAAC6lC,YAAalP,iBAAkBkc,aAAcpc,iBAAkBC,aAAcG,sBAAuBoI,eAErHA,cAAczjD,UAAUinD,cAAgB,WACtC,IAAInN,EACA9+C,KAAKkwB,KAAKI,UACZwuB,EAAO3iC,SAAS,SACXuX,aAAa,QAAS1zB,KAAKkwB,KAAKiiB,IACrC2M,EAAKprB,aAAa,SAAU1zB,KAAKkwB,KAAKgK,IACtC4kB,EAAKprB,aAAa,OAAQ1zB,KAAKkwB,KAAK6G,IACpC/2B,KAAKw8C,WAAW9oB,aAAa,QAAS1zB,KAAKkwB,KAAKiiB,IAChDnyC,KAAKw8C,WAAW9oB,aAAa,SAAU1zB,KAAKkwB,KAAKgK,OAEjD4kB,EAAOziC,UAAU,QACZtY,MAAMqF,MAAQpJ,KAAKkwB,KAAKiiB,GAAK,KAClC2M,EAAK/6C,MAAMsF,OAASrJ,KAAKkwB,KAAKgK,GAAK,KACnC4kB,EAAK/6C,MAAMq9D,gBAAkBphE,KAAKkwB,KAAK6G,IAEzC/2B,KAAK+8C,aAAa94C,YAAY66C,IAehCt1B,gBAAgB,CAAC+0B,eAAgBkR,aAAc4M,cAAe7T,cAC9DA,aAAaxjD,UAAUq8D,6BAA+B7Y,aAAaxjD,UAAU+mD,wBAE7EvD,aAAaxjD,UAAU+mD,wBAA0B,WAC/C/rD,KAAKqhE,+BAEDrhE,KAAKkwB,KAAKI,SACZtwB,KAAKw8C,WAAW9oB,aAAa,QAAS1zB,KAAKkwB,KAAK9a,GAChDpV,KAAKw8C,WAAW9oB,aAAa,SAAU1zB,KAAKkwB,KAAK5V,GACjDta,KAAK6zD,mBAAqB7zD,KAAKksD,aAE/BlsD,KAAK6zD,mBAAqB7zD,KAAK+8C,cAInCyL,aAAaxjD,UAAUgjD,iBAAmB,SAAUtrB,EAAMzrB,GAGxD,IAFA,IACIq0C,EADAt2C,EAAI,EAEDA,EAAIiC,GACLjR,KAAKupC,SAASv6B,IAAMhP,KAAKupC,SAASv6B,GAAGq2C,iBACvCC,EAActlD,KAAKupC,SAASv6B,GAAGq2C,kBAEjCr2C,GAAK,EAEHs2C,EACFtlD,KAAK+8C,aAAawI,aAAa7oB,EAAM4oB,GAErCtlD,KAAK+8C,aAAa94C,YAAYy4B,IAkClClT,gBAAgB,CAAC6lC,YAAalP,iBAAkBsI,cAAelE,gBAAiB8X,aAAcpc,iBAAkBC,aAAcE,mBAAoBgI,eAClJA,cAAcpjD,UAAUs8D,kBAAoBlZ,cAAcpjD,UAAUonD,mBAEpEhE,cAAcpjD,UAAUinD,cAAgB,WACtC,IAAIjiB,EAEJ,GADAhqC,KAAKksD,YAAYnoD,MAAM+vB,SAAW,EAC9B9zB,KAAKkwB,KAAKI,QACZtwB,KAAK+8C,aAAa94C,YAAYjE,KAAKs8D,iBACnCtyB,EAAOhqC,KAAKw8C,eACP,CACLxS,EAAO7tB,SAAS,OAChB,IAAIiX,EAAOpzB,KAAKi8B,KAAK/L,KAAOlwB,KAAKi8B,KAAK/L,KAAOlwB,KAAK28B,WAAW0nB,SAC7Dra,EAAKtW,aAAa,QAASN,EAAKhe,GAChC40B,EAAKtW,aAAa,SAAUN,EAAK9Y,GACjC0vB,EAAK/lC,YAAYjE,KAAKs8D,iBACtBt8D,KAAK+8C,aAAa94C,YAAY+lC,GAGhChqC,KAAK03D,aAAa13D,KAAKgwD,WAAYhwD,KAAKmwD,UAAWnwD,KAAKyhD,aAAczhD,KAAKs8D,gBAAiB,EAAG,IAAI,GACnGt8D,KAAK23D,qBACL33D,KAAKuhE,UAAYv3B,GAGnBoe,cAAcpjD,UAAUw8D,oBAAsB,SAAU1gB,EAAchwC,GACpE,IAAIhN,EACA8T,EAAMkpC,EAAa5gD,OACvB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBgN,EAAQgwC,EAAah9C,GAAGinC,OAAOxwB,EAAEiJ,kBAAkB1S,EAAM,GAAIA,EAAM,GAAI,GAEzE,OAAOA,GAGTs3C,cAAcpjD,UAAUy8D,0BAA4B,SAAUC,EAAMC,GAClE,IAEI79D,EAEA89D,EACAC,EACAC,EACAC,EAPAx8B,EAAQm8B,EAAKxnC,GAAG3f,EAChBumC,EAAe4gB,EAAK5gB,aAEpBlpC,EAAM2tB,EAAM1Y,QAKhB,KAAIjV,GAAO,GAAX,CAGA,IAAK9T,EAAI,EAAGA,EAAI8T,EAAM,EAAG9T,GAAK,EAC5B89D,EAAS5hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMhrB,EAAEzW,IACxD+9D,EAAS7hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMzlB,EAAEhc,IACxDg+D,EAAa9hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMzhC,EAAEA,EAAI,IAChEi+D,EAAa/hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMhrB,EAAEzW,EAAI,IAChE9D,KAAKgiE,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYJ,GAEvDp8B,EAAMxlC,IACR6hE,EAAS5hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMhrB,EAAEzW,IACxD+9D,EAAS7hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMzlB,EAAEhc,IACxDg+D,EAAa9hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMzhC,EAAE,IAC5Di+D,EAAa/hE,KAAKwhE,oBAAoB1gB,EAAcvb,EAAMhrB,EAAE,IAC5Dva,KAAKgiE,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYJ,MAI7DvZ,cAAcpjD,UAAUg9D,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAYJ,GACtF3hE,KAAKiiE,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,IAAIG,EAASliE,KAAKmiE,iBAClBR,EAAY9+C,EAAIrL,MAAM0qD,EAAOvpD,KAAMgpD,EAAY9+C,GAC/C8+C,EAAYS,KAAO7qD,MAAM2qD,EAAOG,MAAOV,EAAYS,MACnDT,EAAY7+C,EAAItL,MAAM0qD,EAAOxpD,IAAKipD,EAAY7+C,GAC9C6+C,EAAYW,KAAO/qD,MAAM2qD,EAAOK,OAAQZ,EAAYW,OAGtDla,cAAcpjD,UAAUm9D,iBAAmB,CACzCxpD,KAAM,EACN0pD,MAAO,EACP3pD,IAAK,EACL6pD,OAAQ,GAGVna,cAAcpjD,UAAUw9D,gBAAkB,CACxC3/C,EAAG,EACHu/C,KAAM,EACNt/C,EAAG,EACHw/C,KAAM,EACNl5D,MAAO,EACPC,OAAQ,GAGV++C,cAAcpjD,UAAUi9D,iBAAmB,SAAUj+C,EAAI3B,EAAIlB,EAAIshD,GAG/D,IAFA,IAEStkE,EAAG2B,EAAGC,EAAG6a,EAAG8nD,EAAMv1C,EAAIw1C,EAF3BT,EAAS,CAAC,CAACl+C,EAAG,GAAIy+C,EAAG,IAAK,CAACz+C,EAAG,GAAIy+C,EAAG,KAEN3+D,EAAI,EAAGA,EAAI,IAAKA,EACjDhE,EAAI,EAAIkkB,EAAGlgB,GAAK,GAAKue,EAAGve,GAAK,EAAIqd,EAAGrd,GACpC3F,GAAK,EAAI6lB,EAAGlgB,GAAK,EAAIue,EAAGve,GAAK,EAAIqd,EAAGrd,GAAK,EAAI2+D,EAAG3+D,GAChD/D,EAAI,EAAIsiB,EAAGve,GAAK,EAAIkgB,EAAGlgB,GAEvBhE,GAAK,EAELC,GAAK,EAEK,KAHV5B,GAAK,IAGgB,IAAN2B,IAEE,IAAN3B,GACTyc,GAAK7a,EAAID,GAED,GAAK8a,EAAI,GACfsnD,EAAOp+D,GAAGX,KAAKnD,KAAK4iE,WAAWhoD,EAAGoJ,EAAI3B,EAAIlB,EAAIshD,EAAI3+D,KAGpD4+D,EAAO5iE,EAAIA,EAAI,EAAIC,EAAI5B,IAEX,KACVgvB,IAAOrtB,EAAIsX,OAAOsrD,KAAU,EAAIvkE,IACvB,GAAKgvB,EAAK,GAAG+0C,EAAOp+D,GAAGX,KAAKnD,KAAK4iE,WAAWz1C,EAAInJ,EAAI3B,EAAIlB,EAAIshD,EAAI3+D,KACzE6+D,IAAO7iE,EAAIsX,OAAOsrD,KAAU,EAAIvkE,IACvB,GAAKwkE,EAAK,GAAGT,EAAOp+D,GAAGX,KAAKnD,KAAK4iE,WAAWD,EAAI3+C,EAAI3B,EAAIlB,EAAIshD,EAAI3+D,MAK/E9D,KAAKmiE,iBAAiBxpD,KAAOnB,MAAMrX,MAAM,KAAM+hE,EAAO,IACtDliE,KAAKmiE,iBAAiBzpD,IAAMlB,MAAMrX,MAAM,KAAM+hE,EAAO,IACrDliE,KAAKmiE,iBAAiBE,MAAQ9qD,MAAMpX,MAAM,KAAM+hE,EAAO,IACvDliE,KAAKmiE,iBAAiBI,OAAShrD,MAAMpX,MAAM,KAAM+hE,EAAO,KAG1D9Z,cAAcpjD,UAAU49D,WAAa,SAAUhoD,EAAGoJ,EAAI3B,EAAIlB,EAAIshD,EAAI3+D,GAChE,OAAOoT,MAAM,EAAI0D,EAAG,GAAKoJ,EAAGlgB,GACpB,EAAIoT,MAAM,EAAI0D,EAAG,GAAKA,EAAIyH,EAAGve,GAC7B,GAAK,EAAI8W,GAAK1D,MAAM0D,EAAG,GAAKuG,EAAGrd,GAC/BoT,MAAM0D,EAAG,GAAK6nD,EAAG3+D,IAG3BskD,cAAcpjD,UAAU69D,qBAAuB,SAAU1S,EAAWwR,GAClE,IAAI79D,EACA8T,EAAMu4C,EAAUjwD,OACpB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpBqsD,EAAUrsD,IAAMqsD,EAAUrsD,GAAGo2B,GAC/Bl6B,KAAKyhE,0BAA0BtR,EAAUrsD,GAAI69D,GACpCxR,EAAUrsD,IAAMqsD,EAAUrsD,GAAG3C,IACtCnB,KAAK6iE,qBAAqB1S,EAAUrsD,GAAG3C,GAAIwgE,IAKjDvZ,cAAcpjD,UAAU89D,mBAAqB,SAAUC,GACrD,OAAO/iE,KAAKu8D,YAAY15C,GAAKkgD,EAAIlgD,GAC5B7iB,KAAKu8D,YAAYz5C,GAAKigD,EAAIjgD,GAC1B9iB,KAAKu8D,YAAYnzD,MAAQpJ,KAAKu8D,YAAY15C,GAAKkgD,EAAIlgD,EAAIkgD,EAAI35D,OAC3DpJ,KAAKu8D,YAAYlzD,OAASrJ,KAAKu8D,YAAYz5C,GAAKigD,EAAIjgD,EAAIigD,EAAI15D,QAGnE++C,cAAcpjD,UAAUonD,mBAAqB,WAG3C,GAFApsD,KAAKshE,qBAEAthE,KAAKirD,SAAWjrD,KAAK+8B,eAAiB/8B,KAAK6c,MAAO,CACrD,IAAI2lD,EAAkBxiE,KAAKwiE,gBACvBhzD,EAAM,OASV,GARAgzD,EAAgB3/C,EAAIrT,EACpBgzD,EAAgBJ,MAAQ5yD,EACxBgzD,EAAgB1/C,EAAItT,EACpBgzD,EAAgBF,MAAQ9yD,EACxBxP,KAAK6iE,qBAAqB7iE,KAAKmwD,UAAWqS,GAC1CA,EAAgBp5D,MAAQo5D,EAAgBJ,KAAOI,EAAgB3/C,EAAI,EAAI2/C,EAAgBJ,KAAOI,EAAgB3/C,EAC9G2/C,EAAgBn5D,OAASm5D,EAAgBF,KAAOE,EAAgB1/C,EAAI,EAAI0/C,EAAgBF,KAAOE,EAAgB1/C,EAE3G9iB,KAAK8iE,mBAAmBN,GAC1B,OAEF,IAAIQ,GAAU,EAWd,GAVIhjE,KAAKu8D,YAAYnnD,IAAMotD,EAAgBp5D,QACzCpJ,KAAKu8D,YAAYnnD,EAAIotD,EAAgBp5D,MACrCpJ,KAAKuhE,UAAU7tC,aAAa,QAAS8uC,EAAgBp5D,OACrD45D,GAAU,GAERhjE,KAAKu8D,YAAYjiD,IAAMkoD,EAAgBn5D,SACzCrJ,KAAKu8D,YAAYjiD,EAAIkoD,EAAgBn5D,OACrCrJ,KAAKuhE,UAAU7tC,aAAa,SAAU8uC,EAAgBn5D,QACtD25D,GAAU,GAERA,GAAWhjE,KAAKu8D,YAAY15C,IAAM2/C,EAAgB3/C,GAAK7iB,KAAKu8D,YAAYz5C,IAAM0/C,EAAgB1/C,EAAG,CACnG9iB,KAAKu8D,YAAYnnD,EAAIotD,EAAgBp5D,MACrCpJ,KAAKu8D,YAAYjiD,EAAIkoD,EAAgBn5D,OACrCrJ,KAAKu8D,YAAY15C,EAAI2/C,EAAgB3/C,EACrC7iB,KAAKu8D,YAAYz5C,EAAI0/C,EAAgB1/C,EAErC9iB,KAAKuhE,UAAU7tC,aAAa,UAAW1zB,KAAKu8D,YAAY15C,EAAI,IAAM7iB,KAAKu8D,YAAYz5C,EAAI,IAAM9iB,KAAKu8D,YAAYnnD,EAAI,IAAMpV,KAAKu8D,YAAYjiD,GACzI,IAAI2oD,EAAajjE,KAAKuhE,UAAUx9D,MAC5Bm/D,EAAiB,aAAeljE,KAAKu8D,YAAY15C,EAAI,MAAQ7iB,KAAKu8D,YAAYz5C,EAAI,MACtFmgD,EAAW9iD,UAAY+iD,EACvBD,EAAWla,gBAAkBma,KAqBnC15C,gBAAgB,CAAC6lC,YAAalP,iBAAkBkc,aAAcpc,iBAAkBC,aAAcG,qBAAsBmP,cAAenH,cAEnIA,aAAarjD,UAAUinD,cAAgB,WAErC,GADAjsD,KAAKy8D,SAAWz8D,KAAKsyD,aACjBtyD,KAAKy8D,SAAU,CACjBz8D,KAAKmxC,WAAa,MAClBnxC,KAAKmjE,MAAQnjE,KAAKi8B,KAAK/L,KAAK9a,EAC5BpV,KAAKojE,MAAQpjE,KAAKi8B,KAAK/L,KAAK5V,EAC5Bta,KAAKw8C,WAAW9oB,aAAa,QAAS1zB,KAAKmjE,OAC3CnjE,KAAKw8C,WAAW9oB,aAAa,SAAU1zB,KAAKojE,OAC5C,IAAI3oD,EAAI0B,SAAS,KACjBnc,KAAK+/C,cAAc97C,YAAYwW,GAC/Bza,KAAKqsD,UAAY5xC,OAEjBza,KAAKmxC,WAAa,OAClBnxC,KAAKqsD,UAAYrsD,KAAK+8C,aAGxB/8C,KAAKilD,kBAGPoD,aAAarjD,UAAUwwD,aAAe,WACpC,IAAI7jC,EAAe3xB,KAAKu6C,aAAaxH,YACrC/yC,KAAK6xC,gBAAkB95B,iBAAiB4Z,EAAaxgB,EAAIwgB,EAAaxgB,EAAEjR,OAAS,GACjF,IAAImjE,EAAiBrjE,KAAKqsD,UAAUtoD,MAChCu/D,EAAY3xC,EAAaygB,GAAKpyC,KAAK81D,WAAWnkC,EAAaygB,IAAM,gBACrEixB,EAAerH,KAAOsH,EACtBD,EAAeroD,MAAQsoD,EACnB3xC,EAAaoF,KACfssC,EAAetH,OAAS/7D,KAAK81D,WAAWnkC,EAAaoF,IACrDssC,EAAeE,YAAc5xC,EAAawgB,GAAK,MAEjD,IAcIruC,EACA8T,EAfAgb,EAAW5yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GACtE,IAAKZ,KAAK28B,WAAW7M,YAAYiC,MAG/B,GAFAsxC,EAAevvC,SAAWnC,EAAakiB,UAAY,KACnDwvB,EAAeG,WAAa7xC,EAAakiB,UAAY,KACjDjhB,EAASkC,OACX90B,KAAKqsD,UAAU9O,UAAY3qB,EAASkC,WAC/B,CACLuuC,EAAe1vC,WAAaf,EAASgC,QACrC,IAAI7B,EAAUpB,EAAaoB,QACvBD,EAASnB,EAAamB,OAC1BuwC,EAAervC,UAAYlB,EAC3BuwC,EAAepvC,WAAalB,EAMhC,IAEI+jC,EACA2M,EACAC,EAJAtuB,EAAUzjB,EAAaxgB,EAC3ByG,EAAMw9B,EAAQl1C,OAId,IACI2wB,EADAokB,EAAej1C,KAAKk1C,QAEpBwgB,EAAW,GACXh1B,EAAM,EACV,IAAK58B,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAqC3B,GApCI9D,KAAK28B,WAAW7M,YAAYiC,OACzB/xB,KAAKw8D,UAAU97B,GAMlBo2B,EAAQ92D,KAAKw8D,UAAU97B,KALvBo2B,EAAQ36C,SAAS,SACXuX,aAAa,iBAAkB,QACrCojC,EAAMpjC,aAAa,kBAAmB,SACtCojC,EAAMpjC,aAAa,oBAAqB,MAIrC1zB,KAAKy8D,WACJz8D,KAAK+vD,UAAUrvB,GAEjBgjC,GADAD,EAAUzjE,KAAK+vD,UAAUrvB,IACTo5B,SAAS,KAEzB2J,EAAUpnD,UAAU,QACZtY,MAAMy/D,WAAa,GAC3BE,EAAQvnD,SAAS,QACXlY,YAAY6yD,GAClBv+C,SAASkrD,MAGHzjE,KAAKy8D,SAYf3F,EAAQ92D,KAAKw8D,UAAU97B,GAAO1gC,KAAKw8D,UAAU97B,GAAOvkB,SAAS,QAXzDnc,KAAK+vD,UAAUrvB,IACjB+iC,EAAUzjE,KAAK+vD,UAAUrvB,GACzBo2B,EAAQ92D,KAAKw8D,UAAU97B,KAGvBnoB,SADAkrD,EAAUpnD,UAAU,SAGpB9D,SADAu+C,EAAQz6C,UAAU,SAElBonD,EAAQx/D,YAAY6yD,IAMpB92D,KAAK28B,WAAW7M,YAAYiC,MAAO,CACrC,IACIzF,EADAgsB,EAAWt4C,KAAK28B,WAAW7M,YAAYoH,YAAYvF,EAAamiB,UAAUhwC,GAAI8uB,EAASE,OAAQ9yB,KAAK28B,WAAW7M,YAAYwH,cAAc3F,EAAa/wB,GAAGg0B,SAc7J,GAXEtI,EADEgsB,EACUA,EAASpoB,KAET,KAEd+kB,EAAav2B,QACT4N,GAAaA,EAAUuE,SACzBA,EAASvE,EAAUuE,OAAO,GAAG1vB,GAC7B8zC,EAAax1B,MAAMkS,EAAakiB,UAAY,IAAKliB,EAAakiB,UAAY,KAC1E6hB,EAAW11D,KAAKy1D,gBAAgBxgB,EAAcpkB,GAC9CimC,EAAMpjC,aAAa,IAAKgiC,IAErB11D,KAAKy8D,SAqBRz8D,KAAKqsD,UAAUpoD,YAAY6yD,OArBT,CAElB,GADA92D,KAAKqsD,UAAUpoD,YAAYw/D,GACvBn3C,GAAaA,EAAUuE,OAAQ,CAEjCzsB,SAAS+vB,KAAKlwB,YAAYy/D,GAC1B,IAAI/B,EAAc+B,EAAMt1B,UACxBs1B,EAAMhwC,aAAa,QAASiuC,EAAYv4D,MAAQ,GAChDs6D,EAAMhwC,aAAa,SAAUiuC,EAAYt4D,OAAS,GAClDq6D,EAAMhwC,aAAa,UAAYiuC,EAAY9+C,EAAI,EAAK,KAAO8+C,EAAY7+C,EAAI,GAAK,KAAO6+C,EAAYv4D,MAAQ,GAAK,KAAOu4D,EAAYt4D,OAAS,IAC5I,IAAIs6D,EAAaD,EAAM3/D,MACnB6/D,EAAmB,cAAgBjC,EAAY9+C,EAAI,GAAK,OAAS8+C,EAAY7+C,EAAI,GAAK,MAC1F6gD,EAAWxjD,UAAYyjD,EACvBD,EAAW5a,gBAAkB6a,EAE7BxuB,EAAQtxC,GAAG8vC,QAAU+tB,EAAY7+C,EAAI,OAErC4gD,EAAMhwC,aAAa,QAAS,GAC5BgwC,EAAMhwC,aAAa,SAAU,GAE/B+vC,EAAQx/D,YAAYy/D,SAOtB,GAFA5M,EAAMjiC,YAAcugB,EAAQtxC,GAAGlB,IAC/Bk0D,EAAMrnB,eAAe,uCAAwC,YAAa,YACrEzvC,KAAKy8D,SAQRz8D,KAAKqsD,UAAUpoD,YAAY6yD,OART,CAClB92D,KAAKqsD,UAAUpoD,YAAYw/D,GAE3B,IAAII,EAAS/M,EAAM/yD,MACf+/D,EAAmB,kBAAoBnyC,EAAakiB,UAAY,IAAM,QAC1EgwB,EAAO1jD,UAAY2jD,EACnBD,EAAO9a,gBAAkB+a,EAMxB9jE,KAAKy8D,SAGRz8D,KAAK+vD,UAAUrvB,GAAOo2B,EAFtB92D,KAAK+vD,UAAUrvB,GAAO+iC,EAIxBzjE,KAAK+vD,UAAUrvB,GAAK38B,MAAMC,QAAU,QACpChE,KAAKw8D,UAAU97B,GAAOo2B,EACtBp2B,GAAO,EAET,KAAOA,EAAM1gC,KAAK+vD,UAAU7vD,QAC1BF,KAAK+vD,UAAUrvB,GAAK38B,MAAMC,QAAU,OACpC08B,GAAO,GAIX2nB,aAAarjD,UAAUonD,mBAAqB,WAC1C,IAAI2X,EACJ,GAAI/jE,KAAKkwB,KAAKY,YAAa,CACzB,IAAK9wB,KAAK+8B,gBAAkB/8B,KAAK8xC,mBAC/B,OACA,GAAI9xC,KAAKy8D,UAAYz8D,KAAK8pD,eAAeU,QAAS,CAElDxqD,KAAKw8C,WAAW9oB,aAAa,WAAY1zB,KAAK8pD,eAAeC,MAAMrvC,EAAEH,EAAE,GAAK,KAAOva,KAAK8pD,eAAeC,MAAMrvC,EAAEH,EAAE,GAAK,IAAMva,KAAKmjE,MAAQ,IAAMnjE,KAAKojE,OACpJW,EAAW/jE,KAAKw8C,WAAWz4C,MAC3B,IAAIigE,EAAc,cAAgBhkE,KAAK8pD,eAAeC,MAAMrvC,EAAEH,EAAE,GAAK,OAASva,KAAK8pD,eAAeC,MAAMrvC,EAAEH,EAAE,GAAK,MACjHwpD,EAAS5jD,UAAY6jD,EACrBD,EAAShb,gBAAkBib,GAK/B,GADAhkE,KAAKu1D,aAAajhB,YAAYt0C,KAAKu6C,aAAaxH,YAAa/yC,KAAK8xC,oBAC7D9xC,KAAK8xC,oBAAuB9xC,KAAKu1D,aAAazjB,mBAAnD,CAGA,IAAIhuC,EACA8T,EAOAy/C,EACAC,EACA2M,EARA/+C,EAAQ,EACR2sB,EAAkB7xC,KAAKu1D,aAAa1jB,gBAEpCuD,EAAUp1C,KAAKu6C,aAAaxH,YAAY5hC,EAM5C,IAJAyG,EAAMw9B,EAAQl1C,OAIT4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACpBsxC,EAAQtxC,GAAG+b,EACbqF,GAAS,GAEToyC,EAAWt3D,KAAK+vD,UAAUjsD,GAC1BmgE,EAAWjkE,KAAKw8D,UAAU14D,GAC1BuzD,EAAiBxlB,EAAgB3sB,GACjCA,GAAS,EACLmyC,EAAex6C,KAAK+C,IACjB5f,KAAKy8D,SAIRnF,EAAS5jC,aAAa,YAAa2jC,EAAez3C,IAHlD03C,EAASvzD,MAAMglD,gBAAkBsO,EAAez3C,EAChD03C,EAASvzD,MAAMoc,UAAYk3C,EAAez3C,IAM9C03C,EAASvzD,MAAMs1D,QAAUhC,EAAev3C,EACpCu3C,EAAellB,IAAMklB,EAAex6C,KAAKs1B,IAC3C8xB,EAASvwC,aAAa,eAAgB2jC,EAAellB,IAEnDklB,EAAetgC,IAAMsgC,EAAex6C,KAAKka,IAC3CktC,EAASvwC,aAAa,SAAU2jC,EAAetgC,IAE7CsgC,EAAejlB,IAAMilB,EAAex6C,KAAKu1B,KAC3C6xB,EAASvwC,aAAa,OAAQ2jC,EAAejlB,IAC7C6xB,EAASlgE,MAAMiX,MAAQq8C,EAAejlB,KAK5C,GAAIpyC,KAAKqsD,UAAUje,UAAYpuC,KAAKirD,SAAWjrD,KAAK+8B,eAAiB/8B,KAAK6c,MAAO,CAC/E,IAAI8kD,EAAc3hE,KAAKqsD,UAAUje,UAYjC,GAVIpuC,KAAKu8D,YAAYnnD,IAAMusD,EAAYv4D,QACrCpJ,KAAKu8D,YAAYnnD,EAAIusD,EAAYv4D,MACjCpJ,KAAKw8C,WAAW9oB,aAAa,QAASiuC,EAAYv4D,QAEhDpJ,KAAKu8D,YAAYjiD,IAAMqnD,EAAYt4D,SACrCrJ,KAAKu8D,YAAYjiD,EAAIqnD,EAAYt4D,OACjCrJ,KAAKw8C,WAAW9oB,aAAa,SAAUiuC,EAAYt4D,SAIjDrJ,KAAKu8D,YAAYnnD,IAAOusD,EAAYv4D,MAAQU,GAAe9J,KAAKu8D,YAAYjiD,IAAOqnD,EAAYt4D,OAASS,GAAe9J,KAAKu8D,YAAY15C,IAAO8+C,EAAY9+C,EADlJ,GACiK7iB,KAAKu8D,YAAYz5C,IAAO6+C,EAAY7+C,EADrM,EACkN,CAC7N9iB,KAAKu8D,YAAYnnD,EAAIusD,EAAYv4D,MAAQU,EACzC9J,KAAKu8D,YAAYjiD,EAAIqnD,EAAYt4D,OAASS,EAC1C9J,KAAKu8D,YAAY15C,EAAI8+C,EAAY9+C,EAJtB,EAKX7iB,KAAKu8D,YAAYz5C,EAAI6+C,EAAY7+C,EALtB,EAOX9iB,KAAKw8C,WAAW9oB,aAAa,UAAW1zB,KAAKu8D,YAAY15C,EAAI,IAAM7iB,KAAKu8D,YAAYz5C,EAAI,IAAM9iB,KAAKu8D,YAAYnnD,EAAI,IAAMpV,KAAKu8D,YAAYjiD,GAC1IypD,EAAW/jE,KAAKw8C,WAAWz4C,MAC3B,IAAImgE,EAAe,aAAelkE,KAAKu8D,YAAY15C,EAAI,MAAQ7iB,KAAKu8D,YAAYz5C,EAAI,MACpFihD,EAAS5jD,UAAY+jD,EACrBH,EAAShb,gBAAkBmb,MAajC16C,gBAAgB,CAAC6lC,YAAalP,iBAAkBkc,aAAc5T,cAAexI,iBAAkBC,aAAcE,mBAAoBmI,eAEjIA,cAAcvjD,UAAUinD,cAAgB,WACtC,IAAIhgB,EAAYjsC,KAAK28B,WAAW+Q,cAAc1tC,KAAK2tC,WAC/CM,EAAM,IAAIk2B,MAEVnkE,KAAKkwB,KAAKI,SACZtwB,KAAKokE,UAAYjoD,SAAS,SAC1Bnc,KAAKokE,UAAU1wC,aAAa,QAAS1zB,KAAK2tC,UAAUv4B,EAAI,MACxDpV,KAAKokE,UAAU1wC,aAAa,SAAU1zB,KAAK2tC,UAAUrzB,EAAI,MACzDta,KAAKokE,UAAU30B,eAAe,+BAAgC,OAAQxD,GACtEjsC,KAAK+8C,aAAa94C,YAAYjE,KAAKokE,WACnCpkE,KAAKksD,YAAYx4B,aAAa,QAAS1zB,KAAK2tC,UAAUv4B,GACtDpV,KAAKksD,YAAYx4B,aAAa,SAAU1zB,KAAK2tC,UAAUrzB,IAEvDta,KAAK+8C,aAAa94C,YAAYgqC,GAEhCA,EAAIsB,YAAc,YAClBtB,EAAI/pC,IAAM+nC,EACNjsC,KAAKkwB,KAAKukC,IACZz0D,KAAKksD,YAAYx4B,aAAa,KAAM1zB,KAAKkwB,KAAKukC,KA4ClDjrC,gBAAgB,CAAC6lC,YAAanP,aAAcD,kBAAmBqI,gBAE/DA,eAAetjD,UAAUskD,MAAQ,WAC/B,IAAIxlD,EAEAm4B,EACAooC,EACAtd,EAHAnvC,EAAM5X,KAAKi8B,KAAKuiB,eAAet+C,OAInC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAGxB,GAAkB,QADlBm4B,EAAOj8B,KAAKi8B,KAAKuiB,eAAe16C,IACvBtF,KAAe,CACtB6lE,EAAmBpoC,EAAK2sB,gBAAgB7kD,MACxCgjD,EAAiB9qB,EAAKt0B,UAAU5D,MAChC,IAAI2lD,EAAc1pD,KAAK08D,GAAGniD,EAAI,KAC1Boc,EAAS,cACTiS,EAAS,4CACby7B,EAAiB3a,YAAcA,EAC/B2a,EAAiB5a,kBAAoBC,EACrC3C,EAAenuC,gBAAkB+d,EACjCowB,EAAeC,mBAAqBrwB,EACpCowB,EAAeluC,sBAAwB8d,EACvC0tC,EAAiBlkD,UAAYyoB,EAC7By7B,EAAiBtb,gBAAkBngB,IAKzC0f,eAAetjD,UAAUs4D,eAAiB,aAG1ChV,eAAetjD,UAAU3G,KAAO,aAGhCiqD,eAAetjD,UAAUkgD,YAAc,WACrC,IACIphD,EACA8T,EAFAiF,EAAO7c,KAAK+8B,cAGhB,GAAI/8B,KAAKqjD,UAEP,IADAzrC,EAAM5X,KAAKqjD,UAAUnjD,OAChB4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB+Y,EAAO7c,KAAKqjD,UAAUv/C,GAAGgmD,eAAeC,MAAMltC,MAAQA,EAG1D,GAAIA,GAAQ7c,KAAK08D,GAAG7/C,MAAS7c,KAAK0a,GAAK1a,KAAK0a,EAAEmC,MAAU7c,KAAKsC,KAAOtC,KAAKsC,GAAGua,MAAQ7c,KAAKi+B,GAAGphB,MAAQ7c,KAAKk+B,GAAGrhB,OAAU7c,KAAKm+B,GAAGthB,MAAQ7c,KAAKo+B,GAAGvhB,MAAQ7c,KAAKq+B,GAAGxhB,MAAQ7c,KAAKs+B,GAAGzhB,MAAS7c,KAAK7B,GAAK6B,KAAK7B,EAAE0e,KAAO,CAG7M,GAFA7c,KAAK2+B,IAAIjgB,QAEL1e,KAAKqjD,UAEP,IAAKv/C,EADL8T,EAAM5X,KAAKqjD,UAAUnjD,OAAS,EAChB4D,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAIwgE,EAAUtkE,KAAKqjD,UAAUv/C,GAAGgmD,eAAeC,MAC/C/pD,KAAK2+B,IAAI5e,WAAWukD,EAAQ5pD,EAAEH,EAAE,IAAK+pD,EAAQ5pD,EAAEH,EAAE,GAAI+pD,EAAQ5pD,EAAEH,EAAE,IACjEva,KAAK2+B,IAAI5f,SAASulD,EAAQhmC,GAAG/jB,EAAE,IAAIyE,SAASslD,EAAQhmC,GAAG/jB,EAAE,IAAI0E,QAAQqlD,EAAQhmC,GAAG/jB,EAAE,IAClFva,KAAK2+B,IAAI5f,SAASulD,EAAQnmC,GAAG5jB,GAAGyE,SAASslD,EAAQlmC,GAAG7jB,GAAG0E,QAAQqlD,EAAQjmC,GAAG9jB,GAC1Eva,KAAK2+B,IAAIlf,MAAM,EAAI6kD,EAAQpzD,EAAEqJ,EAAE,GAAI,EAAI+pD,EAAQpzD,EAAEqJ,EAAE,GAAI,EAAI+pD,EAAQpzD,EAAEqJ,EAAE,IACvEva,KAAK2+B,IAAI5e,UAAUukD,EAAQnmE,EAAEoc,EAAE,GAAI+pD,EAAQnmE,EAAEoc,EAAE,GAAI+pD,EAAQnmE,EAAEoc,EAAE,IAQnE,GALIva,KAAK0a,EACP1a,KAAK2+B,IAAI5e,WAAW/f,KAAK0a,EAAEH,EAAE,IAAKva,KAAK0a,EAAEH,EAAE,GAAIva,KAAK0a,EAAEH,EAAE,IAExDva,KAAK2+B,IAAI5e,WAAW/f,KAAKsC,GAAGiY,GAAIva,KAAKi+B,GAAG1jB,EAAGva,KAAKk+B,GAAG3jB,GAEjDva,KAAK7B,EAAG,CACV,IAAIomE,EAEFA,EADEvkE,KAAK0a,EACM,CAAC1a,KAAK0a,EAAEH,EAAE,GAAKva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAK0a,EAAEH,EAAE,GAAKva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAK0a,EAAEH,EAAE,GAAKva,KAAK7B,EAAEoc,EAAE,IAE9E,CAACva,KAAKsC,GAAGiY,EAAIva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAKi+B,GAAG1jB,EAAIva,KAAK7B,EAAEoc,EAAE,GAAIva,KAAKk+B,GAAG3jB,EAAIva,KAAK7B,EAAEoc,EAAE,IAEvF,IAAIiqD,EAAM7mE,KAAK0Z,KAAK1Z,KAAKwZ,IAAIotD,EAAW,GAAI,GAAK5mE,KAAKwZ,IAAIotD,EAAW,GAAI,GAAK5mE,KAAKwZ,IAAIotD,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,GACrEE,EAAiB/mE,KAAK0Z,KAAKotD,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IAC1EE,EAAchnE,KAAK88B,MAAMgqC,EAAQ,GAAIC,GACrCE,EAAcjnE,KAAK88B,MAAMgqC,EAAQ,IAAKA,EAAQ,IAClDzkE,KAAK2+B,IAAI3f,QAAQ4lD,GAAY7lD,SAAS4lD,GAExC3kE,KAAK2+B,IAAI5f,SAAS/e,KAAKm+B,GAAG5jB,GAAGyE,SAAShf,KAAKo+B,GAAG7jB,GAAG0E,QAAQjf,KAAKq+B,GAAG9jB,GACjEva,KAAK2+B,IAAI5f,SAAS/e,KAAKs+B,GAAG/jB,EAAE,IAAIyE,SAAShf,KAAKs+B,GAAG/jB,EAAE,IAAI0E,QAAQjf,KAAKs+B,GAAG/jB,EAAE,IACzEva,KAAK2+B,IAAI5e,UAAU/f,KAAK28B,WAAW0nB,SAASjvC,EAAI,EAAGpV,KAAK28B,WAAW0nB,SAAS/pC,EAAI,EAAG,GACnFta,KAAK2+B,IAAI5e,UAAU,EAAG,EAAG/f,KAAK08D,GAAGniD,GAEjC,IAAIsqD,GAAoB7kE,KAAK28D,SAASn6C,OAAOxiB,KAAK2+B,KAClD,IAAKkmC,GAAoB7kE,KAAK08D,GAAG7/C,OAAS7c,KAAKi8B,KAAKuiB,eAAgB,CAElE,IAAIviB,EACAooC,EACAtd,EACJ,IAJAnvC,EAAM5X,KAAKi8B,KAAKuiB,eAAet+C,OAI1B4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAExB,GAAkB,QADlBm4B,EAAOj8B,KAAKi8B,KAAKuiB,eAAe16C,IACvBtF,KAAe,CACtB,GAAIqmE,EAAkB,CACpB,IAAIC,EAAW9kE,KAAK2+B,IAAIra,SACxByiC,EAAiB9qB,EAAKt0B,UAAU5D,OACjBoc,UAAY2kD,EAC3B/d,EAAegC,gBAAkB+b,EAE/B9kE,KAAK08D,GAAG7/C,QACVwnD,EAAmBpoC,EAAK2sB,gBAAgB7kD,OACvB2lD,YAAc1pD,KAAK08D,GAAGniD,EAAI,KAC3C8pD,EAAiB5a,kBAAoBzpD,KAAK08D,GAAGniD,EAAI,MAIvDva,KAAK2+B,IAAIjc,MAAM1iB,KAAK28D,WAGxB38D,KAAK+8B,eAAgB,GAGvBurB,eAAetjD,UAAUogD,aAAe,SAAUxD,GAChD5hD,KAAKqqD,kBAAkBzI,GAAK,IAG9B0G,eAAetjD,UAAUkD,QAAU,aAEnCogD,eAAetjD,UAAUqgD,eAAiB,WAAc,OAAO,MAI/DuX,SAAS53D,UAAUkgD,YAAc,aAKjC,IAAI6f,iBAAoB,WACtB,IAAIvyC,EAAW,GACXwyC,EAAuB,GACvB3vC,EAAW,EACXzd,EAAM,EACNqtD,EAAuB,EACvBC,GAAW,EACXC,GAAY,EAEhB,SAASC,EAAcC,GAGrB,IAFA,IAAIvhE,EAAI,EACJwhE,EAAWD,EAAG1lE,OACXmE,EAAI8T,GACLotD,EAAqBlhE,GAAGyhE,YAAcD,IACxCN,EAAqBppD,OAAO9X,EAAG,GAC/BA,GAAK,EACL8T,GAAO,EACF0tD,EAASv+D,UACZy+D,KAGJ1hE,GAAK,EAIT,SAAS2hE,EAAkBjtD,EAAShR,GAClC,IAAKgR,EACH,OAAO,KAGT,IADA,IAAI1U,EAAI,EACDA,EAAI8T,GAAK,CACd,GAAIotD,EAAqBlhE,GAAG44B,OAASlkB,GAA4C,OAAjCwsD,EAAqBlhE,GAAG44B,KACtE,OAAOsoC,EAAqBlhE,GAAGyhE,UAEjCzhE,GAAK,EAEP,IAAIwhE,EAAW,IAAII,cAGnB,OAFAC,EAAeL,EAAU9sD,GACzB8sD,EAASM,QAAQptD,EAAShR,GACnB89D,EAaT,SAASO,IACPZ,GAAwB,EACxBa,IAGF,SAASN,IACPP,GAAwB,EAG1B,SAASU,EAAeL,EAAU9sD,GAChC8sD,EAASz8D,iBAAiB,UAAWu8D,GACrCE,EAASz8D,iBAAiB,UAAWg9D,GACrCP,EAASz8D,iBAAiB,QAAS28D,GACnCR,EAAqB7hE,KAAK,CAAEu5B,KAAMlkB,EAAS+sD,UAAWD,IACtD1tD,GAAO,EA8BT,SAASi0B,EAAOk6B,GACd,IACIjiE,EADAkiE,EAAcD,EAAU1wC,EAE5B,IAAKvxB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUU,YAAYD,GAEhD3wC,EAAW0wC,EACPd,IAAyBE,EAC3BznE,OAAOwxB,sBAAsB2c,GAE7Bq5B,GAAW,EAIf,SAASgB,EAAMH,GACb1wC,EAAW0wC,EACXroE,OAAOwxB,sBAAsB2c,GAuE/B,SAASi6B,KACFX,GAAaF,GACZC,IACFxnE,OAAOwxB,sBAAsBg3C,GAC7BhB,GAAW,GAsDjB,OAnBA1yC,EAASizC,kBAAoBA,EAC7BjzC,EAAS1qB,cA1JT,SAAuBq+D,GACrB,IAAIb,EAAW,IAAII,cAGnB,OAFAC,EAAeL,EAAU,MACzBA,EAASc,UAAUD,GACZb,GAuJT9yC,EAASlqB,SApJT,SAAkB1F,EAAK2iE,GACrB,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUj9D,SAAS1F,EAAK2iE,IAkJpD/yC,EAASjqB,aA9IT,SAAsB3F,EAAK2iE,GACzB,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUh9D,aAAa3F,EAAK2iE,IA4IxD/yC,EAASxrB,KAxIT,SAAcu+D,GACZ,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUv+D,KAAKu+D,IAsI3C/yC,EAASvrB,MAhHT,SAAes+D,GACb,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUt+D,MAAMs+D,IA8G5C/yC,EAASpqB,KAnGT,SAAcm9D,GACZ,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUn9D,KAAKm9D,IAiG3C/yC,EAAS6zC,YA7FT,SAAqBd,GACnB,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUc,YAAYd,IA2FlD/yC,EAAS8zC,iBAhFT,SAA0B9+D,EAAe++D,EAAY1+D,GACnD,IAEI/D,EAFA0iE,EAAe,GAAGhkE,OAAO,GAAG8I,MAAMlL,KAAKgE,SAASqiE,uBAAuB,WACzE,GAAGn7D,MAAMlL,KAAKgE,SAASqiE,uBAAuB,eAE5CC,EAAWF,EAAatmE,OAC5B,IAAK4D,EAAI,EAAGA,EAAI4iE,EAAU5iE,GAAK,EACzB+D,GACF2+D,EAAa1iE,GAAG4vB,aAAa,eAAgB7rB,GAE/C49D,EAAkBe,EAAa1iE,GAAI0D,GAErC,GAAI++D,GAA2B,IAAbG,EAAgB,CAC3B7+D,IACHA,EAAW,OAEb,IAAIssB,EAAO/vB,SAASuiE,qBAAqB,QAAQ,GACjDxyC,EAAKN,UAAY,GACjB,IAAI+yC,EAAMvqD,UAAU,OACpBuqD,EAAI7iE,MAAMqF,MAAQ,OAClBw9D,EAAI7iE,MAAMsF,OAAS,OACnBu9D,EAAIlzC,aAAa,eAAgB7rB,GACjCssB,EAAKlwB,YAAY2iE,GACjBnB,EAAkBmB,EAAKp/D,KA2D3BgrB,EAASq0C,OAvDT,WACE,IAAI/iE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUsB,UAsDtCr0C,EAASs0C,YA/GT,SAAqB7lE,EAAO8lE,EAASxB,GACnC,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUuB,YAAY7lE,EAAO8lE,EAASxB,IA6GlE/yC,EAAStqB,QA3FT,SAAiBq9D,GACf,IAAIzhE,EACJ,IAAKA,EAAK8T,EAAM,EAAI9T,GAAK,EAAGA,GAAK,EAC/BkhE,EAAqBlhE,GAAGyhE,UAAUr9D,QAAQq9D,IAyF9C/yC,EAASw0C,OA3CT,WACE7B,GAAY,GA2Cd3yC,EAASy0C,SAxCT,WACE9B,GAAY,EACZW,KAuCFtzC,EAAS+Z,UApCT,SAAmB3pC,EAAK2iE,GACtB,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAUh5B,UAAU3pC,EAAK2iE,IAkCrD/yC,EAASka,KA9BT,SAAc64B,GACZ,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAU74B,KAAK64B,IA4B3C/yC,EAASma,OAxBT,SAAgB44B,GACd,IAAIzhE,EACJ,IAAKA,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBkhE,EAAqBlhE,GAAGyhE,UAAU54B,OAAO44B,IAsB7C/yC,EAAS00C,wBAtMT,WACE,IAAIpjE,EACA4iE,EAAW1B,EAAqB9kE,OAChCinE,EAAa,GACjB,IAAKrjE,EAAI,EAAGA,EAAI4iE,EAAU5iE,GAAK,EAC7BqjE,EAAWhkE,KAAK6hE,EAAqBlhE,GAAGyhE,WAE1C,OAAO4B,GAgMF30C,EAjPe,GAyPpBkzC,cAAgB,WAClB1lE,KAAK0b,KAAO,GACZ1b,KAAKvB,KAAO,GACZuB,KAAKkxB,KAAO,GACZlxB,KAAKm1B,UAAW,EAChBn1B,KAAKmlD,aAAe,EACpBnlD,KAAKonE,gBAAkB,EACvBpnE,KAAK4Z,WAAa,EAClB5Z,KAAK6Z,YAAc,EACnB7Z,KAAK8+B,UAAY,EACjB9+B,KAAKqnE,UAAY,EACjBrnE,KAAKsnE,UAAY,EACjBtnE,KAAKunE,cAAgB,EACrBvnE,KAAKwnE,UAAY,EACjBxnE,KAAKwH,cAAgB,GACrBxH,KAAK6xB,OAAS,GACd7xB,KAAK+G,UAAW,EAChB/G,KAAKuH,UAAW,EAChBvH,KAAKsH,MAAO,EACZtH,KAAK6H,SAAW,KAChB7H,KAAKynE,YAActtD,kBACnBna,KAAK4tC,WAAa,GAClB5tC,KAAK0nE,cAAgB,EACrB1nE,KAAK2nE,WAAa,EAClB3nE,KAAK4nE,kBAAoBhxD,gBACzB5W,KAAK0H,SAAW,GAChB1H,KAAK6nE,OAAQ,EACb7nE,KAAK8nE,gBAAiB,EACtB9nE,KAAKijD,iBAAmBvrC,mBACxB1X,KAAKkkD,eAAiB,IAAIpX,eAC1B9sC,KAAKmkD,gBAAkB9Y,yBACvBrrC,KAAK07C,QAAU,IAGjBlyB,gBAAgB,CAAChO,WAAYkqD,eAE7BA,cAAc1gE,UAAUohE,UAAY,SAAUD,IACxCA,EAAOloB,SAAWkoB,EAAOx+D,aAC3B3H,KAAKi+C,QAAUkoB,EAAOloB,SAAWkoB,EAAOx+D,WAE1C,IAAIogE,EAAW,MAMf,OALI5B,EAAO4B,SACTA,EAAW5B,EAAO4B,SACT5B,EAAOt+D,WAChBkgE,EAAW5B,EAAOt+D,UAEZkgE,GACN,IAAK,SACH/nE,KAAK6H,SAAW,IAAIg2C,eAAe79C,KAAMmmE,EAAO1+D,kBAChD,MACF,IAAK,MACHzH,KAAK6H,SAAW,IAAIw0C,YAAYr8C,KAAMmmE,EAAO1+D,kBAC7C,MACF,QACEzH,KAAK6H,SAAW,IAAI02C,eAAev+C,KAAMmmE,EAAO1+D,kBAGpDzH,KAAKkkD,eAAetU,aAAam4B,EAAU/nE,KAAK6H,SAAS80B,WAAW3G,MACpEh2B,KAAK6H,SAASk7C,oBAAoB/iD,KAAKijD,kBACvCjjD,KAAK+nE,SAAWA,EACI,KAAhB5B,EAAO7+D,MACc,OAAhB6+D,EAAO7+D,WACS1H,IAAhBumE,EAAO7+D,OACS,IAAhB6+D,EAAO7+D,KACdtH,KAAKsH,MAAO,GACa,IAAhB6+D,EAAO7+D,KAChBtH,KAAKsH,MAAO,EAEZtH,KAAKsH,KAAO0gE,SAAS7B,EAAO7+D,KAAM,IAEpCtH,KAAKuH,WAAW,aAAc4+D,IAASA,EAAO5+D,SAC9CvH,KAAKvB,KAAO0nE,EAAO1nE,KAAO0nE,EAAO1nE,KAAO,GACxCuB,KAAKioE,kBAAmBjqE,OAAOgH,UAAU9D,eAAed,KAAK+lE,EAAQ,qBAAsBA,EAAO8B,iBAClGjoE,KAAK4tC,WAAau4B,EAAOv4B,WACzB5tC,KAAKkoE,eAAiB/B,EAAO+B,eACzB/B,EAAO56B,cACTvrC,KAAKmkD,gBAAgB3X,gBAAgB25B,EAAO56B,cAE1C46B,EAAO3+D,cACTxH,KAAK4kD,gBAAgBuhB,EAAO3+D,eACnB2+D,EAAOj1C,QACuB,IAAnCi1C,EAAOj1C,KAAKi3C,YAAY,MAC1BnoE,KAAKkxB,KAAOi1C,EAAOj1C,KAAKknB,OAAO,EAAG+tB,EAAOj1C,KAAKi3C,YAAY,MAAQ,GAElEnoE,KAAKkxB,KAAOi1C,EAAOj1C,KAAKknB,OAAO,EAAG+tB,EAAOj1C,KAAKi3C,YAAY,KAAO,GAEnEnoE,KAAKooE,SAAWjC,EAAOj1C,KAAKknB,OAAO+tB,EAAOj1C,KAAKi3C,YAAY,KAAO,GAClEnoE,KAAKooE,SAAWpoE,KAAKooE,SAAShwB,OAAO,EAAGp4C,KAAKooE,SAASD,YAAY,UAElE35B,YAAYC,KAAK03B,EAAOj1C,KAAMlxB,KAAK4kD,gBAAgBjpC,KAAK3b,MAAO,WAC7DA,KAAKqoE,QAAQ,gBACb1sD,KAAK3b,SAIX0lE,cAAc1gE,UAAU4gE,QAAU,SAAU3nB,EAASz2C,GAC/CA,GAC2B,kBAAlBA,IACTA,EAAgBkL,KAAKse,MAAMxpB,IAG/B,IAAI2+D,EAAS,CACXloB,QAASA,EACTz2C,cAAeA,GAEb8gE,EAAoBrqB,EAAQsqB,WAEhCpC,EAAOj1C,KAAOo3C,EAAkBE,aAAa,uBACzCF,EAAkBE,aAAa,uBAAuBvnE,MACtDqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,gBAAgBvnE,MAC/CqnE,EAAkBE,aAAa,WAC7BF,EAAkBE,aAAa,WAAWvnE,MAC1C,GACRklE,EAAO4B,SAAWO,EAAkBE,aAAa,kBAC7CF,EAAkBE,aAAa,kBAAkBvnE,MACjDqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,gBAAgBvnE,MAC/CqnE,EAAkBE,aAAa,WAC7BF,EAAkBE,aAAa,WAAWvnE,MAC1CqnE,EAAkBE,aAAa,oBAC7BF,EAAkBE,aAAa,oBAAoBvnE,MACnDqnE,EAAkBE,aAAa,eAC7BF,EAAkBE,aAAa,eAAevnE,MAC9C,SAEZ,IAAIqG,EAAOghE,EAAkBE,aAAa,kBACtCF,EAAkBE,aAAa,kBAAkBvnE,MACjDqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,gBAAgBvnE,MAC/CqnE,EAAkBE,aAAa,WAC7BF,EAAkBE,aAAa,WAAWvnE,MAC1C,GACK,UAATqG,EACF6+D,EAAO7+D,MAAO,EACI,SAATA,EACT6+D,EAAO7+D,MAAO,EACI,KAATA,IACT6+D,EAAO7+D,KAAO0gE,SAAS1gE,EAAM,KAE/B,IAAIC,EAAW+gE,EAAkBE,aAAa,sBAC1CF,EAAkBE,aAAa,sBAAsBvnE,MACrDqnE,EAAkBE,aAAa,oBAC7BF,EAAkBE,aAAa,oBAAoBvnE,OACnDqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,eAAevnE,MAEtDklE,EAAO5+D,SAAwB,UAAbA,EAElB4+D,EAAO1nE,KAAO6pE,EAAkBE,aAAa,aACzCF,EAAkBE,aAAa,aAAavnE,MAC5CqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,gBAAgBvnE,MAC/CqnE,EAAkBE,aAAa,WAC7BF,EAAkBE,aAAa,WAAWvnE,MAC1C,GASU,WARFqnE,EAAkBE,aAAa,uBAC3CF,EAAkBE,aAAa,uBAAuBvnE,MACtDqnE,EAAkBE,aAAa,qBAC7BF,EAAkBE,aAAa,qBAAqBvnE,MACpDqnE,EAAkBE,aAAa,gBAC7BF,EAAkBE,aAAa,gBAAgBvnE,MAC/C,MAGNklE,EAAOsC,WAAY,GAErBzoE,KAAKomE,UAAUD,IAGjBT,cAAc1gE,UAAU69C,cAAgB,SAAU3yB,GAC5CA,EAAKsa,GAAKxqC,KAAKwH,cAAcgjC,KAC/BxqC,KAAKwH,cAAcgjC,GAAKta,EAAKsa,GAC7BxqC,KAAK6Z,YAAclc,KAAKoF,MAAMmtB,EAAKsa,GAAKxqC,KAAKwH,cAAcq6C,KAE7D,IACI/9C,EAGAkL,EAJA4gB,EAAS5vB,KAAKwH,cAAcooB,OAE5BhY,EAAMgY,EAAO1vB,OACb4iD,EAAY5yB,EAAKN,OAEjBI,EAAO8yB,EAAU5iD,OACrB,IAAK8O,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EAEzB,IADAlL,EAAI,EACGA,EAAI8T,GAAK,CACd,GAAIgY,EAAO9rB,GAAGzB,KAAOygD,EAAU9zC,GAAG3M,GAAI,CACpCutB,EAAO9rB,GAAKg/C,EAAU9zC,GACtB,MAEFlL,GAAK,EAOT,IAJIosB,EAAK6B,OAAS7B,EAAK+E,SACrBj1B,KAAK6H,SAAS80B,WAAW7M,YAAY8F,SAAS1F,EAAK6B,OACnD/xB,KAAK6H,SAAS80B,WAAW7M,YAAYiG,SAAS7F,EAAK+E,MAAOj1B,KAAK6H,SAAS80B,WAAW3G,OAEjF9F,EAAK2B,OAEP,IADAja,EAAMsY,EAAK2B,OAAO3xB,OACb4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwH,cAAcqqB,OAAO1uB,KAAK+sB,EAAK2B,OAAO/tB,IAG/C9D,KAAKwH,cAAcirB,YAAa,EAChCC,YAAYg2C,aAAa1oE,KAAKwH,cAAexH,KAAK6H,SAAS80B,WAAW7M,aACtE9vB,KAAK6H,SAASg7C,cAAc3yB,EAAKN,QAC7B/Y,mBACFA,kBAAkB8sC,gBAAgB3jD,MAEpCA,KAAK2oE,mBAGPjD,cAAc1gE,UAAU2jE,gBAAkB,WACxC,IAAIjhE,EAAW1H,KAAKwH,cAAcE,SAClC,IAAKA,GAAgC,IAApBA,EAASxH,SAAiBF,KAAKioE,iBAG9C,OAFAjoE,KAAKqoE,QAAQ,mBACbroE,KAAK0nE,cAAgB1nE,KAAK6Z,aAG5B,IAAI2tB,EAAU9/B,EAASkhE,QACvB5oE,KAAK0nE,cAAgBlgC,EAAQqU,KAAO77C,KAAK8+B,UACzC,IAAI+pC,EAAc7oE,KAAKkxB,KAAOlxB,KAAKooE,SAAW,IAAMpoE,KAAK2nE,WAAa,QACtE3nE,KAAK2nE,YAAc,EACnBn5B,YAAYC,KAAKo6B,EAAa7oE,KAAK6iD,cAAclnC,KAAK3b,MAAO,WAC3DA,KAAKqoE,QAAQ,gBACb1sD,KAAK3b,QAGT0lE,cAAc1gE,UAAU8jE,aAAe,WACtB9oE,KAAKwH,cAAcE,WAEhC1H,KAAK0nE,cAAgB1nE,KAAK6Z,aAE5B7Z,KAAK2oE,mBAGPjD,cAAc1gE,UAAU+jE,aAAe,WACrC/oE,KAAKqoE,QAAQ,iBACbroE,KAAKgpE,eAGPtD,cAAc1gE,UAAUikE,cAAgB,WACtCjpE,KAAKkkD,eAAejV,cAAcjvC,KAAK4tC,YACvC5tC,KAAKkkD,eAAehV,QAAQlvC,KAAKkxB,MACjClxB,KAAKkkD,eAAepV,WAAW9uC,KAAKwH,cAAcqqB,OAAQ7xB,KAAK+oE,aAAaptD,KAAK3b,QAGnF0lE,cAAc1gE,UAAU4/C,gBAAkB,SAAUd,GAClD,GAAK9jD,KAAK6H,SAGV,IACE7H,KAAKwH,cAAgBs8C,EAEjB9jD,KAAKkoE,gBACPloE,KAAK6Z,YAAclc,KAAKoF,MAAM/C,KAAKkoE,eAAe,GAAKloE,KAAKkoE,eAAe,IAC3EloE,KAAK4Z,WAAajc,KAAK2a,MAAMtY,KAAKkoE,eAAe,MAEjDloE,KAAK6Z,YAAclc,KAAKoF,MAAM/C,KAAKwH,cAAcgjC,GAAKxqC,KAAKwH,cAAcq6C,IACzE7hD,KAAK4Z,WAAajc,KAAK2a,MAAMtY,KAAKwH,cAAcq6C,KAElD7hD,KAAK6H,SAAS+8C,gBAAgBd,GACzBA,EAASjyB,SACZiyB,EAASjyB,OAAS,IAGpB7xB,KAAK6xB,OAAS7xB,KAAKwH,cAAcqqB,OACjC7xB,KAAK8+B,UAAY9+B,KAAKwH,cAAc48C,GACpCpkD,KAAKqnE,UAAYrnE,KAAKwH,cAAc48C,GAAK,IACzCpkD,KAAK6H,SAAS47C,wBAAwBK,EAASjyB,QAC/C7xB,KAAK07C,QAAUR,aAAa4I,EAASpI,SAAW,IAChD17C,KAAKqoE,QAAQ,gBACbroE,KAAKipE,gBACLjpE,KAAK8oE,eACL9oE,KAAKkpE,oBACLlpE,KAAKmpE,qBACDnpE,KAAK+G,UACP/G,KAAKmkD,gBAAgBl9C,QAEvB,MAAOmiE,GACPppE,KAAKqpE,mBAAmBD,KAI5B1D,cAAc1gE,UAAUmkE,mBAAqB,WACtCnpE,KAAK6H,WAGN7H,KAAK6H,SAAS80B,WAAW7M,YAAYqF,SACvCn1B,KAAKgpE,cAELz5C,WAAWvvB,KAAKmpE,mBAAmBxtD,KAAK3b,MAAO,MAInD0lE,cAAc1gE,UAAUgkE,YAAc,YAC/BhpE,KAAKm1B,UACDn1B,KAAK6H,SAAS80B,WAAW7M,YAAYqF,WACpCn1B,KAAKkkD,eAAe/U,gBAAiD,WAA/BnvC,KAAK6H,SAAS+1C,eACpD59C,KAAKkkD,eAAe9U,mBAE5BpvC,KAAKm1B,UAAW,EAChBzC,YAAYg2C,aAAa1oE,KAAKwH,cAAexH,KAAK6H,SAAS80B,WAAW7M,aAClEjZ,mBACFA,kBAAkB8sC,gBAAgB3jD,MAEpCA,KAAK6H,SAASq7C,YACd3zB,WAAW,WACTvvB,KAAKqoE,QAAQ,cACb1sD,KAAK3b,MAAO,GACdA,KAAKspE,YACDtpE,KAAKuH,UACPvH,KAAKgH,SAKX0+D,cAAc1gE,UAAU6hE,OAAS,WAC/B7mE,KAAK6H,SAASi9C,uBAGhB4gB,cAAc1gE,UAAUukE,YAAc,SAAUlxD,GAC9CrY,KAAK4nE,oBAAsBvvD,GAG7BqtD,cAAc1gE,UAAUskE,UAAY,WAClCtpE,KAAKmlD,aAAenlD,KAAK4nE,kBAAoB5nE,KAAKonE,kBAAoBpnE,KAAKonE,gBAEvEpnE,KAAK0nE,gBAAkB1nE,KAAK6Z,aAAe7Z,KAAKmlD,aAAenlD,KAAK0nE,gBACtE1nE,KAAKmlD,aAAenlD,KAAK0nE,eAE3B1nE,KAAKqoE,QAAQ,cACbroE,KAAKklD,eAGPwgB,cAAc1gE,UAAUkgD,YAAc,WACpC,IAAsB,IAAlBllD,KAAKm1B,UAAuBn1B,KAAK6H,SAGrC,IACE7H,KAAK6H,SAASq9C,YAAYllD,KAAKmlD,aAAenlD,KAAK4Z,YACnD,MAAOwvD,GACPppE,KAAKwpE,wBAAwBJ,KAIjC1D,cAAc1gE,UAAUgC,KAAO,SAAUvI,GACnCA,GAAQuB,KAAKvB,OAASA,IAGJ,IAAlBuB,KAAK+G,WACP/G,KAAK+G,UAAW,EAChB/G,KAAKmkD,gBAAgBtY,SACjB7rC,KAAK6nE,QACP7nE,KAAK6nE,OAAQ,EACb7nE,KAAKqoE,QAAQ,cAKnB3C,cAAc1gE,UAAUiC,MAAQ,SAAUxI,GACpCA,GAAQuB,KAAKvB,OAASA,IAGJ,IAAlBuB,KAAK+G,WACP/G,KAAK+G,UAAW,EAChB/G,KAAK6nE,OAAQ,EACb7nE,KAAKqoE,QAAQ,SACbroE,KAAKmkD,gBAAgBl9C,UAIzBy+D,cAAc1gE,UAAUqhE,YAAc,SAAU5nE,GAC1CA,GAAQuB,KAAKvB,OAASA,KAGJ,IAAlBuB,KAAK+G,SACP/G,KAAKgH,OAELhH,KAAKiH,UAITy+D,cAAc1gE,UAAUoD,KAAO,SAAU3J,GACnCA,GAAQuB,KAAKvB,OAASA,IAG1BuB,KAAKiH,QACLjH,KAAKwnE,UAAY,EACjBxnE,KAAK8nE,gBAAiB,EACtB9nE,KAAKypE,wBAAwB,KAG/B/D,cAAc1gE,UAAU0kE,cAAgB,SAAUC,GAEhD,IADA,IAAIC,EACK9lE,EAAI,EAAGA,EAAI9D,KAAK07C,QAAQx7C,OAAQ4D,GAAK,EAE5C,IADA8lE,EAAS5pE,KAAK07C,QAAQ53C,IACXs3C,SAAWwuB,EAAOxuB,QAAQ38C,OAASkrE,EAC5C,OAAOC,EAGX,OAAO,MAGTlE,cAAc1gE,UAAU8hE,YAAc,SAAU7lE,EAAO8lE,EAAStoE,GAC9D,IAAIA,GAAQuB,KAAKvB,OAASA,EAA1B,CAGA,IAAIorE,EAAWC,OAAO7oE,GACtB,GAAI+B,MAAM6mE,GAAW,CACnB,IAAID,EAAS5pE,KAAK0pE,cAAczoE,GAC5B2oE,GACF5pE,KAAK8mE,YAAY8C,EAAO/tB,MAAM,QAEvBkrB,EACT/mE,KAAKypE,wBAAwBxoE,GAE7BjB,KAAKypE,wBAAwBxoE,EAAQjB,KAAK+pE,eAE5C/pE,KAAKiH,UAGPy+D,cAAc1gE,UAAUglE,YAAc,SAAU/oE,EAAO8lE,EAAStoE,GAC9D,IAAIA,GAAQuB,KAAKvB,OAASA,EAA1B,CAGA,IAAIorE,EAAWC,OAAO7oE,GACtB,GAAI+B,MAAM6mE,GAAW,CACnB,IAAID,EAAS5pE,KAAK0pE,cAAczoE,GAC5B2oE,IACGA,EAAO7tB,SAGV/7C,KAAKqI,aAAa,CAACuhE,EAAO/tB,KAAM+tB,EAAO/tB,KAAO+tB,EAAO7tB,WAAW,GAFhE/7C,KAAK8mE,YAAY8C,EAAO/tB,MAAM,SAMlC77C,KAAK8mE,YAAY+C,EAAU9C,EAAStoE,GAEtCuB,KAAKgH,SAGP0+D,cAAc1gE,UAAUihE,YAAc,SAAUhlE,GAC9C,IAAsB,IAAlBjB,KAAK+G,WAAuC,IAAlB/G,KAAKm1B,SAAnC,CAGA,IAAI80C,EAAYjqE,KAAKonE,gBAAkBnmE,EAAQjB,KAAK+pE,cAChDG,GAAc,EAGdD,GAAajqE,KAAK6Z,YAAc,GAAK7Z,KAAK+pE,cAAgB,EACvD/pE,KAAKsH,MAAQtH,KAAKwnE,YAAcxnE,KAAKsH,KAK/B2iE,GAAajqE,KAAK6Z,aAC3B7Z,KAAKwnE,WAAa,EACbxnE,KAAKmqE,cAAcF,EAAYjqE,KAAK6Z,eACvC7Z,KAAKypE,wBAAwBQ,EAAYjqE,KAAK6Z,aAC9C7Z,KAAK8nE,gBAAiB,EACtB9nE,KAAKqoE,QAAQ,kBAGfroE,KAAKypE,wBAAwBQ,GAZxBjqE,KAAKmqE,cAAcF,EAAYjqE,KAAK6Z,YAAcowD,EAAYjqE,KAAK6Z,YAAc,KACpFqwD,GAAc,EACdD,EAAYjqE,KAAK6Z,YAAc,GAY1BowD,EAAY,EAChBjqE,KAAKmqE,cAAcF,EAAYjqE,KAAK6Z,gBACnC7Z,KAAKsH,MAAUtH,KAAKwnE,aAAe,IAAmB,IAAdxnE,KAAKsH,MAQ/C4iE,GAAc,EACdD,EAAY,IARZjqE,KAAKypE,wBAAwBzpE,KAAK6Z,YAAeowD,EAAYjqE,KAAK6Z,aAC7D7Z,KAAK8nE,eAGR9nE,KAAKqoE,QAAQ,gBAFbroE,KAAK8nE,gBAAiB,IAU5B9nE,KAAKypE,wBAAwBQ,GAE3BC,IACFlqE,KAAKypE,wBAAwBQ,GAC7BjqE,KAAKiH,QACLjH,KAAKqoE,QAAQ,eAIjB3C,cAAc1gE,UAAUolE,cAAgB,SAAUruD,EAAKd,GACrDjb,KAAKwnE,UAAY,EACbzrD,EAAI,GAAKA,EAAI,IACX/b,KAAK+pE,cAAgB,IACnB/pE,KAAKsnE,UAAY,EACnBtnE,KAAKsI,UAAUtI,KAAKsnE,WAEpBtnE,KAAKuI,cAAc,IAGvBvI,KAAK6Z,YAAckC,EAAI,GAAKA,EAAI,GAChC/b,KAAK0nE,cAAgB1nE,KAAK6Z,YAC1B7Z,KAAK4Z,WAAamC,EAAI,GACtB/b,KAAKypE,wBAAwBzpE,KAAK6Z,YAAc,KAAQoB,IAC/Cc,EAAI,GAAKA,EAAI,KAClB/b,KAAK+pE,cAAgB,IACnB/pE,KAAKsnE,UAAY,EACnBtnE,KAAKsI,UAAUtI,KAAKsnE,WAEpBtnE,KAAKuI,aAAa,IAGtBvI,KAAK6Z,YAAckC,EAAI,GAAKA,EAAI,GAChC/b,KAAK0nE,cAAgB1nE,KAAK6Z,YAC1B7Z,KAAK4Z,WAAamC,EAAI,GACtB/b,KAAKypE,wBAAwB,KAAQxuD,IAEvCjb,KAAKqoE,QAAQ,iBAEf3C,cAAc1gE,UAAUqlE,WAAa,SAAU5pC,EAAM6pC,GACnD,IAAIC,GAAgB,EAChBvqE,KAAK+G,WACH/G,KAAKonE,gBAAkBpnE,KAAK4Z,WAAa6mB,EAC3C8pC,EAAe9pC,EACNzgC,KAAKonE,gBAAkBpnE,KAAK4Z,WAAa0wD,IAClDC,EAAeD,EAAM7pC,IAIzBzgC,KAAK4Z,WAAa6mB,EAClBzgC,KAAK6Z,YAAcywD,EAAM7pC,EACzBzgC,KAAK0nE,cAAgB1nE,KAAK6Z,aACJ,IAAlB0wD,GACFvqE,KAAK8mE,YAAYyD,GAAc,IAInC7E,cAAc1gE,UAAUqD,aAAe,SAAU0T,EAAKyuD,GAIpD,GAHIA,IACFxqE,KAAK0H,SAASxH,OAAS,GAEH,kBAAX6b,EAAI,GAAiB,CAC9B,IAAIjY,EACA8T,EAAMmE,EAAI7b,OACd,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAK0H,SAASvE,KAAK4Y,EAAIjY,SAGzB9D,KAAK0H,SAASvE,KAAK4Y,GAEjB/b,KAAK0H,SAASxH,QAAUsqE,GAC1BxqE,KAAKoqE,cAAcpqE,KAAK0H,SAASkhE,QAAS,GAExC5oE,KAAK+G,UACP/G,KAAKgH,QAIT0+D,cAAc1gE,UAAUylE,cAAgB,SAAUD,GAChDxqE,KAAK0H,SAASxH,OAAS,EACvBF,KAAK0H,SAASvE,KAAK,CAACnD,KAAKwH,cAAcq6C,GAAI7hD,KAAKwH,cAAcgjC,KAE1DggC,GACFxqE,KAAKmqE,cAAc,IAGvBzE,cAAc1gE,UAAUmlE,cAAgB,SAAUlvD,GAChD,QAAIjb,KAAK0H,SAASxH,SAChBF,KAAKoqE,cAAcpqE,KAAK0H,SAASkhE,QAAS3tD,IACnC,IAKXyqD,cAAc1gE,UAAUkD,QAAU,SAAUzJ,GACrCA,GAAQuB,KAAKvB,OAASA,IAAUuB,KAAK6H,WAG1C7H,KAAK6H,SAASK,UACdlI,KAAKkkD,eAAeh8C,UACpBlI,KAAKqoE,QAAQ,WACbroE,KAAK0b,KAAO,KACZ1b,KAAK0qE,aAAe,KACpB1qE,KAAK2qE,eAAiB,KACtB3qE,KAAK4qE,WAAa,KAClB5qE,KAAK6qE,eAAiB,KACtB7qE,KAAK8qE,UAAY,KACjB9qE,KAAK6H,SAAW,KAChB7H,KAAK6H,SAAW,KAChB7H,KAAKkkD,eAAiB,KACtBlkD,KAAKijD,iBAAmB,OAG1ByiB,cAAc1gE,UAAUykE,wBAA0B,SAAUxoE,GAC1DjB,KAAKonE,gBAAkBnmE,EACvBjB,KAAKspE,aAGP5D,cAAc1gE,UAAUsD,SAAW,SAAU1F,GAC3C5C,KAAKsnE,UAAY1kE,EACjB5C,KAAKkpE,qBAGPxD,cAAc1gE,UAAUuD,aAAe,SAAU3F,GAC/C5C,KAAKunE,cAAgB3kE,EAAM,GAAK,EAAI,EACpC5C,KAAKkpE,qBAGPxD,cAAc1gE,UAAUunC,UAAY,SAAU3pC,EAAKnE,GAC7CA,GAAQuB,KAAKvB,OAASA,GAG1BuB,KAAKmkD,gBAAgB5X,UAAU3pC,IAGjC8iE,cAAc1gE,UAAU4nC,UAAY,WAClC,OAAO5sC,KAAKmkD,gBAAgBvX,aAG9B84B,cAAc1gE,UAAU0nC,KAAO,SAAUjuC,GACnCA,GAAQuB,KAAKvB,OAASA,GAG1BuB,KAAKmkD,gBAAgBzX,QAGvBg5B,cAAc1gE,UAAU2nC,OAAS,SAAUluC,GACrCA,GAAQuB,KAAKvB,OAASA,GAG1BuB,KAAKmkD,gBAAgBxX,UAGvB+4B,cAAc1gE,UAAUkkE,kBAAoB,WAC1ClpE,KAAK+pE,cAAgB/pE,KAAKqnE,UAAYrnE,KAAKsnE,UAAYtnE,KAAKunE,cAC5DvnE,KAAKmkD,gBAAgBrY,QAAQ9rC,KAAKsnE,UAAYtnE,KAAKunE,gBAGrD7B,cAAc1gE,UAAU+lE,QAAU,WAChC,OAAO/qE,KAAKkxB,MAGdw0C,cAAc1gE,UAAU0oC,cAAgB,SAAUC,GAChD,IAAIzc,EAAO,GACX,GAAIyc,EAAU5sC,EACZmwB,EAAOyc,EAAUjzB,OACZ,GAAI1a,KAAK4tC,WAAY,CAC1B,IAAIE,EAAYH,EAAUjzB,GACY,IAAlCozB,EAAUpxB,QAAQ,aACpBoxB,EAAYA,EAAUxqC,MAAM,KAAK,IAEnC4tB,EAAOlxB,KAAK4tC,WAAaE,OAEzB5c,EAAOlxB,KAAKkxB,KACZA,GAAQyc,EAAUI,EAAIJ,EAAUI,EAAI,GACpC7c,GAAQyc,EAAUjzB,EAEpB,OAAOwW,GAGTw0C,cAAc1gE,UAAUg/C,aAAe,SAAU3hD,GAG/C,IAFA,IAAIyB,EAAI,EACJ8T,EAAM5X,KAAK6xB,OAAO3xB,OACf4D,EAAI8T,GAAK,CACd,GAAIvV,IAAOrC,KAAK6xB,OAAO/tB,GAAGzB,GACxB,OAAOrC,KAAK6xB,OAAO/tB,GAErBA,GAAK,EAEP,OAAO,MAGT4hE,cAAc1gE,UAAU3G,KAAO,WAC7B2B,KAAK6H,SAASxJ,QAGhBqnE,cAAc1gE,UAAUwgD,KAAO,WAC7BxlD,KAAK6H,SAAS29C,QAGhBkgB,cAAc1gE,UAAUgmE,YAAc,SAAUjE,GAC9C,OAAOA,EAAU/mE,KAAK6Z,YAAc7Z,KAAK6Z,YAAc7Z,KAAK8+B,WAG9D4mC,cAAc1gE,UAAUqjE,QAAU,SAAU5pE,GAC1C,GAAIuB,KAAK0b,MAAQ1b,KAAK0b,KAAKjd,GACzB,OAAQA,GACN,IAAK,aACHuB,KAAKyb,aAAahd,EAAM,IAAI0a,kBAAkB1a,EAAMuB,KAAKmlD,aAAcnlD,KAAK6Z,YAAa7Z,KAAK+pE,gBAC9F,MACF,IAAK,eACH/pE,KAAKyb,aAAahd,EAAM,IAAI+a,oBAAoB/a,EAAMuB,KAAKsH,KAAMtH,KAAKwnE,UAAWxnE,KAAKqnE,YACtF,MACF,IAAK,WACHrnE,KAAKyb,aAAahd,EAAM,IAAI8a,gBAAgB9a,EAAMuB,KAAKqnE,YACvD,MACF,IAAK,eACHrnE,KAAKyb,aAAahd,EAAM,IAAIkb,oBAAoBlb,EAAMuB,KAAK4Z,WAAY5Z,KAAK6Z,cAC5E,MACF,IAAK,UACH7Z,KAAKyb,aAAahd,EAAM,IAAIqb,eAAerb,EAAMuB,OACjD,MACF,QACEA,KAAKyb,aAAahd,GAGX,eAATA,GAAyBuB,KAAK0qE,cAChC1qE,KAAK0qE,aAAatqE,KAAKJ,KAAM,IAAImZ,kBAAkB1a,EAAMuB,KAAKmlD,aAAcnlD,KAAK6Z,YAAa7Z,KAAKqnE,YAExF,iBAAT5oE,GAA2BuB,KAAK2qE,gBAClC3qE,KAAK2qE,eAAevqE,KAAKJ,KAAM,IAAIwZ,oBAAoB/a,EAAMuB,KAAKsH,KAAMtH,KAAKwnE,UAAWxnE,KAAKqnE,YAElF,aAAT5oE,GAAuBuB,KAAK4qE,YAC9B5qE,KAAK4qE,WAAWxqE,KAAKJ,KAAM,IAAIuZ,gBAAgB9a,EAAMuB,KAAKqnE,YAE/C,iBAAT5oE,GAA2BuB,KAAK6qE,gBAClC7qE,KAAK6qE,eAAezqE,KAAKJ,KAAM,IAAI2Z,oBAAoBlb,EAAMuB,KAAK4Z,WAAY5Z,KAAK6Z,cAExE,YAATpb,GAAsBuB,KAAK8qE,WAC7B9qE,KAAK8qE,UAAU1qE,KAAKJ,KAAM,IAAI8Z,eAAerb,EAAMuB,QAIvD0lE,cAAc1gE,UAAUwkE,wBAA0B,SAAUxvD,GAC1D,IAAIovD,EAAQ,IAAIrvD,wBAAwBC,EAAaha,KAAKmlD,cAC1DnlD,KAAKyb,aAAa,QAAS2tD,GAEvBppE,KAAKirE,SACPjrE,KAAKirE,QAAQ7qE,KAAKJ,KAAMopE,IAI5B1D,cAAc1gE,UAAUqkE,mBAAqB,SAAUrvD,GACrD,IAAIovD,EAAQ,IAAInvD,mBAAmBD,EAAaha,KAAKmlD,cACrDnlD,KAAKyb,aAAa,QAAS2tD,GAEvBppE,KAAKirE,SACPjrE,KAAKirE,QAAQ7qE,KAAKJ,KAAMopE,IAO5B,IAAI8B,YAAe,WACjB,IAAIjkD,EAAK,CACTA,gBAEA,SAAyBs+C,GACvB,IAAI4F,EAAa,EACbC,EAAY,GA4BhB7F,EAAU19D,SAASirD,cAAgBC,wBAAwBwS,EAAU19D,UACrE09D,EAAU19D,SAAS80B,WAAWsmB,iBAAiBW,oBAAoB2hB,EAAU19D,UAC7E09D,EAAU19D,SAAS80B,WAAW0uC,eA5B9B,WACEF,GAAc,GA4BhB5F,EAAU19D,SAAS80B,WAAW2uC,cAzB9B,WAEqB,KADnBH,GAAc,IAYhB,WACE,IAAIrnE,EACA8T,EAAMwzD,EAAUlrE,OACpB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBsnE,EAAUtnE,GAAGuiC,UAEf+kC,EAAUlrE,OAAS,EAhBjBqrE,IAuBJhG,EAAU19D,SAAS80B,WAAW6uC,2BAnB9B,SAAoCC,IACK,IAAnCL,EAAU1uD,QAAQ+uD,IACpBL,EAAUjoE,KAAKsoE,MAmBrB,OAAOxkD,EAxCU,GA2CnBpQ,kBAAoBq0D,YAKpB,IAAIQ,kBAAqB,WAGvB,IAAIzkD,GAAK,GACLtpB,KAAO8Z,OACP/Z,OAAS,KACT0G,SAAW,KAEf,SAASunE,sBAAsB5vD,GAC7B,OAAOA,EAAIrQ,cAAgBhF,OAASqV,EAAIrQ,cAAgBuQ,aAG1D,SAAS2vD,YAAYC,EAAMtxD,GACzB,MAAgB,WAATsxD,GAA8B,YAATA,GAA+B,WAATA,GAAqBtxD,aAAauvD,OAGtF,SAASgC,QAAQ3tE,GACf,IAAI4tE,SAAc5tE,EAClB,GAAa,WAAT4tE,GAA8B,YAATA,GAAsB5tE,aAAa2rE,OAC1D,OAAQ3rE,EAEV,GAAIwtE,sBAAsBxtE,GAAI,CAC5B,IAAI2F,EACAkoE,EAAO7tE,EAAE+B,OACT+rE,EAAS,GACb,IAAKnoE,EAAI,EAAGA,EAAIkoE,EAAMloE,GAAK,EACzBmoE,EAAOnoE,IAAM3F,EAAE2F,GAEjB,OAAOmoE,EAET,OAAI9tE,EAAEo6B,SACGp6B,EAAEoc,GAEHpc,EAGV,IAAI+tE,UAAYllD,cAAcsS,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAUp7B,IAC5EiuE,WAAanlD,cAAcsS,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAWp7B,IAC9EkuE,aAAeplD,cAAcsS,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAap7B,IAEjF,SAASmuE,IAAIluE,EAAG2B,GACd,IAAIisE,SAAc5tE,EACdmuE,SAAcxsE,EAClB,GAAa,WAATisE,GAA8B,WAATO,EACvB,OAAOnuE,EAAI2B,EAEb,GAAI8rE,YAAYG,EAAM5tE,IAAMytE,YAAYU,EAAMxsE,GAC5C,OAAO3B,EAAI2B,EAEb,GAAI6rE,sBAAsBxtE,IAAMytE,YAAYU,EAAMxsE,GAGhD,OAFA3B,EAAIA,EAAEmN,MAAM,IACV,IAAMxL,EACD3B,EAET,GAAIytE,YAAYG,EAAM5tE,IAAMwtE,sBAAsB7rE,GAGhD,OAFAA,EAAIA,EAAEwL,MAAM,IACV,GAAKnN,EAAI2B,EAAE,GACNA,EAET,GAAI6rE,sBAAsBxtE,IAAMwtE,sBAAsB7rE,GAAI,CAKxD,IAJA,IAAIgE,EAAI,EACJkoE,EAAO7tE,EAAE+B,OACTqsE,EAAOzsE,EAAEI,OACT+rE,EAAS,GACNnoE,EAAIkoE,GAAQloE,EAAIyoE,IACA,kBAATpuE,EAAE2F,IAAmB3F,EAAE2F,aAAcgmE,UAA4B,kBAAThqE,EAAEgE,IAAmBhE,EAAEgE,aAAcgmE,QACvGmC,EAAOnoE,GAAK3F,EAAE2F,GAAKhE,EAAEgE,GAErBmoE,EAAOnoE,QAAclE,IAATE,EAAEgE,GAAmB3F,EAAE2F,GAAK3F,EAAE2F,IAAMhE,EAAEgE,GAEpDA,GAAK,EAEP,OAAOmoE,EAET,OAAO,EAET,IAAI70B,IAAMi1B,IAEV,SAASG,IAAIruE,EAAG2B,GACd,IAAIisE,SAAc5tE,EACdmuE,SAAcxsE,EAClB,GAAI8rE,YAAYG,EAAM5tE,IAAMytE,YAAYU,EAAMxsE,GAO5C,MANa,WAATisE,IACF5tE,EAAI6pE,SAAS7pE,EAAG,KAEL,WAATmuE,IACFxsE,EAAIkoE,SAASloE,EAAG,KAEX3B,EAAI2B,EAEb,GAAI6rE,sBAAsBxtE,IAAMytE,YAAYU,EAAMxsE,GAGhD,OAFA3B,EAAIA,EAAEmN,MAAM,IACV,IAAMxL,EACD3B,EAET,GAAIytE,YAAYG,EAAM5tE,IAAMwtE,sBAAsB7rE,GAGhD,OAFAA,EAAIA,EAAEwL,MAAM,IACV,GAAKnN,EAAI2B,EAAE,GACNA,EAET,GAAI6rE,sBAAsBxtE,IAAMwtE,sBAAsB7rE,GAAI,CAKxD,IAJA,IAAIgE,EAAI,EACJkoE,EAAO7tE,EAAE+B,OACTqsE,EAAOzsE,EAAEI,OACT+rE,EAAS,GACNnoE,EAAIkoE,GAAQloE,EAAIyoE,IACA,kBAATpuE,EAAE2F,IAAmB3F,EAAE2F,aAAcgmE,UAA4B,kBAAThqE,EAAEgE,IAAmBhE,EAAEgE,aAAcgmE,QACvGmC,EAAOnoE,GAAK3F,EAAE2F,GAAKhE,EAAEgE,GAErBmoE,EAAOnoE,QAAclE,IAATE,EAAEgE,GAAmB3F,EAAE2F,GAAK3F,EAAE2F,IAAMhE,EAAEgE,GAEpDA,GAAK,EAEP,OAAOmoE,EAET,OAAO,EAGT,SAASQ,IAAItuE,EAAG2B,GACd,IAEIic,EAKAjY,EACA8T,EARAm0D,SAAc5tE,EACdmuE,SAAcxsE,EAElB,GAAI8rE,YAAYG,EAAM5tE,IAAMytE,YAAYU,EAAMxsE,GAC5C,OAAO3B,EAAI2B,EAKb,GAAI6rE,sBAAsBxtE,IAAMytE,YAAYU,EAAMxsE,GAAI,CAGpD,IAFA8X,EAAMzZ,EAAE+B,OACR6b,EAAMF,iBAAiB,UAAWjE,GAC7B9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAK3F,EAAE2F,GAAKhE,EAElB,OAAOic,EAET,GAAI6vD,YAAYG,EAAM5tE,IAAMwtE,sBAAsB7rE,GAAI,CAGpD,IAFA8X,EAAM9X,EAAEI,OACR6b,EAAMF,iBAAiB,UAAWjE,GAC7B9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAK3F,EAAI2B,EAAEgE,GAEjB,OAAOiY,EAET,OAAO,EAGT,SAAS6qD,IAAIzoE,EAAG2B,GACd,IAEIic,EAIAjY,EACA8T,EAPAm0D,SAAc5tE,EACdmuE,SAAcxsE,EAElB,GAAI8rE,YAAYG,EAAM5tE,IAAMytE,YAAYU,EAAMxsE,GAC5C,OAAO3B,EAAI2B,EAIb,GAAI6rE,sBAAsBxtE,IAAMytE,YAAYU,EAAMxsE,GAAI,CAGpD,IAFA8X,EAAMzZ,EAAE+B,OACR6b,EAAMF,iBAAiB,UAAWjE,GAC7B9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAK3F,EAAE2F,GAAKhE,EAElB,OAAOic,EAET,GAAI6vD,YAAYG,EAAM5tE,IAAMwtE,sBAAsB7rE,GAAI,CAGpD,IAFA8X,EAAM9X,EAAEI,OACR6b,EAAMF,iBAAiB,UAAWjE,GAC7B9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAK3F,EAAI2B,EAAEgE,GAEjB,OAAOiY,EAET,OAAO,EAET,SAAS2wD,IAAIvuE,EAAG2B,GAOd,MANiB,kBAAN3B,IACTA,EAAI6pE,SAAS7pE,EAAG,KAED,kBAAN2B,IACTA,EAAIkoE,SAASloE,EAAG,KAEX3B,EAAI2B,EAEb,IAAI6sE,QAAUN,IACVO,QAAUJ,IACVK,QAAUJ,IACVK,QAAUlG,IACVmG,QAAUL,IAEd,SAASM,MAAMprB,EAAKryC,EAAKC,GACvB,GAAID,EAAMC,EAAK,CACb,IAAIy9D,EAAKz9D,EACTA,EAAMD,EACNA,EAAM09D,EAER,OAAOtvE,KAAK4R,IAAI5R,KAAK6R,IAAIoyC,EAAKryC,GAAMC,GAGtC,SAAS09D,iBAAiBtqE,GACxB,OAAOA,EAAMqV,UAEf,IAAIk1D,mBAAqBD,iBAEzB,SAASE,iBAAiBxqE,GACxB,OAAOA,EAAMqV,UAEf,IAAIo1D,mBAAqBH,iBAErBI,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,SAASptE,OAAOqtE,EAAMC,GACpB,GAAoB,kBAATD,GAAqBA,aAAgBzD,OAE9C,OADA0D,EAAOA,GAAQ,EACR7vE,KAAKka,IAAI01D,EAAOC,GAKzB,IAAI1pE,EAHC0pE,IACHA,EAAOF,mBAGT,IAAI11D,EAAMja,KAAK4R,IAAIg+D,EAAKrtE,OAAQstE,EAAKttE,QACjC6qB,EAAc,EAClB,IAAKjnB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBinB,GAAeptB,KAAKwZ,IAAIq2D,EAAK1pE,GAAKypE,EAAKzpE,GAAI,GAE7C,OAAOnG,KAAK0Z,KAAK0T,GAGnB,SAAS0iD,UAAUC,GACjB,OAAO9G,IAAI8G,EAAKxtE,OAAOwtE,IAGzB,SAASC,SAAS/qE,GAChB,IAGI0X,EACApJ,EAJAsJ,EAAI5X,EAAI,GAAQ6X,EAAI7X,EAAI,GAAQ9C,EAAI8C,EAAI,GACxC4M,EAAM7R,KAAK6R,IAAIgL,EAAGC,EAAG3a,GACrByP,EAAM5R,KAAK4R,IAAIiL,EAAGC,EAAG3a,GAGrBqR,GAAK3B,EAAMD,GAAO,EAEtB,GAAIC,IAAQD,EACV+K,EAAI,EACJpJ,EAAI,MACC,CACL,IAAI4J,EAAItL,EAAMD,EAEd,OADA2B,EAAIC,EAAI,GAAM2J,GAAK,EAAItL,EAAMD,GAAOuL,GAAKtL,EAAMD,GACvCC,GACN,KAAKgL,EAAGF,GAAKG,EAAI3a,GAAKgb,GAAKL,EAAI3a,EAAI,EAAI,GAAI,MAC3C,KAAK2a,EAAGH,GAAKxa,EAAI0a,GAAKM,EAAI,EAAG,MAC7B,KAAKhb,EAAGwa,GAAKE,EAAIC,GAAKK,EAAI,EAG5BR,GAAK,EAGP,MAAO,CAACA,EAAGpJ,EAAGC,EAAGvO,EAAI,IAGvB,SAASgrE,QAAQlzD,EAAGC,EAAGC,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUF,EAAc,GAATC,EAAID,GAASE,EACpCA,EAAI,GAAcD,EAClBC,EAAI,EAAI,EAAUF,GAAKC,EAAID,IAAM,EAAI,EAAIE,GAAK,EAC3CF,EAGT,SAASmzD,SAASjrE,GAChB,IAII4X,EACAC,EACA3a,EANAwa,EAAI1X,EAAI,GACRsO,EAAItO,EAAI,GACRuO,EAAIvO,EAAI,GAMZ,GAAU,IAANsO,EACFsJ,EAAIrJ,EACJrR,EAAIqR,EACJsJ,EAAItJ,MACC,CACL,IAAIwJ,EAAIxJ,EAAI,GAAMA,GAAK,EAAID,GAAKC,EAAID,EAAIC,EAAID,EACxCwJ,EAAI,EAAIvJ,EAAIwJ,EAChBH,EAAIozD,QAAQlzD,EAAGC,EAAGL,EAAI,EAAI,GAC1BG,EAAImzD,QAAQlzD,EAAGC,EAAGL,GAClBxa,EAAI8tE,QAAQlzD,EAAGC,EAAGL,EAAI,EAAI,GAG5B,MAAO,CAACE,EAAGC,EAAG3a,EAAG8C,EAAI,IAGvB,SAASkrE,OAAOlzD,EAAGmzD,EAAMC,EAAMC,EAAQC,GAOrC,QANetuE,IAAXquE,QAAmCruE,IAAXsuE,IAC1BD,EAASF,EACTG,EAASF,EACTD,EAAO,EACPC,EAAO,GAELA,EAAOD,EAAM,CACf,IAAII,EAAQH,EACZA,EAAOD,EACPA,EAAOI,EAET,GAAIvzD,GAAKmzD,EACP,OAAOE,EACP,GAAIrzD,GAAKozD,EACT,OAAOE,EAET,IAIIpqE,EAJA8mB,EAAOojD,IAASD,EAAO,GAAKnzD,EAAImzD,IAASC,EAAOD,GACpD,IAAKE,EAAO/tE,OACV,OAAO+tE,GAAUC,EAASD,GAAUrjD,EAGtC,IAAIhT,EAAMq2D,EAAO/tE,OACb6b,EAAMF,iBAAiB,UAAWjE,GACtC,IAAK9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAKmqE,EAAOnqE,IAAMoqE,EAAOpqE,GAAKmqE,EAAOnqE,IAAM8mB,EAEjD,OAAO7O,EAET,SAASxZ,OAAOgN,EAAKC,GAUnB,QATY5P,IAAR4P,SACU5P,IAAR2P,GACFA,EAAM,EACNC,EAAM,IAENA,EAAMD,EACNA,OAAM3P,IAGN4P,EAAItP,OAAQ,CACd,IAAI4D,EACA8T,EAAMpI,EAAItP,OACTqP,IACHA,EAAMsM,iBAAiB,UAAWjE,IAEpC,IAAImE,EAAMF,iBAAiB,UAAWjE,GAClCw2D,EAAM32D,OAAOlV,SACjB,IAAKuB,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBiY,EAAIjY,GAAKyL,EAAIzL,GAAKsqE,GAAO5+D,EAAI1L,GAAKyL,EAAIzL,IAExC,OAAOiY,EAMT,YAJYnc,IAAR2P,IACFA,EAAM,GAGDA,EADIkI,OAAOlV,UACGiN,EAAMD,GAG7B,SAAS8+D,WAAWtmD,EAAQumD,EAAYC,EAAa9hD,GACnD,IAAI3oB,EACA8T,EAAMmQ,EAAO7nB,OACbgxB,EAAOsQ,UAAUrW,aACrB+F,EAAKsO,cAAc/S,EAAQ7U,GAC3B,IACI42D,EACAC,EAFAC,EAAiB,CAAC,EAAG,GAGzB,IAAK5qE,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB0qE,EAAiBF,GAAcA,EAAWxqE,GAAMwqE,EAAWxqE,GAAK4qE,EAChED,EAAkBF,GAAeA,EAAYzqE,GAAMyqE,EAAYzqE,GAAK4qE,EACpEx9C,EAAK2O,YAAY9X,EAAOjkB,GAAG,GAAIikB,EAAOjkB,GAAG,GAAI2qE,EAAe,GAAK1mD,EAAOjkB,GAAG,GAAI2qE,EAAe,GAAK1mD,EAAOjkB,GAAG,GAAI0qE,EAAc,GAAKzmD,EAAOjkB,GAAG,GAAI0qE,EAAc,GAAKzmD,EAAOjkB,GAAG,GAAIA,GAAG,GAExL,OAAOotB,EAGT,SAASy9C,mBAAmBjyC,KAAMxM,KAAM0+C,UACtC,IAAIhsE,IAAMstB,KAAKrN,EACXgsD,cAAgB,qBAAqBz4D,KAAKxT,KAC1CksE,cAA0C,IAA3BlsE,IAAI8Z,QAAQ,UAC3BqyD,SAAWryC,KAAKxM,KAAKjQ,GACrBE,UACA6uD,cACA9b,QACA+b,OACAC,aAAeN,SACnBM,aAAaC,YAAcD,aAAahwC,eACxClhC,OAAOC,eAAeixE,aAAc,QAAS,CAC3ChxE,IAAK,WACH,OAAOgxE,aAAa30D,KAGxBmiB,KAAKT,KAAKmzC,cAAgB,EAAI1yC,KAAKT,KAAKU,WAAWmC,UACnDpC,KAAKT,KAAKozC,iBAAmB,EAC7B,IAAIC,QAAU5yC,KAAKxM,KAAK2xB,GAAKnlB,KAAKT,KAAKU,WAAWmC,UAC9CywC,SAAW7yC,KAAKxM,KAAKsa,GAAK9N,KAAKT,KAAKU,WAAWmC,UAC/C11B,MAAQszB,KAAKxM,KAAKiiB,GAAKzV,KAAKxM,KAAKiiB,GAAK,EACtC9oC,OAASqzB,KAAKxM,KAAKgK,GAAKwC,KAAKxM,KAAKgK,GAAK,EACvCz7B,KAAOi+B,KAAKxM,KAAKhJ,GACjBsoD,OACAC,QACAC,QACAC,SACAC,OACAC,QACAC,UACAC,SACAC,OACAC,kBACAx3D,SACAy3D,SACAC,YACA1wD,MACA2wD,UACAC,SACAvrD,KACAqqD,YACAmB,eAEAC,aACAC,oBAAsBC,KAAK,oCAAsC7tE,IAAM,0BAA0B,GACjG8tE,QAAU9B,SAAS3xC,GAAK/M,KAAKzhB,EAAEvO,OAAS,EAExCywE,QAAU3wE,KAAKkwB,OAAyB,IAAjBlwB,KAAKkwB,KAAKwwB,GAEjCkwB,OAAS,SAAgBC,EAAMC,GACjC,IAAIC,EACA/hE,EACAgiE,EAAYhxE,KAAKw4B,GAAGt4B,OAASF,KAAKw4B,GAAGt4B,OAAS,EAC9C+wE,EAAYp1D,iBAAiB,UAAWm1D,GAExCpjB,EAAajwD,KAAKoF,MADf,EACqB84C,MAG5B,IAFAk1B,EAAU,EACV/hE,EAAI,EACG+hE,EAAUnjB,GAAY,CAE3B,IAAK5+C,EAAI,EAAGA,EAAIgiE,EAAWhiE,GAAK,EAC9BiiE,EAAUjiE,KAAO8hE,EAAY,EAANA,EAAUr5D,OAAOlV,SAG1CwuE,GAAW,EAGb,IAAIG,EAbG,EAaOr1B,KACVjxB,EAAOsmD,EAAUvzE,KAAKoF,MAAMmuE,GAC5Bn1D,EAAMF,iBAAiB,UAAWm1D,GACtC,GAAIA,EAAY,EAAG,CACjB,IAAKhiE,EAAI,EAAGA,EAAIgiE,EAAWhiE,GAAK,EAC9B+M,EAAI/M,GAAKhP,KAAKw4B,GAAGxpB,GAAKiiE,EAAUjiE,KAAO8hE,EAAY,EAANA,EAAUr5D,OAAOlV,UAAYqoB,EAI5E,OAAO7O,EAET,OAAO/b,KAAKw4B,GAAKy4C,EAAU,KAAOH,EAAY,EAANA,EAAUr5D,OAAOlV,UAAYqoB,GACrEjP,KAAK3b,MAgBP,SAASmxE,eAAe3yE,EAAMu9C,GAC5B,OAAOyzB,OAAOhxE,EAAMu9C,GAAU,GAGhC,SAASq1B,gBAAgB5yE,EAAMu9C,GAC7B,OAAO2zB,QAAQlxE,EAAMu9C,GAAU,GAnB7BmzB,aAAaM,SACfA,OAASN,aAAaM,OAAO7zD,KAAKuzD,cAClCO,QAAUD,QAGRN,aAAaQ,UACfA,QAAUR,aAAaQ,QAAQ/zD,KAAKuzD,cACpCS,SAAWD,SAGTR,aAAaU,SACfA,OAASV,aAAaU,OAAOj0D,KAAKuzD,eAWhClvE,KAAKk/B,iBACPiwC,YAAcnvE,KAAKk/B,eAAevjB,KAAK3b,OAGrCA,KAAKqxE,oBACPf,eAAiBtwE,KAAKqxE,kBAAkB11D,KAAK3b,OAG/C,IAAIi8B,KAAOS,KAAKT,KAAKU,WAAWsmB,iBAAiBtnC,KAAK+gB,KAAKT,KAAKU,WAAWsmB,kBAiKvEpH,KACAy1B,SACArwE,MACAg3C,KACAs5B,UACAC,UACAC,cArKJ,SAASC,OAAOC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IACnEG,EAAQn0E,KAAK88B,MAAMo3C,EAAK,GAAIl0E,KAAK0Z,KAAKw6D,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAO55D,UAEpF,MAAO,EADIta,KAAK88B,MAAMo3C,EAAK,GAAIA,EAAK,IAAM55D,UAC7B65D,EAAO,GAGtB,SAASC,QAAQn3D,EAAGmzD,EAAMC,EAAMgE,EAAMC,GACpC,OAAOC,UAAU/F,WAAYvxD,EAAGmzD,EAAMC,EAAMgE,EAAMC,GAGpD,SAASE,OAAOv3D,EAAGmzD,EAAMC,EAAMgE,EAAMC,GACnC,OAAOC,UAAUhG,UAAWtxD,EAAGmzD,EAAMC,EAAMgE,EAAMC,GAGnD,SAASG,KAAKx3D,EAAGmzD,EAAMC,EAAMgE,EAAMC,GACjC,OAAOC,UAAU9F,aAAcxxD,EAAGmzD,EAAMC,EAAMgE,EAAMC,GAGtD,SAASC,UAAUvvE,EAAIiY,EAAGmzD,EAAMC,EAAMgE,EAAMC,QAC7BryE,IAAToyE,GACFA,EAAOjE,EACPkE,EAAOjE,GAEPpzD,GAAKA,EAAImzD,IAASC,EAAOD,GAEvBnzD,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAEN,IAAI4hB,EAAO75B,EAAGiY,GACd,GAAI+wD,sBAAsBqG,GAAO,CAC/B,IAAIK,EACAC,EAASN,EAAK9xE,OACd6b,EAAMF,iBAAiB,UAAWy2D,GACtC,IAAKD,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCt2D,EAAIs2D,IAASJ,EAAKI,GAAQL,EAAKK,IAAS71C,EAAOw1C,EAAKK,GAEtD,OAAOt2D,EAET,OAAQk2D,EAAOD,GAAQx1C,EAAOw1C,EAGhC,SAASO,WAAW12B,GAClB,IAAIw2B,EAEAxjE,EACAoqB,EAFAq5C,EAASpiD,KAAKzhB,EAAEvO,OAGpB,GAAKgwB,KAAKzhB,EAAEvO,QAAiC,kBAAfgwB,KAAKzhB,EAAE,GAMnC,GAFAI,GAAS,GACTgtC,GAAQnf,KAAKT,KAAKU,WAAWmC,WAClB5O,KAAKzhB,EAAE,GAAGmM,EACnB/L,EAAQ,EACRoqB,EAAU/I,KAAKzhB,EAAE,GAAGmM,MACf,CACL,IAAKy3D,EAAO,EAAGA,EAAOC,EAAS,EAAGD,GAAQ,EAAG,CAC3C,GAAIx2B,IAAS3rB,KAAKzhB,EAAE4jE,GAAMz3D,EAAG,CAC3B/L,EAAQwjE,EAAO,EACfp5C,EAAU/I,KAAKzhB,EAAE4jE,GAAMz3D,EACvB,MACK,GAAIihC,EAAO3rB,KAAKzhB,EAAE4jE,GAAMz3D,GAAKihC,EAAO3rB,KAAKzhB,EAAE4jE,EAAO,GAAGz3D,EAAG,CACzDihC,EAAO3rB,KAAKzhB,EAAE4jE,GAAMz3D,EAAIsV,KAAKzhB,EAAE4jE,EAAO,GAAGz3D,EAAIihC,GAC/ChtC,EAAQwjE,EAAO,EACfp5C,EAAU/I,KAAKzhB,EAAE4jE,EAAO,GAAGz3D,IAE3B/L,EAAQwjE,EAAO,EACfp5C,EAAU/I,KAAKzhB,EAAE4jE,GAAMz3D,GAEzB,QAGW,IAAX/L,IACFA,EAAQwjE,EAAO,EACfp5C,EAAU/I,KAAKzhB,EAAE4jE,GAAMz3D,QA3B3B/L,EAAQ,EACRoqB,EAAU,EA8BZ,IAAIu5C,EAAQ,GAGZ,OAFAA,EAAM3jE,MAAQA,EACd2jE,EAAM32B,KAAO5iB,EAAUyD,KAAKT,KAAKU,WAAWmC,UACrC0zC,EAGT,SAAS7zE,IAAIy6B,GACX,IAAIo5C,EACAH,EACAC,EACJ,IAAKpiD,KAAKzhB,EAAEvO,QAAiC,kBAAfgwB,KAAKzhB,EAAE,GACnC,MAAM,IAAI+sC,MAAM,yCAA2CpiB,GAE7DA,GAAO,EACPo5C,EAAQ,CACN32B,KAAM3rB,KAAKzhB,EAAE2qB,GAAKxe,EAAI8hB,KAAKT,KAAKU,WAAWmC,UAC3C79B,MAAO,IAET,IAAI8a,EAAM/d,OAAOgH,UAAU9D,eAAed,KAAK8vB,KAAKzhB,EAAE2qB,GAAM,KAAOlJ,KAAKzhB,EAAE2qB,GAAKloB,EAAIgf,KAAKzhB,EAAE2qB,EAAM,GAAGr4B,EAGnG,IADAuxE,EAASv2D,EAAI7b,OACRmyE,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCG,EAAMH,GAAQt2D,EAAIs2D,GAClBG,EAAMvxE,MAAMoxE,GAAQt2D,EAAIs2D,GAE1B,OAAOG,EAGT,SAASC,aAAaC,EAAQC,GAI5B,OAHKA,IACHA,EAAMj2C,KAAKT,KAAKU,WAAWmC,WAEtB4zC,EAASC,EAGlB,SAASC,aAAah4D,EAAG+3D,GAOvB,OANK/3D,GAAW,IAANA,IACRA,EAAIihC,MAED82B,IACHA,EAAMj2C,KAAKT,KAAKU,WAAWmC,WAEtBlkB,EAAI+3D,EAGb,SAASE,WAAWrtD,GAClB/N,OAAOq7D,WAAWC,SAAWvtD,GAG/B,SAASkmC,mBACP,OAAOhvB,KAAKgvB,mBAGd,SAASsnB,UAAUvyC,EAAM6pC,GACvB,MAAqB,kBAAVrpE,WACGrB,IAAR0qE,EACKrpE,MAAM+xE,UAAUvyC,GAElBx/B,MAAM+xE,UAAUvyC,EAAM6pC,GAExB,GAGT,SAASlyB,OAAO3X,EAAM6pC,GACpB,MAAqB,kBAAVrpE,WACGrB,IAAR0qE,EACKrpE,MAAMm3C,OAAO3X,GAEfx/B,MAAMm3C,OAAO3X,EAAM6pC,GAErB,GAGT,SAAS2I,cAAcC,GACrBr3B,KAA2B,IAApBq3B,EAAwB,EAAIv1E,KAAKoF,MAAM84C,KAAOq3B,GAAmBA,EACxEjyE,MAAQkuE,YAAYtzB,MAUtB,IAAIhtC,MAAQ6tB,KAAKxM,KAAKkJ,IAClB+5C,aAAez2C,KAAK2mB,YAAa3mB,KAAK2mB,UAAUnjD,QAChDs0B,OACAu+C,SAAWp1E,KAAKoF,MAAsB,IAAhBpF,KAAK4E,UAC3Bo6B,WAAaD,KAAKC,WACtB,SAASy2C,kBAAkBC,GAMzB,OAJApyE,MAAQoyE,EACJvE,cACF+D,WAAWE,UAET/yE,KAAKszE,oBAAsB52C,KAAKC,WAAWC,SAA6B,iBAAlB58B,KAAKu4B,SACtDt3B,OAEa,iBAAlBjB,KAAKu4B,WACPg5C,UAAYvxE,KAAKuxE,UACjBC,UAAYxxE,KAAKwxE,UACjBC,cAAgBzxE,KAAKyxE,eAElBrB,YACHn4B,KAAOvb,KAAK61B,eAAeta,KAC3Bm4B,UAAY1zC,KAAK61B,eACjB8d,SAAW3zC,KAAKT,KAAK62B,cACrB+c,QAAUO,UAAUP,QAAQl0D,KAAKy0D,WACjCN,UAAYM,UAAUN,UAAUn0D,KAAKy0D,WACrCL,SAAWK,UAAUL,SAASp0D,KAAKy0D,WACnCJ,OAASI,UAAUJ,OAAOr0D,KAAKy0D,WAC/BtrD,KAAOsrD,UAAUtrD,KAAOsrD,UAAUtrD,KAAKnJ,KAAKy0D,WAAa,KACzDH,kBAAoBF,UAEjB5vD,YACHA,UAAYuc,KAAK61B,eAAe,wBAChCyc,cAAgB7uD,UACZA,YACFgwD,YAAchwD,UAAUgwD,cAOX,IAAbpB,UAAmB7b,UACrBA,QAAUkd,UAAU,4BAEjBnB,SACHA,OAASmB,UAAU,KAErB+C,aAAez2C,KAAK2mB,YAAa3mB,KAAK2mB,UAAUnjD,WAC9Bs0B,SAChBA,OAASkI,KAAK2mB,UAAU,GAAGkP,gBAE7B1W,KAAO77C,KAAKi8B,KAAKC,cAAgBl8B,KAAKi8B,KAAKU,WAAWmC,UAClD+vC,gBACFyC,SAAWhB,eAAez0B,OAE5B20B,sBACAxwE,KAAKszE,kBAAoB52C,KAAKC,WAAWC,QAGX,UAA1B2zC,aAAah4C,WACfg4C,aAAeA,aAAah2D,GAGvBg2D,cAET,OAAO6C,kBAIT,OADAnsD,GAAG0nD,mBAAqBA,mBACjB1nD,GAzsBgB,GA+sBrBssD,kBAsEK,CACLC,kBAtEF,SAA2B92C,EAAMxM,EAAM1T,GACjC0T,EAAKrN,IACPrG,EAAK/N,GAAI,EACT+N,EAAKqG,GAAI,EACTrG,EAAKmyD,mBAAqBjD,kBAAkBiD,mBAC5CnyD,EAAKqgB,gBAAgB15B,KAAKqZ,EAAKmyD,mBAAmBjyC,EAAMxM,EAAM1T,GAAMb,KAAKa,MAkE3Ei3D,eAnDF,SAAwBt7C,GACtB,IACI6G,EAAKh/B,KAAKk/B,eAAe/G,GACzB8G,EAAKj/B,KAAKk/B,eAAe/G,GAFhB,KAGT3vB,EAAQ,EACZ,GAAIw2B,EAAG9+B,OAAQ,CACb,IAAI4D,EACJ,IAAKA,EAAI,EAAGA,EAAIk7B,EAAG9+B,OAAQ4D,GAAK,EAC9B0E,GAAS7K,KAAKwZ,IAAI8nB,EAAGn7B,GAAKk7B,EAAGl7B,GAAI,GAEnC0E,EAA2B,IAAnB7K,KAAK0Z,KAAK7O,QAElBA,EAAQ,EAEV,OAAOA,GAsCP6oE,kBAnCF,SAA2Bl5C,GACzB,QAAiBv4B,IAAbI,KAAKq9B,IACP,OAAOr9B,KAAKq9B,IAEd,IAIIi0C,EAGExtE,EAPF4vE,GAAS,KAET10C,EAAKh/B,KAAKk/B,eAAe/G,GACzB8G,EAAKj/B,KAAKk/B,eAAe/G,EAAWu7C,GAExC,GAAI10C,EAAG9+B,OAGL,IAFAoxE,EAAWz1D,iBAAiB,UAAWmjB,EAAG9+B,QAErC4D,EAAI,EAAGA,EAAIk7B,EAAG9+B,OAAQ4D,GAAK,EAI9BwtE,EAASxtE,IAAMm7B,EAAGn7B,GAAKk7B,EAAGl7B,IAAM4vE,OAGlCpC,GAAYryC,EAAKD,GAAM00C,EAEzB,OAAOpC,GAePpyC,eAhEF,SAAwB/G,GAQtB,OAPAA,GAAYn4B,KAAK08B,KAAKC,WAAWmC,WACjC3G,GAAYn4B,KAAKs4B,cACAt4B,KAAK2zE,eAAel6C,YACnCz5B,KAAK2zE,eAAe96C,UAAY74B,KAAK2zE,eAAel6C,UAAYtB,EAAWn4B,KAAK2zE,eAAe96C,UAAY,EAC3G74B,KAAK2zE,eAAe1yE,MAAQjB,KAAKk4B,iBAAiBC,EAAUn4B,KAAK2zE,gBACjE3zE,KAAK2zE,eAAel6C,UAAYtB,GAE3Bn4B,KAAK2zE,eAAe1yE,OAyD3B2yE,qBAbF,WACE,OAAO5zE,KAAKw4B,IAaZq7C,iBAVF,SAA0BC,GACxB9zE,KAAK8zE,cAAgBA,KAgBxB,WACC,SAASpE,EAAQlxE,EAAMu9C,EAAUg4B,GAC/B,IAAK/zE,KAAKyO,IAAMzO,KAAK84B,UACnB,OAAO94B,KAAKw4B,GAEdh6B,EAAOA,EAAOA,EAAKw0B,cAAgB,GACnC,IAMIghD,EACAC,EAeAnwE,EACA8T,EACAs8D,EAxBA/uB,EAAenlD,KAAKi8B,KAAKC,cACzBpD,EAAY94B,KAAK84B,UACjBq7C,EAAer7C,EAAUA,EAAU54B,OAAS,GAAG0a,EACnD,GAAIuqC,GAAgBgvB,EAClB,OAAOn0E,KAAKw4B,GAqBd,GAjBKu7C,EAYHE,EAAgBE,GAFdH,EAHGj4B,EAGap+C,KAAKka,IAAIs8D,EAAen0E,KAAK08B,KAAKT,KAAKU,WAAWmC,UAAYid,GAF9Dp+C,KAAK6R,IAAI,EAAG2kE,EAAen0E,KAAK08B,KAAKxM,KAAK2xB,QAPvD9F,GAAYA,EAAWjjB,EAAU54B,OAAS,KAC7C67C,EAAWjjB,EAAU54B,OAAS,GAGhC8zE,EAAgBG,GADhBF,EAAgBn7C,EAAUA,EAAU54B,OAAS,EAAI67C,GAAUnhC,IAahD,aAATpc,GAEF,GADiBb,KAAKoF,OAAOoiD,EAAe8uB,GAAiBD,GAC5C,IAAM,EACnB,OAAOh0E,KAAKk/B,gBAAiB80C,GAAiB7uB,EAAe8uB,GAAiBD,EAAgBC,GAAkBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,OAE/I,IAAa,WAATtgC,EAAmB,CAC5B,IAAI41E,EAAQp0E,KAAKk/B,eAAe+0C,EAAgBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAC5Eu1C,EAAOr0E,KAAKk/B,eAAei1C,EAAen0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACxEw1C,EAAUt0E,KAAKk/B,iBAAiBimB,EAAe8uB,GAAiBD,EAAgBC,GAAiBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACnIy1C,EAAU52E,KAAKoF,OAAOoiD,EAAe8uB,GAAiBD,GAC1D,GAAIh0E,KAAKw4B,GAAGt4B,OAAQ,CAGlB,IADA0X,GADAs8D,EAAM,IAAIxtE,MAAM0tE,EAAMl0E,SACZA,OACL4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBowE,EAAIpwE,IAAMuwE,EAAKvwE,GAAKswE,EAAMtwE,IAAMywE,EAAUD,EAAQxwE,GAEpD,OAAOowE,EAET,OAAQG,EAAOD,GAASG,EAAUD,EAC7B,GAAa,aAAT91E,EAAqB,CAC9B,IAAIg2E,EAAYx0E,KAAKk/B,eAAei1C,EAAen0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAC/E21C,EAAgBz0E,KAAKk/B,gBAAgBi1C,EAAe,MAASn0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACjG,GAAI9+B,KAAKw4B,GAAGt4B,OAAQ,CAGlB,IADA0X,GADAs8D,EAAM,IAAIxtE,MAAM8tE,EAAUt0E,SAChBA,OACL4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACtBowE,EAAIpwE,GAAK0wE,EAAU1wE,IAAM0wE,EAAU1wE,GAAK2wE,EAAc3wE,MAAQqhD,EAAegvB,GAAgBn0E,KAAKi8B,KAAKU,WAAWmC,WAAa,KAEnI,OAAOo1C,EAET,OAAOM,GAA6CrvB,EAAegvB,GAAiB,MAAhEK,EAAYC,IAEhC,OAAOz0E,KAAKk/B,iBAAkBimB,EAAe8uB,GAAiBD,EAAgBC,GAAkBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAIpI,SAAS0wC,EAAOhxE,EAAMu9C,EAAUg4B,GAC9B,IAAK/zE,KAAKyO,EACR,OAAOzO,KAAKw4B,GAEdh6B,EAAOA,EAAOA,EAAKw0B,cAAgB,GACnC,IAMIghD,EACAG,EAeArwE,EACA8T,EACAs8D,EAxBA/uB,EAAenlD,KAAKi8B,KAAKC,cACzBpD,EAAY94B,KAAK84B,UACjBm7C,EAAgBn7C,EAAU,GAAGle,EACjC,GAAIuqC,GAAgB8uB,EAClB,OAAOj0E,KAAKw4B,GAqBd,GAjBKu7C,EAYHI,EAAeF,GAFbD,EAHGj4B,EAGap+C,KAAKka,IAAI7X,KAAK08B,KAAKT,KAAKU,WAAWmC,UAAYid,GAF/Cp+C,KAAK6R,IAAI,EAAGxP,KAAK08B,KAAKxM,KAAKsa,GAAKypC,OAP7Cl4B,GAAYA,EAAWjjB,EAAU54B,OAAS,KAC7C67C,EAAWjjB,EAAU54B,OAAS,GAGhC8zE,GADAG,EAAer7C,EAAUijB,GAAUnhC,GACJq5D,GAYpB,aAATz1E,GAEF,GADiBb,KAAKoF,OAAOkxE,EAAgB9uB,GAAgB6uB,GAC5C,IAAM,EACnB,OAAOh0E,KAAKk/B,iBAAkB+0C,EAAgB9uB,GAAgB6uB,EAAgBC,GAAkBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,OAE/H,IAAa,WAATtgC,EAAmB,CAC5B,IAAI41E,EAAQp0E,KAAKk/B,eAAe+0C,EAAgBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAC5Eu1C,EAAOr0E,KAAKk/B,eAAei1C,EAAen0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAC1Ew1C,EAAUt0E,KAAKk/B,gBAAgB80C,GAAkBC,EAAgB9uB,GAAgB6uB,EAAiBC,GAAiBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACnJy1C,EAAU52E,KAAKoF,OAAOkxE,EAAgB9uB,GAAgB6uB,GAAiB,EAC3E,GAAIh0E,KAAKw4B,GAAGt4B,OAAQ,CAGlB,IADA0X,GADAs8D,EAAM,IAAIxtE,MAAM0tE,EAAMl0E,SACZA,OACL4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBowE,EAAIpwE,GAAKwwE,EAAQxwE,IAAMuwE,EAAKvwE,GAAKswE,EAAMtwE,IAAMywE,EAE/C,OAAOL,EAET,OAAOI,GAAWD,EAAOD,GAASG,EAC7B,GAAa,aAAT/1E,EAAqB,CAC9B,IAAIk2E,EAAa10E,KAAKk/B,eAAe+0C,EAAgBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACjF61C,EAAiB30E,KAAKk/B,gBAAgB+0C,EAAgB,MAASj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GACnG,GAAI9+B,KAAKw4B,GAAGt4B,OAAQ,CAGlB,IADA0X,GADAs8D,EAAM,IAAIxtE,MAAMguE,EAAWx0E,SACjBA,OACL4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBowE,EAAIpwE,GAAK4wE,EAAW5wE,IAAO4wE,EAAW5wE,GAAK6wE,EAAe7wE,KAAOmwE,EAAgB9uB,GAAiB,KAEpG,OAAO+uB,EAET,OAAOQ,GAAeA,EAAaC,IAAmBV,EAAgB9uB,GAAiB,MAEvF,OAAOnlD,KAAKk/B,gBAAiB80C,IAAkBC,EAAgB9uB,GAAgB6uB,EAAgBC,IAAmBj0E,KAAKi8B,KAAKU,WAAWmC,UAAW,GAItJ,SAAS8wC,EAAOxmE,EAAOwrE,GACrB,IAAK50E,KAAKyO,EACR,OAAOzO,KAAKw4B,GAId,GAFApvB,EAAyB,IAAhBA,GAAS,KAClBwrE,EAAUj3E,KAAKoF,MAAM6xE,GAAW,KACjB,EACb,OAAO50E,KAAKw4B,GAEd,IAMIv3B,EAMA4zE,EAZAz7D,EAAcpZ,KAAKi8B,KAAKC,cAAgBl8B,KAAKi8B,KAAKU,WAAWmC,UAC7D9G,EAAY5e,EAAchQ,EAE1B0rE,EAAkBF,EAAU,GADjBx7D,EAAchQ,EACmB4uB,IAAc48C,EAAU,GAAK,EACzE9wE,EAAI,EACJkL,EAAI,EAQR,IALE/N,EADEjB,KAAKw4B,GAAGt4B,OACF2b,iBAAiB,UAAW7b,KAAKw4B,GAAGt4B,QAEpC,EAGH4D,EAAI8wE,GAAS,CAElB,GADAC,EAAc70E,KAAKk/B,eAAelH,EAAYl0B,EAAIgxE,GAC9C90E,KAAKw4B,GAAGt4B,OACV,IAAK8O,EAAI,EAAGA,EAAIhP,KAAKw4B,GAAGt4B,OAAQ8O,GAAK,EACnC/N,EAAM+N,IAAM6lE,EAAY7lE,QAG1B/N,GAAS4zE,EAEX/wE,GAAK,EAEP,GAAI9D,KAAKw4B,GAAGt4B,OACV,IAAK8O,EAAI,EAAGA,EAAIhP,KAAKw4B,GAAGt4B,OAAQ8O,GAAK,EACnC/N,EAAM+N,IAAM4lE,OAGd3zE,GAAS2zE,EAEX,OAAO3zE,EAGT,SAAS8zE,EAAwBl5B,GAC1B77C,KAAKg1E,0BACRh1E,KAAKg1E,wBAA0B,CAC7Bz6D,EAAG,IAAI2D,SAIX,IAAI0qB,EAAS5oC,KAAKg1E,wBAAwBz6D,EAE1C,GADAquB,EAAOjmB,eAAe3iB,KAAK+9B,IAAI52B,OAC3BnH,KAAKg+B,uBAAyB,EAAG,CACnC,IAAIi3C,EAASj1E,KAAK7B,EAAE+gC,eAAe2c,GACnCjT,EAAO7oB,WACJk1D,EAAO,GAAKj1E,KAAK7B,EAAEq+B,MACnBy4C,EAAO,GAAKj1E,KAAK7B,EAAEq+B,KACpBy4C,EAAO,GAAKj1E,KAAK7B,EAAEq+B,MAGvB,GAAIx8B,KAAKg+B,uBAAyB,EAAG,CACnC,IAAIve,EAAQzf,KAAKkR,EAAEguB,eAAe2c,GAClCjT,EAAOnpB,MACLA,EAAM,GAAKzf,KAAKkR,EAAEsrB,KAClB/c,EAAM,GAAKzf,KAAKkR,EAAEsrB,KAClB/c,EAAM,GAAKzf,KAAKkR,EAAEsrB,MAGtB,GAAIx8B,KAAKu+B,IAAMv+B,KAAKg+B,uBAAyB,EAAG,CAC9C,IAAI3e,EAAOrf,KAAKu+B,GAAGW,eAAe2c,GAC9Bq5B,EAAWl1E,KAAKw+B,GAAGU,eAAe2c,GACtCjT,EAAOppB,cAAcH,EAAOrf,KAAKu+B,GAAG/B,KAAM04C,EAAWl1E,KAAKw+B,GAAGhC,MAE/D,GAAIx8B,KAAKwa,GAAKxa,KAAKg+B,uBAAyB,EAAG,CAC7C,IAAIkyC,EAAWlwE,KAAKwa,EAAE0kB,eAAe2c,GACrCjT,EAAOjqB,QAAQuxD,EAAWlwE,KAAKwa,EAAEgiB,WAC5B,IAAKx8B,KAAKwa,GAAKxa,KAAKg+B,uBAAyB,EAAG,CACrD,IAAIm3C,EAAYn1E,KAAKq+B,GAAGa,eAAe2c,GACnCu5B,EAAYp1E,KAAKo+B,GAAGc,eAAe2c,GACnCw5B,EAAYr1E,KAAKm+B,GAAGe,eAAe2c,GACnCy5B,EAAct1E,KAAKs+B,GAAGY,eAAe2c,GACzCjT,EAAO3pB,SAASk2D,EAAYn1E,KAAKq+B,GAAG7B,MACjCxd,QAAQo2D,EAAYp1E,KAAKo+B,GAAG5B,MAC5Bzd,QAAQs2D,EAAYr1E,KAAKm+B,GAAG3B,MAC5Bvd,SAASq2D,EAAY,GAAKt1E,KAAKs+B,GAAG9B,MAClCxd,QAAQs2D,EAAY,GAAKt1E,KAAKs+B,GAAG9B,MACjCzd,QAAQu2D,EAAY,GAAKt1E,KAAKs+B,GAAG9B,MAEtC,GAAIx8B,KAAKkwB,KAAKxV,GAAK1a,KAAKkwB,KAAKxV,EAAExJ,EAAG,CAChC,IAAIqkE,EAAYv1E,KAAKsC,GAAG48B,eAAe2c,GACnC25B,EAAYx1E,KAAKi+B,GAAGiB,eAAe2c,GACvC,GAAI77C,KAAKkwB,KAAKxV,EAAEqI,EAAG,CACjB,IAAI0yD,EAAYz1E,KAAKk+B,GAAGgB,eAAe2c,GACvCjT,EAAO7oB,UACLw1D,EAAYv1E,KAAKsC,GAAGk6B,KACpBg5C,EAAYx1E,KAAKi+B,GAAGzB,MACnBi5C,EAAYz1E,KAAKk+B,GAAG1B,WAGvBoM,EAAO7oB,UAAUw1D,EAAYv1E,KAAKsC,GAAGk6B,KAAMg5C,EAAYx1E,KAAKi+B,GAAGzB,KAAM,OAElE,CACL,IAAI/jB,EAAWzY,KAAK0a,EAAEwkB,eAAe2c,GACrCjT,EAAO7oB,UACLtH,EAAS,GAAKzY,KAAK0a,EAAE8hB,KACrB/jB,EAAS,GAAKzY,KAAK0a,EAAE8hB,MACpB/jB,EAAS,GAAKzY,KAAK0a,EAAE8hB,MAG1B,OAAOoM,EAIT,SAAS8sC,IACP,OAAO11E,KAAKua,EAAEmI,MAAM,IAAIxE,QAG1B,IAAImhB,EAAuBzB,yBAAyByB,qBACpDzB,yBAAyByB,qBAAuB,SAAU3C,EAAMxM,EAAMvoB,GACpE,IAAI6U,EAAO6iB,EAAqB3C,EAAMxM,EAAMvoB,GAO5C,OANI6U,EAAKC,kBAAkBvc,OACzBsc,EAAK0iB,eAAiB61C,EAAwBp5D,KAAKa,GAEnDA,EAAK0iB,eAAiBw2C,EAA8B/5D,KAAKa,GAE3DA,EAAKq3D,iBAAmBN,kBAAkBM,iBACnCr3D,GAGT,IAAIm5D,EAAkB59C,gBAAgB4F,QACtC5F,gBAAgB4F,QAAU,SAAUjB,EAAMxM,EAAM1xB,EAAMg+B,EAAM70B,GAC1D,IAAI6U,EAAOm5D,EAAgBj5C,EAAMxM,EAAM1xB,EAAMg+B,EAAM70B,GAI/C6U,EAAKygB,GACPzgB,EAAK0iB,eAAiBq0C,kBAAkBr0C,eAAevjB,KAAKa,GAE5DA,EAAK0iB,eAAiBq0C,kBAAkBK,qBAAqBj4D,KAAKa,GAEpEA,EAAKq3D,iBAAmBN,kBAAkBM,iBAC1Cr3D,EAAKkzD,QAAUA,EACflzD,EAAKgzD,OAASA,EACdhzD,EAAKozD,OAASA,EACdpzD,EAAK60D,kBAAoBkC,kBAAkBlC,kBAAkB11D,KAAKa,GAClEA,EAAKi3D,eAAiBF,kBAAkBE,eAAe93D,KAAKa,GAC5DA,EAAKk0D,QAAqB,IAAXxgD,EAAK/xB,EAAU+xB,EAAKzhB,EAAEvO,OAAS,EAC9Csc,EAAKo5D,cAAgB1lD,EAAKka,GAC1B,IAAInpC,EAAQ,EAcZ,OAba,IAATzC,IACFyC,EAAQ4a,iBAAiB,UAAsB,IAAXqU,EAAK/xB,EAAU+xB,EAAKzhB,EAAE,GAAGyC,EAAEhR,OAASgwB,EAAKzhB,EAAEvO,SAEjFsc,EAAKm3D,eAAiB,CACpBl6C,UAAW9iB,oBACXkiB,UAAW,EACX53B,MAAOA,GAETsyE,kBAAkBC,kBAAkB92C,EAAMxM,EAAM1T,GAC5CA,EAAK/N,GACP9G,EAAU4U,mBAAmBC,GAGxBA,GAuBT,IAAIq5D,EAAmCl1C,qBAAqBm1C,yBACxDC,EAA4Cp1C,qBAAqBq1C,kCAErE,SAASC,KACTA,EAAiBjxE,UAAY,CAC3Bs7B,SAAU,SAAU9jB,EAAMq/B,GACpB77C,KAAKyO,GACPzO,KAAK8c,WAEP,IAIIhZ,EAJAojC,EAAYlnC,KAAKua,OACR3a,IAATi8C,IACF3U,EAAYlnC,KAAKk/B,eAAe2c,EAAM,IAGxC,IAAIjkC,EAAMsvB,EAAUra,QAChByT,EAAW4G,EAAU1qB,GACrBuL,EAASmf,EAAU3sB,EACnBwB,EAAMhE,iBAAiBH,GAC3B,IAAK9T,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAEtBiY,EAAIjY,GADO,MAAT0Y,GAAyB,MAATA,EACT,CAAC8jB,EAASx8B,GAAG,GAAKikB,EAAOjkB,GAAG,GAAIw8B,EAASx8B,GAAG,GAAKikB,EAAOjkB,GAAG,IAE3D,CAACw8B,EAASx8B,GAAG,GAAIw8B,EAASx8B,GAAG,IAG1C,OAAOiY,GAETgM,OAAQ,SAAU8zB,GAChB,OAAO77C,KAAKsgC,SAAS,IAAKub,IAE5ByyB,WAAY,SAAUzyB,GACpB,OAAO77C,KAAKsgC,SAAS,IAAKub,IAE5B0yB,YAAa,SAAU1yB,GACrB,OAAO77C,KAAKsgC,SAAS,IAAKub,IAE5Bq6B,SAAU,WACR,OAAOl2E,KAAKua,EAAExa,GAEhBo2E,YAAa,SAAUvrD,EAAMixB,GAC3B,IAAI3U,EAAYlnC,KAAKua,OACR3a,IAATi8C,IACF3U,EAAYlnC,KAAKk/B,eAAe2c,EAAM,IAEnC77C,KAAKo2E,kBACRp2E,KAAKo2E,gBAAkB3mD,IAAIpD,kBAAkB6a,IAU/C,IAPA,IAMI3jB,EANAgJ,EAAiBvsB,KAAKo2E,gBACtB/qD,EAAUkB,EAAelB,QACzBY,EAAYM,EAAeO,YAAclC,EACzC9mB,EAAI,EACJ8T,EAAMyT,EAAQnrB,OACdm2E,EAAoB,EAEjBvyE,EAAI8T,GAAK,CACd,GAAIy+D,EAAoBhrD,EAAQvnB,GAAGinB,YAAckB,EAAW,CAC1D,IAAIqqD,EAAYxyE,EACZyyE,EAAYrvC,EAAUnnC,GAAK+D,IAAM8T,EAAM,EAAK,EAAI9T,EAAI,EACpDy1B,GAAetN,EAAYoqD,GAAqBhrD,EAAQvnB,GAAGinB,YAC/DxH,EAAKkM,IAAInB,kBAAkB4Y,EAAU3sB,EAAE+7D,GAAYpvC,EAAU3sB,EAAEg8D,GAAWrvC,EAAUpnB,EAAEw2D,GAAYpvC,EAAUpjC,EAAEyyE,GAAWh9C,EAAalO,EAAQvnB,IAC9I,MAEAuyE,GAAqBhrD,EAAQvnB,GAAGinB,YAElCjnB,GAAK,EAKP,OAHKyf,IACHA,EAAK2jB,EAAUnnC,EAAI,CAACmnC,EAAU3sB,EAAE,GAAG,GAAI2sB,EAAU3sB,EAAE,GAAG,IAAM,CAAC2sB,EAAU3sB,EAAE2sB,EAAUra,QAAU,GAAG,GAAIqa,EAAU3sB,EAAE2sB,EAAUra,QAAU,GAAG,KAElItJ,GAETizD,aAAc,SAAU5rD,EAAMixB,EAAM46B,GAEtB,GAAR7rD,EACFA,EAAO5qB,KAAKua,EAAExa,EACG,GAAR6qB,IACTA,EAAO,MAET,IAAI/G,EAAM7jB,KAAKm2E,YAAYvrD,EAAMixB,GAC7B/3B,EAAM9jB,KAAKm2E,YAAYvrD,EAAO,KAAOixB,GACrC66B,EAAU5yD,EAAI,GAAKD,EAAI,GACvB8yD,EAAU7yD,EAAI,GAAKD,EAAI,GACvB+yD,EAAYj5E,KAAK0Z,KAAK1Z,KAAKwZ,IAAIu/D,EAAS,GAAK/4E,KAAKwZ,IAAIw/D,EAAS,IACnE,OAAkB,IAAdC,EACK,CAAC,EAAG,GAEmB,YAAfH,EAA2B,CAACC,EAAUE,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWF,EAAUE,IAG5HC,cAAe,SAAUjsD,EAAMixB,GAC7B,OAAO77C,KAAKw2E,aAAa5rD,EAAMixB,EAAM,YAEvCi7B,aAAc,SAAUlsD,EAAMixB,GAC5B,OAAO77C,KAAKw2E,aAAa5rD,EAAMixB,EAAM,WAEvCg4B,iBAAkBN,kBAAkBM,iBACpC30C,eAAgBq0C,kBAAkBK,sBAEpCpqD,gBAAgB,CAACysD,GAAmBJ,GACpCrsD,gBAAgB,CAACysD,GAAmBF,GACpCA,EAA0C/wE,UAAUk6B,eAzHpD,SAA6B/G,GAiB3B,OAfKn4B,KAAK2zE,iBACR3zE,KAAK2zE,eAAiB,CACpBoD,WAAYv1C,UAAU9e,MAAM1iB,KAAKw4B,IACjCK,UAAW,EACX7J,SAAUrY,sBAIdwhB,GAAYn4B,KAAK08B,KAAKC,WAAWmC,WACjC3G,GAAYn4B,KAAKs4B,cACAt4B,KAAK2zE,eAAe3kD,WACnChvB,KAAK2zE,eAAe96C,UAAY74B,KAAK2zE,eAAe3kD,SAAWmJ,EAAWn4B,KAAKo8B,SAASvD,UAAY,EACpG74B,KAAK2zE,eAAe3kD,SAAWmJ,EAC/Bn4B,KAAK4gC,iBAAiBzI,EAAUn4B,KAAK2zE,eAAeoD,WAAY/2E,KAAK2zE,iBAEhE3zE,KAAK2zE,eAAeoD,YAyG7BhB,EAA0C/wE,UAAU2pE,mBAAqBjD,kBAAkBiD,mBAE3F,IAAIqI,EAAuBr2C,qBAAqB0e,aAChD1e,qBAAqB0e,aAAe,SAAU3iB,EAAMxM,EAAM1xB,EAAMud,EAAKk7D,GACnE,IAAIz6D,EAAOw6D,EAAqBt6C,EAAMxM,EAAM1xB,EAAMud,EAAKk7D,GAWvD,OAVAz6D,EAAKo5D,cAAgB1lD,EAAKka,GAC1B5tB,EAAKsgB,MAAO,EACC,IAATt+B,EACF+0E,kBAAkBC,kBAAkB92C,EAAMxM,EAAK3M,GAAI/G,GACjC,IAAThe,GACT+0E,kBAAkBC,kBAAkB92C,EAAMxM,EAAKe,GAAIzU,GAEjDA,EAAK/N,GACPiuB,EAAKngB,mBAAmBC,GAEnBA,GAnbV,GAmcCm2B,aAAa3tC,UAAUkyE,mBAAqB,SAAUr/B,EAAcI,GAClE,IAAI5f,EAAWr4B,KAAKm3E,oBAAoBl/B,GACxC,GAAIJ,EAAaj9B,IAAMyd,EAAU,CAC/B,IAAIqhB,EAAU,GAId,OAHA15C,KAAKg0C,SAAS0F,EAAS7B,GACvB6B,EAAQ9+B,EAAIyd,EAAS51B,WACrBi3C,EAAQjnB,YAAa,EACdinB,EAET,OAAO7B,GAGTlF,aAAa3tC,UAAUivC,eAAiB,WACtC,IAAImjC,EAAcp3E,KAAK03C,kBACnB2/B,EAAiBr3E,KAAKwzE,oBAE1B,OADAxzE,KAAKi9B,GAAKm6C,GAAeC,EAClBr3E,KAAKi9B,IAGd0V,aAAa3tC,UAAUwuE,kBA5BvB,WACE,OAAIxzE,KAAKkwB,KAAKpV,EAAE+H,GACd7iB,KAAKm3E,oBAAsBzL,kBAAkBiD,mBAAmBhzD,KAAK3b,KAA1C0rE,CAAgD1rE,KAAK08B,KAAM18B,KAAKkwB,KAAKpV,EAAG9a,MACnGA,KAAKk9B,UAAUl9B,KAAKk3E,mBAAmBv7D,KAAK3b,QACrC,GAEF,MA4BX,IAAIs3E,mBAGO,SAA8B/xC,EAAOgyC,EAAMzD,GAChD,IAAIt3D,EAAO+6D,EAAKr9C,GAEhB,SAASs9C,EAAkB50E,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,EACpG40E,EAAkBtmD,KAEpB,KAGT,IAAIumD,EAAiBC,qBAAqBF,EAAmB1D,GAyB7D,OAxBAt3D,EAAKq3D,iBAAiB8D,kBAAkB,OAAQF,IAChDz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzCtmD,KAAM,CACJhzB,IAAK,WAIH,OAHIse,EAAK/N,GACP+N,EAAKM,WAEAN,IAGX+oB,MAAO,CACLrnC,IAAK,WAIH,OAHIse,EAAK/N,GACP+N,EAAKM,WAEAN,IAGXo7D,MAAO,CAAE32E,MAAOskC,EAAMre,IACtBkjB,GAAI,CAAEnpC,MAAOskC,EAAM6E,IACnBwrC,cAAe,CAAE30E,MAAOskC,EAAM6E,IAC9BytC,GAAI,CAAE52E,MAAOskC,EAAMsyC,IACnB/D,cAAe,CAAE7yE,MAAO6yE,KAEnB0D,GAOTE,qBACK,SAAUF,EAAmBM,GAClC,OAAO,SAAUl1E,GAEf,OADAA,OAAchD,IAARgD,EAAoB,EAAIA,IACnB,EACF40E,EAEFM,EAAoBl1E,EAAM,KAOnC+0E,kBACK,SAAUI,EAAcjE,GAC7B,IAAI0D,EAAoB,CACtBI,MAAOG,GAWT,OARA,SAAwBn1E,GAEtB,OADAA,OAAchD,IAARgD,EAAoB,EAAIA,IACnB,EACF40E,EAEF1D,EAAclxE,EAAM,KAU7BqwD,yBAA4B,WAC9B,SAAS+kB,EAAgBnnD,EAAQ0mD,EAAMzD,GACrC,IACIhwE,EADAiY,EAAM,GAENnE,EAAMiZ,EAASA,EAAO3wB,OAAS,EACnC,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACH,OAAjB+sB,EAAO/sB,GAAGmc,GACZlE,EAAI5Y,KAAK80E,EAAsBpnD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACzB,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAK+0E,EAAqBrnD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACxB,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKg1E,EAAuBtnD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IAC1B,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKi1E,EAAqBvnD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACxB,OAAjBjjD,EAAO/sB,GAAGmc,KAEO,OAAjB4Q,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKk1E,EAAwBxnD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IAC3B,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKm1E,EAAqBznD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACxB,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKm0E,mBAAmBzmD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACtB,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKo1E,EAAqB1nD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IACxB,OAAjBjjD,EAAO/sB,GAAGmc,GACnBlE,EAAI5Y,KAAKq1E,EAAwB3nD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,IAC3B,OAAjBjjD,EAAO/sB,GAAGmc,IACnBlE,EAAI5Y,KAAKs1E,EAAyB5nD,EAAO/sB,GAAIyzE,EAAKzzE,GAAIgwE,KAG1D,OAAO/3D,EA+BT,SAASk8D,EAAsB1yC,EAAOgyC,EAAMzD,GAC1C,IAAI0D,EAAoB,SAA4Bv2E,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAOu2E,EAAkBtkB,QAI3B,QACE,OAAOskB,EAAkBr3D,YAG/Bq3D,EAAkB1D,cAAgB4D,qBAAqBF,EAAmB1D,GAC1E,IAAI5gB,EA3CN,SAAkC3tB,EAAOgyC,EAAMzD,GAC7C,IAAI4E,EACAlB,EAAoB,SAA4Bv2E,GAGlD,IAFA,IAAI6C,EAAI,EACJ8T,EAAM8gE,EAAWx4E,OACd4D,EAAI8T,GAAK,CACd,GAAI8gE,EAAW50E,GAAG8zE,QAAU32E,GAASy3E,EAAW50E,GAAG+zE,KAAO52E,GAASy3E,EAAW50E,GAAG8xE,gBAAkB30E,GAASy3E,EAAW50E,GAAGsmC,KAAOnpC,GAASy3E,EAAW50E,GAAGs1B,MAAQn4B,EAC9J,OAAOy3E,EAAW50E,GAEpBA,GAAK,EAEP,MAAqB,kBAAV7C,EACFy3E,EAAWz3E,EAAQ,GAErB,MAGTu2E,EAAkB1D,cAAgB4D,qBAAqBF,EAAmB1D,GAC1E4E,EAAaV,EAAgBzyC,EAAMpkC,GAAIo2E,EAAKp2E,GAAIq2E,EAAkB1D,eAClE0D,EAAkBmB,cAAgBD,EAAWx4E,OAC7C,IAAI04E,EAAqBC,EAA0BtzC,EAAMpkC,GAAGokC,EAAMpkC,GAAGjB,OAAS,GAAIq3E,EAAKp2E,GAAGo2E,EAAKp2E,GAAGjB,OAAS,GAAIs3E,EAAkB1D,eAKjI,OAJA0D,EAAkBr3D,UAAYy4D,EAC9BpB,EAAkB5B,cAAgBrwC,EAAMuzC,IACxCtB,EAAkBI,MAAQryC,EAAMre,GAEzBswD,EAkBOuB,CAAyBxzC,EAAOgyC,EAAMC,EAAkB1D,eAClE8E,EAAqBC,EAA0BtzC,EAAMpkC,GAAGokC,EAAMpkC,GAAGjB,OAAS,GAAIq3E,EAAKp2E,GAAGo2E,EAAKp2E,GAAGjB,OAAS,GAAIs3E,EAAkB1D,eAajI,OAZA0D,EAAkBtkB,QAAUA,EAC5BskB,EAAkBr3D,UAAYy4D,EAC9B56E,OAAOC,eAAeu5E,EAAmB,QAAS,CAChDt5E,IAAK,WACH,OAAOqnC,EAAMre,MAIjBswD,EAAkBmB,cAAgBpzC,EAAMyzC,GACxCxB,EAAkB5B,cAAgBrwC,EAAM6E,GACxCotC,EAAkBtwD,GAAKqe,EAAMre,GAC7BswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASU,EAAqB3yC,EAAOgyC,EAAMzD,GACzC,SAAS0D,EAAkB50E,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd40E,EAAkBx8D,MACb,YAARpY,GAA6B,YAARA,EAClB40E,EAAkBne,QAEpB,KAeT,OAbAr7D,OAAOgS,iBAAiBwnE,EAAmB,CACzCx8D,MAAO,CACL9c,IAAK+6E,4BAA4B1B,EAAKx3E,IAExCs5D,QAAS,CACPn7D,IAAK+6E,4BAA4B1B,EAAKz3D,IAExC83D,MAAO,CAAE32E,MAAOskC,EAAMre,IACtB2wD,GAAI,CAAE52E,MAAOskC,EAAMsyC,MAGrBN,EAAKx3E,EAAE8zE,iBAAiB8D,kBAAkB,QAAS7D,IACnDyD,EAAKz3D,EAAE+zD,iBAAiB8D,kBAAkB,UAAW7D,IAC9C0D,EAGT,SAASW,EAAuB5yC,EAAOgyC,EAAMzD,GAC3C,IAOIhwE,EAPA2zE,EAAiBC,qBAAqBF,EAAmB1D,GACzDoF,EAAqBxB,qBAAqByB,EAAQ1B,GACtD,SAAS2B,EAAoBt1E,GAC3B9F,OAAOC,eAAek7E,EAAQ5zC,EAAMzqB,EAAEhX,GAAGojB,GAAI,CAC3ChpB,IAAK+6E,4BAA4B1B,EAAKz8D,EAAE4pB,UAAU5gC,GAAG4W,KAIzD,IAAI9C,EAAM2tB,EAAMzqB,EAAIyqB,EAAMzqB,EAAE5a,OAAS,EACjCi5E,EAAS,GACb,IAAKr1E,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBs1E,EAAoBt1E,GACpByzE,EAAKz8D,EAAE4pB,UAAU5gC,GAAG4W,EAAEm5D,iBAAiBqF,GAGzC,SAAS1B,EAAkB50E,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd40E,EAAkBx8D,MACb,YAARpY,GAA6B,YAARA,EAClB40E,EAAkBne,QACb,iBAARz2D,GAAkC,iBAARA,EACvB40E,EAAkBjU,YAEpB,KAwBT,OAtBAvlE,OAAOgS,iBAAiBwnE,EAAmB,CACzCx8D,MAAO,CACL9c,IAAK+6E,4BAA4B1B,EAAKx3E,IAExCs5D,QAAS,CACPn7D,IAAK+6E,4BAA4B1B,EAAKz3D,IAExCyjD,YAAa,CACXrlE,IAAK+6E,4BAA4B1B,EAAKniE,IAExCikE,KAAM,CACJn7E,IAAK,WACH,OAAOi7E,IAGXvB,MAAO,CAAE32E,MAAOskC,EAAMre,IACtB2wD,GAAI,CAAE52E,MAAOskC,EAAMsyC,MAGrBN,EAAKx3E,EAAE8zE,iBAAiB8D,kBAAkB,QAASF,IACnDF,EAAKz3D,EAAE+zD,iBAAiB8D,kBAAkB,UAAWF,IACrDF,EAAKniE,EAAEy+D,iBAAiB8D,kBAAkB,eAAgBF,IACnDD,EAGT,SAASY,EAAqB7yC,EAAOgyC,EAAMzD,GACzC,SAAS0D,EAAkB50E,GACzB,OAAIA,IAAQ2iC,EAAMxkC,EAAEqpC,IAAc,QAARxnC,GAAyB,QAARA,EAClC40E,EAAkBlN,IAEvB1nE,IAAQ2iC,EAAMr0B,EAAEk5B,GACXotC,EAAkB8B,MAEvB12E,IAAQ2iC,EAAMzlB,EAAEsqB,GACXotC,EAAkBv8D,OAEpB,KAGT,IAAIw8D,EAAiBC,qBAAqBF,EAAmB1D,GAsB7D,OArBA0D,EAAkB5B,cAAgBrwC,EAAM6E,GAExCmtC,EAAKrmE,EAAE2iE,iBAAiB8D,kBAAkB,QAASF,IACnDF,EAAKx2E,EAAE8yE,iBAAiB8D,kBAAkB,MAAOF,IACjDF,EAAKz3D,EAAE+zD,iBAAiB8D,kBAAkB,SAAUF,IACpDD,EAAkB5B,cAAgBrwC,EAAM6E,GACxCotC,EAAkB1D,cAAgBA,EAElC91E,OAAOgS,iBAAiBwnE,EAAmB,CACzC8B,MAAO,CACLp7E,IAAK+6E,4BAA4B1B,EAAKrmE,IAExCo5D,IAAK,CACHpsE,IAAK+6E,4BAA4B1B,EAAKx2E,IAExCka,OAAQ,CACN/c,IAAK+6E,4BAA4B1B,EAAKz3D,IAExC83D,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASqB,EAA0BtzC,EAAOgyC,EAAMzD,GAC9C,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAMpnC,EAAEisC,KAAOnpC,GAAmB,iBAAVA,EACnBu2E,EAAkBrH,YAEvB5qC,EAAMzlB,EAAEsqB,KAAOnpC,GAAmB,YAAVA,EACnBu2E,EAAkBne,QAEvB9zB,EAAM7qB,EAAE0vB,KAAOnpC,GAAmB,aAAVA,EACnBu2E,EAAkB/+D,SAEvB8sB,EAAM/qB,EAAE4vB,KAAOnpC,GAAmB,aAAVA,GAAkC,yBAAVA,EAC3Cu2E,EAAkBtH,SAEvB3qC,EAAMr0B,EAAEk5B,KAAOnpC,GAAmB,UAAVA,EACnBu2E,EAAkB/3D,MAEtB8lB,EAAMhH,IAAMgH,EAAMhH,GAAG6L,KAAOnpC,GAAoB,SAAVA,EAClCu2E,EAAkBn4D,KAEtBkmB,EAAM/G,IAAM+G,EAAM/G,GAAG4L,KAAOnpC,GAAoB,cAAVA,EAClCu2E,EAAkBtC,SAEpB,KAGT,IAAIuC,EAAiBC,qBAAqBF,EAAmB1D,GAsC7D,OArCAyD,EAAKp3D,UAAU4qB,OAAOjrB,EAAE+zD,iBAAiB8D,kBAAkB,UAAWF,IACtEF,EAAKp3D,UAAU4qB,OAAOrwB,EAAEm5D,iBAAiB8D,kBAAkB,WAAYF,IACvEF,EAAKp3D,UAAU4qB,OAAO5sC,EAAE01E,iBAAiB8D,kBAAkB,eAAgBF,IAC3EF,EAAKp3D,UAAU4qB,OAAO75B,EAAE2iE,iBAAiB8D,kBAAkB,QAASF,IACpEF,EAAKp3D,UAAU4qB,OAAOvwB,EAAEq5D,iBAAiB8D,kBAAkB,WAAYF,IACnEF,EAAKp3D,UAAU4qB,OAAOxM,KACxBg5C,EAAKp3D,UAAU4qB,OAAOxM,GAAGs1C,iBAAiB8D,kBAAkB,OAAQF,IACpEF,EAAKp3D,UAAU4qB,OAAOvM,GAAGq1C,iBAAiB8D,kBAAkB,aAAcF,KAE5EF,EAAKp3D,UAAUqqB,GAAGqpC,iBAAiB8D,kBAAkB,UAAWF,IAChEz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzCne,QAAS,CACPn7D,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAOjrB,IAEzDrH,SAAU,CACRva,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAOrwB,IAEzDy1D,YAAa,CACXjyE,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAO5sC,IAEzDshB,MAAO,CACLvhB,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAO75B,IAEzDg/D,SAAU,CACRhyE,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAOvwB,IAEzD6E,KAAM,CACJnhB,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAOxM,KAEzD22C,SAAU,CACRh3E,IAAK+6E,4BAA4B1B,EAAKp3D,UAAU4qB,OAAOvM,KAEzDo5C,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBv3D,GAAK,KACvBu3D,EAAkBK,GAAKtyC,EAAMsyC,GAC7BL,EAAkB1D,cAAgBA,EAC3B0D,EAGT,SAASa,EAAwB9yC,EAAOgyC,EAAMzD,GAC5C,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAM7qB,EAAE0vB,KAAOnpC,EACVu2E,EAAkB/+D,SAEvB8sB,EAAMr0B,EAAEk5B,KAAOnpC,EACVu2E,EAAkBpkD,KAEpB,KAET,IAAIqkD,EAAiBC,qBAAqBF,EAAmB1D,GAC7D0D,EAAkB5B,cAAgBrwC,EAAM6E,GACxC,IAAI5tB,EAAsB,OAAf+6D,EAAKr9C,GAAGja,GAAcs3D,EAAKr9C,GAAG1d,KAAO+6D,EAAKr9C,GAcrD,OAbA1d,EAAKtL,EAAE2iE,iBAAiB8D,kBAAkB,OAAQF,IAClDj7D,EAAK9B,EAAEm5D,iBAAiB8D,kBAAkB,WAAYF,IAEtDz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzCpkD,KAAM,CACJl1B,IAAK+6E,4BAA4Bz8D,EAAKtL,IAExCuH,SAAU,CACRva,IAAK+6E,4BAA4Bz8D,EAAK9B,IAExCk9D,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASc,EAAqB/yC,EAAOgyC,EAAMzD,GACzC,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAM7qB,EAAE0vB,KAAOnpC,EACVu2E,EAAkB/+D,SAEvB8sB,EAAM/qB,EAAE4vB,KAAOnpC,EACVu2E,EAAkBtH,SAEvB3qC,EAAMhiB,GAAG6mB,KAAOnpC,EACXu2E,EAAkBzvD,OAEvBwd,EAAMjH,GAAG8L,KAAOnpC,GAAmB,kCAAVA,EACpBu2E,EAAkB+B,YAEvBh0C,EAAM3C,GAAGwH,KAAOnpC,EACXu2E,EAAkBgC,gBAEvBj0C,EAAM/C,IAAO+C,EAAM/C,GAAG4H,KAAOnpC,GAAmB,kCAAVA,EAGtCskC,EAAMt6B,IAAMs6B,EAAMt6B,GAAGm/B,KAAOnpC,EACvBu2E,EAAkBiC,eAEpB,KALEjC,EAAkBkC,YAQ7B,IAAIjC,EAAiBC,qBAAqBF,EAAmB1D,GACzDt3D,EAAsB,OAAf+6D,EAAKr9C,GAAGja,GAAcs3D,EAAKr9C,GAAG1d,KAAO+6D,EAAKr9C,GAqCrD,OApCAs9C,EAAkB5B,cAAgBrwC,EAAM6E,GACxC5tB,EAAK8hB,GAAGu1C,iBAAiB8D,kBAAkB,eAAgBF,IAC3Dj7D,EAAKomB,GAAGixC,iBAAiB8D,kBAAkB,kBAAmBF,IAC9Dj7D,EAAK+G,GAAGswD,iBAAiB8D,kBAAkB,SAAUF,IACrDj7D,EAAK9B,EAAEm5D,iBAAiB8D,kBAAkB,WAAYF,IACtDj7D,EAAKhC,EAAEq5D,iBAAiB8D,kBAAkB,WAAYF,IAClDlyC,EAAM/C,KACRhmB,EAAKgmB,GAAGqxC,iBAAiB8D,kBAAkB,eAAgBF,IAC3Dj7D,EAAKvR,GAAG4oE,iBAAiB8D,kBAAkB,kBAAmBF,KAGhEz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzC/+D,SAAU,CACRva,IAAK+6E,4BAA4Bz8D,EAAK9B,IAExCw1D,SAAU,CACRhyE,IAAK+6E,4BAA4Bz8D,EAAKhC,IAExCuN,OAAQ,CACN7pB,IAAK+6E,4BAA4Bz8D,EAAK+G,KAExCg2D,YAAa,CACXr7E,IAAK+6E,4BAA4Bz8D,EAAK8hB,KAExCk7C,eAAgB,CACdt7E,IAAK+6E,4BAA4Bz8D,EAAKomB,KAExC82C,YAAa,CACXx7E,IAAK+6E,4BAA4Bz8D,EAAKgmB,KAExCi3C,eAAgB,CACdv7E,IAAK+6E,4BAA4Bz8D,EAAKvR,KAExC2sE,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASe,EAAqBhzC,EAAOgyC,EAAMzD,GACzC,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAM7qB,EAAE0vB,KAAOnpC,EACVu2E,EAAkB/+D,SAEvB8sB,EAAM/qB,EAAE4vB,KAAOnpC,EACVu2E,EAAkB10C,UAEvByC,EAAMr0B,EAAEk5B,KAAOnpC,GAAmB,SAAVA,GAA8B,0BAAVA,EACvCu2E,EAAkBpkD,KAEpB,KAET,IAAIqkD,EAAiBC,qBAAqBF,EAAmB1D,GAEzDt3D,EAAsB,OAAf+6D,EAAKr9C,GAAGja,GAAcs3D,EAAKr9C,GAAG1d,KAAO+6D,EAAKr9C,GAmBrD,OAlBAs9C,EAAkB5B,cAAgBrwC,EAAM6E,GACxC5tB,EAAK9B,EAAEm5D,iBAAiB8D,kBAAkB,WAAYF,IACtDj7D,EAAKtL,EAAE2iE,iBAAiB8D,kBAAkB,OAAQF,IAClDj7D,EAAKhC,EAAEq5D,iBAAiB8D,kBAAkB,WAAYF,IAEtDz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzC/+D,SAAU,CACRva,IAAK+6E,4BAA4Bz8D,EAAK9B,IAExCooB,UAAW,CACT5kC,IAAK+6E,4BAA4Bz8D,EAAKhC,IAExC4Y,KAAM,CACJl1B,IAAK+6E,4BAA4Bz8D,EAAKtL,IAExC0mE,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASgB,EAAwBjzC,EAAOgyC,EAAMzD,GAC5C,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAM/qB,EAAE4vB,KAAOnpC,GAAmB,oBAAVA,EACnBu2E,EAAkBmC,OAEpB,KAGT,IAAIlC,EAAiBC,qBAAqBF,EAAmB1D,GACzDt3D,EAAO+6D,EAWX,OAVAC,EAAkB5B,cAAgBrwC,EAAM6E,GACxC5tB,EAAKirB,GAAGosC,iBAAiB8D,kBAAkB,SAAUF,IAErDz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzCmC,OAAQ,CACNz7E,IAAK+6E,4BAA4Bz8D,EAAKirB,KAExCmwC,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,SAASiB,EAAyBlzC,EAAOgyC,EAAMzD,GAC7C,SAAS0D,EAAkBv2E,GACzB,OAAIskC,EAAMxlC,EAAEqqC,KAAOnpC,GAAmB,WAAVA,EACnBu2E,EAAkBttC,OACrB3E,EAAMzlB,EAAEsqB,KAAOnpC,GAAmB,WAAVA,EACrBu2E,EAAkBv8D,OAEpB,KAGT,IAAIw8D,EAAiBC,qBAAqBF,EAAmB1D,GACzDt3D,EAAO+6D,EAcX,OAbAC,EAAkB5B,cAAgBrwC,EAAM6E,GACxC5tB,EAAKzc,EAAE8zE,iBAAiB8D,kBAAkB,SAAUF,IACpDj7D,EAAKsD,EAAE+zD,iBAAiB8D,kBAAkB,SAAUF,IACpDz5E,OAAOgS,iBAAiBwnE,EAAmB,CACzCttC,OAAQ,CACNhsC,IAAK+6E,4BAA4Bz8D,EAAKzc,IAExCkb,OAAQ,CACN/c,IAAK+6E,4BAA4Bz8D,EAAKsD,IAExC83D,MAAO,CAAE32E,MAAOskC,EAAMre,MAExBswD,EAAkBK,GAAKtyC,EAAMsyC,GACtBL,EAGT,OAAO,SAAU3mD,EAAQ0mD,EAAMzD,GAC7B,IAAI4E,EACJ,SAASkB,EAAmB34E,GAC1B,GAAqB,kBAAVA,EAET,OAAc,KADdA,OAAkBrB,IAAVqB,EAAsB,EAAIA,GAEzB6yE,EAEF4E,EAAWz3E,EAAQ,GAI5B,IAFA,IAAI6C,EAAI,EACJ8T,EAAM8gE,EAAWx4E,OACd4D,EAAI8T,GAAK,CACd,GAAI8gE,EAAW50E,GAAG8zE,QAAU32E,EAC1B,OAAOy3E,EAAW50E,GAEpBA,GAAK,EAEP,OAAO,KAST,OAJA81E,EAAmB9F,cAAgB4D,qBAAqBkC,GAHxD,WACE,OAAO9F,KAGT4E,EAAaV,EAAgBnnD,EAAQ0mD,EAAMqC,EAAmB9F,eAC9D8F,EAAmBjB,cAAgBD,EAAWx4E,OAC9C05E,EAAmBhC,MAAQ,WACpBgC,GAteqB,GA4e5BxmB,wBACK,SAAU12B,GACf,IAAIm9C,EACAC,EACJ,SAASC,EAAmBt7E,GAC1B,OAAQA,GACN,IAAK,qBACH,OAAOs7E,EAAmBC,WAC5B,QACE,OAAO,MAgBb,OAbAh8E,OAAOC,eAAe87E,EAAoB,aAAc,CACtD77E,IAAK,WACHw+B,EAAK6d,aAAaz9B,WAClB,IAAIm9D,EAAcv9C,EAAK6d,aAAaxH,YAAYn4B,EAOhD,OANIq/D,IAAgBJ,IAClBn9C,EAAK6d,aAAaxH,YAAYn4B,EAAIi/D,GAClCC,EAAc,IAAIppE,OAAOupE,IAEbh5E,MAAQg5E,GAAe,IAAIvpE,OAAOupE,IAEzCH,KAGJC,GAOPvnB,yBAA4B,WAC9B,SAAS0nB,EAAUr+B,GACjB,IAAIs+B,EAAa,IAAIj8D,OAQrB,YAPate,IAATi8C,EACe77C,KAAKwxC,MAAMsY,eAAeC,MAAM7qB,eAAe2c,GACrDn5B,MAAMy3D,GAEEn6E,KAAKwxC,MAAMsY,eAAeC,MAChCrrB,cAAcy7C,GAEtBA,EAGT,SAASC,EAAWr+D,EAAK8/B,GACvB,IAAIs+B,EAAan6E,KAAKk6E,UAAUr+B,GAIhC,OAHAs+B,EAAWhzE,MAAM,IAAM,EACvBgzE,EAAWhzE,MAAM,IAAM,EACvBgzE,EAAWhzE,MAAM,IAAM,EAChBnH,KAAKq6E,WAAWF,EAAYp+D,GAGrC,SAAS8zD,EAAQ9zD,EAAK8/B,GACpB,IAAIs+B,EAAan6E,KAAKk6E,UAAUr+B,GAChC,OAAO77C,KAAKq6E,WAAWF,EAAYp+D,GAGrC,SAASu+D,EAAav+D,EAAK8/B,GACzB,IAAIs+B,EAAan6E,KAAKk6E,UAAUr+B,GAIhC,OAHAs+B,EAAWhzE,MAAM,IAAM,EACvBgzE,EAAWhzE,MAAM,IAAM,EACvBgzE,EAAWhzE,MAAM,IAAM,EAChBnH,KAAKu6E,YAAYJ,EAAYp+D,GAGtC,SAAS+zD,EAAU/zD,EAAK8/B,GACtB,IAAIs+B,EAAan6E,KAAKk6E,UAAUr+B,GAChC,OAAO77C,KAAKu6E,YAAYJ,EAAYp+D,GAGtC,SAASs+D,EAAWzxC,EAAQ7sB,GAC1B,GAAI/b,KAAKwxC,MAAM6R,WAAarjD,KAAKwxC,MAAM6R,UAAUnjD,OAAQ,CACvD,IAAI4D,EACA8T,EAAM5X,KAAKwxC,MAAM6R,UAAUnjD,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwxC,MAAM6R,UAAUv/C,GAAGgmD,eAAeC,MAAMrrB,cAAckK,GAG/D,OAAOA,EAAOplB,kBAAkBzH,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,GAG5D,SAASw+D,EAAY3xC,EAAQ7sB,GAC3B,GAAI/b,KAAKwxC,MAAM6R,WAAarjD,KAAKwxC,MAAM6R,UAAUnjD,OAAQ,CACvD,IAAI4D,EACA8T,EAAM5X,KAAKwxC,MAAM6R,UAAUnjD,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwxC,MAAM6R,UAAUv/C,GAAGgmD,eAAeC,MAAMrrB,cAAckK,GAG/D,OAAOA,EAAOtlB,aAAavH,GAG7B,SAASg0D,EAASh0D,GAChB,IAAIo+D,EAAa,IAAIj8D,OAGrB,GAFAi8D,EAAWz7D,QACX1e,KAAKwxC,MAAMsY,eAAeC,MAAMrrB,cAAcy7C,GAC1Cn6E,KAAKwxC,MAAM6R,WAAarjD,KAAKwxC,MAAM6R,UAAUnjD,OAAQ,CACvD,IAAI4D,EACA8T,EAAM5X,KAAKwxC,MAAM6R,UAAUnjD,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB9D,KAAKwxC,MAAM6R,UAAUv/C,GAAGgmD,eAAeC,MAAMrrB,cAAcy7C,GAE7D,OAAOA,EAAW72D,aAAavH,GAEjC,OAAOo+D,EAAW72D,aAAavH,GAGjC,SAASy+D,IACP,MAAO,CAAC,EAAG,EAAG,EAAG,GAGnB,OAAO,SAAU99C,GACf,IAAIk8C,EASJ,SAASmB,EAAmBt7E,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOs7E,EAAmB/mB,eAC5B,KAAK,EACL,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAO4lB,EACT,KAAK,EACL,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOmB,EAAmB9K,OAC5B,IAAK,uBACH,OAAO8K,EAAmB5mB,cAC5B,QACE,OAAO,MAGb4mB,EAAmBG,UAAYA,EAC/BH,EAAmBQ,YAAcA,EACjCR,EAAmBM,WAAaA,EAChCN,EAAmBlK,QAAUA,EAC7BkK,EAAmBK,WAAaA,EAChCL,EAAmBjK,UAAYA,EAC/BiK,EAAmBO,aAAeA,EAClCP,EAAmB/J,OAASH,EAC5BkK,EAAmBhK,SAAWA,EAC9BgK,EAAmBS,YAAcA,EACjCT,EAAmBruB,iBAAmBhvB,EAAKgvB,iBAAiB/vC,KAAK+gB,GACjEq9C,EAAmBvoC,MAAQ9U,EAE3B,IAAI+9C,EAAwB5wD,cAD5B+uD,EAAqB8B,6BAA6Bh+C,EAAKotB,eAAeC,OACR,eAyC9D,OAxCA/rD,OAAOgS,iBAAiB+pE,EAAoB,CAC1C5G,UAAW,CACTj1E,IAAK,WACH,OAAOw+B,EAAK2mB,UAAUnjD,SAG1Bs0B,OAAQ,CACNt2B,IAAK,WACH,OAAOw+B,EAAK2mB,UAAU,GAAGkP,iBAG7B2d,SAAUrmD,cAAc+uD,EAAoB,YAC5Cn5D,MAAOoK,cAAc+uD,EAAoB,SACzCngE,SAAUoR,cAAc+uD,EAAoB,YAC5Cvf,QAASxvC,cAAc+uD,EAAoB,WAC3CzI,YAAasK,EACbE,aAAcF,EACdt6D,UAAW,CACTjiB,IAAK,WACH,OAAO06E,IAGXjI,OAAQ,CACNzyE,IAAK,WACH,OAAOw+B,EAAKsuB,cAKlB+uB,EAAmBa,UAAYl+C,EAAKxM,KAAKsN,GACzCu8C,EAAmBlrE,MAAQ6tB,EAAKxM,KAAKkJ,IACrC2gD,EAAmBr7E,OAASg+B,EAAKxM,KAAKS,MACtCopD,EAAmB1wE,OAA0B,IAAjBqzB,EAAKxM,KAAKjQ,GAAWyc,EAAKxM,KAAK5V,EAAI,IAC/Dy/D,EAAmB3wE,MAAyB,IAAjBszB,EAAKxM,KAAKjQ,GAAWyc,EAAKxM,KAAK9a,EAAI,IAC9D2kE,EAAmBzK,QAAU5yC,EAAKxM,KAAK2xB,GAAKnlB,EAAKT,KAAKU,WAAWmC,UACjEi7C,EAAmBxK,SAAW7yC,EAAKxM,KAAKsa,GAAK9N,EAAKT,KAAKU,WAAWmC,UAClEi7C,EAAmBnC,MAAQl7C,EAAKxM,KAAKhJ,GAErC6yD,EAAmBtnB,sBAlFnB,SAAgCre,GAC9B2lC,EAAmBj1D,KAAO,IAAI+1D,qBAAqBzmC,EAAa1X,IAkFlEq9C,EAAmBlnB,yBAhFnB,SAAmCioB,GACjCf,EAAmB9K,OAAS6L,GAgFvBf,GAvKqB,GA8K5BxjB,iBAAoB,WACtB,IA+BIwkB,EAAuB,SAAUr+C,GACnC,SAAS86C,EAAkBv2E,GACzB,MAAc,YAAVA,EACKu2E,EAAkBwD,mBAEpB,KAKT,OAFAxD,EAAkBI,MAAQ,UAC1BJ,EAAkBwD,iBAxCW,SAAUt+C,GACvC,IAAIu+C,EAAsB,GACtBC,EAAkBx+C,EAAK85B,iBAM3B,SAASviB,EAAehzC,GACtB,GAAIi6E,EAAgBj6E,GAGlB,OAFAg6E,EAAsBh6E,EAES,kBAD/Bi6E,EAAkBA,EAAgBj6E,IAEzBgzC,EAEFinC,EAET,IAAIC,EAAoBl6E,EAAMyb,QAAQu+D,GACtC,IAA2B,IAAvBE,EAA0B,CAC5B,IAAItsE,EAAQm5D,SAAS/mE,EAAMm3C,OAAO+iC,EAAoBF,EAAoB/6E,QAAS,IAEnF,MAA+B,kBAD/Bg7E,EAAkBA,EAAgBrsE,IAEzBolC,EAEFinC,EAET,MAAO,GAET,OAzBA,WAGE,OAFAD,EAAsB,GACtBC,EAAkBx+C,EAAK85B,iBAChBviB,GAkC4BmnC,CAAwB1+C,GACtD86C,GAGT,OAAO,SAAU96C,GACf,SAASk9C,EAAmB34E,GAC1B,MAAc,SAAVA,EACK24E,EAAmByB,cAErB,KAKT,OAFAzB,EAAmBhC,MAAQ,OAC3BgC,EAAmByB,cAAgBN,EAAqBr+C,GACjDk9C,GAvDa,GA6DpB7mB,wBACK,SAAU92B,GACf,SAAS89C,EAAmBt7E,GAG1B,IAFA,IAAIqF,EAAI,EACJ8T,EAAMqkB,EAAKrM,OAAO1vB,OACf4D,EAAI8T,GAAK,CACd,GAAIqkB,EAAKrM,OAAO9rB,GAAGojB,KAAOzoB,GAAQw9B,EAAKrM,OAAO9rB,GAAGs1B,MAAQ36B,EACvD,OAAOw9B,EAAKsN,SAASzlC,GAAGyuD,eAE1BzuD,GAAK,EAEP,OAAO,KAYT,OATA9F,OAAOC,eAAe87E,EAAoB,QAAS,CAAE94E,MAAOg7B,EAAK/L,KAAKhJ,KACtE6yD,EAAmB93B,MAAQ83B,EAC3BA,EAAmBuB,YAAc,EACjCvB,EAAmB1wE,OAAS4yB,EAAK/L,KAAK5V,GAAK2hB,EAAKU,WAAW0nB,SAAS/pC,EACpEy/D,EAAmB3wE,MAAQ6yB,EAAK/L,KAAK9a,GAAK6mB,EAAKU,WAAW0nB,SAASjvC,EACnE2kE,EAAmBuB,YAAc,EACjCvB,EAAmB3K,cAAgB,EAAInzC,EAAKU,WAAWmC,UACvDi7C,EAAmB1K,iBAAmB,EACtC0K,EAAmBwB,UAAYt/C,EAAKrM,OAAO1vB,OACpC65E,GAOPW,6BACK,SAAUv6D,GACf,SAASq7D,EAAc/8E,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAO+8E,EAAc/7D,MACvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAK,GACH,OAAO+7D,EAActL,SACvB,IAAK,gBACH,OAAOsL,EAAcC,UACvB,IAAK,gBACH,OAAOD,EAAcE,UACvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAK,EACH,OAAOF,EAAc/iE,SACvB,IAAK,kBACH,OAAO+iE,EAAcG,UACvB,IAAK,kBACH,OAAOH,EAAcI,UACvB,IAAK,kBACH,OAAOJ,EAAcK,UACvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,OAAOL,EAAcrL,YACvB,IAAK,UACL,IAAK,UACL,KAAK,GACH,OAAOqL,EAAcniB,QACvB,QACE,OAAO,MAqBb,IAAIyiB,EACAC,EACAC,EACAC,EAsDJ,OA3EAj+E,OAAOC,eAAeu9E,EAAe,WAAY,CAC/Ct9E,IAAK+6E,4BAA4B94D,EAAU3F,GAAK2F,EAAUke,MAG5DrgC,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAUke,IAAMle,EAAU3F,KAG7Dxc,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAUge,MAG7CngC,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAUie,MAE7CpgC,OAAOC,eAAeu9E,EAAe,QAAS,CAC5Ct9E,IAAK+6E,4BAA4B94D,EAAUjP,KAMzCiP,EAAUzF,EACZuhE,EAAoBhD,4BAA4B94D,EAAUzF,IAE1DohE,EAAM7C,4BAA4B94D,EAAU7d,IAC5Cy5E,EAAM9C,4BAA4B94D,EAAU8d,IACxC9d,EAAU+d,KACZ89C,EAAM/C,4BAA4B94D,EAAU+d,MAGhDlgC,OAAOC,eAAeu9E,EAAe,WAAY,CAC/Ct9E,IAAK,WACH,OAAIiiB,EAAUzF,EACLuhE,IAEF,CACLH,IACAC,IACAC,EAAMA,IAAQ,MAIpBh+E,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAU7d,MAG7CtE,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAU8d,MAG7CjgC,OAAOC,eAAeu9E,EAAe,YAAa,CAChDt9E,IAAK+6E,4BAA4B94D,EAAU+d,MAG7ClgC,OAAOC,eAAeu9E,EAAe,cAAe,CAClDt9E,IAAK+6E,4BAA4B94D,EAAUhiB,KAG7CH,OAAOC,eAAeu9E,EAAe,UAAW,CAC9Ct9E,IAAK+6E,4BAA4B94D,EAAUL,KAG7C9hB,OAAOC,eAAeu9E,EAAe,OAAQ,CAC3Ct9E,IAAK+6E,4BAA4B94D,EAAUoe,MAG7CvgC,OAAOC,eAAeu9E,EAAe,WAAY,CAC/Ct9E,IAAK+6E,4BAA4B94D,EAAUqe,MAG7CxgC,OAAOC,eAAeu9E,EAAe,cAAe,CAClDt9E,IAAK+6E,4BAA4B94D,EAAUme,MAGtCk9C,GAMP9jE,iBAAoB,WACtB,SAASksC,EAAoB3nB,GAC3Bj8B,KAAKk8E,aAAa/4E,KAAK84B,GAGzB,OAAO,WACL,SAASkgD,EAAqB19E,GAG5B,IAFA,IAAIqF,EAAI,EACJ8T,EAAM5X,KAAKk8E,aAAah8E,OACrB4D,EAAI8T,GAAK,CACd,GAAI5X,KAAKk8E,aAAap4E,GAAGosB,MAAQlwB,KAAKk8E,aAAap4E,GAAGosB,KAAKhJ,KAAOzoB,EAIhE,OAHIuB,KAAKk8E,aAAap4E,GAAGshD,cAAgBplD,KAAKk8E,aAAap4E,GAAGosB,KAAKwzB,IACjE1jD,KAAKk8E,aAAap4E,GAAGshD,aAAaplD,KAAKmlD,cAElCnlD,KAAKk8E,aAAap4E,GAAGgvD,cAE9BhvD,GAAK,EAEP,OAAO,KAQT,OALAq4E,EAAqBD,aAAe,GACpCC,EAAqBh3B,aAAe,EAEpCg3B,EAAqBv4B,oBAAsBA,EAEpCu4B,GA1Ba,GAiCpBxpB,2BAA8B,WAqChC,SAASypB,EAAqBlsD,EAAMqZ,EAAUuqC,EAAep3C,GAC3D,SAAS2/C,EAAe59E,GAItB,IAHA,IAAIq8E,EAAU5qD,EAAKwrC,GACf53D,EAAI,EACJ8T,EAAMkjE,EAAQ56E,OACX4D,EAAI8T,GAAK,CACd,GAAInZ,IAASq8E,EAAQh3E,GAAGojB,IAAMzoB,IAASq8E,EAAQh3E,GAAG+zE,IAAMp5E,IAASq8E,EAAQh3E,GAAGsmC,GAC1E,OAAsB,IAAlB0wC,EAAQh3E,GAAGmc,GACNywC,EAAe5sD,GAEjB4sD,EAAe5sD,KAExBA,GAAK,EAEP,MAAM,IAAI03C,MAEZ,IAGI13C,EAHA2zE,EAAiBC,qBAAqB2E,EAAgBvI,GAEtDpjB,EAAiB,GAEjB94C,EAAMsY,EAAKwrC,GAAGx7D,OAClB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACF,IAAlBosB,EAAKwrC,GAAG53D,GAAGmc,GACbywC,EAAevtD,KAAKi5E,EAAqBlsD,EAAKwrC,GAAG53D,GAAIylC,EAASmnB,eAAe5sD,GAAIylC,EAASmnB,eAAe5sD,GAAGgwE,cAAep3C,IAE3Hg0B,EAAevtD,KAAKm5E,EAAqB/yC,EAASmnB,eAAe5sD,GAAIosB,EAAKwrC,GAAG53D,GAAGmc,GAAIyc,EAAM+6C,IAsB9F,MAlBgB,uBAAZvnD,EAAK2nD,IACP75E,OAAOC,eAAeo+E,EAAgB,QAAS,CAC7Cn+E,IAAK,WACH,OAAOwyD,EAAe,QAI5B1yD,OAAOgS,iBAAiBqsE,EAAgB,CACtC1D,cAAe,CACbz6E,IAAK,WACH,OAAOgyB,EAAK8oD,KAGhBpB,MAAO,CAAE32E,MAAOivB,EAAKhJ,IACrB4sD,cAAe,CAAE7yE,MAAOw2E,KAE1B4E,EAAeE,QAAsB,IAAZrsD,EAAKssD,GAC9BH,EAAe1L,OAAS0L,EAAeE,QAChCF,EAGT,SAASC,EAAqB9jE,EAASha,EAAMk+B,EAAMo3C,GACjD,IAAI2I,EAAqBxD,4BAA4BzgE,EAAQkC,GAY7D,OAJIlC,EAAQkC,EAAEm5D,kBACZr7D,EAAQkC,EAAEm5D,iBAAiB8D,kBAAkB,GAAI7D,IARnD,WACE,OAAa,KAATt1E,EACKk+B,EAAKT,KAAK62B,cAAct6C,EAAQkC,EAAEH,GAEpCkiE,KAUX,MAtGS,CACP7pB,uBAGF,SAAgCl2B,EAAMo3C,GACpC,GAAIp3C,EAAK+2B,eAAgB,CACvB,IAEI3vD,EAFA4sD,EAAiB,GACjBgsB,EAAchgD,EAAKxM,KAAKwrC,GAExB9jD,EAAM8kB,EAAK+2B,eAAe/C,eAAexwD,OAC7C,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxB4sD,EAAevtD,KAAKi5E,EAAqBM,EAAY54E,GAAI44B,EAAK+2B,eAAe/C,eAAe5sD,GAAIgwE,EAAep3C,IAGjH,IAAIo+C,EAAUp+C,EAAKxM,KAAKwrC,IAAM,GAC1B2gB,EAAiB,SAAU59E,GAG7B,IAFAqF,EAAI,EACJ8T,EAAMkjE,EAAQ56E,OACP4D,EAAI8T,GAAK,CACd,GAAInZ,IAASq8E,EAAQh3E,GAAGojB,IAAMzoB,IAASq8E,EAAQh3E,GAAG+zE,IAAMp5E,IAASq8E,EAAQh3E,GAAGsmC,GAC1E,OAAOsmB,EAAe5sD,GAExBA,GAAK,EAEP,OAAO,MAOT,OALA9F,OAAOC,eAAeo+E,EAAgB,gBAAiB,CACrDn+E,IAAK,WACH,OAAO48E,EAAQ56E,UAGZm8E,EAET,OAAO,OAlCuB,GA6G9BxB,qBAAwB,WAC1B,SAAS8B,EAAc73D,EAAMoL,GAC3BlwB,KAAK48E,MAAQ93D,EACb9kB,KAAK68E,MAAQ3sD,EAuCf,OArCAlyB,OAAOC,eAAe0+E,EAAc33E,UAAW,WAAY,CACzD9G,IAAK,WAIH,OAHI8B,KAAK48E,MAAMpgE,KAAK/N,GAClBzO,KAAK48E,MAAMpgE,KAAKM,WAEX9c,KAAK48E,MAAMpgE,QAGtBxe,OAAOC,eAAe0+E,EAAc33E,UAAW,cAAe,CAC5D9G,IAAK,WAIH,OAHI8B,KAAK48E,MAAMpyC,GAAG/7B,GAChBzO,KAAK48E,MAAMpyC,GAAG1tB,WAES,IAAlB9c,KAAK48E,MAAMpyC,GAAGjwB,KAIP,SAAU65B,GAC1B,IACItwC,EADAg5E,EAAmB/kE,iBAAiBq8B,EAAYwK,SAAS1+C,QAEzD0X,EAAMw8B,EAAYwK,SAAS1+C,OAC/B,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBg5E,EAAiBh5E,GAAK,IAAI64E,EAAcvoC,EAAYwK,SAAS96C,GAAIswC,EAAY5jB,gBAAgB1sB,IAa/F,OAVmB,SAAUrF,GAE3B,IADAqF,EAAI,EACGA,EAAI8T,GAAK,CACd,GAAIw8B,EAAY5jB,gBAAgB1sB,GAAGojB,KAAOzoB,EACxC,OAAOq+E,EAAiBh5E,GAE1BA,GAAK,EAEP,OAAO,OAtCe,GAgDxBm1E,4BAA+B,WACjC,IAAI8D,EAA6B,CAAEvkD,GAAI,EAAGje,EAAG,EAAGiiB,KAAM,GAClDwgD,EAA+B,CAAExkD,GAAI,CAAC,EAAG,EAAG,GAAIje,EAAG,CAAC,EAAG,EAAG,GAAIiiB,KAAM,GAExE,SAASygD,EAAiBC,EAAiBtO,EAAUpwE,GACnDR,OAAOC,eAAei/E,EAAiB,WAAY,CACjDh/E,IAAK,WACH,OAAO0wE,EAASyC,kBAAkBzC,EAAS3yC,KAAKkpB,iBAGpD+3B,EAAgBxM,QAAU9B,EAAS91C,UAAY81C,EAAS91C,UAAU54B,OAAS,EAC3Eg9E,EAAgBv+E,IAAM,SAAUsS,GAC9B,IAAKisE,EAAgBxM,QACnB,OAAO,EAET,IAAIzvE,EAAQ,GAEVA,EADE,MAAO2tE,EAAS91C,UAAU7nB,EAAM,GAC1B29D,EAAS91C,UAAU7nB,EAAM,GAAGC,EAC3B,MAAO09D,EAAS91C,UAAU7nB,EAAM,GACjC29D,EAAS91C,UAAU7nB,EAAM,GAAGlQ,EAE5B6tE,EAAS91C,UAAU7nB,EAAM,GAAGC,EAEtC,IAAIisE,EAAqB,mBAAT3+E,EAA4B,IAAIsrE,OAAO7oE,GAASjD,OAAOkQ,OAAO,GAAIjN,GAGlF,OAFAk8E,EAAUthC,KAAO+yB,EAAS91C,UAAU7nB,EAAM,GAAG2J,EAAIg0D,EAASlyC,KAAKT,KAAKU,WAAWmC,UAC/Eq+C,EAAUl8E,MAAiB,mBAATzC,EAA4ByC,EAAM,GAAKA,EAClDk8E,GAETD,EAAgB/N,YAAcP,EAAS1vC,eACvCg+C,EAAgBE,YAAcxO,EAAS6E,eACvCyJ,EAAgB5M,eAAiB1B,EAASyC,kBAC1C6L,EAAgBpJ,cAAgBlF,EAASkF,cAmD3C,SAASuJ,IACP,OAAON,EAGT,OAAO,SAAUnO,GACf,OAAKA,EAEuB,mBAAtBA,EAASr2C,SAvDjB,SAAyCq2C,GAClCA,GAAc,OAAQA,IACzBA,EAAWmO,GAEb,IAAIvgD,EAAO,EAAIoyC,EAASpyC,KACpB55B,EAAMgsE,EAASp2C,GAAKgE,EACpB0gD,EAAkB,IAAIpT,OAAOlnE,GAIjC,OAHAs6E,EAAgBj8E,MAAQ2B,EACxBq6E,EAAiBC,EAAiBtO,EAAU,kBAErC,WAUL,OATIA,EAASngE,GACXmgE,EAAS9xD,WAEXla,EAAMgsE,EAASr0D,EAAIiiB,EACf0gD,EAAgBj8E,QAAU2B,KAC5Bs6E,EAAkB,IAAIpT,OAAOlnE,IACb3B,MAAQ2B,EACxBq6E,EAAiBC,EAAiBtO,EAAU,mBAEvCsO,GAoCAI,CAAgC1O,GAhC3C,SAA2CA,GACpCA,GAAc,OAAQA,IACzBA,EAAWoO,GAEb,IAAIxgD,EAAO,EAAIoyC,EAASpyC,KACpB5kB,EAAOg3D,EAAS1+C,MAAQ0+C,EAAS1+C,KAAK/e,GAAMy9D,EAASp2C,GAAGt4B,OACxDg9E,EAAkBrhE,iBAAiB,UAAWjE,GAC9C2lE,EAAW1hE,iBAAiB,UAAWjE,GAI3C,OAHAslE,EAAgBj8E,MAAQs8E,EACxBN,EAAiBC,EAAiBtO,EAAU,oBAErC,WACDA,EAASngE,GACXmgE,EAAS9xD,WAEX,IAAK,IAAIhZ,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAC5By5E,EAASz5E,GAAK8qE,EAASr0D,EAAEzW,GAAK04B,EAC9B0gD,EAAgBp5E,GAAKy5E,EAASz5E,GAEhC,OAAOo5E,GAeFM,CAAkC5O,GAJhCyO,GAxFsB,GA+InC,SAASI,aAAavtD,EAAMwM,EAAM/0B,GAChC3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAAS+1E,YAAYxtD,EAAMwM,EAAM/0B,GAC/B3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASg2E,YAAYztD,EAAMwM,EAAM/0B,GAC/B3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASi2E,YAAY1tD,EAAMwM,EAAM/0B,GAC/B3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASk2E,iBAAiB3tD,EAAMwM,EAAM/0B,GACpC3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASm2E,gBAAgB5tD,EAAMwM,EAAM/0B,GACnC3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASo2E,eAAe7tD,EAAMwM,EAAM/0B,GAClC3H,KAAK0a,EAAIqd,gBAAgB4F,QAAQjB,EAAMxM,EAAK3V,EAAG,EAAG,EAAG5S,GAEvD,SAASq2E,gBACPh+E,KAAK0a,EAAI,GAMX,SAASg5C,eAAexjC,EAAM1X,GAC5B,IAEI1U,EAFAg3E,EAAU5qD,EAAKwrC,IAAM,GACzB17D,KAAK0wD,eAAiB,GAEtB,IACIutB,EADArmE,EAAMkjE,EAAQ56E,OAElB,IAAK4D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EACxBm6E,EAAa,IAAIC,YAAYpD,EAAQh3E,GAAI0U,GACzCxY,KAAK0wD,eAAevtD,KAAK86E,GAI7B,SAASC,YAAYhuD,EAAM1X,GACzBxY,KAAKygC,KAAKvQ,EAAM1X,IArFjB,WACC,IA+BI2lE,EAAsB3rC,iBAAiBC,oBAC3CD,iBAAiBC,oBAAsB,SAAU/V,EAAMxM,EAAMnU,GAC3D,OAAe,IAAXmU,EAAKtV,EACA,IAAIwjE,kCAAkC1hD,EAAMxM,EAAMnU,GAEpDoiE,EAAoBzhD,EAAMxM,EAAMnU,IArC1C,GAwFDyN,gBAAgB,CAAClN,0BAA2B4hE,aAE5CA,YAAYl5E,UAAU8X,SAAWohE,YAAYl5E,UAAU4X,yBAEvDshE,YAAYl5E,UAAUy7B,KAAO,SAAUvQ,EAAM1X,GAI3C,IAAI1U,EAHJ9D,KAAKkwB,KAAOA,EACZlwB,KAAK0wD,eAAiB,GACtB1wD,KAAK+c,6BAA6BvE,GAElC,IACI6lE,EADAzmE,EAAM5X,KAAKkwB,KAAKwrC,GAAGx7D,OAEnB46E,EAAU96E,KAAKkwB,KAAKwrC,GACxB,IAAK53D,EAAI,EAAGA,EAAI8T,EAAK9T,GAAK,EAAG,CAE3B,OADAu6E,EAAM,KACEvD,EAAQh3E,GAAGmc,IACjB,KAAK,EACHo+D,EAAM,IAAIZ,aAAa3C,EAAQh3E,GAAI0U,EAASxY,MAC5C,MACF,KAAK,EACHq+E,EAAM,IAAIX,YAAY5C,EAAQh3E,GAAI0U,EAASxY,MAC3C,MACF,KAAK,EACHq+E,EAAM,IAAIV,YAAY7C,EAAQh3E,GAAI0U,EAASxY,MAC3C,MACF,KAAK,EACHq+E,EAAM,IAAIT,YAAY9C,EAAQh3E,GAAI0U,EAASxY,MAC3C,MACF,KAAK,EACL,KAAK,EACHq+E,EAAM,IAAIN,eAAejD,EAAQh3E,GAAI0U,EAASxY,MAC9C,MACF,KAAK,GACHq+E,EAAM,IAAIR,iBAAiB/C,EAAQh3E,GAAI0U,EAASxY,MAChD,MACF,KAAK,GACHq+E,EAAM,IAAIP,gBAAgBhD,EAAQh3E,GAAI0U,EAASxY,MAC/C,MACF,KAAK,EACHq+E,EAAM,IAAI3qB,eAAeonB,EAAQh3E,GAAI0U,EAASxY,MAC9C,MAEF,QACEq+E,EAAM,IAAIL,cAAclD,EAAQh3E,GAAI0U,EAASxY,MAG7Cq+E,GACFr+E,KAAK0wD,eAAevtD,KAAKk7E,KAM/B,IAAIC,OAAS,GAEb,SAASC,gBAAgB1nD,GACvBngB,aAAemgB,EAGjB,SAASyvC,oBACY,IAAfC,WACFxB,iBAAiBuB,iBAAiB9+D,cAAe++D,WAAY1+D,UAE7Dk9D,iBAAiBuB,mBAIrB,SAASkY,qBAAqBnmE,GAC5BzB,gBAAkByB,EAGpB,SAASvQ,cAAcq+D,GAIrB,OAHmB,IAAfI,aACFJ,EAAO3+D,cAAgBkL,KAAKse,MAAMxpB,gBAE7Bu9D,iBAAiBj9D,cAAcq+D,GAGxC,SAASsY,WAAWx9E,GAClB,GAAqB,kBAAVA,EACT,OAAQA,GACN,IAAK,OACH+W,qBAAuB,IACvB,MACF,QACA,IAAK,SACHA,qBAAuB,GACvB,MACF,IAAK,MACHA,qBAAuB,QAGjBhV,MAAM/B,IAAUA,EAAQ,IAClC+W,qBAAuB/W,GAGvBmX,cADEJ,sBAAwB,KAO9B,SAAS0mE,YACP,MAA4B,qBAAdloE,UAGhB,SAASmoE,cAAcngF,EAAMogF,GACd,gBAATpgF,IACFqY,kBAAoB+nE,GAIxB,SAASC,WAAWpgF,GAClB,OAAQA,GACN,IAAK,kBACH,OAAOs5B,gBACT,IAAK,uBACH,OAAO4I,qBACT,IAAK,SACH,OAAOziB,OACT,QACE,OAAO,MA+Bb,SAAS4gE,aACqB,aAAxB16E,SAAS0sC,aACXxC,cAAcywC,yBACdzY,oBAIJ,SAAS0Y,iBAAiBC,GAExB,IADA,IAAIC,EAAOC,YAAY77E,MAAM,KACpBQ,EAAI,EAAGA,EAAIo7E,EAAKh/E,OAAQ4D,GAAK,EAAG,CACvC,IAAIs7E,EAAOF,EAAKp7E,GAAGR,MAAM,KACzB,GAAI+7E,mBAAmBD,EAAK,KAAOH,EACjC,OAAOI,mBAAmBD,EAAK,IAGnC,OAAO,KA1CTd,OAAOt3E,KAAO+9D,iBAAiB/9D,KAC/Bs3E,OAAOr3E,MAAQ89D,iBAAiB99D,MAChCq3E,OAAOC,gBAAkBA,gBACzBD,OAAOjY,YAActB,iBAAiBsB,YACtCiY,OAAOh2E,SAAWy8D,iBAAiBz8D,SACnCg2E,OAAO/1E,aAAew8D,iBAAiBx8D,aACvC+1E,OAAOl2E,KAAO28D,iBAAiB38D,KAC/Bk2E,OAAOhY,iBAAmBA,iBAC1BgY,OAAO7Y,kBAAoBV,iBAAiBU,kBAC5C6Y,OAAOx2E,cAAgBA,cACvBw2E,OAAOE,qBAAuBA,qBAC9BF,OAAOzX,OAAS9B,iBAAiB8B,OAEjCyX,OAAOxX,YAAc/B,iBAAiB+B,YACtCwX,OAAOp2E,QAAU68D,iBAAiB78D,QAClCo2E,OAAOG,WAAaA,WACpBH,OAAOI,UAAYA,UACnBJ,OAAOK,cAAgBA,cACvBL,OAAOtX,OAASjC,iBAAiBiC,OACjCsX,OAAOrX,SAAWlC,iBAAiBkC,SACnCqX,OAAO/xC,UAAYw4B,iBAAiBx4B,UACpC+xC,OAAO5xC,KAAOq4B,iBAAiBr4B,KAC/B4xC,OAAO3xC,OAASo4B,iBAAiBp4B,OACjC2xC,OAAOpX,wBAA0BnC,iBAAiBmC,wBAClDoX,OAAOgB,aAAeT,WACtBP,OAAO/gF,QAAU,QAmBjB,IAAIgpE,WAAa,mBACb/+D,cAAgB,sBAChBK,SAAW,GACXs3E,YACJ,GAAI5Y,WAAY,CACd,IAAIgZ,QAAUn7E,SAASuiE,qBAAqB,UACxC93D,MAAQ0wE,QAAQr/E,OAAS,EACzBs/E,SAAWD,QAAQ1wE,QAAU,CAC/B3K,IAAK,IAEPi7E,YAAcK,SAASt7E,IAAIkjB,QAAQ,aAAc,IACjDvf,SAAWm3E,iBAAiB,YAE9B,IAAID,wBAA0B5wC,YAAY2wC,WAAY,KAEtD,OAAOR,aA7zfO,KAANmB,yCACI,OAAOlpE,QAAQD,OADb","file":"static/js/2.03cf3c9e.chunk.js","sourcesContent":["var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = {};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lottieWeb = require('lottie-web');\n\nvar _lottieWeb2 = _interopRequireDefault(_lottieWeb);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Lottie = function (_React$Component) {\n (0, _inherits3.default)(Lottie, _React$Component);\n\n function Lottie() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Lottie);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Lottie.__proto__ || (0, _getPrototypeOf2.default)(Lottie)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickToPause = function () {\n // The pause() method is for handling pausing by passing a prop isPaused\n // This method is for handling the ability to pause by clicking on the animation\n if (_this.anim.isPaused) {\n _this.anim.play();\n } else {\n _this.anim.pause();\n }\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Lottie, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n options = _props.options,\n eventListeners = _props.eventListeners;\n var loop = options.loop,\n autoplay = options.autoplay,\n animationData = options.animationData,\n rendererSettings = options.rendererSettings,\n segments = options.segments;\n\n\n this.options = {\n container: this.el,\n renderer: 'svg',\n loop: loop !== false,\n autoplay: autoplay !== false,\n segments: segments !== false,\n animationData: animationData,\n rendererSettings: rendererSettings\n };\n\n this.options = (0, _extends3.default)({}, this.options, options);\n\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(eventListeners);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps /* , nextState */) {\n /* Recreate the animation handle if the data is changed */\n if (this.options.animationData !== nextProps.options.animationData) {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options = (0, _extends3.default)({}, this.options, nextProps.options);\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(nextProps.eventListeners);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isStopped) {\n this.stop();\n } else if (this.props.segments) {\n this.playSegments();\n } else {\n this.play();\n }\n\n this.pause();\n this.setSpeed();\n this.setDirection();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options.animationData = null;\n this.anim = null;\n }\n }, {\n key: 'setSpeed',\n value: function setSpeed() {\n this.anim.setSpeed(this.props.speed);\n }\n }, {\n key: 'setDirection',\n value: function setDirection() {\n this.anim.setDirection(this.props.direction);\n }\n }, {\n key: 'play',\n value: function play() {\n this.anim.play();\n }\n }, {\n key: 'playSegments',\n value: function playSegments() {\n this.anim.playSegments(this.props.segments);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.anim.stop();\n }\n }, {\n key: 'pause',\n value: function pause() {\n if (this.props.isPaused && !this.anim.isPaused) {\n this.anim.pause();\n } else if (!this.props.isPaused && this.anim.isPaused) {\n this.anim.pause();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.anim.destroy();\n }\n }, {\n key: 'registerEvents',\n value: function registerEvents(eventListeners) {\n var _this2 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this2.anim.addEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'deRegisterEvents',\n value: function deRegisterEvents(eventListeners) {\n var _this3 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this3.anim.removeEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height,\n ariaRole = _props2.ariaRole,\n ariaLabel = _props2.ariaLabel,\n isClickToPauseDisabled = _props2.isClickToPauseDisabled,\n title = _props2.title;\n\n\n var getSize = function getSize(initial) {\n var size = void 0;\n\n if (typeof initial === 'number') {\n size = initial + 'px';\n } else {\n size = initial || '100%';\n }\n\n return size;\n };\n\n var lottieStyles = (0, _extends3.default)({\n width: getSize(width),\n height: getSize(height),\n overflow: 'hidden',\n margin: '0 auto',\n outline: 'none'\n }, this.props.style);\n\n var onClickHandler = isClickToPauseDisabled ? function () {\n return null;\n } : this.handleClickToPause;\n\n return (\n // Bug with eslint rules https://github.com/airbnb/javascript/issues/1374\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _react2.default.createElement('div', {\n ref: function ref(c) {\n _this4.el = c;\n },\n style: lottieStyles,\n onClick: onClickHandler,\n title: title,\n role: ariaRole,\n 'aria-label': ariaLabel,\n tabIndex: '0'\n })\n );\n }\n }]);\n return Lottie;\n}(_react2.default.Component);\n\nexports.default = Lottie;\n\n\nLottie.propTypes = {\n eventListeners: _propTypes2.default.arrayOf(_propTypes2.default.object),\n options: _propTypes2.default.object.isRequired,\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n isStopped: _propTypes2.default.bool,\n isPaused: _propTypes2.default.bool,\n speed: _propTypes2.default.number,\n segments: _propTypes2.default.arrayOf(_propTypes2.default.number),\n direction: _propTypes2.default.number,\n ariaRole: _propTypes2.default.string,\n ariaLabel: _propTypes2.default.string,\n isClickToPauseDisabled: _propTypes2.default.bool,\n title: _propTypes2.default.string\n};\n\nLottie.defaultProps = {\n eventListeners: [],\n isStopped: false,\n isPaused: false,\n speed: 1,\n ariaRole: 'button',\n ariaLabel: 'animation',\n isClickToPauseDisabled: false,\n title: ''\n};","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = require('./_hide');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t/* global locationHref:writable, animationManager, subframeEnabled:writable, defaultCurveSegments:writable, roundValues,\r\nexpressionsPlugin:writable, PropertyFactory, ShapePropertyFactory, Matrix */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame */\r\n\r\nvar svgNS = 'http://www.w3.org/2000/svg';\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\n/* global createSizedArray */\r\n/* exported subframeEnabled, expressionsPlugin, isSafari, cachedColors, bmPow, bmSqrt, bmFloor, bmMax, bmMin, ProjectInterface,\r\ndefaultCurveSegments, degToRads, roundCorner, bmRnd, styleDiv, BMEnterFrameEvent, BMCompleteEvent, BMCompleteLoopEvent,\r\nBMSegmentStartEvent, BMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, BMAnimationConfigErrorEvent, createElementID,\r\naddSaturationToRGB, addBrightnessToRGB, addHueToRGB, rgbToHex */\r\n\r\nvar subframeEnabled = true;\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bmRnd;\r\nvar bmPow = Math.pow;\r\nvar bmSqrt = Math.sqrt;\r\nvar bmFloor = Math.floor;\r\nvar bmMax = Math.max;\r\nvar bmMin = Math.min;\r\n\r\nvar BMMath = {};\r\n(function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface() { return {}; }\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function (val) {\r\n var tOfVal = typeof val;\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI / 180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag) {\r\n if (flag) {\r\n bmRnd = Math.round;\r\n } else {\r\n bmRnd = function (val) {\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n}\r\n\r\nfunction BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n}\r\n\r\nfunction BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n}\r\n\r\nfunction BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n}\r\n\r\nfunction BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n}\r\n\r\nfunction BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n}\r\n\r\nvar createElementID = (function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return '__lottie_element_' + _count;\r\n };\r\n}());\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n default: break;\r\n }\r\n return [r,\r\n g,\r\n b];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = (max === 0 ? 0 : d / max);\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n default: break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v,\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var len = this._cbs[eventName].length;\r\n for (var i = 0; i < len; i += 1) {\r\n this._cbs[eventName][i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* exported dataManager */\r\n\r\nfunction dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps, fontManager) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps, fontManager);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData, fontManager);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData, fontManager) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets, fontManager);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n}\r\n\r\nvar dataManager = dataFunctionManager();\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function getCombinedCharacterCodes() {\r\n return combinedCharacters;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n // TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it.\r\n Font.getCombinedCharacterCodes = getCombinedCharacterCodes;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyData.bezierData) {\r\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyData.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyData.__fnct) {\r\n keyData.__fnct = [];\r\n }\r\n if (!keyData.__fnct[i]) {\r\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyData.__fnct[i];\r\n }\r\n } else if (!keyData.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct = fnc;\r\n } else {\r\n fnc = keyData.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, assetLoader */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n assetLoader.load(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t) {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* exported assetLoader */\r\n\r\nvar assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n xhr.open('GET', path, true);\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: this._textData.p.r,\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (textData.p.p) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var combinedCharacters = FontManager.getCombinedCharacterCodes();\r\n var charactersArray = [];\r\n var i = 0; var\r\n len = text.length;\r\n var charCode;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (combinedCharacters.indexOf(charCode) !== -1) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n charCode = text.charCodeAt(i + 1);\r\n if (charCode >= 0xDC00 && charCode <= 0xDFFF) {\r\n charactersArray.push(text.substr(i, 2));\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n lcEnum: {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n },\r\n ljEnum: {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n },\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');\r\n pathElement.setAttribute('stroke-linejoin', this.ljEnum[data.lj] || 'round');\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = this.lcEnum[data.lc] || 'round';\r\n styleElem.lj = this.ljEnum[data.lj] || 'round';\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, assetLoader, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.configAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n\r\n assetLoader.load(params.path, this.configAnimation.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n this.renderer.includeLayers(data.layers);\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n assetLoader.load(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n // this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(frames, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return frames / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (_needsRandom) {\r\n seedRandom(randSeed);\r\n }\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorProp */\r\n\r\n(function () {\r\n var TextExpressionSelectorProp = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function TextExpressionSelectorPropFactory(elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n }());\r\n\r\n var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\n TextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n };\r\n}());\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.7.8';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));"],"sourceRoot":""}