{"version":3,"sources":["webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/core-js/internals/symbol-registry-detection.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/object-is-extensible.js","webpack:///./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/modules/es.map.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/canvg/index.js","webpack:///./node_modules/@babel/runtime/helpers/get.js","webpack:///./node_modules/core-js/internals/regexp-get-flags.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/@babel/runtime/helpers/superPropBase.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.reflect.apply.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.symbol.for.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///./node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/internals/well-known-symbol-define.js","webpack:///./node_modules/core-js/internals/get-json-replacer-function.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/modules/es.json.stringify.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.array.slice.js"],"names":["uncurryThis","aCallable","isObject","hasOwn","arraySlice","NATIVE_BIND","$Function","Function","concat","join","factories","construct","C","argsLength","args","list","i","module","exports","bind","that","F","this","Prototype","prototype","partArgs","arguments","boundFunction","length","apply","classof","toIndexedObject","$getOwnPropertyNames","f","windowNames","window","Object","getOwnPropertyNames","getWindowNames","it","error","isArray","isConstructor","wellKnownSymbol","SPECIES","$Array","Array","originalArray","constructor","undefined","NATIVE_SYMBOL","Symbol","keyFor","toObject","floor","Math","charAt","replace","stringSlice","slice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","position","captures","namedCaptures","replacement","tailPos","m","symbols","match","ch","capture","n","globalThis","DOMIterables","DOMTokenListPrototype","forEach","createNonEnumerableProperty","handlePrototype","CollectionPrototype","COLLECTION_NAME","$forEach","arrayMethodIsStrict","STRICT_METHOD","callbackfn","fails","V8_VERSION","METHOD_NAME","array","foo","Boolean","_getPrototypeOf","t","setPrototypeOf","getPrototypeOf","__proto__","__esModule","_assertThisInitialized","e","ReferenceError","toString","InternalStateModule","defineIterator","createIterResultObject","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","String","iterated","type","string","index","point","state","valueOf","$","target","proto","forced","MATCH","isRegExp","$some","some","_setPrototypeOf","getBuiltIn","aConstructor","anObject","create","nativeConstruct","ObjectPrototype","push","NEW_TARGET_BUG","ARGS_BUG","FORCED","stat","sham","Target","newTarget","$args","instance","result","$filter","filter","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","call","callWithSafeIterationClosing","isArrayIteratorMethod","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","arrayLike","O","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","step","iterator","next","value","iteratorMethod","done","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","isExtensible","FAILS_ON_PRIMITIVES","defineBuiltIn","SymbolPrototype","TO_PRIMITIVE","hint","arity","getOwnPropertySymbolsModule","getOwnPropertySymbols","$getOwnPropertySymbols","toPropertyKey","require","_defineProperties","r","o","enumerable","configurable","writable","defineProperty","key","_createClass","defineBuiltInAccessor","defineBuiltIns","anInstance","isNullOrUndefined","iterate","setSpecies","DESCRIPTORS","fastKey","internalStateGetterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","Constructor","iterable","first","last","size","AS_ENTRIES","define","previous","entry","getEntry","removed","clear","prev","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","kind","arraySpeciesConstructor","_typeof","assertThisInitialized","_possibleConstructorReturn","TypeError","isForced","InternalMetadataModule","isCallable","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","REPLACE","entries","enable","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","global","collection","collectionStrong","init","_regeneratorRuntime","hasOwnProperty","a","c","asyncIterator","u","toStringTag","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","h","l","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","name","mark","awrap","async","Promise","keys","reverse","pop","stop","rval","handle","complete","finish","delegateYield","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","toAbsoluteIndex","end","endPos","compressSpaces","trimLeft","trimRight","toNumbers","matches","map","parseFloat","allUppercase","normalizeAttributeName","test","toLowerCase","parseExternalUrl","url","urlMatch","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","_findSelectorMatch","_findSelectorMatch2","_findSelectorMatch3","_findSelectorMatch4","_findSelectorMatch5","_findSelectorMatch6","_findSelectorMatch7","_findSelectorMatch8","_findSelectorMatch9","_findSelectorMatch10","_findSelectorMatch11","_findSelectorMatch12","_findSelectorMatch13","_findSelectorMatch14","PSEUDO_ZERO","vectorMagnitude","sqrt","pow","vectorsRatio","vectorsAngle","acos","CB1","CB2","CB3","CB4","QB1","QB2","QB3","createCommonjsModule","fn","runtime","undefined$1","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","self","tryLocsList","protoGenerator","generator","context","obj","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","PromiseImpl","reject","record","unwrapped","previousPromise","enqueue","doneResult","delegateResult","info","locs","genFun","ctor","iter","object","skipTempReset","rootEntry","rootRecord","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","regeneratorRuntime","accidentalStrictMode","Property","document","isNormalizedColor","regexp","isString","hasValue","asString","getString","def","rootEmSize","emSize","axisOrIsFontSize","processPercent","_ref","_ref2","axis","isFontSize","viewPort","screen","getNumber","min","computeSize","max","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","len","commas","ok","alpha","toRGBA","ViewPort","viewPorts","width","height","getCurrent","Point","x","atan2","transform","xp","yp","defaultValue","_toNumbers","_toNumbers2","_toNumbers2$","_toNumbers2$2","scale","_toNumbers3","_toNumbers4","_toNumbers4$","_toNumbers4$2","path","points","pathPoints","Mouse","working","events","eventElements","onClick","onMouseMove","canvas","onclick","onmousemove","style","cursor","run","parent","isPointInPath","boundingBox","_ref3","isPointInBox","_this$screen","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","evt","_this$mapXY","mapXY","event","clientX","clientY","_this$mapXY2","defaultWindow","defaultFetch","fetch","Screen","_ref$fetch","_ref$window","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","checker","readyPromise","every","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","_ref2$minX","minX","_ref2$minY","minY","refX","refY","_ref2$clip","clip","_ref2$clipX","clipX","_ref2$clipY","clipY","cleanAspectRatio","_cleanAspectRatio$spl","split","_cleanAspectRatio$spl2","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","getPixels","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","_this","_ref3$enableRedraw","enableRedraw","_ref3$ignoreMouse","ignoreMouse","_ref3$ignoreAnimation","ignoreAnimation","_ref3$ignoreDimension","ignoreDimensions","_ref3$ignoreClear","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","now","Date","tick","shouldUpdate","runEvents","start","cancel","reduce","animation","update","hasEvents","setCurrent","widthStyle","getStyle","heightStyle","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","clearRect","defaultFetch$1","DefaultDOMParser","DOMParser","Parser","_ref$DOMParser","_parse","_callee","resource","_context","parseFromString","load","parse","_x","xml","parser","checkDocument","parserError","getElementsByTagName","textContent","_load","_callee2","response","_context2","text","_x2","Translate","_this$point","_this$point2","_this$point3","applyTransform","Rotate","rotate","transformOrigin","angle","cx","cy","numbers","getRadians","rad","cos","sin","Scale","scaleSize","parseScale","_this$scale","_this$scale2","_this$scale3","Matrix","matrix","b","det","_createSuper","Derived","Super","_isNativeReflectConstruct","NewTarget","Reflect","Proxy","Skew","_Matrix","_super","skew","_createSuper$1","_isNativeReflectConstruct$1","SkewX","_Skew","tan","_createSuper$2","_isNativeReflectConstruct$2","SkewY","parseTransforms","trim","parseTransform","_transform$split","_transform$split2","Transform","transforms","data","originCoords","_parseTransform","_parseTransform2","TransformType","transformTypes","unapply","applyToPoint","transformOriginStyle","skewX","skewY","Element","node","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","from","attribute","nodeName","addStylesFromStyleDefinition","_style$split$map","_style$split$map2","id","getValue","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","empty","skipAncestors","parentStyle","_style","save","mask","applyEffects","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","child","createElement","ignoreChildTypes","includes","styleClasses","styleClass","_this$document","matchesSelector","existingSpecificity","ignoreStyles","toRestore","styleProp","_createSuper$3","_isNativeReflectConstruct$3","UnknownElement","_Element","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","process","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","part","variants","weights","_part$split","_part$split2","BoundingBox","x1","Number","NaN","y1","x2","y2","addPoint","p0","p1","p2","p3","forX","b2ac","t1","addX","sumCubic","addY","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","bezierCurveAdd","cp1x","cp1y","cp2x","cp2y","addBezierCurve","_createSuper$4","_isNativeReflectConstruct$4","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","pointOrderStyleProp","strokeDasharrayStyleProp","strokeDashoffsetProp","paintOrder","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","globalAlpha","calculateOpacity","popEmSize","_createSuper$5","_isNativeReflectConstruct$5","TextElement","_RenderedElement","measureCache","textBaseline","getTextBaseline","dxAttr","dyAttr","getAnchorDelta","_this2","getTElementBoundingBox","initializeCoordinates","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","arabicForm","glyphs","missingGlyph","parentNode","lastIndex","_this3","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","dx","getGlyph","lw","horizAdvX","strokeText","fillText","startI","textAnchor","measureTextRecursive","textParent","xAttr","yAttr","_width","adjustChildCoordinates","measure","measureTargetText","targetText","_measure","_ctx$measureText","_createSuper$6","_isNativeReflectConstruct$6","TSpanElement","_TextElement","getTextFromNode","_createSuper$7","_isNativeReflectConstruct$7","TextNode","_TSpanElement","preparePath","PathParser","control","current","command","tokens","previousCommand","angles","isEnd","getToken","getScalar","makeAbsolute","getPoint","_this$current","_this$control","ox","oy","isRelativeCommand","_this$current2","priorTo","angleTo","addMarkerAngle","j","_createSuper$8","_isNativeReflectConstruct$8","PathElement","pathParser","nextCommand","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","fill","stroke","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_markers$","_marker","_markers$i","_point","_angle","_marker2","_markers$markersLastI","_point2","_angle2","getAsCurrentPoint","addMarker","isCommandOrEnd","_point3","_y","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","rx","ry","xAxisRotation","largeArcFlag","sweepFlag","currp","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","_createSuper$9","_isNativeReflectConstruct$9","SVGElement","root","removeCurrent","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","_screen$viewPort","refXAttr","refYAttr","viewBoxAttr","setViewBox","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","_createSuper$a","_isNativeReflectConstruct$a","RectElement","_PathElement","rxAttr","ryAttr","KAPPA","_createSuper$b","_isNativeReflectConstruct$b","CircleElement","_createSuper$c","_isNativeReflectConstruct$c","EllipseElement","_createSuper$d","_isNativeReflectConstruct$d","LineElement","_this$getPoints","getPoints","_this$getPoints2","_this$getPoints2$","x0","y0","_this$getPoints2$2","_this$getPoints3","_this$getPoints4","_createSuper$e","_isNativeReflectConstruct$e","PolylineElement","parsePath","_points","_points$","_createSuper$f","_isNativeReflectConstruct$f","PolygonElement","_PolylineElement","_this$points","_this$points$","_createSuper$g","_isNativeReflectConstruct$g","PatternElement","parentOpacityProp","patternSvg","patternCanvas","createCanvas","patternCtx","getContext","deleteProperty","pattern","_createSuper$h","_isNativeReflectConstruct$h","MarkerElement","orient","markerUnits","markerSvg","overflow","_createSuper$i","_isNativeReflectConstruct$i","DefsElement","_createSuper$j","_isNativeReflectConstruct$j","GElement","_createSuper$k","_isNativeReflectConstruct$k","GradientElement","attributesToInherit","stops","_assertThisInitialize","stopsContainer","inheritStopContainer","_stopsContainer","gradient","getGradient","addParentOpacity","addColorStop","_document$screen","_viewPort$viewPorts","rootView","rect","group","attributeToInherit","colorProp","_createSuper$l","_isNativeReflectConstruct$l","LinearGradientElement","_GradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","_createSuper$m","_isNativeReflectConstruct$m","RadialGradientElement","fx","fy","fr","createRadialGradient","_createSuper$n","_isNativeReflectConstruct$n","StopElement","stopOpacity","stopColor","_createSuper$o","_isNativeReflectConstruct$o","AnimateElement","duration","initialValue","initialUnits","frozen","begin","getMilliseconds","maxDuration","to","attributeType","attributeName","_this$getProgress","getProgress","progress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","lb","ub","ceil","_createSuper$p","_isNativeReflectConstruct$p","AnimateColorElement","_AnimateElement","colorFrom","colorTo","parseInt","_createSuper$q","_isNativeReflectConstruct$q","AnimateTransformElement","transformFrom","transformTo","_createForOfIteratorHelper","_unsupportedIterableToArray","_e","normalCompletion","didErr","_e2","return","minLen","_arrayLikeToArray","arr","arr2","_createSuper$r","_isNativeReflectConstruct$r","FontElement","_step","_iterator","fontFamilyStyle","unicode","_createSuper$s","_isNativeReflectConstruct$s","FontFaceElement","ascent","descent","_createSuper$t","_isNativeReflectConstruct$t","MissingGlyphElement","_createSuper$u","_isNativeReflectConstruct$u","GlyphElement","_createSuper$v","_isNativeReflectConstruct$v","TRefElement","firstChild","_createSuper$w","_isNativeReflectConstruct$w","AElement","hasText","open","_createForOfIteratorHelper$1","_unsupportedIterableToArray$1","_arrayLikeToArray$1","_createSuper$x","_isNativeReflectConstruct$x","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","partialText","rotation","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","getLetterSpacingAt","splineStep","segment","getEquidistantPointOnPath","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","_this2$findSegmentToF","findSegmentToFitChar","nextOffset","getLineLength","kern","midpoint","getPointOnLine","transposeX","transposeY","pathCommands","startX","startY","cmd","upperCommand","toUpperCase","calcLength","_p","getPointOnCubicBezier","getPointOnQuadraticBezier","inc","abs","getPointOnEllipticalArc","dist","P1x","P1y","P2x","P2y","fromX","fromY","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","pathCmd","currentT","pct","P3x","P3y","P4x","P4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","_createSuper$y","_isNativeReflectConstruct$y","ImageElement","loaded","href","isSvg","images","loadSvg","loadImage","_loadImage","image","createImage","t0","console","_loadSvg","svg","canvg","forkString","_image","drawImage","_createSuper$z","_isNativeReflectConstruct$z","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","_createSuper$A","_isNativeReflectConstruct$A","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","srcs","src","_createSuper$B","_isNativeReflectConstruct$B","UseElement","tempSvg","oldParent","_element","_createSuper$C","_isNativeReflectConstruct$C","imGet","img","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","__","srcData","getImageData","nr","ng","nb","na","putImageData","_createSuper$D","_isNativeReflectConstruct$D","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","restoreStyles","_createSuper$E","_isNativeReflectConstruct$E","noop","ClipPathElement","contextProto","elementTransform","_createSuper$F","_isNativeReflectConstruct$F","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","_createSuper$G","_isNativeReflectConstruct$G","FeDropShadowElement","___","____","_____","_createSuper$H","_isNativeReflectConstruct$H","FeMorphologyElement","_createSuper$I","_isNativeReflectConstruct$I","FeCompositeElement","_createSuper$J","_isNativeReflectConstruct$J","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","_createSuper$K","_isNativeReflectConstruct$K","TitleElement","_createSuper$L","_isNativeReflectConstruct$L","DescElement","elementTypes","ownKeys","enumerableOnly","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","_createImage","anonymousCrossOrigin","_args","crossOrigin","onload","onerror","Document","_ref$rootEmSize","_ref$emSize","_ref$createCanvas","_ref$createImage","emSizeStack","uniqueId","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","documentElement","elementType","ElementType","config","ownKeys$1","_objectSpread$1","Canvg","options","createDocumentElement","fromString","ready","_render","baseOptions","resize","_from","_args2","offscreen","DOMParserFallback","preset","OffscreenCanvas","blob","createImageBitmap","freeze","superPropBase","_get","isPrototypeOf","regExpFlags","RegExpPrototype","RegExp","R","flags","_classCallCheck","doesNotExceedSafeInteger","arraySpeciesCreate","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","k","E","A","_superPropBase","IndexedObject","nativeJoin","ES3_STRINGS","separator","$every","INCORRECT_ITERATION","functionApply","OPTIONAL_ARGUMENTS_LIST","thisArgument","argumentsList","IS_PURE","isSymbol","toPrimitive","thisNumberValue","NUMBER","NativeNumber","PureNumberNamespace","NumberPrototype","charCodeAt","toNumeric","primValue","toNumber","argument","third","radix","maxCode","digits","code","calledWithNew","NumberWrapper","copyConstructorProperties","propertyKey","descriptor","TO_STRING_TAG_SUPPORT","FUNCTION_NAME_EXISTS","EXISTS","FunctionPrototype","functionToString","nameRE","regExpExec","exec","NAME","shared","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","symbol","nativeKeys","createMethod","TYPE","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","specificCreate","find","findIndex","filterReject","preventExtensions","tryToString","$includes","addToUnscopables","BROKEN_ON_SPARSE","el","defineWellKnownSymbol","unsafe","$map","ArrayBuffer","buffer","$toString","createPropertyDescriptor","nativeObjectCreate","objectKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","definePropertyModule","definePropertiesModule","propertyIsEnumerableModule","sharedKey","hiddenKeys","uid","wrappedWellKnownSymbolModule","defineSymbolToPrimitive","HIDDEN","SYMBOL","PROTOTYPE","RangeError","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","WellKnownSymbolsStore","USE_SETTER","findChild","fallbackDefineProperty","P","Attributes","ObjectPrototypeDescriptor","setSymbolDescriptor","tag","description","$defineProperty","$defineProperties","Properties","properties","$propertyIsEnumerable","$create","V","$getOwnPropertyDescriptor","names","IS_OBJECT_PROTOTYPE","setter","useSetter","useSimple","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","thisSymbolValue","symbolDescriptiveString","desc","replacer","rawLength","keysLength","getReplacerFunction","$String","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","stringify","space","_inherits","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","getWeakData","onFreeze","meta","splice","nativeSlice","fin"],"mappings":"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","file":"js/canvg.d079b9a5.js","sourcesContent":["'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n var list = [];\n var i = 0;\n for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target === newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n result = IS_CONSTRUCTOR ? new this() : [];\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","'use strict';\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: null,\n last: null,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: null,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key === key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = null;\n entry = entry.next;\n }\n state.first = state.last = null;\n state.index = create(null);\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first === entry) state.first = next;\n if (state.last === entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: null\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n // return step by kind\n if (kind === 'keys') return createIterResultObject(entry.key, false);\n if (kind === 'values') return createIterResultObject(entry.value, false);\n return createIterResultObject([entry.key, entry.value], false);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = globalThis[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY === 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY === 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY === 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY === 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(target) {\n return objectGetPrototypeOf(anObject(target));\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","import 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.starts-with';\nimport 'core-js/modules/es.array.join';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport 'core-js/modules/es.symbol';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.for-each';\nimport 'core-js/modules/es.object.get-own-property-descriptor';\nimport 'core-js/modules/es.object.get-own-property-descriptors';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport _regeneratorRuntime from '@babel/runtime/regenerator';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.every';\nimport 'core-js/modules/es.array.reduce';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.promise';\nimport 'core-js/modules/es.string.split';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.function.name';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.reflect.construct';\nimport 'core-js/modules/es.regexp.to-string';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport 'core-js/modules/es.array.from';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.some';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.iterator';\nimport 'core-js/modules/es.string.trim';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport 'core-js/modules/es.array.index-of';\nimport 'core-js/modules/es.array.reverse';\nimport _get from '@babel/runtime/helpers/get';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.array.fill';\nimport 'core-js/modules/es.reflect.delete-property';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/web.dom-collections.iterator';\nimport 'core-js/modules/es.symbol.description';\nimport 'core-js/modules/es.symbol.iterator';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.map';\nimport 'core-js/modules/es.reflect.apply';\nimport 'core-js/modules/es.reflect.get-prototype-of';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\n * HTML-safe compress white-spaces.\n * @param str - String to compress.\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\n * HTML-safe left trim.\n * @param str - String to trim.\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\n * HTML-safe right trim.\n * @param str - String to trim.\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\n * String to numbers array.\n * @param str - Numbers string.\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\n * Normalize attribute name.\n * @param name - Attribute name.\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\n * Parse external URL.\n * @param url - CSS url string.\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = url.match(/url\\(('([^']+)'|\"([^\"]+)\"|([^'\"\\)]+))\\)/) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\n * Transform floats to integers in rgb colors.\n * @param color - Color to normalize.\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, function (num, isFloat) {\n return rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num;\n });\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s\\+>~\\.\\[:]+)/g;\nvar classRegex = /(\\.[^\\s\\+>~\\.\\[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s\\+>~\\.\\[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^\\)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s\\+>~\\.\\[:]+)/g;\nvar elementRegex = /([^\\s\\+>~\\.\\[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = selector.match(regex);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\n * Measure selector specificity.\n * @param selector - Selector to measure.\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^\\)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n\n var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);\n\n var _findSelectorMatch2 = _slicedToArray(_findSelectorMatch, 2);\n\n currentSelector = _findSelectorMatch2[0];\n delta = _findSelectorMatch2[1];\n specificity[1] += delta;\n\n var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);\n\n var _findSelectorMatch4 = _slicedToArray(_findSelectorMatch3, 2);\n\n currentSelector = _findSelectorMatch4[0];\n delta = _findSelectorMatch4[1];\n specificity[0] += delta;\n\n var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);\n\n var _findSelectorMatch6 = _slicedToArray(_findSelectorMatch5, 2);\n\n currentSelector = _findSelectorMatch6[0];\n delta = _findSelectorMatch6[1];\n specificity[1] += delta;\n\n var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);\n\n var _findSelectorMatch8 = _slicedToArray(_findSelectorMatch7, 2);\n\n currentSelector = _findSelectorMatch8[0];\n delta = _findSelectorMatch8[1];\n specificity[2] += delta;\n\n var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n\n var _findSelectorMatch10 = _slicedToArray(_findSelectorMatch9, 2);\n\n currentSelector = _findSelectorMatch10[0];\n delta = _findSelectorMatch10[1];\n specificity[1] += delta;\n\n var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);\n\n var _findSelectorMatch12 = _slicedToArray(_findSelectorMatch11, 2);\n\n currentSelector = _findSelectorMatch12[0];\n delta = _findSelectorMatch12[1];\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[\\*\\s\\+>~]/g, ' ').replace(/[#\\.]/g, ' ');\n\n var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);\n\n var _findSelectorMatch14 = _slicedToArray(_findSelectorMatch13, 2);\n\n currentSelector = _findSelectorMatch14[0];\n delta = _findSelectorMatch14[1];\n // lgtm [js/useless-assignment-to-local]\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\n * Vector magnitude.\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\n * Ratio between two vectors.\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\n * Angle between two vectors.\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var runtime = function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined$1,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined$1;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n stop: function () {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n }( // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports );\n\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});\n\nvar Property = /*#__PURE__*/function () {\n function Property(document, name, value) {\n _classCallCheck(this, Property);\n\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n _createClass(Property, [{\n key: \"hasValue\",\n value: function hasValue() {\n var value = this.value;\n return value !== null && value !== '' && value !== 0 && typeof value !== 'undefined';\n }\n }, {\n key: \"isString\",\n value: function isString(regexp) {\n var value = this.value;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n }, {\n key: \"isUrlDefinition\",\n value: function isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n }, {\n key: \"isPixels\",\n value: function isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case /px$/.test(asString):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n return this;\n }\n }, {\n key: \"getValue\",\n value: function getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var value = this.value;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n = n / 100.0;\n }\n\n return n;\n }\n }, {\n key: \"getString\",\n value: function getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n }, {\n key: \"getColor\",\n value: function getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n }, {\n key: \"getDpi\",\n value: function getDpi() {\n return 96.0; // TODO: compute?\n }\n }, {\n key: \"getRem\",\n value: function getRem() {\n return this.document.rootEmSize;\n }\n }, {\n key: \"getEm\",\n value: function getEm() {\n return this.document.emSize;\n }\n }, {\n key: \"getUnits\",\n value: function getUnits() {\n return this.getString().replace(/[0-9\\.\\-]/g, '');\n }\n }, {\n key: \"getPixels\",\n value: function getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],\n _ref2 = _slicedToArray(_ref, 2),\n axis = _ref2[0],\n isFontSize = _ref2[1];\n\n var viewPort = this.document.screen.viewPort;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n }, {\n key: \"getMilliseconds\",\n value: function getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n }, {\n key: \"getRadians\",\n value: function getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition() {\n var asString = this.getString();\n var name = asString.match(/#([^\\)'\"]+)/);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n }, {\n key: \"getFillStyleDefinition\",\n value: function getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n }, {\n key: \"getTextBaseline\",\n value: function getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n }, {\n key: \"addOpacity\",\n value: function addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n }], [{\n key: \"empty\",\n value: function empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n }]);\n\n return Property;\n}();\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nvar ViewPort = /*#__PURE__*/function () {\n function ViewPort() {\n _classCallCheck(this, ViewPort);\n\n this.viewPorts = [];\n }\n\n _createClass(ViewPort, [{\n key: \"clear\",\n value: function clear() {\n this.viewPorts = [];\n }\n }, {\n key: \"setCurrent\",\n value: function setCurrent(width, height) {\n this.viewPorts.push({\n width: width,\n height: height\n });\n }\n }, {\n key: \"removeCurrent\",\n value: function removeCurrent() {\n this.viewPorts.pop();\n }\n }, {\n key: \"getCurrent\",\n value: function getCurrent() {\n var viewPorts = this.viewPorts;\n return viewPorts[viewPorts.length - 1];\n }\n }, {\n key: \"computeSize\",\n value: function computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.getCurrent().width;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getCurrent().height;\n }\n }]);\n\n return ViewPort;\n}();\n\nvar Point = /*#__PURE__*/function () {\n function Point(x, y) {\n _classCallCheck(this, Point);\n\n this.x = x;\n this.y = y;\n }\n\n _createClass(Point, [{\n key: \"angleTo\",\n value: function angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(transform) {\n var x = this.x,\n y = this.y;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n }], [{\n key: \"parse\",\n value: function parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var _toNumbers = toNumbers(point),\n _toNumbers2 = _slicedToArray(_toNumbers, 2),\n _toNumbers2$ = _toNumbers2[0],\n x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,\n _toNumbers2$2 = _toNumbers2[1],\n y = _toNumbers2$2 === void 0 ? defaultValue : _toNumbers2$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parseScale\",\n value: function parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var _toNumbers3 = toNumbers(scale),\n _toNumbers4 = _slicedToArray(_toNumbers3, 2),\n _toNumbers4$ = _toNumbers4[0],\n x = _toNumbers4$ === void 0 ? defaultValue : _toNumbers4$,\n _toNumbers4$2 = _toNumbers4[1],\n y = _toNumbers4$2 === void 0 ? x : _toNumbers4$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parsePath\",\n value: function parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n }]);\n\n return Point;\n}();\n\nvar Mouse = /*#__PURE__*/function () {\n function Mouse(screen) {\n _classCallCheck(this, Mouse);\n\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = [];\n this.onClick = this.onClick.bind(this);\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n _createClass(Mouse, [{\n key: \"isWorking\",\n value: function isWorking() {\n return this.working;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.working) {\n return;\n }\n\n var screen = this.screen,\n onClick = this.onClick,\n onMouseMove = this.onMouseMove;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n }, {\n key: \"hasEvents\",\n value: function hasEvents() {\n return this.working && this.events.length > 0;\n }\n }, {\n key: \"runEvents\",\n value: function runEvents() {\n if (!this.working) {\n return;\n }\n\n var document = this.screen,\n events = this.events,\n eventElements = this.eventElements;\n var style = document.ctx.canvas.style;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach(function (_ref, i) {\n var run = _ref.run;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n }, {\n key: \"checkPath\",\n value: function checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref2, i) {\n var x = _ref2.x,\n y = _ref2.y;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"checkBoundingBox\",\n value: function checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref3, i) {\n var x = _ref3.x,\n y = _ref3.y;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"mapXY\",\n value: function mapXY(x, y) {\n var _this$screen = this.screen,\n window = _this$screen.window,\n ctx = _this$screen.ctx;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n }, {\n key: \"onClick\",\n value: function onClick(evt) {\n var _this$mapXY = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY.x,\n y = _this$mapXY.y;\n\n this.events.push({\n type: 'onclick',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onClick) {\n event.onClick();\n }\n }\n });\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(evt) {\n var _this$mapXY2 = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY2.x,\n y = _this$mapXY2.y;\n\n this.events.push({\n type: 'onmousemove',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onMouseMove) {\n event.onMouseMove();\n }\n }\n });\n }\n }]);\n\n return Mouse;\n}();\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch = typeof fetch !== 'undefined' ? fetch.bind(void 0) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\n\nvar Screen = /*#__PURE__*/function () {\n function Screen(ctx) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,\n _ref$window = _ref.window,\n window = _ref$window === void 0 ? defaultWindow : _ref$window;\n\n _classCallCheck(this, Screen);\n\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n _createClass(Screen, [{\n key: \"wait\",\n value: function wait(checker) {\n this.waits.push(checker);\n }\n }, {\n key: \"ready\",\n value: function ready() {\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(function (_) {\n return _();\n });\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n }, {\n key: \"setDefaults\",\n value: function setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(_ref2) {\n var document = _ref2.document,\n ctx = _ref2.ctx,\n aspectRatio = _ref2.aspectRatio,\n width = _ref2.width,\n desiredWidth = _ref2.desiredWidth,\n height = _ref2.height,\n desiredHeight = _ref2.desiredHeight,\n _ref2$minX = _ref2.minX,\n minX = _ref2$minX === void 0 ? 0 : _ref2$minX,\n _ref2$minY = _ref2.minY,\n minY = _ref2$minY === void 0 ? 0 : _ref2$minY,\n refX = _ref2.refX,\n refY = _ref2.refY,\n _ref2$clip = _ref2.clip,\n clip = _ref2$clip === void 0 ? false : _ref2$clip,\n _ref2$clipX = _ref2.clipX,\n clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,\n _ref2$clipY = _ref2.clipY,\n clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var _cleanAspectRatio$spl = cleanAspectRatio.split(' '),\n _cleanAspectRatio$spl2 = _slicedToArray(_cleanAspectRatio$spl, 2),\n aspectRatioAlign = _cleanAspectRatio$spl2[0],\n aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];\n\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (/^xMid/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (/YMid$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (/^xMax/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (/YMax$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n }, {\n key: \"start\",\n value: function start(element) {\n var _this = this;\n\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$enableRedraw = _ref3.enableRedraw,\n enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,\n _ref3$ignoreMouse = _ref3.ignoreMouse,\n ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,\n _ref3$ignoreAnimation = _ref3.ignoreAnimation,\n ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,\n _ref3$ignoreDimension = _ref3.ignoreDimensions,\n ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,\n _ref3$ignoreClear = _ref3.ignoreClear,\n ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,\n forceRedraw = _ref3.forceRedraw,\n scaleWidth = _ref3.scaleWidth,\n scaleHeight = _ref3.scaleHeight,\n offsetX = _ref3.offsetX,\n offsetY = _ref3.offsetY;\n\n var FRAMERATE = this.FRAMERATE,\n mouse = this.mouse;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(function (resolve) {\n _this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = function tick() {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (_this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n _this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n\n mouse.runEvents();\n }\n }\n\n _this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n }, {\n key: \"shouldUpdate\",\n value: function shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var frameDuration = this.frameDuration;\n var shouldUpdate = this.animations.reduce(function (shouldUpdate, animation) {\n return animation.update(frameDuration) || shouldUpdate;\n }, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"render\",\n value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var CLIENT_WIDTH = this.CLIENT_WIDTH,\n CLIENT_HEIGHT = this.CLIENT_HEIGHT,\n viewPort = this.viewPort,\n ctx = this.ctx,\n isFirstRender = this.isFirstRender;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n }]);\n\n return Screen;\n}();\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch;\n\nvar defaultFetch$1 = Screen.defaultFetch;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\n\nvar Parser = /*#__PURE__*/function () {\n function Parser() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,\n _ref$DOMParser = _ref.DOMParser,\n DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;\n\n _classCallCheck(this, Parser);\n\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n _createClass(Parser, [{\n key: \"parse\",\n value: function () {\n var _parse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resource) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!/^ 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Rotate);\n\n this.type = 'rotate';\n this.angle = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.cx = (numbers[1] || 0) + (transformOrigin[0] || 0);\n this.cy = (numbers[2] || 0) + (transformOrigin[1] || 0);\n }\n\n _createClass(Rotate, [{\n key: \"apply\",\n value: function apply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n }]);\n\n return Rotate;\n}();\n\nvar Scale = /*#__PURE__*/function () {\n function Scale(_, scale) {\n _classCallCheck(this, Scale);\n\n this.type = 'scale';\n this.scale = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n }\n\n _createClass(Scale, [{\n key: \"apply\",\n value: function apply(ctx) {\n var _this$scale = this.scale,\n x = _this$scale.x,\n y = _this$scale.y;\n ctx.scale(x, y || x);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var _this$scale2 = this.scale,\n x = _this$scale2.x,\n y = _this$scale2.y;\n ctx.scale(1.0 / x, 1.0 / y || x);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var _this$scale3 = this.scale,\n x = _this$scale3.x,\n y = _this$scale3.y;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n }]);\n\n return Scale;\n}();\n\nvar Matrix = /*#__PURE__*/function () {\n function Matrix(_, matrix) {\n _classCallCheck(this, Matrix);\n\n this.type = 'matrix';\n this.matrix = [];\n this.matrix = toNumbers(matrix);\n }\n\n _createClass(Matrix, [{\n key: \"apply\",\n value: function apply(ctx) {\n var matrix = this.matrix;\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var matrix = this.matrix;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n }]);\n\n return Matrix;\n}();\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Skew = /*#__PURE__*/function (_Matrix) {\n _inherits(Skew, _Matrix);\n\n var _super = _createSuper(Skew);\n\n function Skew(document, skew) {\n var _this;\n\n _classCallCheck(this, Skew);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skew';\n _this.angle = null;\n _this.angle = new Property(document, 'angle', skew);\n return _this;\n }\n\n return Skew;\n}(Matrix);\n\nfunction _createSuper$1(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$1()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SkewX = /*#__PURE__*/function (_Skew) {\n _inherits(SkewX, _Skew);\n\n var _super = _createSuper$1(SkewX);\n\n function SkewX(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewX);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skewX';\n _this.matrix = [1, 0, Math.tan(_this.angle.getRadians()), 1, 0, 0];\n return _this;\n }\n\n return SkewX;\n}(Skew);\n\nfunction _createSuper$2(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$2()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SkewY = /*#__PURE__*/function (_Skew) {\n _inherits(SkewY, _Skew);\n\n var _super = _createSuper$2(SkewY);\n\n function SkewY(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewY);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skewY';\n _this.matrix = [1, Math.tan(_this.angle.getRadians()), 0, 1, 0, 0];\n return _this;\n }\n\n return SkewY;\n}(Skew);\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var _transform$split = transform.split('('),\n _transform$split2 = _slicedToArray(_transform$split, 2),\n type = _transform$split2[0],\n value = _transform$split2[1];\n\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nvar Transform = /*#__PURE__*/function () {\n function Transform(document, transform, transformOrigin) {\n var _this = this;\n\n _classCallCheck(this, Transform);\n\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n var originCoords = transformOrigin ? toNumbers(transformOrigin) : [];\n data.forEach(function (transform) {\n if (transform === 'none') {\n return;\n }\n\n var _parseTransform = parseTransform(transform),\n _parseTransform2 = _slicedToArray(_parseTransform, 2),\n type = _parseTransform2[0],\n value = _parseTransform2[1];\n\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n _this.transforms.push(new TransformType(_this.document, value, originCoords));\n }\n });\n }\n\n _createClass(Transform, [{\n key: \"apply\",\n value: function apply(ctx) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n }], [{\n key: \"fromElement\",\n value: function fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var transformOriginStyle = element.getStyle('transform-origin', false, true);\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOriginStyle.getString());\n }\n\n return null;\n }\n }]);\n\n return Transform;\n}();\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nvar Element = /*#__PURE__*/function () {\n function Element(document, node) {\n var _this = this;\n\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, Element);\n\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(function (attribute) {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n _this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(function (_) {\n return _.trim();\n });\n styles.forEach(function (style) {\n if (!style) {\n return;\n }\n\n var _style$split$map = style.split(':').map(function (_) {\n return _.trim();\n }),\n _style$split$map2 = _slicedToArray(_style$split$map, 2),\n name = _style$split$map2[0],\n value = _style$split$map2[1];\n\n _this.styles[name] = new Property(document, name, value);\n });\n }\n\n var definitions = document.definitions;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getValue()]) {\n definitions[id.getValue()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(function (childNode) {\n if (childNode.nodeType === 1) {\n _this.addChild(childNode); // ELEMENT_NODE\n\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n _this.addChild(textNode); // TEXT_NODE\n\n }\n }\n });\n }\n\n _createClass(Element, [{\n key: \"getAttribute\",\n value: function getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n }, {\n key: \"getHrefAttribute\",\n value: function getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || /:href$/.test(key)) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n }, {\n key: \"getStyle\",\n value: function getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var parent = this.parent;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n }, {\n key: \"render\",\n value: function render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n }, {\n key: \"setContext\",\n value: function setContext(_) {}\n }, {\n key: \"applyEffects\",\n value: function applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(_) {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.children.forEach(function (child) {\n child.render(ctx);\n });\n }\n }, {\n key: \"addChild\",\n value: function addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n }, {\n key: \"matchesSelector\",\n value: function matchesSelector(selector) {\n var node = this.node;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = node.getAttribute('class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(function (styleClass) {\n if (\".\".concat(styleClass) === selector) {\n return true;\n }\n });\n }\n }, {\n key: \"addStylesFromStyleDefinition\",\n value: function addStylesFromStyleDefinition() {\n var _this$document = this.document,\n styles = _this$document.styles,\n stylesSpecificity = _this$document.stylesSpecificity;\n\n for (var selector in styles) {\n if (selector[0] !== '@' && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n }, {\n key: \"removeStyles\",\n value: function removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce(function (toRestore, name) {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [].concat(_toConsumableArray(toRestore), [[name, value]]);\n }, []);\n return toRestore;\n }\n }, {\n key: \"restoreStyles\",\n value: function restoreStyles(element, styles) {\n styles.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n value = _ref2[1];\n\n element.getStyle(name, true).setValue(value);\n });\n }\n }]);\n\n return Element;\n}();\nElement.ignoreChildTypes = ['title'];\n\nfunction _createSuper$3(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$3()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UnknownElement = /*#__PURE__*/function (_Element) {\n _inherits(UnknownElement, _Element);\n\n var _super = _createSuper$3(UnknownElement);\n\n function UnknownElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, UnknownElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n\n return _this;\n }\n\n return UnknownElement;\n}(Element);\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nvar Font = /*#__PURE__*/function () {\n function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n _classCallCheck(this, Font);\n\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n _createClass(Font, [{\n key: \"toString\",\n value: function toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n }], [{\n key: \"parse\",\n value: function parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(function (part) {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n var _part$split = part.split('/');\n\n var _part$split2 = _slicedToArray(_part$split, 1);\n\n fontSize = _part$split2[0];\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n }]);\n\n return Font;\n}();\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nvar BoundingBox = /*#__PURE__*/function () {\n function BoundingBox() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n\n _classCallCheck(this, BoundingBox);\n\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n _createClass(BoundingBox, [{\n key: \"addPoint\",\n value: function addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n }, {\n key: \"addX\",\n value: function addX(x) {\n this.addPoint(x, null);\n }\n }, {\n key: \"addY\",\n value: function addY(y) {\n this.addPoint(null, y);\n }\n }, {\n key: \"addBoundingBox\",\n value: function addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var x1 = boundingBox.x1,\n y1 = boundingBox.y1,\n x2 = boundingBox.x2,\n y2 = boundingBox.y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n }, {\n key: \"sumCubic\",\n value: function sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n }, {\n key: \"bezierCurveAdd\",\n value: function bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n }, {\n key: \"addBezierCurve\",\n value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n }, {\n key: \"addQuadraticCurve\",\n value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n }, {\n key: \"isPointInBox\",\n value: function isPointInBox(x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this.x1;\n }\n }, {\n key: \"y\",\n get: function get() {\n return this.y1;\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.x2 - this.x1;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.y2 - this.y1;\n }\n }]);\n\n return BoundingBox;\n}();\n\nfunction _createSuper$4(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$4()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RenderedElement = /*#__PURE__*/function (_Element) {\n _inherits(RenderedElement, _Element);\n\n var _super = _createSuper$4(RenderedElement);\n\n function RenderedElement() {\n var _this;\n\n _classCallCheck(this, RenderedElement);\n\n _this = _super.apply(this, arguments);\n _this.modifiedEmSizeStack = false;\n return _this;\n }\n\n _createClass(RenderedElement, [{\n key: \"calculateOpacity\",\n value: function calculateOpacity() {\n var opacity = 1.0; // tslint:disable-next-line: no-this-assignment\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue()) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit');\n var pointOrderStyleProp = this.getStyle('paint-order');\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n }\n\n if (pointOrderStyleProp.hasValue()) {\n // ?\n ctx.paintOrder = pointOrderStyleProp.getValue();\n }\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else if (typeof ctx.webkitLineDash !== 'undefined') {\n ctx.webkitLineDash = gaps;\n } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n ctx.webkitLineDashOffset = offset;\n } else if (typeof ctx.mozDashOffset !== 'undefined') {\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(RenderedElement.prototype), \"clearContext\", this).call(this, ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n }]);\n\n return RenderedElement;\n}(Element);\n\nfunction _createSuper$5(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$5()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$5() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(TextElement, _RenderedElement);\n\n var _super = _createSuper$5(TextElement);\n\n function TextElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextElement);\n\n _this = _super.call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes);\n _this.type = 'text';\n _this.x = 0;\n _this.y = 0;\n _this.measureCache = -1;\n return _this;\n }\n\n _createClass(TextElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _get(_getPrototypeOf(TextElement.prototype), \"setContext\", this).call(this, ctx, fromMeasure);\n\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n }, {\n key: \"initializeCoordinates\",\n value: function initializeCoordinates(ctx) {\n this.x = this.getAttribute('x').getPixels('x');\n this.y = this.getAttribute('y').getPixels('y');\n var dxAttr = this.getAttribute('dx');\n var dyAttr = this.getAttribute('dy');\n\n if (dxAttr.hasValue()) {\n this.x += dxAttr.getPixels('x');\n }\n\n if (dyAttr.hasValue()) {\n this.y += dyAttr.getPixels('y');\n }\n\n this.x += this.getAnchorDelta(ctx, this, 0);\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var _this2 = this;\n\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n\n this.initializeCoordinates(ctx);\n var boundingBox = null;\n this.children.forEach(function (_, i) {\n var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getFontSize\",\n value: function getFontSize() {\n var document = this.document,\n parent = this.parent;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n }, {\n key: \"getTElementBoundingBox\",\n value: function getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n }, {\n key: \"getGlyph\",\n value: function getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n glyph = font.glyphs[char][arabicForm];\n\n if (!glyph && font.glyphs[char].type === 'glyph') {\n glyph = font.glyphs[char];\n }\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n }, {\n key: \"getText\",\n value: function getText() {\n return '';\n }\n }, {\n key: \"getTextFromNode\",\n value: function getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces(textNode.value || textNode.text || textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var _this3 = this;\n\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n\n this.initializeCoordinates(ctx);\n this.children.forEach(function (_, i) {\n _this3.renderChild(ctx, _this3, _this3, i);\n });\n var mouse = this.document.screen.mouse; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n }, {\n key: \"renderTElementChildren\",\n value: function renderTElementChildren(ctx) {\n var document = this.document,\n parent = this.parent;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var unitsPerEm = customFont.fontFace.unitsPerEm;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var x = this.x,\n y = this.y;\n\n if (ctx.paintOrder === 'stroke') {\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n } else {\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n }\n }\n }, {\n key: \"getAnchorDelta\",\n value: function getAnchorDelta(ctx, parent, startI) {\n var textAnchor = this.getStyle('text-anchor').getString('start');\n\n if (textAnchor !== 'start') {\n var children = parent.children;\n var len = children.length;\n var child = null;\n var width = 0;\n\n for (var i = startI; i < len; i++) {\n child = children[i];\n\n if (i > startI && child.getAttribute('x').hasValue() || child.getAttribute('text-anchor').hasValue()) {\n break; // new group\n }\n\n width += child.measureTextRecursive(ctx);\n }\n\n return -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n return 0;\n }\n }, {\n key: \"adjustChildCoordinates\",\n value: function adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var textAnchor = child.getAttribute('text-anchor').getString('start');\n\n if (i === 0 && child.type !== 'textNode') {\n if (!xAttr.hasValue()) {\n xAttr.setValue(textParent.getAttribute('x').getValue('0'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(textParent.getAttribute('y').getValue('0'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(textParent.getAttribute('dx').getValue('0'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(textParent.getAttribute('dy').getValue('0'));\n }\n }\n\n if (xAttr.hasValue()) {\n child.x = xAttr.getPixels('x') + textParent.getAnchorDelta(ctx, parent, i);\n\n if (textAnchor !== 'start') {\n var width = child.measureTextRecursive(ctx);\n child.x += -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (textAnchor !== 'start') {\n var _width = child.measureTextRecursive(ctx);\n\n textParent.x += -1 * (textAnchor === 'end' ? _width : _width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x + child.measureText(ctx);\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y;\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n }, {\n key: \"getChildBoundingBox\",\n value: function getChildBoundingBox(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach(function (_, i) {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n }, {\n key: \"renderChild\",\n value: function renderChild(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n child.render(ctx);\n child.children.forEach(function (_, i) {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n }, {\n key: \"measureTextRecursive\",\n value: function measureTextRecursive(ctx) {\n var width = this.children.reduce(function (width, child) {\n return width + child.measureTextRecursive(ctx);\n }, this.measureText(ctx));\n return width;\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx) {\n var measureCache = this.measureCache;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n }, {\n key: \"measureTargetText\",\n value: function measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var parent = this.parent;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n\n var _ctx$measureText = ctx.measureText(targetText),\n measure = _ctx$measureText.width;\n\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n }]);\n\n return TextElement;\n}(RenderedElement);\n\nfunction _createSuper$6(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$6()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$6() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TSpanElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TSpanElement, _TextElement);\n\n var _super = _createSuper$6(TSpanElement);\n\n function TSpanElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TSpanElement);\n\n _this = _super.call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === TSpanElement ? true : captureTextNodes);\n _this.type = 'tspan'; // if this node has children, then they own the text\n\n _this.text = _this.children.length > 0 ? '' : _this.getTextFromNode();\n return _this;\n }\n\n _createClass(TSpanElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }]);\n\n return TSpanElement;\n}(TextElement);\n\nfunction _createSuper$7(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$7()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$7() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextNode = /*#__PURE__*/function (_TSpanElement) {\n _inherits(TextNode, _TSpanElement);\n\n var _super = _createSuper$7(TextNode);\n\n function TextNode() {\n var _this;\n\n _classCallCheck(this, TextNode);\n\n _this = _super.apply(this, arguments);\n _this.type = 'textNode';\n return _this;\n }\n\n return TextNode;\n}(TSpanElement);\n\nfunction preparePath(path) {\n var d = path.replace(/,/gm, ' ') // get rid of all commas\n // As the end of a match can also be the start of the next match, we need to run this replace twice.\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([^\\s])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2') // prefix commands with spaces\n .replace(/([0-9])([+\\-])/gm, '$1 $2') // separate digits on +- signs\n // Again, we need to run this twice to find all occurances\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/([Aa](?:\\s+(?:[0-9]*\\.)?[0-9]+){3})\\s+([01])\\s*([01])/gm, '$1 $2 $3 '); // shorthand elliptical arc path syntax\n\n return compressSpaces(d).trim();\n}\n\nvar PathParser = /*#__PURE__*/function () {\n function PathParser(path) {\n _classCallCheck(this, PathParser);\n\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = '';\n this.tokens = [];\n this.i = -1;\n this.previousCommand = '';\n this.points = [];\n this.angles = [];\n this.tokens = preparePath(path).split(' ');\n }\n\n _createClass(PathParser, [{\n key: \"reset\",\n value: function reset() {\n this.i = -1;\n this.command = '';\n this.previousCommand = '';\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n }, {\n key: \"isEnd\",\n value: function isEnd() {\n var i = this.i,\n tokens = this.tokens;\n return i >= tokens.length - 1;\n }\n }, {\n key: \"isCommandOrEnd\",\n value: function isCommandOrEnd() {\n if (this.isEnd()) {\n return true;\n }\n\n var i = this.i,\n tokens = this.tokens;\n return /^[A-Za-z]$/.test(tokens[i + 1]);\n }\n }, {\n key: \"isRelativeCommand\",\n value: function isRelativeCommand() {\n switch (this.command) {\n case 'm':\n case 'l':\n case 'h':\n case 'v':\n case 'c':\n case 's':\n case 'q':\n case 't':\n case 'a':\n case 'z':\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"getToken\",\n value: function getToken() {\n this.i++;\n return this.tokens[this.i];\n }\n }, {\n key: \"getScalar\",\n value: function getScalar() {\n return parseFloat(this.getToken());\n }\n }, {\n key: \"nextCommand\",\n value: function nextCommand() {\n this.previousCommand = this.command;\n this.command = this.getToken();\n }\n }, {\n key: \"getPoint\",\n value: function getPoint() {\n var point = new Point(this.getScalar(), this.getScalar());\n return this.makeAbsolute(point);\n }\n }, {\n key: \"getAsControlPoint\",\n value: function getAsControlPoint() {\n var point = this.getPoint();\n this.control = point;\n return point;\n }\n }, {\n key: \"getAsCurrentPoint\",\n value: function getAsCurrentPoint() {\n var point = this.getPoint();\n this.current = point;\n return point;\n }\n }, {\n key: \"getReflectedControlPoint\",\n value: function getReflectedControlPoint() {\n var previousCommand = this.previousCommand.toLowerCase();\n\n if (previousCommand !== 'c' && previousCommand !== 's' && previousCommand !== 'q' && previousCommand !== 't') {\n return this.current;\n } // reflect point\n\n\n var _this$current = this.current,\n cx = _this$current.x,\n cy = _this$current.y,\n _this$control = this.control,\n ox = _this$control.x,\n oy = _this$control.y;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n }, {\n key: \"makeAbsolute\",\n value: function makeAbsolute(point) {\n if (this.isRelativeCommand()) {\n var _this$current2 = this.current,\n x = _this$current2.x,\n y = _this$current2.y;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n }, {\n key: \"addMarker\",\n value: function addMarker(point, from, priorTo) {\n var points = this.points,\n angles = this.angles; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n }, {\n key: \"addMarkerAngle\",\n value: function addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n }, {\n key: \"getMarkerPoints\",\n value: function getMarkerPoints() {\n return this.points;\n }\n }, {\n key: \"getMarkerAngles\",\n value: function getMarkerAngles() {\n var angles = this.angles;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n }]);\n\n return PathParser;\n}();\n\nfunction _createSuper$8(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$8()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$8() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PathElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(PathElement, _RenderedElement);\n\n var _super = _createSuper$8(PathElement);\n\n function PathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PathElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'path';\n _this.pathParser = null;\n _this.pathParser = new PathParser(_this.getAttribute('d').getString());\n return _this;\n }\n\n _createClass(PathElement, [{\n key: \"path\",\n value: function path(ctx) {\n var pathParser = this.pathParser;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n pathParser.nextCommand();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n this.pathM(ctx, boundingBox);\n break;\n\n case 'L':\n case 'l':\n this.pathL(ctx, boundingBox);\n break;\n\n case 'H':\n case 'h':\n this.pathH(ctx, boundingBox);\n break;\n\n case 'V':\n case 'v':\n this.pathV(ctx, boundingBox);\n break;\n\n case 'C':\n case 'c':\n this.pathC(ctx, boundingBox);\n break;\n\n case 'S':\n case 's':\n this.pathS(ctx, boundingBox);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(ctx, boundingBox);\n break;\n\n case 'T':\n case 't':\n this.pathT(ctx, boundingBox);\n break;\n\n case 'A':\n case 'a':\n this.pathA(ctx, boundingBox);\n break;\n\n case 'Z':\n case 'z':\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(_) {\n return this.path();\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var pathParser = this.pathParser;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map(function (point, i) {\n return [point, angles[i]];\n });\n return markers;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n ctx.stroke();\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n\n var _markers$ = _slicedToArray(markers[0], 2),\n point = _markers$[0],\n angle = _markers$[1];\n\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var _markers$i = _slicedToArray(markers[i], 2),\n _point = _markers$i[0],\n _angle = _markers$i[1];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var _markers$markersLastI = _slicedToArray(markers[markersLastIndex], 2),\n _point2 = _markers$markersLastI[0],\n _angle2 = _markers$markersLastI[1];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n }, {\n key: \"pathM\",\n value: function pathM(ctx, boundingBox) {\n var pathParser = this.pathParser;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _point3 = pathParser.getAsCurrentPoint();\n\n var _x = _point3.x,\n _y = _point3.y;\n pathParser.addMarker(_point3, pathParser.start);\n boundingBox.addPoint(_x, _y);\n\n if (ctx) {\n ctx.lineTo(_x, _y);\n }\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }\n }, {\n key: \"pathH\",\n value: function pathH(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathV\",\n value: function pathV(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathC\",\n value: function pathC(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathA\",\n value: function pathA(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0);\n var largeArcFlag = pathParser.getScalar();\n var sweepFlag = pathParser.getScalar();\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]); // angle delta\n\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = vectorsAngle(u, v);\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n } // for markers\n\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rx * Math.cos(ah), centp.y + ry * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rx > ry ? rx : ry;\n var sx = rx > ry ? 1 : rx / ry;\n var sy = rx > ry ? ry / rx : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n }\n }, {\n key: \"pathZ\",\n value: function pathZ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n\n pathParser.current = pathParser.start;\n }\n }]);\n\n return PathElement;\n}(RenderedElement);\n\nfunction _createSuper$9(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$9()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$9() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SVGElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SVGElement, _RenderedElement);\n\n var _super = _createSuper$9(SVGElement);\n\n function SVGElement() {\n var _this;\n\n _classCallCheck(this, SVGElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'svg';\n _this.root = false;\n return _this;\n }\n\n _createClass(SVGElement, [{\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(SVGElement.prototype), \"clearContext\", this).call(this, ctx);\n\n this.document.screen.viewPort.removeCurrent();\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var document = this.document;\n var screen = document.screen,\n window = document.window;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n }\n\n _get(_getPrototypeOf(SVGElement.prototype), \"setContext\", this).call(this, ctx); // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n var _screen$viewPort = screen.viewPort,\n width = _screen$viewPort.width,\n height = _screen$viewPort.height;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getAttribute('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height);\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX: minX,\n minY: minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip: clip,\n clipX: clipX,\n clipY: clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n\n }, {\n key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n }]);\n\n return SVGElement;\n}(RenderedElement);\n\nfunction _createSuper$a(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$a()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$a() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RectElement = /*#__PURE__*/function (_PathElement) {\n _inherits(RectElement, _PathElement);\n\n var _super = _createSuper$a(RectElement);\n\n function RectElement() {\n var _this;\n\n _classCallCheck(this, RectElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'rect';\n return _this;\n }\n\n _createClass(RectElement, [{\n key: \"path\",\n value: function path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return RectElement;\n}(PathElement);\n\nfunction _createSuper$b(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$b()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$b() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar CircleElement = /*#__PURE__*/function (_PathElement) {\n _inherits(CircleElement, _PathElement);\n\n var _super = _createSuper$b(CircleElement);\n\n function CircleElement() {\n var _this;\n\n _classCallCheck(this, CircleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'circle';\n return _this;\n }\n\n _createClass(CircleElement, [{\n key: \"path\",\n value: function path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return CircleElement;\n}(PathElement);\n\nfunction _createSuper$c(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$c()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$c() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar EllipseElement = /*#__PURE__*/function (_PathElement) {\n _inherits(EllipseElement, _PathElement);\n\n var _super = _createSuper$c(EllipseElement);\n\n function EllipseElement() {\n var _this;\n\n _classCallCheck(this, EllipseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'ellipse';\n return _this;\n }\n\n _createClass(EllipseElement, [{\n key: \"path\",\n value: function path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return EllipseElement;\n}(PathElement);\n\nfunction _createSuper$d(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$d()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$d() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(LineElement, _PathElement);\n\n var _super = _createSuper$d(LineElement);\n\n function LineElement() {\n var _this;\n\n _classCallCheck(this, LineElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'line';\n return _this;\n }\n\n _createClass(LineElement, [{\n key: \"getPoints\",\n value: function getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var _this$getPoints = this.getPoints(),\n _this$getPoints2 = _slicedToArray(_this$getPoints, 2),\n _this$getPoints2$ = _this$getPoints2[0],\n x0 = _this$getPoints2$.x,\n y0 = _this$getPoints2$.y,\n _this$getPoints2$2 = _this$getPoints2[1],\n x1 = _this$getPoints2$2.x,\n y1 = _this$getPoints2$2.y;\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var _this$getPoints3 = this.getPoints(),\n _this$getPoints4 = _slicedToArray(_this$getPoints3, 2),\n p0 = _this$getPoints4[0],\n p1 = _this$getPoints4[1];\n\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n }]);\n\n return LineElement;\n}(PathElement);\n\nfunction _createSuper$e(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$e()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$e() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolylineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(PolylineElement, _PathElement);\n\n var _super = _createSuper$e(PolylineElement);\n\n function PolylineElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PolylineElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'polyline';\n _this.points = [];\n _this.points = Point.parsePath(_this.getAttribute('points').getString());\n return _this;\n }\n\n _createClass(PolylineElement, [{\n key: \"path\",\n value: function path(ctx) {\n var points = this.points;\n\n var _points = _slicedToArray(points, 1),\n _points$ = _points[0],\n x0 = _points$.x,\n y0 = _points$.y;\n\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var points = this.points;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach(function (point, i) {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n }]);\n\n return PolylineElement;\n}(PathElement);\n\nfunction _createSuper$f(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$f()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$f() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolygonElement = /*#__PURE__*/function (_PolylineElement) {\n _inherits(PolygonElement, _PolylineElement);\n\n var _super = _createSuper$f(PolygonElement);\n\n function PolygonElement() {\n var _this;\n\n _classCallCheck(this, PolygonElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'polygon';\n return _this;\n }\n\n _createClass(PolygonElement, [{\n key: \"path\",\n value: function path(ctx) {\n var boundingBox = _get(_getPrototypeOf(PolygonElement.prototype), \"path\", this).call(this, ctx);\n\n var _this$points = _slicedToArray(this.points, 1),\n _this$points$ = _this$points[0],\n x = _this$points$.x,\n y = _this$points$.y;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n }]);\n\n return PolygonElement;\n}(PolylineElement);\n\nfunction _createSuper$g(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$g()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$g() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PatternElement = /*#__PURE__*/function (_Element) {\n _inherits(PatternElement, _Element);\n\n var _super = _createSuper$g(PatternElement);\n\n function PatternElement() {\n var _this;\n\n _classCallCheck(this, PatternElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'pattern';\n return _this;\n }\n\n _createClass(PatternElement, [{\n key: \"createPattern\",\n value: function createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n }]);\n\n return PatternElement;\n}(Element);\n\nfunction _createSuper$h(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$h()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$h() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MarkerElement = /*#__PURE__*/function (_Element) {\n _inherits(MarkerElement, _Element);\n\n var _super = _createSuper$h(MarkerElement);\n\n function MarkerElement() {\n var _this;\n\n _classCallCheck(this, MarkerElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'marker';\n return _this;\n }\n\n _createClass(MarkerElement, [{\n key: \"render\",\n value: function render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var x = point.x,\n y = point.y;\n var orient = this.getAttribute('orient').getValue('auto');\n var markerUnits = this.getAttribute('markerUnits').getValue('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n }]);\n\n return MarkerElement;\n}(Element);\n\nfunction _createSuper$i(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$i()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$i() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DefsElement = /*#__PURE__*/function (_Element) {\n _inherits(DefsElement, _Element);\n\n var _super = _createSuper$i(DefsElement);\n\n function DefsElement() {\n var _this;\n\n _classCallCheck(this, DefsElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'defs';\n return _this;\n }\n\n _createClass(DefsElement, [{\n key: \"render\",\n value: function render() {// NOOP\n }\n }]);\n\n return DefsElement;\n}(Element);\n\nfunction _createSuper$j(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$j()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$j() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(GElement, _RenderedElement);\n\n var _super = _createSuper$j(GElement);\n\n function GElement() {\n var _this;\n\n _classCallCheck(this, GElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'g';\n return _this;\n }\n\n _createClass(GElement, [{\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n }]);\n\n return GElement;\n}(RenderedElement);\n\nfunction _createSuper$k(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$k()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$k() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GradientElement = /*#__PURE__*/function (_Element) {\n _inherits(GradientElement, _Element);\n\n var _super = _createSuper$k(GradientElement);\n\n function GradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.attributesToInherit = ['gradientUnits'];\n _this.stops = [];\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n stops = _assertThisInitialize.stops,\n children = _assertThisInitialize.children;\n\n children.forEach(function (child) {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n return _this;\n }\n\n _createClass(GradientElement, [{\n key: \"getGradientUnits\",\n value: function getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n }, {\n key: \"createGradient\",\n value: function createGradient(ctx, element, parentOpacityProp) {\n var _this2 = this;\n\n // tslint:disable-next-line: no-this-assignment\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var _stopsContainer = stopsContainer,\n stops = _stopsContainer.stops;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(function (stop) {\n gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var document = this.document;\n var _document$screen = document.screen,\n MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,\n viewPort = _document$screen.viewPort;\n\n var _viewPort$viewPorts = _slicedToArray(viewPort.viewPorts, 1),\n rootView = _viewPort$viewPorts[0];\n\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n }, {\n key: \"inheritStopContainer\",\n value: function inheritStopContainer(stopsContainer) {\n var _this3 = this;\n\n this.attributesToInherit.forEach(function (attributeToInherit) {\n if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n }, {\n key: \"addParentOpacity\",\n value: function addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n }]);\n\n return GradientElement;\n}(Element);\n\nfunction _createSuper$l(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$l()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$l() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LinearGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(LinearGradientElement, _GradientElement);\n\n var _super = _createSuper$l(LinearGradientElement);\n\n function LinearGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, LinearGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'linearGradient';\n\n _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n\n return _this;\n }\n\n _createClass(LinearGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n }]);\n\n return LinearGradientElement;\n}(GradientElement);\n\nfunction _createSuper$m(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$m()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$m() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RadialGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(RadialGradientElement, _GradientElement);\n\n var _super = _createSuper$m(RadialGradientElement);\n\n function RadialGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, RadialGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'radialGradient';\n\n _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n\n return _this;\n }\n\n _createClass(RadialGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n }]);\n\n return RadialGradientElement;\n}(GradientElement);\n\nfunction _createSuper$n(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$n()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$n() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StopElement = /*#__PURE__*/function (_Element) {\n _inherits(StopElement, _Element);\n\n var _super = _createSuper$n(StopElement);\n\n function StopElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StopElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'stop';\n var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));\n\n var stopOpacity = _this.getStyle('stop-opacity');\n\n var stopColor = _this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n _this.offset = offset;\n _this.color = stopColor.getColor();\n return _this;\n }\n\n return StopElement;\n}(Element);\n\nfunction _createSuper$o(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$o()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$o() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateElement = /*#__PURE__*/function (_Element) {\n _inherits(AnimateElement, _Element);\n\n var _super = _createSuper$o(AnimateElement);\n\n function AnimateElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AnimateElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'animate';\n _this.duration = 0;\n _this.initialValue = null;\n _this.initialUnits = '';\n _this.removed = false;\n _this.frozen = false;\n document.screen.animations.push(_assertThisInitialized(_this));\n _this.begin = _this.getAttribute('begin').getMilliseconds();\n _this.maxDuration = _this.begin + _this.getAttribute('dur').getMilliseconds();\n _this.from = _this.getAttribute('from');\n _this.to = _this.getAttribute('to');\n _this.values = _this.getAttribute('values');\n\n if (_this.values.hasValue()) {\n _this.values.setValue(_this.values.getString().split(';'));\n }\n\n return _this;\n }\n\n _createClass(AnimateElement, [{\n key: \"getProperty\",\n value: function getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n }, {\n key: \"calcValue\",\n value: function calcValue() {\n var initialUnits = this.initialUnits;\n\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n }, {\n key: \"update\",\n value: function update(delta) {\n var parent = this.parent;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n }, {\n key: \"getProgress\",\n value: function getProgress() {\n var document = this.document,\n values = this.values;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n }]);\n\n return AnimateElement;\n}(Element);\n\nfunction _createSuper$p(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$p()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$p() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateColorElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateColorElement, _AnimateElement);\n\n var _super = _createSuper$p(AnimateColorElement);\n\n function AnimateColorElement() {\n var _this;\n\n _classCallCheck(this, AnimateColorElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateColor';\n return _this;\n }\n\n _createClass(AnimateColorElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to;\n\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(parseInt(r, 10), \", \").concat(parseInt(g, 10), \", \").concat(parseInt(b, 10), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n }]);\n\n return AnimateColorElement;\n}(AnimateElement);\n\nfunction _createSuper$q(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$q()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$q() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateTransformElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateTransformElement, _AnimateElement);\n\n var _super = _createSuper$q(AnimateTransformElement);\n\n function AnimateTransformElement() {\n var _this;\n\n _classCallCheck(this, AnimateTransformElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateTransform';\n return _this;\n }\n\n _createClass(AnimateTransformElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map(function (from, i) {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n }]);\n\n return AnimateTransformElement;\n}(AnimateElement);\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$r(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$r()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$r() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontElement = /*#__PURE__*/function (_Element) {\n _inherits(FontElement, _Element);\n\n var _super = _createSuper$r(FontElement);\n\n function FontElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'font';\n _this.glyphs = {};\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n var definitions = document.definitions;\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n children = _assertThisInitialize.children;\n\n var _iterator = _createForOfIteratorHelper(children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\n switch (child.type) {\n case 'font-face':\n {\n _this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = _assertThisInitialized(_this);\n }\n\n break;\n }\n\n case 'missing-glyph':\n _this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n _this.isRTL = true;\n _this.isArabic = true;\n\n if (typeof _this.glyphs[glyph.unicode] === 'undefined') {\n _this.glyphs[glyph.unicode] = {};\n }\n\n _this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n _this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n\n default:\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return _this;\n }\n\n _createClass(FontElement, [{\n key: \"render\",\n value: function render() {// NO RENDER\n }\n }]);\n\n return FontElement;\n}(Element);\n\nfunction _createSuper$s(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$s()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$s() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontFaceElement = /*#__PURE__*/function (_Element) {\n _inherits(FontFaceElement, _Element);\n\n var _super = _createSuper$s(FontFaceElement);\n\n function FontFaceElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontFaceElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'font-face';\n _this.ascent = _this.getAttribute('ascent').getNumber();\n _this.descent = _this.getAttribute('descent').getNumber();\n _this.unitsPerEm = _this.getAttribute('units-per-em').getNumber();\n return _this;\n }\n\n return FontFaceElement;\n}(Element);\n\nfunction _createSuper$t(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$t()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$t() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MissingGlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(MissingGlyphElement, _PathElement);\n\n var _super = _createSuper$t(MissingGlyphElement);\n\n function MissingGlyphElement() {\n var _this;\n\n _classCallCheck(this, MissingGlyphElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'missing-glyph';\n _this.horizAdvX = 0;\n return _this;\n }\n\n return MissingGlyphElement;\n}(PathElement);\n\nfunction _createSuper$u(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$u()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$u() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(GlyphElement, _PathElement);\n\n var _super = _createSuper$u(GlyphElement);\n\n function GlyphElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GlyphElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'glyph';\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n _this.unicode = _this.getAttribute('unicode').getString();\n _this.arabicForm = _this.getAttribute('arabic-form').getString();\n return _this;\n }\n\n return GlyphElement;\n}(PathElement);\n\nfunction _createSuper$v(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$v()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$v() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TRefElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TRefElement, _TextElement);\n\n var _super = _createSuper$v(TRefElement);\n\n function TRefElement() {\n var _this;\n\n _classCallCheck(this, TRefElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'tref';\n return _this;\n }\n\n _createClass(TRefElement, [{\n key: \"getText\",\n value: function getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n }]);\n\n return TRefElement;\n}(TextElement);\n\nfunction _createSuper$w(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$w()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$w() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AElement = /*#__PURE__*/function (_TextElement) {\n _inherits(AElement, _TextElement);\n\n var _super = _createSuper$w(AElement);\n\n function AElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'a';\n var childNodes = node.childNodes;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(function (node) {\n return node.nodeType === 3;\n });\n _this.hasText = hasText;\n _this.text = hasText ? _this.getTextFromNode(firstChild) : '';\n return _this;\n }\n\n _createClass(AElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n _get(_getPrototypeOf(AElement.prototype), \"renderChildren\", this).call(this, ctx);\n\n var document = this.document,\n x = this.x,\n y = this.y;\n var mouse = document.screen.mouse;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick() {\n var window = this.document.window;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n }]);\n\n return AElement;\n}(TextElement);\n\nfunction _createForOfIteratorHelper$1(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray$1(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\n\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$x(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$x()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$x() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextPathElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TextPathElement, _TextElement);\n\n var _super = _createSuper$x(TextPathElement);\n\n function TextPathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextPathElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'textPath';\n _this.textWidth = 0;\n _this.textHeight = 0;\n _this.pathLength = -1;\n _this.glyphInfo = null;\n _this.letterSpacingCache = [];\n _this.measuresCache = new Map([['', 0]]);\n\n var pathElement = _this.getHrefAttribute().getDefinition();\n\n _this.text = _this.getTextFromNode();\n _this.dataArray = _this.parsePathData(pathElement);\n return _this;\n }\n\n _createClass(TextPathElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var dataArray = this.dataArray;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(function (_ref) {\n var command = _ref.command,\n points = _ref.points;\n\n switch (command) {\n case 'L':\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case 'M':\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case 'C':\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case 'Q':\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case 'A':\n {\n var cx = points[0];\n var cy = points[1];\n var rx = points[2];\n var ry = points[3];\n var theta = points[4];\n var dTheta = points[5];\n var psi = points[6];\n var fs = points[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case 'z':\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var glyphInfo = this.glyphInfo;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach(function (glyph, i) {\n var p0 = glyph.p0,\n p1 = glyph.p1,\n partialText = glyph.text;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(glyphInfo[i].rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } //// To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n }, {\n key: \"getLetterSpacingAt\",\n value: function getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n }, {\n key: \"findSegmentToFitChar\",\n value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var segment = {\n p0: this.getEquidistantPointOnPath(offset, splineStep),\n p1: this.getEquidistantPointOnPath(offset + glyphWidth, splineStep)\n };\n offset += glyphWidth;\n return {\n offset: offset,\n segment: segment\n };\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx, text) {\n var measuresCache = this.measuresCache;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n }, {\n key: \"setTextData\",\n value: function setTextData(ctx) {\n var _this2 = this;\n\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = toNumbers(this.parent.getAttribute('dx').getString('0'));\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce(function (acc, cur) {\n return acc + cur || 0;\n }, 0);\n this.textWidth = this.measureText(ctx);\n this.textHeight = this.getFontSize();\n var textFullWidth = Math.max(this.textWidth + dxSum, 0);\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach(function (char, i) {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, char, i),\n nextOffset = _this2$findSegmentToF.offset,\n segment = _this2$findSegmentToF.segment;\n\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n }\n\n var width = _this2.getLineLength(segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y); // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n\n\n var kern = 0; // placeholder for future implementation\n\n var midpoint = _this2.getPointOnLine(kern + width / 2.0, segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y);\n\n var rotation = Math.atan2(segment.p1.y - segment.p0.y, segment.p1.x - segment.p0.x);\n\n _this2.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation: rotation\n });\n });\n }\n }, {\n key: \"parsePathData\",\n value: function parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var pathParser = path.pathParser;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var current = pathParser.current;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var cmd = '';\n var points = [];\n pathParser.nextCommand();\n var upperCommand = pathParser.command.toUpperCase();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n cmd = this.pathM(pathParser, points);\n break;\n\n case 'L':\n case 'l':\n cmd = this.pathL(pathParser, points);\n break;\n\n case 'H':\n case 'h':\n cmd = this.pathH(pathParser, points);\n break;\n\n case 'V':\n case 'v':\n cmd = this.pathV(pathParser, points);\n break;\n\n case 'C':\n case 'c':\n this.pathC(pathParser, points);\n break;\n\n case 'S':\n case 's':\n cmd = this.pathS(pathParser, points);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(pathParser, points);\n break;\n\n case 'T':\n case 't':\n cmd = this.pathT(pathParser, points);\n break;\n\n case 'A':\n case 'a':\n points = this.pathA(pathParser);\n break;\n\n case 'Z':\n case 'z':\n pathParser.current = pathParser.start;\n break;\n }\n\n if (upperCommand !== 'Z') {\n pathCommands.push({\n command: cmd || upperCommand,\n points: points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, cmd || upperCommand, points)\n });\n } else {\n pathCommands.push({\n command: 'z',\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n }, {\n key: \"pathM\",\n value: function pathM(pathParser, points) {\n var p = pathParser.getAsCurrentPoint(); // pathParser.addMarker(p);\n\n points.push(p.x, p.y);\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _p = pathParser.getAsCurrentPoint();\n\n points.push(_p.x, _p.y);\n return 'L';\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var p = pathParser.getAsCurrentPoint();\n points.push(p.x, p.y);\n }\n\n return 'L';\n }\n }, {\n key: \"pathH\",\n value: function pathH(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathV\",\n value: function pathV(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathC\",\n value: function pathC(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'C';\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'Q';\n }\n }, {\n key: \"pathA\",\n value: function pathA(pathParser) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current; // x1, y1\n\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0); // φ\n\n var largeArcFlag = pathParser.getScalar(); // fA\n\n var sweepFlag = pathParser.getScalar(); // fS\n\n var currentPoint = pathParser.getAsCurrentPoint(); // x2, y2\n // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n if (sweepFlag === 0 && ad > 0) {\n ad = ad - 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad = ad + 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rx, ry, a1, ad, xAxisRotation, sweepFlag];\n }\n }\n }, {\n key: \"calcLength\",\n value: function calcLength(x, y, cmd, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (cmd) {\n case 'L':\n return this.getLineLength(x, y, points[0], points[1]);\n\n case 'C':\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case 'Q':\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case 'A':\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n\n return 0;\n }\n }, {\n key: \"getPointOnLine\",\n value: function getPointOnLine(dist, P1x, P1y, P2x, P2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : P1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : P1y;\n var m = (P2y - P1y) / (P2x - P1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (P2x === P1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - P1y) / (fromX - P1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n }, {\n key: \"getPointOnPath\",\n value: function getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var dataArray = this.dataArray;\n\n var _iterator = _createForOfIteratorHelper$1(dataArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var pathCmd = _step.value;\n\n if (pathCmd && (pathCmd.pathLength < 0.00005 || cumulativePathLength + pathCmd.pathLength + 0.00005 < distance)) {\n cumulativePathLength += pathCmd.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (pathCmd.command) {\n case 'L':\n p = this.getPointOnLine(delta, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.start.x, pathCmd.start.y);\n break;\n\n case 'A':\n var start = pathCmd.points[4]; // 4 = theta\n\n var dTheta = pathCmd.points[5]; // 5 = dTheta\n\n var end = pathCmd.points[4] + dTheta;\n currentT = start + delta / pathCmd.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\n break;\n\n case 'C':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\n break;\n\n case 'Q':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\n break;\n\n default:\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n }\n }, {\n key: \"getLineLength\",\n value: function getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n }, {\n key: \"getPathLength\",\n value: function getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce(function (length, command) {\n return command.pathLength > 0 ? length + command.pathLength : length;\n }, 0);\n }\n\n return this.pathLength;\n }\n }, {\n key: \"getPointOnCubicBezier\",\n value: function getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnQuadraticBezier\",\n value: function getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnEllipticalArc\",\n value: function getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n }, {\n key: \"buildEquidistantCache\",\n value: function buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step: step,\n precision: precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n }, {\n key: \"getEquidistantPointOnPath\",\n value: function getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n }]);\n\n return TextPathElement;\n}(TextElement);\n\nfunction _createSuper$y(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$y()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$y() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar ImageElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(ImageElement, _RenderedElement);\n\n var _super = _createSuper$y(ImageElement);\n\n function ImageElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, ImageElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'image';\n _this.loaded = false;\n\n var href = _this.getHrefAttribute().getString();\n\n if (!href) {\n return _possibleConstructorReturn(_this);\n }\n\n var isSvg = /\\.svg$/.test(href);\n document.images.push(_assertThisInitialized(_this));\n\n if (!isSvg) {\n _this.loadImage(href);\n } else {\n _this.loadSvg(href);\n }\n\n _this.isSvg = isSvg;\n return _this;\n }\n\n _createClass(ImageElement, [{\n key: \"loadImage\",\n value: function () {\n var _loadImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(href) {\n var image;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return this.document.createImage(href);\n\n case 3:\n image = _context.sent;\n this.image = image;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context.t0);\n\n case 10:\n this.loaded = true;\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function loadImage(_x) {\n return _loadImage.apply(this, arguments);\n }\n\n return loadImage;\n }()\n }, {\n key: \"loadSvg\",\n value: function () {\n var _loadSvg = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(href) {\n var response, svg;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return this.document.fetch(href);\n\n case 3:\n response = _context2.sent;\n _context2.next = 6;\n return response.text();\n\n case 6:\n svg = _context2.sent;\n this.image = svg;\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context2.t0);\n\n case 13:\n this.loaded = true;\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 10]]);\n }));\n\n function loadSvg(_x2) {\n return _loadSvg.apply(this, arguments);\n }\n\n return loadSvg;\n }()\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n image = this.image,\n loaded = this.loaded;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n\n if (this.isSvg) {\n document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: x,\n offsetY: y,\n scaleWidth: width,\n scaleHeight: height\n }).render();\n } else {\n var _image = this.image;\n ctx.translate(x, y);\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: width,\n desiredWidth: _image.width,\n height: height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n }]);\n\n return ImageElement;\n}(RenderedElement);\n\nfunction _createSuper$z(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$z()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$z() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SymbolElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SymbolElement, _RenderedElement);\n\n var _super = _createSuper$z(SymbolElement);\n\n function SymbolElement() {\n var _this;\n\n _classCallCheck(this, SymbolElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'symbol';\n return _this;\n }\n\n _createClass(SymbolElement, [{\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return SymbolElement;\n}(RenderedElement);\n\nvar SVGFontLoader = /*#__PURE__*/function () {\n function SVGFontLoader(document) {\n _classCallCheck(this, SVGFontLoader);\n\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n _createClass(SVGFontLoader, [{\n key: \"load\",\n value: function () {\n var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(fontFamily, url) {\n var document, svgDocument, fonts;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n document = this.document;\n _context.next = 4;\n return document.canvg.parser.load(url);\n\n case 4:\n svgDocument = _context.sent;\n fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(function (fontNode) {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), _context.t0);\n\n case 12:\n this.loaded = true;\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 9]]);\n }));\n\n function load(_x, _x2) {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return SVGFontLoader;\n}();\n\nfunction _createSuper$A(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$A()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$A() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StyleElement = /*#__PURE__*/function (_Element) {\n _inherits(StyleElement, _Element);\n\n var _super = _createSuper$A(StyleElement);\n\n function StyleElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StyleElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes).map(function (_) {\n return _.data;\n }).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*\\/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(function (_) {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(function (_) {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(function (cssProp) {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(function (src) {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n return _this;\n }\n\n return StyleElement;\n}(Element);\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nfunction _createSuper$B(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$B()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$B() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UseElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(UseElement, _RenderedElement);\n\n var _super = _createSuper$B(UseElement);\n\n function UseElement() {\n var _this;\n\n _classCallCheck(this, UseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'use';\n return _this;\n }\n\n _createClass(UseElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n _get(_getPrototypeOf(UseElement.prototype), \"setContext\", this).call(this, ctx);\n\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var element = this.element;\n\n if (element) {\n element.path(ctx);\n }\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n element = this.element;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children;\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var element = this.element;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n }, {\n key: \"elementTransform\",\n value: function elementTransform() {\n var document = this.document,\n element = this.element;\n return Transform.fromElement(document, element);\n }\n }, {\n key: \"element\",\n get: function get() {\n if (!this._element) {\n this._element = this.getHrefAttribute().getDefinition();\n }\n\n return this._element;\n }\n }]);\n\n return UseElement;\n}(RenderedElement);\n\nfunction _createSuper$C(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$C()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$C() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction imGet(img, x, y, width, _, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * (mi < 0 ? v - 255 : v);\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nvar FeColorMatrixElement = /*#__PURE__*/function (_Element) {\n _inherits(FeColorMatrixElement, _Element);\n\n var _super = _createSuper$C(FeColorMatrixElement);\n\n function FeColorMatrixElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeColorMatrixElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feColorMatrix';\n var matrix = toNumbers(_this.getAttribute('values').getString());\n\n switch (_this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'luminanceToAlpha':\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n _this.matrix = matrix;\n _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();\n return _this;\n }\n\n _createClass(FeColorMatrixElement, [{\n key: \"apply\",\n value: function apply(ctx, _, __, width, height) {\n // assuming x==0 && y==0 for now\n var includeOpacity = this.includeOpacity,\n matrix = this.matrix;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = ng = nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n }]);\n\n return FeColorMatrixElement;\n}(Element);\n\nfunction _createSuper$D(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$D()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$D() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MaskElement = /*#__PURE__*/function (_Element) {\n _inherits(MaskElement, _Element);\n\n var _super = _createSuper$D(MaskElement);\n\n function MaskElement() {\n var _this;\n\n _classCallCheck(this, MaskElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'mask';\n return _this;\n }\n\n _createClass(MaskElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n var document = this.document; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return MaskElement;\n}(Element);\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nfunction _createSuper$E(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$E()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$E() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar noop = function noop() {};\n\nvar ClipPathElement = /*#__PURE__*/function (_Element) {\n _inherits(ClipPathElement, _Element);\n\n var _super = _createSuper$E(ClipPathElement);\n\n function ClipPathElement() {\n var _this;\n\n _classCallCheck(this, ClipPathElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'clipPath';\n return _this;\n }\n\n _createClass(ClipPathElement, [{\n key: \"apply\",\n value: function apply(ctx) {\n var document = this.document;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var beginPath = ctx.beginPath,\n closePath = ctx.closePath;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(function (child) {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return ClipPathElement;\n}(Element);\n\nfunction _createSuper$F(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$F()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$F() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FilterElement = /*#__PURE__*/function (_Element) {\n _inherits(FilterElement, _Element);\n\n var _super = _createSuper$F(FilterElement);\n\n function FilterElement() {\n var _this;\n\n _classCallCheck(this, FilterElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'filter';\n return _this;\n }\n\n _createClass(FilterElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n // render as temp svg\n var document = this.document,\n children = this.children;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(function (child) {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(function (child) {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return FilterElement;\n}(Element);\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nfunction _createSuper$G(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$G()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$G() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeDropShadowElement = /*#__PURE__*/function (_Element) {\n _inherits(FeDropShadowElement, _Element);\n\n var _super = _createSuper$G(FeDropShadowElement);\n\n function FeDropShadowElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeDropShadowElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feDropShadow';\n\n _this.addStylesFromStyleDefinition();\n\n return _this;\n }\n\n _createClass(FeDropShadowElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeDropShadowElement;\n}(Element);\n\nfunction _createSuper$H(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$H()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$H() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeMorphologyElement = /*#__PURE__*/function (_Element) {\n _inherits(FeMorphologyElement, _Element);\n\n var _super = _createSuper$H(FeMorphologyElement);\n\n function FeMorphologyElement() {\n var _this;\n\n _classCallCheck(this, FeMorphologyElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feMorphology';\n return _this;\n }\n\n _createClass(FeMorphologyElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeMorphologyElement;\n}(Element);\n\nfunction _createSuper$I(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$I()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$I() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeCompositeElement = /*#__PURE__*/function (_Element) {\n _inherits(FeCompositeElement, _Element);\n\n var _super = _createSuper$I(FeCompositeElement);\n\n function FeCompositeElement() {\n var _this;\n\n _classCallCheck(this, FeCompositeElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feComposite';\n return _this;\n }\n\n _createClass(FeCompositeElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeCompositeElement;\n}(Element);\n\nfunction _createSuper$J(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$J()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$J() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeGaussianBlurElement = /*#__PURE__*/function (_Element) {\n _inherits(FeGaussianBlurElement, _Element);\n\n var _super = _createSuper$J(FeGaussianBlurElement);\n\n function FeGaussianBlurElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeGaussianBlurElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feGaussianBlur';\n _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());\n _this.extraFilterDistance = _this.blurRadius;\n return _this;\n }\n\n _createClass(FeGaussianBlurElement, [{\n key: \"apply\",\n value: function apply(ctx, x, y, width, height) {\n var document = this.document,\n blurRadius = this.blurRadius;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n }]);\n\n return FeGaussianBlurElement;\n}(Element);\n\nfunction _createSuper$K(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$K()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$K() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TitleElement = /*#__PURE__*/function (_Element) {\n _inherits(TitleElement, _Element);\n\n var _super = _createSuper$K(TitleElement);\n\n function TitleElement() {\n var _this;\n\n _classCallCheck(this, TitleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'title';\n return _this;\n }\n\n return TitleElement;\n}(Element);\n\nfunction _createSuper$L(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$L()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$L() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DescElement = /*#__PURE__*/function (_Element) {\n _inherits(DescElement, _Element);\n\n var _super = _createSuper$L(DescElement);\n\n function DescElement() {\n var _this;\n\n _classCallCheck(this, DescElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'desc';\n return _this;\n }\n\n return DescElement;\n}(Element);\n\nvar elementTypes = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(src) {\n var anonymousCrossOrigin,\n image,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n anonymousCrossOrigin = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n image.onload = function () {\n resolve(image);\n };\n\n image.onerror = function () {\n reject();\n };\n\n image.src = src;\n }));\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _createImage.apply(this, arguments);\n}\n\nvar Document = /*#__PURE__*/function () {\n function Document(canvg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$rootEmSize = _ref.rootEmSize,\n rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,\n _ref$emSize = _ref.emSize,\n emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,\n _ref$createCanvas = _ref.createCanvas,\n createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,\n _ref$createImage = _ref.createImage,\n createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage,\n anonymousCrossOrigin = _ref.anonymousCrossOrigin;\n\n _classCallCheck(this, Document);\n\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n _createClass(Document, [{\n key: \"bindCreateImage\",\n value: function bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return function (source, forceAnonymousCrossOrigin) {\n return createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n };\n }\n\n return createImage;\n }\n }, {\n key: \"popEmSize\",\n value: function popEmSize() {\n var emSizeStack = this.emSizeStack;\n emSizeStack.pop();\n }\n }, {\n key: \"getUniqueId\",\n value: function getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n }, {\n key: \"isImagesLoaded\",\n value: function isImagesLoaded() {\n return this.images.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"isFontsLoaded\",\n value: function isFontsLoaded() {\n return this.fonts.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"createDocumentElement\",\n value: function createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n }, {\n key: \"createElement\",\n value: function createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n }, {\n key: \"createTextNode\",\n value: function createTextNode(node) {\n return new TextNode(this, node);\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(config) {\n this.screen.setViewBox(_objectSpread({\n document: this\n }, config));\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.screen.window;\n }\n }, {\n key: \"fetch\",\n get: function get() {\n return this.screen.fetch;\n }\n }, {\n key: \"ctx\",\n get: function get() {\n return this.screen.ctx;\n }\n }, {\n key: \"emSize\",\n get: function get() {\n var emSizeStack = this.emSizeStack;\n return emSizeStack[emSizeStack.length - 1];\n },\n set: function set(value) {\n var emSizeStack = this.emSizeStack;\n emSizeStack.push(value);\n }\n }]);\n\n return Document;\n}();\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elementTypes;\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\n * SVG renderer on canvas.\n */\n\nvar Canvg = /*#__PURE__*/function () {\n /**\n * Main constructor.\n * @param ctx - Rendering context.\n * @param svg - SVG Document.\n * @param options - Rendering options.\n */\n function Canvg(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, Canvg);\n\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\n * Create Canvg isntance from SVG source string or URL.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n */\n\n\n _createClass(Canvg, [{\n key: \"fork\",\n\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n */\n value: function fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"forkString\",\n value: function forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\n * Document is ready promise.\n */\n\n }, {\n key: \"ready\",\n value: function ready() {\n return this.screen.ready();\n }\n /**\n * Document is ready value.\n */\n\n }, {\n key: \"isReady\",\n value: function isReady() {\n return this.screen.isReady();\n }\n /**\n * Render only first frame, ignoring animations and mouse.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"render\",\n value: function () {\n var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var options,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n this.start(_objectSpread$1({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n _context.next = 4;\n return this.ready();\n\n case 4:\n this.stop();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n /**\n * Start rendering.\n * @param options - Render options.\n */\n\n }, {\n key: \"start\",\n value: function start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var documentElement = this.documentElement,\n screen = this.screen,\n baseOptions = this.options;\n screen.start(documentElement, _objectSpread$1({\n enableRedraw: true\n }, baseOptions, {}, options));\n }\n /**\n * Stop rendering.\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.screen.stop();\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n\n }, {\n key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n }], [{\n key: \"from\",\n value: function () {\n var _from = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(ctx, svg) {\n var options,\n parser,\n svgDocument,\n _args2 = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};\n parser = new Parser(options);\n _context2.next = 4;\n return parser.parse(svg);\n\n case 4:\n svgDocument = _context2.sent;\n return _context2.abrupt(\"return\", new Canvg(ctx, svgDocument, options));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function from(_x, _x2) {\n return _from.apply(this, arguments);\n }\n\n return from;\n }()\n /**\n * Create Canvg isntance from SVG source string.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"fromString\",\n value: function fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n }]);\n\n return Canvg;\n}();\n\n/**\n * Options preset for `OffscreenCanvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n */\nfunction offscreen() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n DOMParserFallback = _ref.DOMParser;\n\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas: function createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n createImage: function createImage(url) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var response, blob, img;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch(url);\n\n case 2:\n response = _context.sent;\n _context.next = 5;\n return response.blob();\n\n case 5:\n blob = _context.sent;\n _context.next = 8;\n return createImageBitmap(blob);\n\n case 8:\n img = _context.sent;\n return _context.abrupt(\"return\", img);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\n * Options preset for `node-canvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n * @param config.canvas - `node-canvas` exports.\n * @param config.fetch - WHATWG-compatible `fetch` function.\n */\nfunction node(_ref) {\n var DOMParser = _ref.DOMParser,\n canvas = _ref.canvas,\n fetch = _ref.fetch;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParser,\n fetch: fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\n\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\nexport default Canvg;\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJfaW52b2tlIiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJvYmoiLCJhcmciLCJ0eXBlIiwiY2FsbCIsImVyciIsIkdlblN0YXRlU3VzcGVuZGVkU3RhcnQiLCJHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkIiwiR2VuU3RhdGVFeGVjdXRpbmciLCJHZW5TdGF0ZUNvbXBsZXRlZCIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImNvbnN0cnVjdG9yIiwiZGlzcGxheU5hbWUiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJfX2F3YWl0IiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwiaW52b2tlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY29yZCIsInJlc3VsdCIsInZhbHVlIiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiZW5xdWV1ZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsIm5leHQiLCJkb25lIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwidG9TdHJpbmciLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImtleXMiLCJvYmplY3QiLCJrZXkiLCJyZXZlcnNlIiwibGVuZ3RoIiwicG9wIiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwiaSIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdEVudHJ5Iiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJtb2R1bGUiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJhY2NpZGVudGFsU3RyaWN0TW9kZSIsIkZ1bmN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztBQU9BLE1BQUlBLE9BQU8sR0FBSSxVQUFVQyxPQUFWLEVBQW1CO0FBQ2hDO0FBRUEsUUFBSUMsRUFBRSxHQUFHQyxNQUFNLENBQUNDLFNBQWhCO0FBQ0EsUUFBSUMsTUFBTSxHQUFHSCxFQUFFLENBQUNJLGNBQWhCO0FBQ0EsUUFBSUMsV0FBSixDQUxnQzs7QUFNaEMsUUFBSUMsT0FBTyxHQUFHLE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsR0FBK0JBLE1BQS9CLEdBQXdDLEVBQXREO0FBQ0EsUUFBSUMsY0FBYyxHQUFHRixPQUFPLENBQUNHLFFBQVIsSUFBb0IsWUFBekM7QUFDQSxRQUFJQyxtQkFBbUIsR0FBR0osT0FBTyxDQUFDSyxhQUFSLElBQXlCLGlCQUFuRDtBQUNBLFFBQUlDLGlCQUFpQixHQUFHTixPQUFPLENBQUNPLFdBQVIsSUFBdUIsZUFBL0M7O0FBRUEsYUFBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCQyxPQUF2QixFQUFnQ0MsSUFBaEMsRUFBc0NDLFdBQXRDLEVBQW1EOztBQUVqRCxVQUFJQyxjQUFjLEdBQUdILE9BQU8sSUFBSUEsT0FBTyxDQUFDZCxTQUFSLFlBQTZCa0IsU0FBeEMsR0FBb0RKLE9BQXBELEdBQThESSxTQUFuRjtBQUNBLFVBQUlDLFNBQVMsR0FBR3BCLE1BQU0sQ0FBQ3FCLE1BQVAsQ0FBY0gsY0FBYyxDQUFDakIsU0FBN0IsQ0FBaEI7QUFDQSxVQUFJcUIsT0FBTyxHQUFHLElBQUlDLE9BQUosQ0FBWU4sV0FBVyxJQUFJLEVBQTNCLENBQWQsQ0FKaUQ7OztBQVFqREcsTUFBQUEsU0FBUyxDQUFDSSxPQUFWLEdBQW9CQyxnQkFBZ0IsQ0FBQ1gsT0FBRCxFQUFVRSxJQUFWLEVBQWdCTSxPQUFoQixDQUFwQztBQUVBLGFBQU9GLFNBQVA7QUFDRDs7QUFDRHRCLElBQUFBLE9BQU8sQ0FBQ2UsSUFBUixHQUFlQSxJQUFmLENBdkJnQzs7Ozs7Ozs7Ozs7QUFtQ2hDLGFBQVNhLFFBQVQsQ0FBa0JDLEVBQWxCLEVBQXNCQyxHQUF0QixFQUEyQkMsR0FBM0IsRUFBZ0M7QUFDOUIsVUFBSTtBQUNGLGVBQU87QUFBRUMsVUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JELFVBQUFBLEdBQUcsRUFBRUYsRUFBRSxDQUFDSSxJQUFILENBQVFILEdBQVIsRUFBYUMsR0FBYjtBQUF2QixTQUFQO0FBQ0QsT0FGRCxDQUVFLE9BQU9HLEdBQVAsRUFBWTtBQUNaLGVBQU87QUFBRUYsVUFBQUEsSUFBSSxFQUFFLE9BQVI7QUFBaUJELFVBQUFBLEdBQUcsRUFBRUc7QUFBdEIsU0FBUDtBQUNEO0FBQ0Y7O0FBRUQsUUFBSUMsc0JBQXNCLEdBQUcsZ0JBQTdCO0FBQ0EsUUFBSUMsc0JBQXNCLEdBQUcsZ0JBQTdCO0FBQ0EsUUFBSUMsaUJBQWlCLEdBQUcsV0FBeEI7QUFDQSxRQUFJQyxpQkFBaUIsR0FBRyxXQUF4QixDQTlDZ0M7OztBQWtEaEMsUUFBSUMsZ0JBQWdCLEdBQUcsRUFBdkIsQ0FsRGdDOzs7OztBQXdEaEMsYUFBU2xCLFNBQVQsR0FBcUI7O0FBQ3JCLGFBQVNtQixpQkFBVCxHQUE2Qjs7QUFDN0IsYUFBU0MsMEJBQVQsR0FBc0MsRUExRE47Ozs7QUE4RGhDLFFBQUlDLGlCQUFpQixHQUFHLEVBQXhCOztBQUNBQSxJQUFBQSxpQkFBaUIsQ0FBQ2pDLGNBQUQsQ0FBakIsR0FBb0MsWUFBWTtBQUM5QyxhQUFPLElBQVA7QUFDRCxLQUZEOztBQUlBLFFBQUlrQyxRQUFRLEdBQUd6QyxNQUFNLENBQUMwQyxjQUF0QjtBQUNBLFFBQUlDLHVCQUF1QixHQUFHRixRQUFRLElBQUlBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFNLENBQUMsRUFBRCxDQUFQLENBQVQsQ0FBbEQ7O0FBQ0EsUUFBSUQsdUJBQXVCLElBQ3ZCQSx1QkFBdUIsS0FBSzVDLEVBRDVCLElBRUFHLE1BQU0sQ0FBQzZCLElBQVAsQ0FBWVksdUJBQVosRUFBcUNwQyxjQUFyQyxDQUZKLEVBRTBEOzs7QUFHeERpQyxNQUFBQSxpQkFBaUIsR0FBR0csdUJBQXBCO0FBQ0Q7O0FBRUQsUUFBSUUsRUFBRSxHQUFHTiwwQkFBMEIsQ0FBQ3RDLFNBQTNCLEdBQ1BrQixTQUFTLENBQUNsQixTQUFWLEdBQXNCRCxNQUFNLENBQUNxQixNQUFQLENBQWNtQixpQkFBZCxDQUR4QjtBQUVBRixJQUFBQSxpQkFBaUIsQ0FBQ3JDLFNBQWxCLEdBQThCNEMsRUFBRSxDQUFDQyxXQUFILEdBQWlCUCwwQkFBL0M7QUFDQUEsSUFBQUEsMEJBQTBCLENBQUNPLFdBQTNCLEdBQXlDUixpQkFBekM7QUFDQUMsSUFBQUEsMEJBQTBCLENBQUM1QixpQkFBRCxDQUExQixHQUNFMkIsaUJBQWlCLENBQUNTLFdBQWxCLEdBQWdDLG1CQURsQyxDQWpGZ0M7OztBQXNGaEMsYUFBU0MscUJBQVQsQ0FBK0IvQyxTQUEvQixFQUEwQztBQUN4QyxPQUFDLE1BQUQsRUFBUyxPQUFULEVBQWtCLFFBQWxCLEVBQTRCZ0QsT0FBNUIsQ0FBb0MsVUFBU0MsTUFBVCxFQUFpQjtBQUNuRGpELFFBQUFBLFNBQVMsQ0FBQ2lELE1BQUQsQ0FBVCxHQUFvQixVQUFTckIsR0FBVCxFQUFjO0FBQ2hDLGlCQUFPLEtBQUtMLE9BQUwsQ0FBYTBCLE1BQWIsRUFBcUJyQixHQUFyQixDQUFQO0FBQ0QsU0FGRDtBQUdELE9BSkQ7QUFLRDs7QUFFRC9CLElBQUFBLE9BQU8sQ0FBQ3FELG1CQUFSLEdBQThCLFVBQVNDLE1BQVQsRUFBaUI7QUFDN0MsVUFBSUMsSUFBSSxHQUFHLE9BQU9ELE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0NBLE1BQU0sQ0FBQ04sV0FBbEQ7QUFDQSxhQUFPTyxJQUFJLEdBQ1BBLElBQUksS0FBS2YsaUJBQVQ7O0FBR0EsT0FBQ2UsSUFBSSxDQUFDTixXQUFMLElBQW9CTSxJQUFJLENBQUNDLElBQTFCLE1BQW9DLG1CQUo3QixHQUtQLEtBTEo7QUFNRCxLQVJEOztBQVVBeEQsSUFBQUEsT0FBTyxDQUFDeUQsSUFBUixHQUFlLFVBQVNILE1BQVQsRUFBaUI7QUFDOUIsVUFBSXBELE1BQU0sQ0FBQ3dELGNBQVgsRUFBMkI7QUFDekJ4RCxRQUFBQSxNQUFNLENBQUN3RCxjQUFQLENBQXNCSixNQUF0QixFQUE4QmIsMEJBQTlCO0FBQ0QsT0FGRCxNQUVPO0FBQ0xhLFFBQUFBLE1BQU0sQ0FBQ0ssU0FBUCxHQUFtQmxCLDBCQUFuQjs7QUFDQSxZQUFJLEVBQUU1QixpQkFBaUIsSUFBSXlDLE1BQXZCLENBQUosRUFBb0M7QUFDbENBLFVBQUFBLE1BQU0sQ0FBQ3pDLGlCQUFELENBQU4sR0FBNEIsbUJBQTVCO0FBQ0Q7QUFDRjs7QUFDRHlDLE1BQUFBLE1BQU0sQ0FBQ25ELFNBQVAsR0FBbUJELE1BQU0sQ0FBQ3FCLE1BQVAsQ0FBY3dCLEVBQWQsQ0FBbkI7QUFDQSxhQUFPTyxNQUFQO0FBQ0QsS0FYRCxDQXhHZ0M7Ozs7OztBQXlIaEN0RCxJQUFBQSxPQUFPLENBQUM0RCxLQUFSLEdBQWdCLFVBQVM3QixHQUFULEVBQWM7QUFDNUIsYUFBTztBQUFFOEIsUUFBQUEsT0FBTyxFQUFFOUI7QUFBWCxPQUFQO0FBQ0QsS0FGRDs7QUFJQSxhQUFTK0IsYUFBVCxDQUF1QnhDLFNBQXZCLEVBQWtDeUMsV0FBbEMsRUFBK0M7QUFDN0MsZUFBU0MsTUFBVCxDQUFnQlosTUFBaEIsRUFBd0JyQixHQUF4QixFQUE2QmtDLE9BQTdCLEVBQXNDQyxNQUF0QyxFQUE4QztBQUM1QyxZQUFJQyxNQUFNLEdBQUd2QyxRQUFRLENBQUNOLFNBQVMsQ0FBQzhCLE1BQUQsQ0FBVixFQUFvQjlCLFNBQXBCLEVBQStCUyxHQUEvQixDQUFyQjs7QUFDQSxZQUFJb0MsTUFBTSxDQUFDbkMsSUFBUCxLQUFnQixPQUFwQixFQUE2QjtBQUMzQmtDLFVBQUFBLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDcEMsR0FBUixDQUFOO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsY0FBSXFDLE1BQU0sR0FBR0QsTUFBTSxDQUFDcEMsR0FBcEI7QUFDQSxjQUFJc0MsS0FBSyxHQUFHRCxNQUFNLENBQUNDLEtBQW5COztBQUNBLGNBQUlBLEtBQUssSUFDTCxPQUFPQSxLQUFQLEtBQWlCLFFBRGpCLElBRUFqRSxNQUFNLENBQUM2QixJQUFQLENBQVlvQyxLQUFaLEVBQW1CLFNBQW5CLENBRkosRUFFbUM7QUFDakMsbUJBQU9OLFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkksS0FBSyxDQUFDUixPQUExQixFQUFtQ1MsSUFBbkMsQ0FBd0MsVUFBU0QsS0FBVCxFQUFnQjtBQUM3REwsY0FBQUEsTUFBTSxDQUFDLE1BQUQsRUFBU0ssS0FBVCxFQUFnQkosT0FBaEIsRUFBeUJDLE1BQXpCLENBQU47QUFDRCxhQUZNLEVBRUosVUFBU2hDLEdBQVQsRUFBYztBQUNmOEIsY0FBQUEsTUFBTSxDQUFDLE9BQUQsRUFBVTlCLEdBQVYsRUFBZStCLE9BQWYsRUFBd0JDLE1BQXhCLENBQU47QUFDRCxhQUpNLENBQVA7QUFLRDs7QUFFRCxpQkFBT0gsV0FBVyxDQUFDRSxPQUFaLENBQW9CSSxLQUFwQixFQUEyQkMsSUFBM0IsQ0FBZ0MsVUFBU0MsU0FBVCxFQUFvQjs7OztBQUl6REgsWUFBQUEsTUFBTSxDQUFDQyxLQUFQLEdBQWVFLFNBQWY7QUFDQU4sWUFBQUEsT0FBTyxDQUFDRyxNQUFELENBQVA7QUFDRCxXQU5NLEVBTUosVUFBU0ksS0FBVCxFQUFnQjs7O0FBR2pCLG1CQUFPUixNQUFNLENBQUMsT0FBRCxFQUFVUSxLQUFWLEVBQWlCUCxPQUFqQixFQUEwQkMsTUFBMUIsQ0FBYjtBQUNELFdBVk0sQ0FBUDtBQVdEO0FBQ0Y7O0FBRUQsVUFBSU8sZUFBSjs7QUFFQSxlQUFTQyxPQUFULENBQWlCdEIsTUFBakIsRUFBeUJyQixHQUF6QixFQUE4QjtBQUM1QixpQkFBUzRDLDBCQUFULEdBQXNDO0FBQ3BDLGlCQUFPLElBQUlaLFdBQUosQ0FBZ0IsVUFBU0UsT0FBVCxFQUFrQkMsTUFBbEIsRUFBMEI7QUFDL0NGLFlBQUFBLE1BQU0sQ0FBQ1osTUFBRCxFQUFTckIsR0FBVCxFQUFja0MsT0FBZCxFQUF1QkMsTUFBdkIsQ0FBTjtBQUNELFdBRk0sQ0FBUDtBQUdEOztBQUVELGVBQU9PLGVBQWU7Ozs7Ozs7Ozs7OztBQWFwQkEsUUFBQUEsZUFBZSxHQUFHQSxlQUFlLENBQUNILElBQWhCLENBQ2hCSywwQkFEZ0I7O0FBSWhCQSxRQUFBQSwwQkFKZ0IsQ0FBSCxHQUtYQSwwQkFBMEIsRUFsQmhDO0FBbUJELE9BNUQ0Qzs7OztBQWdFN0MsV0FBS2pELE9BQUwsR0FBZWdELE9BQWY7QUFDRDs7QUFFRHhCLElBQUFBLHFCQUFxQixDQUFDWSxhQUFhLENBQUMzRCxTQUFmLENBQXJCOztBQUNBMkQsSUFBQUEsYUFBYSxDQUFDM0QsU0FBZCxDQUF3QlEsbUJBQXhCLElBQStDLFlBQVk7QUFDekQsYUFBTyxJQUFQO0FBQ0QsS0FGRDs7QUFHQVgsSUFBQUEsT0FBTyxDQUFDOEQsYUFBUixHQUF3QkEsYUFBeEIsQ0FwTWdDOzs7O0FBeU1oQzlELElBQUFBLE9BQU8sQ0FBQzRFLEtBQVIsR0FBZ0IsVUFBUzVELE9BQVQsRUFBa0JDLE9BQWxCLEVBQTJCQyxJQUEzQixFQUFpQ0MsV0FBakMsRUFBOEM0QyxXQUE5QyxFQUEyRDtBQUN6RSxVQUFJQSxXQUFXLEtBQUssS0FBSyxDQUF6QixFQUE0QkEsV0FBVyxHQUFHYyxPQUFkO0FBRTVCLFVBQUlDLElBQUksR0FBRyxJQUFJaEIsYUFBSixDQUNUL0MsSUFBSSxDQUFDQyxPQUFELEVBQVVDLE9BQVYsRUFBbUJDLElBQW5CLEVBQXlCQyxXQUF6QixDQURLLEVBRVQ0QyxXQUZTLENBQVg7QUFLQSxhQUFPL0QsT0FBTyxDQUFDcUQsbUJBQVIsQ0FBNEJwQyxPQUE1QixJQUNINkQsSUFERztBQUFBLFFBRUhBLElBQUksQ0FBQ0MsSUFBTCxHQUFZVCxJQUFaLENBQWlCLFVBQVNGLE1BQVQsRUFBaUI7QUFDaEMsZUFBT0EsTUFBTSxDQUFDWSxJQUFQLEdBQWNaLE1BQU0sQ0FBQ0MsS0FBckIsR0FBNkJTLElBQUksQ0FBQ0MsSUFBTCxFQUFwQztBQUNELE9BRkQsQ0FGSjtBQUtELEtBYkQ7O0FBZUEsYUFBU3BELGdCQUFULENBQTBCWCxPQUExQixFQUFtQ0UsSUFBbkMsRUFBeUNNLE9BQXpDLEVBQWtEO0FBQ2hELFVBQUl5RCxLQUFLLEdBQUc5QyxzQkFBWjtBQUVBLGFBQU8sU0FBUzZCLE1BQVQsQ0FBZ0JaLE1BQWhCLEVBQXdCckIsR0FBeEIsRUFBNkI7QUFDbEMsWUFBSWtELEtBQUssS0FBSzVDLGlCQUFkLEVBQWlDO0FBQy9CLGdCQUFNLElBQUk2QyxLQUFKLENBQVUsOEJBQVYsQ0FBTjtBQUNEOztBQUVELFlBQUlELEtBQUssS0FBSzNDLGlCQUFkLEVBQWlDO0FBQy9CLGNBQUljLE1BQU0sS0FBSyxPQUFmLEVBQXdCO0FBQ3RCLGtCQUFNckIsR0FBTjtBQUNELFdBSDhCOzs7O0FBTy9CLGlCQUFPb0QsVUFBVSxFQUFqQjtBQUNEOztBQUVEM0QsUUFBQUEsT0FBTyxDQUFDNEIsTUFBUixHQUFpQkEsTUFBakI7QUFDQTVCLFFBQUFBLE9BQU8sQ0FBQ08sR0FBUixHQUFjQSxHQUFkOztBQUVBLGVBQU8sSUFBUCxFQUFhO0FBQ1gsY0FBSXFELFFBQVEsR0FBRzVELE9BQU8sQ0FBQzRELFFBQXZCOztBQUNBLGNBQUlBLFFBQUosRUFBYztBQUNaLGdCQUFJQyxjQUFjLEdBQUdDLG1CQUFtQixDQUFDRixRQUFELEVBQVc1RCxPQUFYLENBQXhDOztBQUNBLGdCQUFJNkQsY0FBSixFQUFvQjtBQUNsQixrQkFBSUEsY0FBYyxLQUFLOUMsZ0JBQXZCLEVBQXlDO0FBQ3pDLHFCQUFPOEMsY0FBUDtBQUNEO0FBQ0Y7O0FBRUQsY0FBSTdELE9BQU8sQ0FBQzRCLE1BQVIsS0FBbUIsTUFBdkIsRUFBK0I7OztBQUc3QjVCLFlBQUFBLE9BQU8sQ0FBQytELElBQVIsR0FBZS9ELE9BQU8sQ0FBQ2dFLEtBQVIsR0FBZ0JoRSxPQUFPLENBQUNPLEdBQXZDO0FBRUQsV0FMRCxNQUtPLElBQUlQLE9BQU8sQ0FBQzRCLE1BQVIsS0FBbUIsT0FBdkIsRUFBZ0M7QUFDckMsZ0JBQUk2QixLQUFLLEtBQUs5QyxzQkFBZCxFQUFzQztBQUNwQzhDLGNBQUFBLEtBQUssR0FBRzNDLGlCQUFSO0FBQ0Esb0JBQU1kLE9BQU8sQ0FBQ08sR0FBZDtBQUNEOztBQUVEUCxZQUFBQSxPQUFPLENBQUNpRSxpQkFBUixDQUEwQmpFLE9BQU8sQ0FBQ08sR0FBbEM7QUFFRCxXQVJNLE1BUUEsSUFBSVAsT0FBTyxDQUFDNEIsTUFBUixLQUFtQixRQUF2QixFQUFpQztBQUN0QzVCLFlBQUFBLE9BQU8sQ0FBQ2tFLE1BQVIsQ0FBZSxRQUFmLEVBQXlCbEUsT0FBTyxDQUFDTyxHQUFqQztBQUNEOztBQUVEa0QsVUFBQUEsS0FBSyxHQUFHNUMsaUJBQVI7QUFFQSxjQUFJOEIsTUFBTSxHQUFHdkMsUUFBUSxDQUFDWixPQUFELEVBQVVFLElBQVYsRUFBZ0JNLE9BQWhCLENBQXJCOztBQUNBLGNBQUkyQyxNQUFNLENBQUNuQyxJQUFQLEtBQWdCLFFBQXBCLEVBQThCOzs7QUFHNUJpRCxZQUFBQSxLQUFLLEdBQUd6RCxPQUFPLENBQUN3RCxJQUFSLEdBQ0oxQyxpQkFESSxHQUVKRixzQkFGSjs7QUFJQSxnQkFBSStCLE1BQU0sQ0FBQ3BDLEdBQVAsS0FBZVEsZ0JBQW5CLEVBQXFDO0FBQ25DO0FBQ0Q7O0FBRUQsbUJBQU87QUFDTDhCLGNBQUFBLEtBQUssRUFBRUYsTUFBTSxDQUFDcEMsR0FEVDtBQUVMaUQsY0FBQUEsSUFBSSxFQUFFeEQsT0FBTyxDQUFDd0Q7QUFGVCxhQUFQO0FBS0QsV0FoQkQsTUFnQk8sSUFBSWIsTUFBTSxDQUFDbkMsSUFBUCxLQUFnQixPQUFwQixFQUE2QjtBQUNsQ2lELFlBQUFBLEtBQUssR0FBRzNDLGlCQUFSLENBRGtDOzs7QUFJbENkLFlBQUFBLE9BQU8sQ0FBQzRCLE1BQVIsR0FBaUIsT0FBakI7QUFDQTVCLFlBQUFBLE9BQU8sQ0FBQ08sR0FBUixHQUFjb0MsTUFBTSxDQUFDcEMsR0FBckI7QUFDRDtBQUNGO0FBQ0YsT0F4RUQ7QUF5RUQsS0FwUytCOzs7Ozs7QUEwU2hDLGFBQVN1RCxtQkFBVCxDQUE2QkYsUUFBN0IsRUFBdUM1RCxPQUF2QyxFQUFnRDtBQUM5QyxVQUFJNEIsTUFBTSxHQUFHZ0MsUUFBUSxDQUFDMUUsUUFBVCxDQUFrQmMsT0FBTyxDQUFDNEIsTUFBMUIsQ0FBYjs7QUFDQSxVQUFJQSxNQUFNLEtBQUs5QyxXQUFmLEVBQTBCOzs7QUFHeEJrQixRQUFBQSxPQUFPLENBQUM0RCxRQUFSLEdBQW1CLElBQW5COztBQUVBLFlBQUk1RCxPQUFPLENBQUM0QixNQUFSLEtBQW1CLE9BQXZCLEVBQWdDOztBQUU5QixjQUFJZ0MsUUFBUSxDQUFDMUUsUUFBVCxDQUFrQixRQUFsQixDQUFKLEVBQWlDOzs7QUFHL0JjLFlBQUFBLE9BQU8sQ0FBQzRCLE1BQVIsR0FBaUIsUUFBakI7QUFDQTVCLFlBQUFBLE9BQU8sQ0FBQ08sR0FBUixHQUFjekIsV0FBZDtBQUNBZ0YsWUFBQUEsbUJBQW1CLENBQUNGLFFBQUQsRUFBVzVELE9BQVgsQ0FBbkI7O0FBRUEsZ0JBQUlBLE9BQU8sQ0FBQzRCLE1BQVIsS0FBbUIsT0FBdkIsRUFBZ0M7OztBQUc5QixxQkFBT2IsZ0JBQVA7QUFDRDtBQUNGOztBQUVEZixVQUFBQSxPQUFPLENBQUM0QixNQUFSLEdBQWlCLE9BQWpCO0FBQ0E1QixVQUFBQSxPQUFPLENBQUNPLEdBQVIsR0FBYyxJQUFJNEQsU0FBSixDQUNaLGdEQURZLENBQWQ7QUFFRDs7QUFFRCxlQUFPcEQsZ0JBQVA7QUFDRDs7QUFFRCxVQUFJNEIsTUFBTSxHQUFHdkMsUUFBUSxDQUFDd0IsTUFBRCxFQUFTZ0MsUUFBUSxDQUFDMUUsUUFBbEIsRUFBNEJjLE9BQU8sQ0FBQ08sR0FBcEMsQ0FBckI7O0FBRUEsVUFBSW9DLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsT0FBcEIsRUFBNkI7QUFDM0JSLFFBQUFBLE9BQU8sQ0FBQzRCLE1BQVIsR0FBaUIsT0FBakI7QUFDQTVCLFFBQUFBLE9BQU8sQ0FBQ08sR0FBUixHQUFjb0MsTUFBTSxDQUFDcEMsR0FBckI7QUFDQVAsUUFBQUEsT0FBTyxDQUFDNEQsUUFBUixHQUFtQixJQUFuQjtBQUNBLGVBQU83QyxnQkFBUDtBQUNEOztBQUVELFVBQUlxRCxJQUFJLEdBQUd6QixNQUFNLENBQUNwQyxHQUFsQjs7QUFFQSxVQUFJLENBQUU2RCxJQUFOLEVBQVk7QUFDVnBFLFFBQUFBLE9BQU8sQ0FBQzRCLE1BQVIsR0FBaUIsT0FBakI7QUFDQTVCLFFBQUFBLE9BQU8sQ0FBQ08sR0FBUixHQUFjLElBQUk0RCxTQUFKLENBQWMsa0NBQWQsQ0FBZDtBQUNBbkUsUUFBQUEsT0FBTyxDQUFDNEQsUUFBUixHQUFtQixJQUFuQjtBQUNBLGVBQU83QyxnQkFBUDtBQUNEOztBQUVELFVBQUlxRCxJQUFJLENBQUNaLElBQVQsRUFBZTs7O0FBR2J4RCxRQUFBQSxPQUFPLENBQUM0RCxRQUFRLENBQUNTLFVBQVYsQ0FBUCxHQUErQkQsSUFBSSxDQUFDdkIsS0FBcEMsQ0FIYTs7QUFNYjdDLFFBQUFBLE9BQU8sQ0FBQ3VELElBQVIsR0FBZUssUUFBUSxDQUFDVSxPQUF4QixDQU5hOzs7Ozs7O0FBY2IsWUFBSXRFLE9BQU8sQ0FBQzRCLE1BQVIsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0I1QixVQUFBQSxPQUFPLENBQUM0QixNQUFSLEdBQWlCLE1BQWpCO0FBQ0E1QixVQUFBQSxPQUFPLENBQUNPLEdBQVIsR0FBY3pCLFdBQWQ7QUFDRDtBQUVGLE9BbkJELE1BbUJPOztBQUVMLGVBQU9zRixJQUFQO0FBQ0QsT0F2RTZDOzs7O0FBMkU5Q3BFLE1BQUFBLE9BQU8sQ0FBQzRELFFBQVIsR0FBbUIsSUFBbkI7QUFDQSxhQUFPN0MsZ0JBQVA7QUFDRCxLQXZYK0I7Ozs7QUEyWGhDVyxJQUFBQSxxQkFBcUIsQ0FBQ0gsRUFBRCxDQUFyQjtBQUVBQSxJQUFBQSxFQUFFLENBQUNsQyxpQkFBRCxDQUFGLEdBQXdCLFdBQXhCLENBN1hnQzs7Ozs7O0FBb1loQ2tDLElBQUFBLEVBQUUsQ0FBQ3RDLGNBQUQsQ0FBRixHQUFxQixZQUFXO0FBQzlCLGFBQU8sSUFBUDtBQUNELEtBRkQ7O0FBSUFzQyxJQUFBQSxFQUFFLENBQUNnRCxRQUFILEdBQWMsWUFBVztBQUN2QixhQUFPLG9CQUFQO0FBQ0QsS0FGRDs7QUFJQSxhQUFTQyxZQUFULENBQXNCQyxJQUF0QixFQUE0QjtBQUMxQixVQUFJQyxLQUFLLEdBQUc7QUFBRUMsUUFBQUEsTUFBTSxFQUFFRixJQUFJLENBQUMsQ0FBRDtBQUFkLE9BQVo7O0FBRUEsVUFBSSxLQUFLQSxJQUFULEVBQWU7QUFDYkMsUUFBQUEsS0FBSyxDQUFDRSxRQUFOLEdBQWlCSCxJQUFJLENBQUMsQ0FBRCxDQUFyQjtBQUNEOztBQUVELFVBQUksS0FBS0EsSUFBVCxFQUFlO0FBQ2JDLFFBQUFBLEtBQUssQ0FBQ0csVUFBTixHQUFtQkosSUFBSSxDQUFDLENBQUQsQ0FBdkI7QUFDQUMsUUFBQUEsS0FBSyxDQUFDSSxRQUFOLEdBQWlCTCxJQUFJLENBQUMsQ0FBRCxDQUFyQjtBQUNEOztBQUVELFdBQUtNLFVBQUwsQ0FBZ0JDLElBQWhCLENBQXFCTixLQUFyQjtBQUNEOztBQUVELGFBQVNPLGFBQVQsQ0FBdUJQLEtBQXZCLEVBQThCO0FBQzVCLFVBQUkvQixNQUFNLEdBQUcrQixLQUFLLENBQUNRLFVBQU4sSUFBb0IsRUFBakM7QUFDQXZDLE1BQUFBLE1BQU0sQ0FBQ25DLElBQVAsR0FBYyxRQUFkO0FBQ0EsYUFBT21DLE1BQU0sQ0FBQ3BDLEdBQWQ7QUFDQW1FLE1BQUFBLEtBQUssQ0FBQ1EsVUFBTixHQUFtQnZDLE1BQW5CO0FBQ0Q7O0FBRUQsYUFBUzFDLE9BQVQsQ0FBaUJOLFdBQWpCLEVBQThCOzs7O0FBSTVCLFdBQUtvRixVQUFMLEdBQWtCLENBQUM7QUFBRUosUUFBQUEsTUFBTSxFQUFFO0FBQVYsT0FBRCxDQUFsQjtBQUNBaEYsTUFBQUEsV0FBVyxDQUFDZ0MsT0FBWixDQUFvQjZDLFlBQXBCLEVBQWtDLElBQWxDO0FBQ0EsV0FBS1csS0FBTCxDQUFXLElBQVg7QUFDRDs7QUFFRDNHLElBQUFBLE9BQU8sQ0FBQzRHLElBQVIsR0FBZSxVQUFTQyxNQUFULEVBQWlCO0FBQzlCLFVBQUlELElBQUksR0FBRyxFQUFYOztBQUNBLFdBQUssSUFBSUUsR0FBVCxJQUFnQkQsTUFBaEIsRUFBd0I7QUFDdEJELFFBQUFBLElBQUksQ0FBQ0osSUFBTCxDQUFVTSxHQUFWO0FBQ0Q7O0FBQ0RGLE1BQUFBLElBQUksQ0FBQ0csT0FBTCxHQUw4Qjs7O0FBUzlCLGFBQU8sU0FBU2hDLElBQVQsR0FBZ0I7QUFDckIsZUFBTzZCLElBQUksQ0FBQ0ksTUFBWixFQUFvQjtBQUNsQixjQUFJRixHQUFHLEdBQUdGLElBQUksQ0FBQ0ssR0FBTCxFQUFWOztBQUNBLGNBQUlILEdBQUcsSUFBSUQsTUFBWCxFQUFtQjtBQUNqQjlCLFlBQUFBLElBQUksQ0FBQ1YsS0FBTCxHQUFheUMsR0FBYjtBQUNBL0IsWUFBQUEsSUFBSSxDQUFDQyxJQUFMLEdBQVksS0FBWjtBQUNBLG1CQUFPRCxJQUFQO0FBQ0Q7QUFDRixTQVJvQjs7Ozs7QUFhckJBLFFBQUFBLElBQUksQ0FBQ0MsSUFBTCxHQUFZLElBQVo7QUFDQSxlQUFPRCxJQUFQO0FBQ0QsT0FmRDtBQWdCRCxLQXpCRDs7QUEyQkEsYUFBU2pDLE1BQVQsQ0FBZ0JvRSxRQUFoQixFQUEwQjtBQUN4QixVQUFJQSxRQUFKLEVBQWM7QUFDWixZQUFJQyxjQUFjLEdBQUdELFFBQVEsQ0FBQ3pHLGNBQUQsQ0FBN0I7O0FBQ0EsWUFBSTBHLGNBQUosRUFBb0I7QUFDbEIsaUJBQU9BLGNBQWMsQ0FBQ2xGLElBQWYsQ0FBb0JpRixRQUFwQixDQUFQO0FBQ0Q7O0FBRUQsWUFBSSxPQUFPQSxRQUFRLENBQUNuQyxJQUFoQixLQUF5QixVQUE3QixFQUF5QztBQUN2QyxpQkFBT21DLFFBQVA7QUFDRDs7QUFFRCxZQUFJLENBQUNFLEtBQUssQ0FBQ0YsUUFBUSxDQUFDRixNQUFWLENBQVYsRUFBNkI7QUFDM0IsY0FBSUssQ0FBQyxHQUFHLENBQUMsQ0FBVDtBQUFBLGNBQVl0QyxJQUFJLEdBQUcsU0FBU0EsSUFBVCxHQUFnQjtBQUNqQyxtQkFBTyxFQUFFc0MsQ0FBRixHQUFNSCxRQUFRLENBQUNGLE1BQXRCLEVBQThCO0FBQzVCLGtCQUFJNUcsTUFBTSxDQUFDNkIsSUFBUCxDQUFZaUYsUUFBWixFQUFzQkcsQ0FBdEIsQ0FBSixFQUE4QjtBQUM1QnRDLGdCQUFBQSxJQUFJLENBQUNWLEtBQUwsR0FBYTZDLFFBQVEsQ0FBQ0csQ0FBRCxDQUFyQjtBQUNBdEMsZ0JBQUFBLElBQUksQ0FBQ0MsSUFBTCxHQUFZLEtBQVo7QUFDQSx1QkFBT0QsSUFBUDtBQUNEO0FBQ0Y7O0FBRURBLFlBQUFBLElBQUksQ0FBQ1YsS0FBTCxHQUFhL0QsV0FBYjtBQUNBeUUsWUFBQUEsSUFBSSxDQUFDQyxJQUFMLEdBQVksSUFBWjtBQUVBLG1CQUFPRCxJQUFQO0FBQ0QsV0FiRDs7QUFlQSxpQkFBT0EsSUFBSSxDQUFDQSxJQUFMLEdBQVlBLElBQW5CO0FBQ0Q7QUFDRixPQTdCdUI7OztBQWdDeEIsYUFBTztBQUFFQSxRQUFBQSxJQUFJLEVBQUVJO0FBQVIsT0FBUDtBQUNEOztBQUNEbkYsSUFBQUEsT0FBTyxDQUFDOEMsTUFBUixHQUFpQkEsTUFBakI7O0FBRUEsYUFBU3FDLFVBQVQsR0FBc0I7QUFDcEIsYUFBTztBQUFFZCxRQUFBQSxLQUFLLEVBQUUvRCxXQUFUO0FBQW9CMEUsUUFBQUEsSUFBSSxFQUFFO0FBQTFCLE9BQVA7QUFDRDs7QUFFRHZELElBQUFBLE9BQU8sQ0FBQ3RCLFNBQVIsR0FBb0I7QUFDbEI2QyxNQUFBQSxXQUFXLEVBQUV2QixPQURLO0FBR2xCa0YsTUFBQUEsS0FBSyxFQUFFLFVBQVNXLGFBQVQsRUFBd0I7QUFDN0IsYUFBS0MsSUFBTCxHQUFZLENBQVo7QUFDQSxhQUFLeEMsSUFBTCxHQUFZLENBQVosQ0FGNkI7OztBQUs3QixhQUFLUSxJQUFMLEdBQVksS0FBS0MsS0FBTCxHQUFhbEYsV0FBekI7QUFDQSxhQUFLMEUsSUFBTCxHQUFZLEtBQVo7QUFDQSxhQUFLSSxRQUFMLEdBQWdCLElBQWhCO0FBRUEsYUFBS2hDLE1BQUwsR0FBYyxNQUFkO0FBQ0EsYUFBS3JCLEdBQUwsR0FBV3pCLFdBQVg7QUFFQSxhQUFLaUcsVUFBTCxDQUFnQnBELE9BQWhCLENBQXdCc0QsYUFBeEI7O0FBRUEsWUFBSSxDQUFDYSxhQUFMLEVBQW9CO0FBQ2xCLGVBQUssSUFBSTlELElBQVQsSUFBaUIsSUFBakIsRUFBdUI7O0FBRXJCLGdCQUFJQSxJQUFJLENBQUNnRSxNQUFMLENBQVksQ0FBWixNQUFtQixHQUFuQixJQUNBcEgsTUFBTSxDQUFDNkIsSUFBUCxDQUFZLElBQVosRUFBa0J1QixJQUFsQixDQURBLElBRUEsQ0FBQzRELEtBQUssQ0FBQyxDQUFDNUQsSUFBSSxDQUFDaUUsS0FBTCxDQUFXLENBQVgsQ0FBRixDQUZWLEVBRTRCO0FBQzFCLG1CQUFLakUsSUFBTCxJQUFhbEQsV0FBYjtBQUNEO0FBQ0Y7QUFDRjtBQUNGLE9BM0JpQjtBQTZCbEJvSCxNQUFBQSxJQUFJLEVBQUUsWUFBVztBQUNmLGFBQUsxQyxJQUFMLEdBQVksSUFBWjtBQUVBLFlBQUkyQyxTQUFTLEdBQUcsS0FBS3BCLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBaEI7QUFDQSxZQUFJcUIsVUFBVSxHQUFHRCxTQUFTLENBQUNqQixVQUEzQjs7QUFDQSxZQUFJa0IsVUFBVSxDQUFDNUYsSUFBWCxLQUFvQixPQUF4QixFQUFpQztBQUMvQixnQkFBTTRGLFVBQVUsQ0FBQzdGLEdBQWpCO0FBQ0Q7O0FBRUQsZUFBTyxLQUFLOEYsSUFBWjtBQUNELE9BdkNpQjtBQXlDbEJwQyxNQUFBQSxpQkFBaUIsRUFBRSxVQUFTcUMsU0FBVCxFQUFvQjtBQUNyQyxZQUFJLEtBQUs5QyxJQUFULEVBQWU7QUFDYixnQkFBTThDLFNBQU47QUFDRDs7QUFFRCxZQUFJdEcsT0FBTyxHQUFHLElBQWQ7O0FBQ0EsaUJBQVN1RyxNQUFULENBQWdCQyxHQUFoQixFQUFxQkMsTUFBckIsRUFBNkI7QUFDM0I5RCxVQUFBQSxNQUFNLENBQUNuQyxJQUFQLEdBQWMsT0FBZDtBQUNBbUMsVUFBQUEsTUFBTSxDQUFDcEMsR0FBUCxHQUFhK0YsU0FBYjtBQUNBdEcsVUFBQUEsT0FBTyxDQUFDdUQsSUFBUixHQUFlaUQsR0FBZjs7QUFFQSxjQUFJQyxNQUFKLEVBQVk7OztBQUdWekcsWUFBQUEsT0FBTyxDQUFDNEIsTUFBUixHQUFpQixNQUFqQjtBQUNBNUIsWUFBQUEsT0FBTyxDQUFDTyxHQUFSLEdBQWN6QixXQUFkO0FBQ0Q7O0FBRUQsaUJBQU8sQ0FBQyxDQUFFMkgsTUFBVjtBQUNEOztBQUVELGFBQUssSUFBSVosQ0FBQyxHQUFHLEtBQUtkLFVBQUwsQ0FBZ0JTLE1BQWhCLEdBQXlCLENBQXRDLEVBQXlDSyxDQUFDLElBQUksQ0FBOUMsRUFBaUQsRUFBRUEsQ0FBbkQsRUFBc0Q7QUFDcEQsY0FBSW5CLEtBQUssR0FBRyxLQUFLSyxVQUFMLENBQWdCYyxDQUFoQixDQUFaO0FBQ0EsY0FBSWxELE1BQU0sR0FBRytCLEtBQUssQ0FBQ1EsVUFBbkI7O0FBRUEsY0FBSVIsS0FBSyxDQUFDQyxNQUFOLEtBQWlCLE1BQXJCLEVBQTZCOzs7O0FBSTNCLG1CQUFPNEIsTUFBTSxDQUFDLEtBQUQsQ0FBYjtBQUNEOztBQUVELGNBQUk3QixLQUFLLENBQUNDLE1BQU4sSUFBZ0IsS0FBS29CLElBQXpCLEVBQStCO0FBQzdCLGdCQUFJVyxRQUFRLEdBQUc5SCxNQUFNLENBQUM2QixJQUFQLENBQVlpRSxLQUFaLEVBQW1CLFVBQW5CLENBQWY7QUFDQSxnQkFBSWlDLFVBQVUsR0FBRy9ILE1BQU0sQ0FBQzZCLElBQVAsQ0FBWWlFLEtBQVosRUFBbUIsWUFBbkIsQ0FBakI7O0FBRUEsZ0JBQUlnQyxRQUFRLElBQUlDLFVBQWhCLEVBQTRCO0FBQzFCLGtCQUFJLEtBQUtaLElBQUwsR0FBWXJCLEtBQUssQ0FBQ0UsUUFBdEIsRUFBZ0M7QUFDOUIsdUJBQU8yQixNQUFNLENBQUM3QixLQUFLLENBQUNFLFFBQVAsRUFBaUIsSUFBakIsQ0FBYjtBQUNELGVBRkQsTUFFTyxJQUFJLEtBQUttQixJQUFMLEdBQVlyQixLQUFLLENBQUNHLFVBQXRCLEVBQWtDO0FBQ3ZDLHVCQUFPMEIsTUFBTSxDQUFDN0IsS0FBSyxDQUFDRyxVQUFQLENBQWI7QUFDRDtBQUVGLGFBUEQsTUFPTyxJQUFJNkIsUUFBSixFQUFjO0FBQ25CLGtCQUFJLEtBQUtYLElBQUwsR0FBWXJCLEtBQUssQ0FBQ0UsUUFBdEIsRUFBZ0M7QUFDOUIsdUJBQU8yQixNQUFNLENBQUM3QixLQUFLLENBQUNFLFFBQVAsRUFBaUIsSUFBakIsQ0FBYjtBQUNEO0FBRUYsYUFMTSxNQUtBLElBQUkrQixVQUFKLEVBQWdCO0FBQ3JCLGtCQUFJLEtBQUtaLElBQUwsR0FBWXJCLEtBQUssQ0FBQ0csVUFBdEIsRUFBa0M7QUFDaEMsdUJBQU8wQixNQUFNLENBQUM3QixLQUFLLENBQUNHLFVBQVAsQ0FBYjtBQUNEO0FBRUYsYUFMTSxNQUtBO0FBQ0wsb0JBQU0sSUFBSW5CLEtBQUosQ0FBVSx3Q0FBVixDQUFOO0FBQ0Q7QUFDRjtBQUNGO0FBQ0YsT0FuR2lCO0FBcUdsQlEsTUFBQUEsTUFBTSxFQUFFLFVBQVMxRCxJQUFULEVBQWVELEdBQWYsRUFBb0I7QUFDMUIsYUFBSyxJQUFJc0YsQ0FBQyxHQUFHLEtBQUtkLFVBQUwsQ0FBZ0JTLE1BQWhCLEdBQXlCLENBQXRDLEVBQXlDSyxDQUFDLElBQUksQ0FBOUMsRUFBaUQsRUFBRUEsQ0FBbkQsRUFBc0Q7QUFDcEQsY0FBSW5CLEtBQUssR0FBRyxLQUFLSyxVQUFMLENBQWdCYyxDQUFoQixDQUFaOztBQUNBLGNBQUluQixLQUFLLENBQUNDLE1BQU4sSUFBZ0IsS0FBS29CLElBQXJCLElBQ0FuSCxNQUFNLENBQUM2QixJQUFQLENBQVlpRSxLQUFaLEVBQW1CLFlBQW5CLENBREEsSUFFQSxLQUFLcUIsSUFBTCxHQUFZckIsS0FBSyxDQUFDRyxVQUZ0QixFQUVrQztBQUNoQyxnQkFBSStCLFlBQVksR0FBR2xDLEtBQW5CO0FBQ0E7QUFDRDtBQUNGOztBQUVELFlBQUlrQyxZQUFZLEtBQ1hwRyxJQUFJLEtBQUssT0FBVCxJQUNBQSxJQUFJLEtBQUssVUFGRSxDQUFaLElBR0FvRyxZQUFZLENBQUNqQyxNQUFiLElBQXVCcEUsR0FIdkIsSUFJQUEsR0FBRyxJQUFJcUcsWUFBWSxDQUFDL0IsVUFKeEIsRUFJb0M7OztBQUdsQytCLFVBQUFBLFlBQVksR0FBRyxJQUFmO0FBQ0Q7O0FBRUQsWUFBSWpFLE1BQU0sR0FBR2lFLFlBQVksR0FBR0EsWUFBWSxDQUFDMUIsVUFBaEIsR0FBNkIsRUFBdEQ7QUFDQXZDLFFBQUFBLE1BQU0sQ0FBQ25DLElBQVAsR0FBY0EsSUFBZDtBQUNBbUMsUUFBQUEsTUFBTSxDQUFDcEMsR0FBUCxHQUFhQSxHQUFiOztBQUVBLFlBQUlxRyxZQUFKLEVBQWtCO0FBQ2hCLGVBQUtoRixNQUFMLEdBQWMsTUFBZDtBQUNBLGVBQUsyQixJQUFMLEdBQVlxRCxZQUFZLENBQUMvQixVQUF6QjtBQUNBLGlCQUFPOUQsZ0JBQVA7QUFDRDs7QUFFRCxlQUFPLEtBQUs4RixRQUFMLENBQWNsRSxNQUFkLENBQVA7QUFDRCxPQXJJaUI7QUF1SWxCa0UsTUFBQUEsUUFBUSxFQUFFLFVBQVNsRSxNQUFULEVBQWlCbUMsUUFBakIsRUFBMkI7QUFDbkMsWUFBSW5DLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsT0FBcEIsRUFBNkI7QUFDM0IsZ0JBQU1tQyxNQUFNLENBQUNwQyxHQUFiO0FBQ0Q7O0FBRUQsWUFBSW9DLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsT0FBaEIsSUFDQW1DLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsVUFEcEIsRUFDZ0M7QUFDOUIsZUFBSytDLElBQUwsR0FBWVosTUFBTSxDQUFDcEMsR0FBbkI7QUFDRCxTQUhELE1BR08sSUFBSW9DLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDbkMsZUFBSzZGLElBQUwsR0FBWSxLQUFLOUYsR0FBTCxHQUFXb0MsTUFBTSxDQUFDcEMsR0FBOUI7QUFDQSxlQUFLcUIsTUFBTCxHQUFjLFFBQWQ7QUFDQSxlQUFLMkIsSUFBTCxHQUFZLEtBQVo7QUFDRCxTQUpNLE1BSUEsSUFBSVosTUFBTSxDQUFDbkMsSUFBUCxLQUFnQixRQUFoQixJQUE0QnNFLFFBQWhDLEVBQTBDO0FBQy9DLGVBQUt2QixJQUFMLEdBQVl1QixRQUFaO0FBQ0Q7O0FBRUQsZUFBTy9ELGdCQUFQO0FBQ0QsT0F4SmlCO0FBMEpsQitGLE1BQUFBLE1BQU0sRUFBRSxVQUFTakMsVUFBVCxFQUFxQjtBQUMzQixhQUFLLElBQUlnQixDQUFDLEdBQUcsS0FBS2QsVUFBTCxDQUFnQlMsTUFBaEIsR0FBeUIsQ0FBdEMsRUFBeUNLLENBQUMsSUFBSSxDQUE5QyxFQUFpRCxFQUFFQSxDQUFuRCxFQUFzRDtBQUNwRCxjQUFJbkIsS0FBSyxHQUFHLEtBQUtLLFVBQUwsQ0FBZ0JjLENBQWhCLENBQVo7O0FBQ0EsY0FBSW5CLEtBQUssQ0FBQ0csVUFBTixLQUFxQkEsVUFBekIsRUFBcUM7QUFDbkMsaUJBQUtnQyxRQUFMLENBQWNuQyxLQUFLLENBQUNRLFVBQXBCLEVBQWdDUixLQUFLLENBQUNJLFFBQXRDO0FBQ0FHLFlBQUFBLGFBQWEsQ0FBQ1AsS0FBRCxDQUFiO0FBQ0EsbUJBQU8zRCxnQkFBUDtBQUNEO0FBQ0Y7QUFDRixPQW5LaUI7QUFxS2xCLGVBQVMsVUFBUzRELE1BQVQsRUFBaUI7QUFDeEIsYUFBSyxJQUFJa0IsQ0FBQyxHQUFHLEtBQUtkLFVBQUwsQ0FBZ0JTLE1BQWhCLEdBQXlCLENBQXRDLEVBQXlDSyxDQUFDLElBQUksQ0FBOUMsRUFBaUQsRUFBRUEsQ0FBbkQsRUFBc0Q7QUFDcEQsY0FBSW5CLEtBQUssR0FBRyxLQUFLSyxVQUFMLENBQWdCYyxDQUFoQixDQUFaOztBQUNBLGNBQUluQixLQUFLLENBQUNDLE1BQU4sS0FBaUJBLE1BQXJCLEVBQTZCO0FBQzNCLGdCQUFJaEMsTUFBTSxHQUFHK0IsS0FBSyxDQUFDUSxVQUFuQjs7QUFDQSxnQkFBSXZDLE1BQU0sQ0FBQ25DLElBQVAsS0FBZ0IsT0FBcEIsRUFBNkI7QUFDM0Isa0JBQUl1RyxNQUFNLEdBQUdwRSxNQUFNLENBQUNwQyxHQUFwQjtBQUNBMEUsY0FBQUEsYUFBYSxDQUFDUCxLQUFELENBQWI7QUFDRDs7QUFDRCxtQkFBT3FDLE1BQVA7QUFDRDtBQUNGLFNBWHVCOzs7O0FBZXhCLGNBQU0sSUFBSXJELEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0QsT0FyTGlCO0FBdUxsQnNELE1BQUFBLGFBQWEsRUFBRSxVQUFTdEIsUUFBVCxFQUFtQnJCLFVBQW5CLEVBQStCQyxPQUEvQixFQUF3QztBQUNyRCxhQUFLVixRQUFMLEdBQWdCO0FBQ2QxRSxVQUFBQSxRQUFRLEVBQUVvQyxNQUFNLENBQUNvRSxRQUFELENBREY7QUFFZHJCLFVBQUFBLFVBQVUsRUFBRUEsVUFGRTtBQUdkQyxVQUFBQSxPQUFPLEVBQUVBO0FBSEssU0FBaEI7O0FBTUEsWUFBSSxLQUFLMUMsTUFBTCxLQUFnQixNQUFwQixFQUE0Qjs7O0FBRzFCLGVBQUtyQixHQUFMLEdBQVd6QixXQUFYO0FBQ0Q7O0FBRUQsZUFBT2lDLGdCQUFQO0FBQ0Q7QUFyTWlCLEtBQXBCLENBOWVnQzs7Ozs7QUEwckJoQyxXQUFPdkMsT0FBUDtBQUVELEdBNXJCYzs7OztBQWlzQmIsR0FBNkJ5SSxNQUFNLENBQUN6SSxPQUFwQyxDQWpzQmEsQ0FBZjs7QUFvc0JBLE1BQUk7QUFDRjBJLElBQUFBLGtCQUFrQixHQUFHM0ksT0FBckI7QUFDRCxHQUZELENBRUUsT0FBTzRJLG9CQUFQLEVBQTZCOzs7Ozs7Ozs7O0FBVTdCQyxJQUFBQSxRQUFRLENBQUMsR0FBRCxFQUFNLHdCQUFOLENBQVIsQ0FBd0M3SSxPQUF4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9\n","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n return module.exports = _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n var p = superPropBase(e, t);\n if (p) {\n var n = Object.getOwnPropertyDescriptor(p, t);\n return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n }\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _get.apply(null, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(t, o) {\n for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n return t;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n join: function join(separator) {\n return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n // eslint-disable-next-line es/no-reflect -- required for testing\n Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n apply: function apply(target, thisArgument, argumentsList) {\n return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = globalThis[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = globalThis.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n // fast equal of /^0b[01]+$/i\n case 66:\n case 98:\n radix = 2;\n maxCode = 49;\n break;\n // fast equal of /^0o[0-7]+$/i\n case 79:\n case 111:\n radix = 8;\n maxCode = 55;\n break;\n default:\n return +it;\n }\n digits = stringSlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n // includes check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineBuiltInAccessor(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = globalThis.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n // eslint-disable-next-line sonarjs/inconsistent-function-call -- ok\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = thisSymbolValue(this);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var string = symbolDescriptiveString(symbol);\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(globalThis.Reflect, 'Reflect', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return nativeSlice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n"],"sourceRoot":""}