{"version":3,"sources":["webpack:///./node_modules/.store/core-js@3.35.0/node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/.store/@babel+runtime@7.23.8/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/.store/canvg@3.0.10/node_modules/canvg/lib/index.es.js","webpack:///./node_modules/.store/core-js@3.35.0/node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/.store/svg-pathdata@6.0.3/node_modules/svg-pathdata/lib/SVGPathData.module.js","webpack:///./node_modules/.store/@babel+runtime@7.23.8/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/.store/rgbcolor@1.0.1/node_modules/rgbcolor/index.js","webpack:///./node_modules/.store/@babel+runtime@7.23.8/node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/.store/stackblur-canvas@2.6.0/node_modules/stackblur-canvas/dist/stackblur-es.js","webpack:///./node_modules/.store/@babel+runtime@7.23.8/node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/.store/core-js@3.35.0/node_modules/core-js/modules/es.array.reverse.js"],"names":["$","uncurryThis","getOwnPropertyDescriptor","f","toLength","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","slice","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","prototype","writable","target","proto","forced","endsWith","searchString","that","this","endPosition","arguments","length","undefined","len","end","search","toPropertyKey","require","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","module","exports","__esModule","offscreen","DOMParser","DOMParserFallback","preset","window","ignoreAnimation","ignoreMouse","width","height","OffscreenCanvas","url","response","fetch","blob","img","createImageBitmap","Reflect","deleteProperty","node","_ref","canvas","createCanvas","createImage","loadImage","index","freeze","__proto__","compressSpaces","str","replace","trimLeft","trimRight","toNumbers","matches","match","map","parseFloat","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","urlMatch","exec","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","join","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","isNormalizedColor","separator","getString","trim","split","zeroIsValue","regexp","result","isString","hasValue","asString","def","n","rootEmSize","emSize","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","screen","getNumber","computeSize","max","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","commas","i","ok","alpha","toRGBA","ViewPort","viewPorts","push","pop","getCurrent","d","Point","x","y","point","defaultValue","scale","path","points","pathPoints","atan2","transform","xp","yp","Mouse","working","events","eventElements","onClick","bind","onMouseMove","onclick","onmousemove","style","cursor","forEach","run","parent","_ref2","isPointInPath","boundingBox","_ref3","isPointInBox","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","mapXY","clientX","clientY","type","eventTarget","defaultWindow","defaultFetch$1","Screen","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","checker","readyPromise","Promise","resolve","every","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","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","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","now","Date","then","tick","shouldUpdate","runEvents","start","cancel","stop","reduce","animation","update","hasEvents","clear","setCurrent","widthStyle","getStyle","heightStyle","concat","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","isNaN","_heightStyle","transformStyle","clearRect","defaultFetch","DefaultDOMParser","Parser","resource","_this","parseFromString","load","xml","parser","checkDocument","err","parserError","getElementsByTagName","Error","textContent","_this2","text","Translate","parse","applyTransform","Rotate","rotate","transformOrigin","angle","originX","originY","cx","cy","numbers","tx","ty","getRadians","rad","cos","sin","Scale","scaleSize","parseScale","Matrix","matrix","a","b","c","e","g","h","det","Skew","skew","super","SkewX","tan","SkewY","parseTransforms","parseTransform","Transform","transforms","data","TransformType","transformTypes","transformOriginXProperty","transformOriginYProperty","apply","unapply","applyToPoint","skewX","skewY","Element","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","Array","from","attribute","nodeName","addStylesFromStyleDefinition","id","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","empty","skipAncestors","parentStyle","_style","save","mask","applyEffects","getValue","filter","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","child","createElement","ignoreChildTypes","includes","_node$getAttribute","styleClasses","call","some","styleClass","matchesSelector","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","indexOf","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","process","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","set","part","variants","weights","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","PathParser","control","current","command","commands","previousCommand","angles","xProp","yProp","makeAbsolute","getPoint","CURVE_TO","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ox","oy","relative","priorTo","angleTo","addMarkerAngle","j","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","globalAlpha","calculateOpacity","popEmSize","PathElement","pathParser","reset","isEnd","next","MOVE_TO","pathM","LINE_TO","pathL","HORIZ_LINE_TO","pathH","VERT_LINE_TO","pathV","pathC","pathS","pathQ","pathT","ARC","pathA","CLOSE_PATH","pathZ","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","fill","setTransform","stroke","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","getAsCurrentPoint","addMarker","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","r","sx","sy","arc","Boolean","GlyphElement","horizAdvX","unicode","arabicForm","TextElement","measureCache","textBaseline","getTextBaseline","leafTexts","textChunkStart","POSITIVE_INFINITY","maxX","NEGATIVE_INFINITY","getTElementBoundingBox","initializeCoordinates","adjustChildCoordinatesRecursive","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","glyphs","maybeGlyph","missingGlyph","parentNode","lastIndex","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","getGlyph","lw","fillText","strokeText","firstElement","textAnchor","shift","adjustChildCoordinatesRecursiveCore","applyAnchoring","textParent","adjustChildCoordinates","xAttr","yAttr","dxAttr","dyAttr","getInheritedAttribute","measure","measureTargetText","targetText","_measure","isFirstChild","parentAttr","TSpanElement","getTextFromNode","TextNode","SVGElement","root","_this$node$parentNode","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","setViewBox","removeCurrent","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","getPoints","PolylineElement","parsePath","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","getContext","pattern","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","duration","initialValue","initialUnits","removed","frozen","begin","getMilliseconds","maxDuration","to","values","valuesAttr","attributeType","attributeName","progress","getProgress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","p","lb","floor","ub","ceil","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","ascent","descent","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","open","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","_objectSpread$2","source","getOwnPropertyDescriptors","defineProperties","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","getLetterSpacingAt","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","nextOffset","findSegmentToFitChar","pathCommands","startX","startY","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","inc","abs","getPointOnEllipticalArc","dist","fromX","fromY","m","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","getPointOnLine","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","dataUriRegex","ImageElement","loaded","href","isSvg","images","loadSvg","image","console","error","atob","decodeURIComponent","svg","subDocument","canvg","forkString","documentElement","_image","complete","drawImage","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","srcs","src","UseElement","tempSvg","oldParent","cachedElement","imGet","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","_x","_y","srcData","getImageData","nr","ng","nb","na","putImageData","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","restoreStyles","noop","ClipPathElement","contextProto","getPrototypeOf","elementTransform","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","TitleElement","DescElement","elements","ownKeys$1","_objectSpread$1","_createImage","anonymousCrossOrigin","crossOrigin","reject","onload","onerror","_event","_source","_lineno","_colno","Document","emSizeStack","uniqueId","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","elementType","ElementType","elementTypes","config","ownKeys","_objectSpread","Canvg","options","createDocumentElement","_arguments","fromString","ready","_arguments2","baseOptions","resize","$indexOf","arrayMethodIsStrict","nativeIndexOf","NEGATIVE_ZERO","FORCED","searchElement","fromIndex","setPrototypeOf","hasOwnProperty","TypeError","constructor","create","isArray","o","O","T","cX","cY","phi1","phi2","N","E","A","C","M","R","I","S","L","ROUND","TO_ABS","TO_REL","NORMALIZE_HVZ","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxY","DRAWING_COMMANDS","w","U","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","SyntaxError","encode","getBounds","asyncGeneratorStep","gen","_next","_throw","arg","info","done","_asyncToGenerator","fn","self","args","color_string","charAt","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","re","example","bits","parseInt","processor","channels","toRGB","toHex","getHelpXML","examples","sc","setAttribute","list_item","list_color","RGBColor","example_div","cssText","list_item_value","_typeof","toPrimitive","Symbol","iterator","_classCallCheck","instance","Constructor","mulTable","shgTable","getImageDataFromCanvas","topX","topY","getElementById","context","processCanvasRGBA","radius","imageData","processImageDataRGBA","stackEnd","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_p2","nativeReverse"],"mappings":"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,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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","file":"js/chunk-5dd71a61.830993dd.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return slice(that, end - search.length, end) === search;\n }\n});\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\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/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\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/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\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\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\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, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\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 = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\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 [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\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\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n 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 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 getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n 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 [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\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 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 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 getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\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 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 getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n 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}\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\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n 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}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static 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 angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\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}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n 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 hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\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 checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\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 onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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 wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\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 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 setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\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 [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\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 (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (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 start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(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 = () => {\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 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 stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, 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 render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\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}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = 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.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\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\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = 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 this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\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 var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\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 ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\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 [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\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 applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\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(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(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\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 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 getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n 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 !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && 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 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 setContext(_) {// NO RENDER\n }\n\n 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 clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n 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 matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && 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 removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((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 [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\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/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\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/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\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\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\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 static 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(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 [fontSize] = part.split('/');\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 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}\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\nclass BoundingBox {\n constructor() {\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 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 get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n 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 addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n 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 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 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 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 isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\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 isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // 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 addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\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\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\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(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n 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'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\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 } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\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 // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\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 clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n 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 if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\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 var [point, angle] = markers[0];\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 [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\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 static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\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 static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\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 static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\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 static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\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 = (lArcFlag === 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 return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\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 static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(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\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(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 }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\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 initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n 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 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 - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && 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 // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\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 getText() {\n return '';\n }\n\n 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\n // || textNode.text\n 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 renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // 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 renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\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 {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\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 applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n 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 customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\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; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\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 measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\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 var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === 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 }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\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 } // 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 var {\n width,\n height\n } = screen.viewPort;\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.getStyle('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); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n 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,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n 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\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).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 getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n 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 getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n 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 getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n 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 path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\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 getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((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\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n 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\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('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\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\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(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\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 inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n 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\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n 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\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n 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\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\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 }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(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(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 = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n 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 calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\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 update(delta) {\n var {\n parent\n } = this;\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 getProgress() {\n var {\n document,\n values\n } = this;\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\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\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(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = {};\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\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()] = 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 }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(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 }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n 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\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\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 onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(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$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(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 var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\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 PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\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 PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n 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 {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(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 getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, 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 p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\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 setTextData(ctx) {\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 = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\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((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\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((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // 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 // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\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 PathParser.QUAD_TO:\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 PathParser.ARC:\n {\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\n return 0;\n }\n\n 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 /= 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 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 {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n 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,\n y\n };\n }\n\n 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,\n y\n };\n }\n\n 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 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,\n 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 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\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\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 ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n 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 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\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).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(_ => {\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(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(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(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\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 path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\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; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\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 getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, 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 * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(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 /* eslint-disable array-element-newline */\n\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 /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\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 /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\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 /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\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 = 0;\n ng = 0;\n 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\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // 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(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 render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(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 render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\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(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(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 render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\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\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\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$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\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(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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 bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n 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 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 createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\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/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\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 /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static 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 /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n 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}\n\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, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf(this, searchElement, fromIndex) || 0\n : $indexOf(this, searchElement, fromIndex);\n }\n});\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;et.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;vc.maxX&&(c.maxX=t),tc.maxY&&(c.maxY=t),tw&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);fw&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return iR&&wR&&wu)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || !('naturalWidth' in img)) {\n return;\n }\n\n var dimensionType = useOffset ? 'offset' : 'natural';\n var w = img[dimensionType + 'Width'];\n var h = img[dimensionType + 'Height'];\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >> shgSum;\n pixels[yi + 1] = gSum * mulSum >> shgSum;\n pixels[yi + 2] = bSum * mulSum >> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse(this);\n }\n});\n"],"sourceRoot":""}