{"version":3,"sources":["webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-indexed-object.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.map.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/fails.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-regexp.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/get-substitution.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-array.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/hidden-keys.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-for-each.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/regexp-exec.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/shared-store.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-keys-internal.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.every.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/get-built-in.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-integer.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.define-properties.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/regenerator/index.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/promise-resolve.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.filter.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/redefine-all.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-is-node.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-absolute-index.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/perform.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.symbol.description.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-forced.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/a-function.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-user-agent.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.iterator.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.replace.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/task.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.symbol.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/path.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-is-browser.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/collection-strong.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/host-report-errors.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/iterators.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/number-parse-int.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/shared-key.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/html.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/function-bind-context.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.split.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.define-property.js","webpack:///./src/modules/amcharts4/node_modules/performance-now/lib/performance-now.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.iterator.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/classof-raw.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.regexp.exec.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/native-weak-map.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/string-multibyte.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.keys.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/internal-state.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.match.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-is-ios.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.from.js","webpack:///./src/modules/amcharts4/node_modules/raf/index.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/number-parse-float.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/microtask.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/whitespaces.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/classof.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/require-object-coercible.js","webpack:///./src/modules/amcharts4/node_modules/regenerator-runtime/runtime.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/export.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-iteration.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/inspect-source.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/redefine.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/new-promise-capability.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-species-create.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.join.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.number.constructor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/iterate.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-keys.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.parse-float.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/global.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.date.to-string.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.map.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.reverse.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.to-string.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/an-instance.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/define-iterator.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/inherits.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/native-symbol.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/shared.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/freezing.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/descriptors.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/iterator-close.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.for-each.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/own-keys.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.concat.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-define-properties.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-object.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/inherit-if-required.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/has.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/set-species.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.trim.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-define-property.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-fill.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/superPropBase.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-pure.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/set-global.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/well-known-symbol.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./src/modules/amcharts4/node_modules/rgbcolor/index.js","webpack:///./src/modules/amcharts4/node_modules/stackblur-canvas/dist/stackblur-es.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/get.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.includes.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/regexp-flags.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.function.name.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-reduce.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.index-of.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/dom-iterables.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-to-string.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/uid.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/create-property.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/native-promise-constructor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/get-iterator-method.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.fill.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/string-trim-forced.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-from.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/document-create-element.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-includes.js","webpack:///./src/modules/amcharts4/node_modules/canvg/lib/index.es.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/engine-v8-version.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-object.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/species-constructor.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/string-trim.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/an-object.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/iterators-core.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/advance-string-index.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/object-create.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.promise.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/internal-metadata.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.string.includes.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.array.some.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/indexed-object.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-primitive.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.reflect.apply.js","webpack:///./src/modules/amcharts4/node_modules/core-js/modules/es.parse-int.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/to-length.js","webpack:///./src/modules/amcharts4/node_modules/core-js/internals/collection.js","webpack:///./src/modules/amcharts4/node_modules/@babel/runtime/helpers/asyncToGenerator.js"],"names":["IndexedObject","requireObjectCoercible","module","exports","it","$","$map","map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","length","undefined","$reduce","left","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","STRICT_METHOD","CHROME_BUG","reduce","exec","error","isObject","classof","wellKnownSymbol","MATCH","isRegExp","toObject","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","position","captures","namedCaptures","replacement","tailPos","m","symbols","call","match","ch","capture","charAt","slice","n","f","Array","isArray","arg","$forEach","forEach","regexpFlags","stickyHelpers","shared","nativeExec","RegExp","prototype","nativeReplace","String","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","i","re","sticky","flags","source","charsAdded","strCopy","indexOf","multiline","input","index","global","_classCallCheck","instance","Constructor","TypeError","__esModule","setGlobal","SHARED","store","anObject","iteratorClose","iterator","fn","value","ENTRIES","fails","F","constructor","Object","getPrototypeOf","has","toIndexedObject","hiddenKeys","object","names","key","O","result","push","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","$every","every","path","aFunction","variable","namespace","method","$getOwnPropertyNames","toString","windowNames","window","getOwnPropertyNames","getWindowNames","ceil","argument","isNaN","redefine","regexpExec","createNonEnumerableProperty","SPECIES","RegExpPrototype","REPLACE_SUPPORTS_NAMED_GROUPS","groups","a","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","split","KEY","sham","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","regexp","arg2","forceStringMethod","$exec","done","stringMethod","regexMethod","string","defineProperties","stat","NATIVE_SYMBOL","Symbol","newPromiseCapability","C","x","promiseCapability","resolve","promise","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","1","V","descriptor","enumerable","$filter","filter","src","options","defineWellKnownSymbol","defineProperty","TO_STRING_TAG","TAG","STATIC","configurable","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","name","R","p","rf","unsafe","ownKeys","getOwnPropertyDescriptorModule","keys","process","toInteger","max","min","integer","copyConstructorProperties","NativeSymbol","description","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","get","symbol","valueOf","desc","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","toLowerCase","getBuiltIn","test","wrappedWellKnownSymbolModule","NAME","createElement","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","iterated","type","point","state","fixRegExpWellKnownSymbolLogic","toLength","advanceStringIndex","getSubstitution","regExpExec","maybeToString","maybeCallNative","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","res","rx","S","functionalReplace","fullUnicode","unicode","results","matchStr","accumulatedResult","nextSourcePosition","j","replacerArgs","concat","userAgent","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","METHOD_NAME","defer","channel","port","bind","html","IS_IOS","location","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","id","hasOwnProperty","runner","listener","event","post","postMessage","protocol","host","args","Function","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","IS_PURE","USE_SYMBOL_AS_UID","toPrimitive","nativeObjectCreate","objectKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","propertyIsEnumerableModule","sharedKey","uid","setToStringTag","HIDDEN","PROTOTYPE","TO_PRIMITIVE","ObjectPrototype","$Symbol","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","P","Attributes","ObjectPrototypeDescriptor","wrap","tag","isSymbol","$defineProperty","$defineProperties","Properties","properties","$getOwnPropertySymbols","$create","$getOwnPropertyDescriptor","IS_OBJECT_PROTOTYPE","setter","keyFor","sym","useSetter","useSimple","create","getOwnPropertySymbols","FORCED_JSON_STRINGIFY","stringify","space","$replacer","_getPrototypeOf","o","setPrototypeOf","__proto__","redefineAll","anInstance","iterate","setSpecies","fastKey","internalStateGetterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","that","iterable","first","last","size","AS_ENTRIES","define","previous","entry","getEntry","next","removed","prev","boundFunction","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","kind","_defineProperties","props","writable","_createClass","protoProps","staticProps","b","console","trim","whitespaces","$parseInt","parseInt","hex","FORCED","radix","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","c","speciesConstructor","callRegExpExec","arrayPush","MAX_UINT32","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","ignoreCase","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","A","e","z","objectDefinePropertyModile","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","Date","getTime","addToUnscopables","Iterators","ARRAY_ITERATOR","Arguments","_typeof","assertThisInitialized","_possibleConstructorReturn","self","inspectSource","WeakMap","createMethod","CONVERT_TO_STRING","$this","pos","second","charCodeAt","codeAt","nativeKeys","FAILS_ON_PRIMITIVES","NATIVE_WEAK_MAP","objectHas","OBJECT_ALREADY_INITIALIZED","enforce","TYPE","wmget","wmhas","wmset","metadata","facade","STATE","IE8_DOM_DEFINE","_arrayWithHoles","arr","nativeMatch","matcher","_defineProperty","obj","from","checkCorrectnessOfIteration","INCORRECT_ITERATION","root","vendors","suffix","raf","caf","frameDuration","callback","_now","cp","cancelled","round","handle","cancel","polyfill","requestAnimationFrame","cancelAnimationFrame","$parseFloat","parseFloat","Infinity","trimmedString","flush","head","notify","toggle","node","then","macrotask","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","document","Promise","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","createTextNode","observe","characterData","task","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","err","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","reject","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","pop","skipTempReset","stop","rootEntry","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","RE","s","arrayLikeToArray","_unsupportedIterableToArray","minLen","targetProperty","sourceProperty","TARGET","GLOBAL","noTargetGet","arraySpeciesCreate","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","specificCreate","some","find","findIndex","filterOut","functionToString","enforceInternalState","TEMPLATE","simple","join","PromiseCapability","$$resolve","$$reject","originalArray","nativeJoin","ES3_STRINGS","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","maxCode","digits","code","NaN","NumberWrapper","dummy","isArrayIteratorMethod","getIteratorMethod","Result","stopped","unboundFunction","iterFn","step","IS_ITERATOR","INTERRUPTED","condition","callFn","deleteProperty","propertyKey","internalObjectKeys","enumBugKeys","parseFloatImplementation","check","globalThis","DatePrototype","INVALID_DATE","nativeDateToString","collection","collectionStrong","init","nativeReverse","_iterableToArrayLimit","_i","_s","_e","_arr","_n","_d","bitmap","createIteratorConstructor","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","_inherits","subClass","superClass","V8_VERSION","IE_PROTO","createProperty","getOwnPropertyDescriptors","version","mode","copyright","isExtensible","preventExtensions","_nonIterableRest","returnMethod","_arrayLikeToArray","len","arr2","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","array","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","E","Wrapper","NewTarget","NewTargetPrototype","_setPrototypeOf","$trim","forcedStringTrimMethod","toAbsoluteIndex","argumentsLength","end","endPos","_superPropBase","property","createWellKnownSymbol","withoutSetter","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","color_string","ok","alpha","substr","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","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","bits","processor","channels","r","g","toRGB","toRGBA","toHex","getHelpXML","examples","sc","xml","setAttribute","list_item","list_color","RGBColor","example_div","style","cssText","list_item_value","mulTable","shgTable","getImageDataFromCanvas","canvas","topX","topY","width","height","getElementById","getContext","getImageData","processCanvasRGBA","radius","imageData","processImageDataRGBA","putImageData","stackEnd","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackIn","stackOut","yw","yi","mulSum","shgSum","y","pr","pg","pb","pa","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","superPropBase","_get","receiver","Reflect","base","$includes","includes","el","dotAll","aPossiblePrototype","CORRECT_SETTER","FunctionPrototype","FunctionPrototypeToString","nameRE","IS_RIGHT","memo","right","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","postfix","random","fill","non","_assertThisInitialized","ReferenceError","callWithSafeIterationClosing","arrayLike","mapfn","mapping","EXISTS","IS_INCLUDES","fromIndex","compressSpaces","trimLeft","trimRight","toNumbers","matches","allUppercase","normalizeAttributeName","parseExternalUrl","url","urlMatch","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","_findSelectorMatch","_findSelectorMatch2","_findSelectorMatch3","_findSelectorMatch4","_findSelectorMatch5","_findSelectorMatch6","_findSelectorMatch7","_findSelectorMatch8","_findSelectorMatch9","_findSelectorMatch10","_findSelectorMatch11","_findSelectorMatch12","_findSelectorMatch13","_findSelectorMatch14","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","createCommonjsModule","undefined$1","Property","isString","hasValue","asString","getString","def","rootEmSize","emSize","axisOrIsFontSize","processPercent","_ref","_ref2","axis","isFontSize","viewPort","screen","getNumber","computeSize","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","commas","color","ViewPort","viewPorts","d","getCurrent","Point","atan2","transform","xp","defaultValue","_toNumbers","_toNumbers2","_toNumbers2$","_toNumbers2$2","points","pathPoints","Mouse","working","events","eventElements","onClick","onMouseMove","onclick","onmousemove","cursor","isPointInPath","boundingBox","_ref3","isPointInBox","_this$screen","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","evt","_this$mapXY","mapXY","clientX","clientY","_this$mapXY2","defaultWindow","defaultFetch","fetch","Screen","_ref$fetch","_ref$window","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","isReadyLock","isFirstRender","intervalId","checker","readyPromise","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","_ref2$minX","minX","_ref2$minY","minY","refX","refY","_ref2$clip","clip","_ref2$clipX","clipX","_ref2$clipY","clipY","cleanAspectRatio","_cleanAspectRatio$spl","_cleanAspectRatio$spl2","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","getPixels","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","scale","_this","_ref3$enableRedraw","enableRedraw","_ref3$ignoreMouse","ignoreMouse","_ref3$ignoreAnimation","ignoreAnimation","_ref3$ignoreDimension","ignoreDimensions","_ref3$ignoreClear","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","tick","shouldUpdate","runEvents","start","animation","update","hasEvents","setCurrent","widthStyle","getStyle","heightStyle","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","widthAttr","heightAttr","transformStyle","clearRect","defaultFetch$1","DefaultDOMParser","DOMParser","Parser","_ref$DOMParser","_parse","_callee","resource","_context","parseFromString","load","parse","parser","_parser","_load","_callee2","response","_context2","text","_x2","Element","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","attribute","nodeName","addStylesFromStyleDefinition","_style$split","_style$split2","getValue","childNodes","childNode","addChild","textNode","getText","createIfNotExists","attr","_attr","empty","skipAncestors","parentStyle","_style","save","mask","setContext","renderChildren","clearContext","restore","child","ignoreChildTypes","styleClasses","styleClass","_this$document","matchesSelector","existingSpecificity","UnknownElement","_Element","warn","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","Font","fontStyle","fontVariant","fontWeight","fontSize","inherit","inheritFont","font","parts","part","variants","weights","_part$split","_part$split2","BoundingBox","x1","Number","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","Translate","_this$point","_this$point2","_this$point3","applyTransform","Rotate","rotate","transformOrigin","angle","cx","cy","numbers","getRadians","rad","cos","sin","Scale","scaleSize","_this$scale","_this$scale2","_this$scale3","Matrix","matrix","h","det","Skew","_Matrix","skew","SkewX","_Skew","SkewY","parseTransforms","parseTransform","_transform$split","_transform$split2","Transform","transforms","originCoords","_parseTransform","_parseTransform2","TransformType","transformTypes","unapply","applyToPoint","transformOriginStyle","skewX","skewY","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","pointOrderStyleProp","strokeDasharrayStyleProp","strokeDashoffsetProp","paintOrder","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","fromElement","clipPathStyleProp","globalAlpha","calculateOpacity","popEmSize","TextElement","_RenderedElement","measureCache","textBaseline","getTextBaseline","dxAttr","dyAttr","getAnchorDelta","_this2","getTElementBoundingBox","initializeCoordinates","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","arabicForm","glyphs","missingGlyph","parentNode","textContent","_this3","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","dx","getGlyph","lw","horizAdvX","strokeText","fillText","startI","textAnchor","measureTextRecursive","textParent","xAttr","yAttr","_width","adjustChildCoordinates","measure","measureTargetText","targetText","_measure","_ctx$measureText","TSpanElement","_TextElement","getTextFromNode","TextNode","_TSpanElement","preparePath","PathParser","control","current","command","tokens","previousCommand","angles","isEnd","getToken","getScalar","makeAbsolute","getPoint","_this$current","_this$control","ox","oy","isRelativeCommand","_this$current2","priorTo","angleTo","addMarkerAngle","PathElement","pathParser","nextCommand","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","stroke","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_markers$","_marker","_markers$i","_point","_angle","_marker2","_markers$markersLastI","_point2","_angle2","getAsCurrentPoint","addMarker","isCommandOrEnd","_point3","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","ry","xAxisRotation","largeArcFlag","sweepFlag","currp","l","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","Boolean","SVGElement","removeCurrent","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","_screen$viewPort","refXAttr","refYAttr","viewBoxAttr","setViewBox","preserveAspectRatio","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","_PathElement","rxAttr","ryAttr","KAPPA","CircleElement","EllipseElement","LineElement","_this$getPoints","getPoints","_this$getPoints2","_this$getPoints2$","x0","y0","_this$getPoints2$2","_this$getPoints3","_this$getPoints4","PolylineElement","parsePath","_points","_points$","PolygonElement","_PolylineElement","_this$points","_this$points$","PatternElement","parentOpacityProp","patternSvg","patternCanvas","createCanvas","patternCtx","pattern","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","_assertThisInitialize","stopsContainer","inheritStopContainer","_stopsContainer","gradient","getGradient","addParentOpacity","addColorStop","_document$screen","_viewPort$viewPorts","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","_GradientElement","getGradientUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","duration","initialValue","initialUnits","frozen","begin","getMilliseconds","maxDuration","to","attributeType","attributeName","_this$getProgress","getProgress","progress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","lb","ub","AnimateColorElement","_AnimateElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","fontFamilyStyle","return","FontFaceElement","ascent","descent","MissingGlyphElement","GlyphElement","TRefElement","firstChild","AElement","hasText","open","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","partialText","rotation","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","getLetterSpacingAt","splineStep","segment","getEquidistantPointOnPath","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","_this2$findSegmentToF","findSegmentToFitChar","nextOffset","getLineLength","kern","midpoint","getPointOnLine","transposeX","transposeY","pathCommands","startX","startY","cmd","upperCommand","toUpperCase","calcLength","getPointOnCubicBezier","getPointOnQuadraticBezier","inc","abs","getPointOnEllipticalArc","dist","P1x","P1y","P2x","P2y","fromX","fromY","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","pathCmd","currentT","pct","P3x","P3y","P4x","P4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","ImageElement","loaded","href","isSvg","images","loadSvg","loadImage","_loadImage","image","createImage","t0","_loadSvg","svg","canvg","forkString","drawImage","SymbolElement","SVGFontLoader","fonts","svgDocument","getElementsByTagName","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","cssProp","srcs","UseElement","tempSvg","oldParent","_element","imGet","img","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","__","srcData","nr","ng","nb","na","MaskElement","cMask","maskCtx","cm","tempCtx","globalCompositeOperation","fillRect","noop","ClipPathElement","contextProto","elementTransform","FilterElement","px","py","efd","extraFilterDistance","tmpCanvas","tmpCtx","FeDropShadowElement","___","____","_____","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","TitleElement","DescElement","elementTypes","enumerableOnly","_objectSpread","_createImage","onload","onerror","Document","_ref$rootEmSize","_ref$emSize","_ref$createCanvas","_ref$createImage","emSizeStack","uniqueId","wait","isImagesLoaded","isFontsLoaded","documentElement","elementType","ElementType","config","ownKeys$1","_objectSpread$1","Canvg","createDocumentElement","fromString","ready","_render","_args","baseOptions","resize","_from","_args2","offscreen","OffscreenCanvas","blob","createImageBitmap","freeze","versions","v8","foo","ArrayPrototype","defaultConstructor","whitespace","ltrim","rtrim","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","UNSCOPABLES","activeXDocument","documentCreateElement","GT","LT","SCRIPT","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","contentWindow","NullProtoObject","ActiveXObject","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","SUBCLASSING","GLOBAL_CORE_JS_PROMISE","FakePromise","all","isThenable","isReject","notified","chain","reactions","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","initEvent","IS_UNHANDLED","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","capability","$promiseResolve","remaining","alreadyCalled","race","FREEZING","METADATA","setMetadata","objectID","weakData","getWeakData","onFreeze","meta","REQUIRED","error1","error2","notARegExp","correctIsRegExpLogic","searchString","$some","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","PREFERRED_STRING","nativeApply","functionApply","OPTIONAL_ARGUMENTS_LIST","thisArgument","argumentsList","parseIntImplementation","InternalMetadataModule","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator"],"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,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,G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","file":"js/canvg.c102edaa.js","sourcesContent":["// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","module.exports = {};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\n/* eslint-disable regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExpPrototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","module.exports = require(\"regenerator-runtime\");\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = typeof window == 'object';\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(target) {\n return objectGetPrototypeOf(anObject(target));\n }\n});\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, UNSUPPORTED_Y);\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","function _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n }\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare -- NaN check\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].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.call(this);\n }\n});\n","function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.14.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = false;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/*\n\tBased on rgbcolor.js by Stoyan Stefanov \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","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 superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","import 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.parse-float';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.array.join';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport 'core-js/modules/es.symbol';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.for-each';\nimport 'core-js/modules/es.object.define-properties';\nimport 'core-js/modules/es.object.define-property';\nimport 'core-js/modules/es.object.get-own-property-descriptor';\nimport 'core-js/modules/es.object.get-own-property-descriptors';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport _regeneratorRuntime from '@babel/runtime/regenerator';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.every';\nimport 'core-js/modules/es.array.reduce';\nimport 'core-js/modules/es.date.to-string';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.promise';\nimport 'core-js/modules/es.string.split';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.function.name';\nimport RGBColor from 'rgbcolor';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport 'core-js/modules/es.array.from';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.some';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.iterator';\nimport 'core-js/modules/es.string.trim';\nimport 'core-js/modules/es.array.index-of';\nimport 'core-js/modules/es.array.reverse';\nimport _get from '@babel/runtime/helpers/get';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.regexp.to-string';\nimport 'core-js/modules/es.array.fill';\nimport 'core-js/modules/es.reflect.delete-property';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/web.dom-collections.iterator';\nimport 'core-js/modules/es.parse-int';\nimport 'core-js/modules/es.symbol.description';\nimport 'core-js/modules/es.symbol.iterator';\nimport 'core-js/modules/es.map';\nimport 'core-js/modules/es.reflect.apply';\nimport 'core-js/modules/es.reflect.get-prototype-of';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\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 */\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 */\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 */\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 */\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 */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = url.match(/url\\(('([^']+)'|\"([^\"]+)\"|([^'\"\\)]+))\\)/) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s\\+>~\\.\\[:]+)/g;\nvar classRegex = /(\\.[^\\s\\+>~\\.\\[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s\\+>~\\.\\[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^\\)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s\\+>~\\.\\[:]+)/g;\nvar elementRegex = /([^\\s\\+>~\\.\\[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = selector.match(regex);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\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\n var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);\n\n var _findSelectorMatch2 = _slicedToArray(_findSelectorMatch, 2);\n\n currentSelector = _findSelectorMatch2[0];\n delta = _findSelectorMatch2[1];\n specificity[1] += delta;\n\n var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);\n\n var _findSelectorMatch4 = _slicedToArray(_findSelectorMatch3, 2);\n\n currentSelector = _findSelectorMatch4[0];\n delta = _findSelectorMatch4[1];\n specificity[0] += delta;\n\n var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);\n\n var _findSelectorMatch6 = _slicedToArray(_findSelectorMatch5, 2);\n\n currentSelector = _findSelectorMatch6[0];\n delta = _findSelectorMatch6[1];\n specificity[1] += delta;\n\n var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);\n\n var _findSelectorMatch8 = _slicedToArray(_findSelectorMatch7, 2);\n\n currentSelector = _findSelectorMatch8[0];\n delta = _findSelectorMatch8[1];\n specificity[2] += delta;\n\n var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n\n var _findSelectorMatch10 = _slicedToArray(_findSelectorMatch9, 2);\n\n currentSelector = _findSelectorMatch10[0];\n delta = _findSelectorMatch10[1];\n specificity[1] += delta;\n\n var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);\n\n var _findSelectorMatch12 = _slicedToArray(_findSelectorMatch11, 2);\n\n currentSelector = _findSelectorMatch12[0];\n delta = _findSelectorMatch12[1];\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[\\*\\s\\+>~]/g, ' ').replace(/[#\\.]/g, ' ');\n\n var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);\n\n var _findSelectorMatch14 = _slicedToArray(_findSelectorMatch13, 2);\n\n currentSelector = _findSelectorMatch14[0];\n delta = _findSelectorMatch14[1];\n // lgtm [js/useless-assignment-to-local]\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\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 */\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 */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var runtime = function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined$1,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined$1;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n stop: function () {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n }( // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports );\n\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});\n\nvar Property =\n/*#__PURE__*/\nfunction () {\n function Property(document, name, value) {\n _classCallCheck(this, Property);\n\n this.document = document;\n this.name = name;\n this.value = value;\n }\n\n _createClass(Property, [{\n key: \"hasValue\",\n value: function hasValue() {\n var value = this.value;\n return value !== null && value !== '' && value !== 0 && typeof value !== 'undefined';\n }\n }, {\n key: \"isString\",\n value: function isString(regexp) {\n var value = this.value;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n }, {\n key: \"isUrlDefinition\",\n value: function isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n }, {\n key: \"isPixels\",\n value: function isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case /px$/.test(asString):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n return this;\n }\n }, {\n key: \"getValue\",\n value: function getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var value = this.value;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n = n / 100.0;\n }\n\n return n;\n }\n }, {\n key: \"getString\",\n value: function getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n }, {\n key: \"getDpi\",\n value: function getDpi() {\n return 96.0; // TODO: compute?\n }\n }, {\n key: \"getRem\",\n value: function getRem() {\n return this.document.rootEmSize;\n }\n }, {\n key: \"getEm\",\n value: function getEm() {\n return this.document.emSize;\n }\n }, {\n key: \"getUnits\",\n value: function getUnits() {\n return this.getString().replace(/[0-9\\.\\-]/g, '');\n }\n }, {\n key: \"getPixels\",\n value: function getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],\n _ref2 = _slicedToArray(_ref, 2),\n axis = _ref2[0],\n isFontSize = _ref2[1];\n\n var viewPort = this.document.screen.viewPort;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n }, {\n key: \"getMilliseconds\",\n value: function getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n }, {\n key: \"getRadians\",\n value: function getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition() {\n var asString = this.getString();\n var name = asString.match(/#([^\\)'\"]+)/);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n }, {\n key: \"getFillStyleDefinition\",\n value: function getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n }, {\n key: \"getTextBaseline\",\n value: function getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n }, {\n key: \"addOpacity\",\n value: function addOpacity(opacity) {\n var value = this.value;\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 value = \"rgba(\".concat(color.r, \", \").concat(color.g, \", \").concat(color.b, \", \").concat(opacity.getNumber(), \")\");\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n }], [{\n key: \"empty\",\n value: function empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n }]);\n\n return Property;\n}();\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nvar ViewPort =\n/*#__PURE__*/\nfunction () {\n function ViewPort() {\n _classCallCheck(this, ViewPort);\n\n this.viewPorts = [];\n }\n\n _createClass(ViewPort, [{\n key: \"clear\",\n value: function clear() {\n this.viewPorts = [];\n }\n }, {\n key: \"setCurrent\",\n value: function setCurrent(width, height) {\n this.viewPorts.push({\n width: width,\n height: height\n });\n }\n }, {\n key: \"removeCurrent\",\n value: function removeCurrent() {\n this.viewPorts.pop();\n }\n }, {\n key: \"getCurrent\",\n value: function getCurrent() {\n var viewPorts = this.viewPorts;\n return viewPorts[viewPorts.length - 1];\n }\n }, {\n key: \"computeSize\",\n value: function computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.getCurrent().width;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getCurrent().height;\n }\n }]);\n\n return ViewPort;\n}();\n\nvar Point =\n/*#__PURE__*/\nfunction () {\n function Point(x, y) {\n _classCallCheck(this, Point);\n\n this.x = x;\n this.y = y;\n }\n\n _createClass(Point, [{\n key: \"angleTo\",\n value: function angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(transform) {\n var x = this.x,\n y = this.y;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n }], [{\n key: \"parse\",\n value: function parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var _toNumbers = toNumbers(point),\n _toNumbers2 = _slicedToArray(_toNumbers, 2),\n _toNumbers2$ = _toNumbers2[0],\n x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,\n _toNumbers2$2 = _toNumbers2[1],\n y = _toNumbers2$2 === void 0 ? x : _toNumbers2$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parsePath\",\n value: function parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n }]);\n\n return Point;\n}();\n\nvar Mouse =\n/*#__PURE__*/\nfunction () {\n function Mouse(screen) {\n _classCallCheck(this, Mouse);\n\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = [];\n this.onClick = this.onClick.bind(this);\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n _createClass(Mouse, [{\n key: \"isWorking\",\n value: function isWorking() {\n return this.working;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.working) {\n return;\n }\n\n var screen = this.screen,\n onClick = this.onClick,\n onMouseMove = this.onMouseMove;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n }, {\n key: \"hasEvents\",\n value: function hasEvents() {\n return this.working && this.events.length > 0;\n }\n }, {\n key: \"runEvents\",\n value: function runEvents() {\n if (!this.working) {\n return;\n }\n\n var document = this.screen,\n events = this.events,\n eventElements = this.eventElements;\n var style = document.ctx.canvas.style;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach(function (_ref, i) {\n var run = _ref.run;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n }, {\n key: \"checkPath\",\n value: function checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref2, i) {\n var x = _ref2.x,\n y = _ref2.y;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"checkBoundingBox\",\n value: function checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref3, i) {\n var x = _ref3.x,\n y = _ref3.y;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"mapXY\",\n value: function mapXY(x, y) {\n var _this$screen = this.screen,\n window = _this$screen.window,\n ctx = _this$screen.ctx;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n }, {\n key: \"onClick\",\n value: function onClick(evt) {\n var _this$mapXY = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY.x,\n y = _this$mapXY.y;\n\n this.events.push({\n type: 'onclick',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onClick) {\n event.onClick();\n }\n }\n });\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(evt) {\n var _this$mapXY2 = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY2.x,\n y = _this$mapXY2.y;\n\n this.events.push({\n type: 'onmousemove',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onMouseMove) {\n event.onMouseMove();\n }\n }\n });\n }\n }]);\n\n return Mouse;\n}();\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch = typeof fetch !== 'undefined' ? fetch.bind(window) : null;\n\nvar Screen =\n/*#__PURE__*/\nfunction () {\n function Screen(ctx) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,\n _ref$window = _ref.window,\n window = _ref$window === void 0 ? defaultWindow : _ref$window;\n\n _classCallCheck(this, Screen);\n\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n _createClass(Screen, [{\n key: \"wait\",\n value: function wait(checker) {\n this.waits.push(checker);\n }\n }, {\n key: \"ready\",\n value: function ready() {\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(function (_) {\n return _();\n });\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n }, {\n key: \"setDefaults\",\n value: function setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(_ref2) {\n var document = _ref2.document,\n ctx = _ref2.ctx,\n aspectRatio = _ref2.aspectRatio,\n width = _ref2.width,\n desiredWidth = _ref2.desiredWidth,\n height = _ref2.height,\n desiredHeight = _ref2.desiredHeight,\n _ref2$minX = _ref2.minX,\n minX = _ref2$minX === void 0 ? 0 : _ref2$minX,\n _ref2$minY = _ref2.minY,\n minY = _ref2$minY === void 0 ? 0 : _ref2$minY,\n refX = _ref2.refX,\n refY = _ref2.refY,\n _ref2$clip = _ref2.clip,\n clip = _ref2$clip === void 0 ? false : _ref2$clip,\n _ref2$clipX = _ref2.clipX,\n clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,\n _ref2$clipY = _ref2.clipY,\n clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var _cleanAspectRatio$spl = cleanAspectRatio.split(' '),\n _cleanAspectRatio$spl2 = _slicedToArray(_cleanAspectRatio$spl, 2),\n aspectRatioAlign = _cleanAspectRatio$spl2[0],\n aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];\n\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (/^xMid/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (/YMid$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (/^xMax/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (/YMax$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n\n default:\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n }, {\n key: \"start\",\n value: function start(element) {\n var _this = this;\n\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$enableRedraw = _ref3.enableRedraw,\n enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,\n _ref3$ignoreMouse = _ref3.ignoreMouse,\n ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,\n _ref3$ignoreAnimation = _ref3.ignoreAnimation,\n ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,\n _ref3$ignoreDimension = _ref3.ignoreDimensions,\n ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,\n _ref3$ignoreClear = _ref3.ignoreClear,\n ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,\n forceRedraw = _ref3.forceRedraw,\n scaleWidth = _ref3.scaleWidth,\n scaleHeight = _ref3.scaleHeight,\n offsetX = _ref3.offsetX,\n offsetY = _ref3.offsetY;\n\n var FRAMERATE = this.FRAMERATE,\n mouse = this.mouse;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(function (resolve) {\n _this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = function tick() {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (_this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n _this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n\n mouse.runEvents();\n }\n }\n\n _this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n }, {\n key: \"shouldUpdate\",\n value: function shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var frameDuration = this.frameDuration;\n var shouldUpdate = this.animations.reduce(function (shouldUpdate, animation) {\n return animation.update(frameDuration) || shouldUpdate;\n }, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"render\",\n value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var CLIENT_WIDTH = this.CLIENT_WIDTH,\n CLIENT_HEIGHT = this.CLIENT_HEIGHT,\n viewPort = this.viewPort,\n ctx = this.ctx,\n isFirstRender = this.isFirstRender;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var widthAttr = element.getAttribute('width');\n\n if (widthAttr.hasValue()) {\n xRatio = widthAttr.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var heightAttr = element.getAttribute('height');\n\n if (heightAttr.hasValue()) {\n yRatio = heightAttr.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n }]);\n\n return Screen;\n}();\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch;\n\nvar defaultFetch$1 = Screen.defaultFetch;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\n\nvar Parser =\n/*#__PURE__*/\nfunction () {\n // private readonly options: any;\n function Parser() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,\n _ref$DOMParser = _ref.DOMParser,\n DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;\n\n _classCallCheck(this, Parser);\n\n this.fetch = fetch;\n this.DOMParser = DOMParser; // this.options = options;\n }\n\n _createClass(Parser, [{\n key: \"parse\",\n value: function () {\n var _parse = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee(resource) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!/^ 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, Element);\n\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(function (attribute) {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n _this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(function (_) {\n return _.trim();\n });\n styles.forEach(function (style) {\n if (!style) {\n return;\n }\n\n var _style$split = style.split(':'),\n _style$split2 = _slicedToArray(_style$split, 2),\n name = _style$split2[0],\n value = _style$split2[1];\n\n _this.styles[name] = new Property(document, name.trim(), value.trim());\n });\n }\n\n var definitions = document.definitions;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getValue()]) {\n definitions[id.getValue()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(function (childNode) {\n if (childNode.nodeType === 1) {\n _this.addChild(childNode); // ELEMENT_NODE\n\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n _this.addChild(textNode); // TEXT_NODE\n\n }\n }\n });\n }\n\n _createClass(Element, [{\n key: \"getAttribute\",\n value: function getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n }, {\n key: \"getHrefAttribute\",\n value: function getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || /:href$/.test(key)) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n }, {\n key: \"getStyle\",\n value: function getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var parent = this.parent;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n }, {\n key: \"render\",\n value: function render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n 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 filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n }, {\n key: \"setContext\",\n value: function setContext(_) {}\n }, {\n key: \"clearContext\",\n value: function clearContext(_) {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.children.forEach(function (child) {\n child.render(ctx);\n });\n }\n }, {\n key: \"addChild\",\n value: function addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n }, {\n key: \"matchesSelector\",\n value: function matchesSelector(selector) {\n var node = this.node;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = node.getAttribute('class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(function (styleClass) {\n if (\".\".concat(styleClass) === selector) {\n return true;\n }\n });\n }\n }, {\n key: \"addStylesFromStyleDefinition\",\n value: function addStylesFromStyleDefinition() {\n var _this$document = this.document,\n styles = _this$document.styles,\n stylesSpecificity = _this$document.stylesSpecificity;\n\n for (var selector in styles) {\n if (selector[0] !== '@' && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n }]);\n\n return Element;\n}();\nElement.ignoreChildTypes = ['title'];\n\nvar UnknownElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(UnknownElement, _Element);\n\n function UnknownElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, UnknownElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UnknownElement).call(this, document, node, captureTextNodes)); // tslint:disable-next-line: no-console\n\n console.warn(\"Element \".concat(node.nodeName, \" not yet implemented.\"));\n return _this;\n }\n\n return UnknownElement;\n}(Element);\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n\nvar Font =\n/*#__PURE__*/\nfunction () {\n function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n _classCallCheck(this, Font);\n\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n _createClass(Font, [{\n key: \"toString\",\n value: function toString() {\n return [this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ');\n }\n }], [{\n key: \"parse\",\n value: function parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(function (part) {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n var _part$split = part.split('/');\n\n var _part$split2 = _slicedToArray(_part$split, 1);\n\n fontSize = _part$split2[0];\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n }]);\n\n return Font;\n}();\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nvar BoundingBox =\n/*#__PURE__*/\nfunction () {\n function BoundingBox() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n\n _classCallCheck(this, BoundingBox);\n\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n _createClass(BoundingBox, [{\n key: \"addPoint\",\n value: function addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n }, {\n key: \"addX\",\n value: function addX(x) {\n this.addPoint(x, null);\n }\n }, {\n key: \"addY\",\n value: function addY(y) {\n this.addPoint(null, y);\n }\n }, {\n key: \"addBoundingBox\",\n value: function addBoundingBox(_ref) {\n var x1 = _ref.x1,\n y1 = _ref.y1,\n x2 = _ref.x2,\n y2 = _ref.y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n }, {\n key: \"sumCubic\",\n value: function sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n }, {\n key: \"bezierCurveAdd\",\n value: function bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n }, {\n key: \"addBezierCurve\",\n value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n }, {\n key: \"addQuadraticCurve\",\n value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n }, {\n key: \"isPointInBox\",\n value: function isPointInBox(x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this.x1;\n }\n }, {\n key: \"y\",\n get: function get() {\n return this.y1;\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.x2 - this.x1;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.y2 - this.y1;\n }\n }]);\n\n return BoundingBox;\n}();\n\nvar Translate =\n/*#__PURE__*/\nfunction () {\n function Translate(_, point) {\n _classCallCheck(this, Translate);\n\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n _createClass(Translate, [{\n key: \"apply\",\n value: function apply(ctx) {\n var _this$point = this.point,\n x = _this$point.x,\n y = _this$point.y;\n ctx.translate(x || 0.0, y || 0.0);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var _this$point2 = this.point,\n x = _this$point2.x,\n y = _this$point2.y;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var _this$point3 = this.point,\n x = _this$point3.x,\n y = _this$point3.y;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n }]);\n\n return Translate;\n}();\n\nvar Rotate =\n/*#__PURE__*/\nfunction () {\n function Rotate(document, rotate) {\n var transformOrigin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Rotate);\n\n this.type = 'rotate';\n this.angle = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.cx = (numbers[1] || 0) + (transformOrigin[0] || 0);\n this.cy = (numbers[2] || 0) + (transformOrigin[1] || 0);\n }\n\n _createClass(Rotate, [{\n key: \"apply\",\n value: function apply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n var rad = angle.getRadians(); // tslint:disable-next-line: no-console\n // console.warn('Unknown action:', (this as any).p, this);\n // ?\n\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n }]);\n\n return Rotate;\n}();\n\nvar Scale =\n/*#__PURE__*/\nfunction () {\n function Scale(_, scale) {\n _classCallCheck(this, Scale);\n\n this.type = 'scale';\n this.scale = null;\n var scaleSize = Point.parse(scale, 1); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n }\n\n _createClass(Scale, [{\n key: \"apply\",\n value: function apply(ctx) {\n var _this$scale = this.scale,\n x = _this$scale.x,\n y = _this$scale.y;\n ctx.scale(x, y || x);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var _this$scale2 = this.scale,\n x = _this$scale2.x,\n y = _this$scale2.y;\n ctx.scale(1.0 / x, 1.0 / y || x);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var _this$scale3 = this.scale,\n x = _this$scale3.x,\n y = _this$scale3.y;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n }]);\n\n return Scale;\n}();\n\nvar Matrix =\n/*#__PURE__*/\nfunction () {\n function Matrix(_, matrix) {\n _classCallCheck(this, Matrix);\n\n this.type = 'matrix';\n this.matrix = [];\n this.matrix = toNumbers(matrix);\n }\n\n _createClass(Matrix, [{\n key: \"apply\",\n value: function apply(ctx) {\n var matrix = this.matrix;\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var matrix = this.matrix;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n }]);\n\n return Matrix;\n}();\n\nvar Skew =\n/*#__PURE__*/\nfunction (_Matrix) {\n _inherits(Skew, _Matrix);\n\n function Skew(document, skew) {\n var _this;\n\n _classCallCheck(this, Skew);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skew).call(this, document, skew));\n _this.type = 'skew';\n _this.angle = null;\n _this.angle = new Property(document, 'angle', skew);\n return _this;\n }\n\n return Skew;\n}(Matrix);\n\nvar SkewX =\n/*#__PURE__*/\nfunction (_Skew) {\n _inherits(SkewX, _Skew);\n\n function SkewX(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewX);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkewX).call(this, document, skew));\n _this.type = 'skewX';\n _this.matrix = [1, 0, Math.tan(_this.angle.getRadians()), 1, 0, 0];\n return _this;\n }\n\n return SkewX;\n}(Skew);\n\nvar SkewY =\n/*#__PURE__*/\nfunction (_Skew) {\n _inherits(SkewY, _Skew);\n\n function SkewY(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewY);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkewY).call(this, document, skew));\n _this.type = 'skewY';\n _this.matrix = [1, Math.tan(_this.angle.getRadians()), 0, 1, 0, 0];\n return _this;\n }\n\n return SkewY;\n}(Skew);\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var _transform$split = transform.split('('),\n _transform$split2 = _slicedToArray(_transform$split, 2),\n type = _transform$split2[0],\n value = _transform$split2[1];\n\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform(document, transform, transformOrigin) {\n var _this = this;\n\n _classCallCheck(this, Transform);\n\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n var originCoords = transformOrigin ? toNumbers(transformOrigin) : [];\n data.forEach(function (transform) {\n if (transform === 'none') {\n return;\n }\n\n var _parseTransform = parseTransform(transform),\n _parseTransform2 = _slicedToArray(_parseTransform, 2),\n type = _parseTransform2[0],\n value = _parseTransform2[1];\n\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n _this.transforms.push(new TransformType(_this.document, value, originCoords));\n }\n });\n }\n\n _createClass(Transform, [{\n key: \"apply\",\n value: function apply(ctx) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n }], [{\n key: \"fromElement\",\n value: function fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var transformOriginStyle = element.getStyle('transform-origin', false, true);\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOriginStyle.getString());\n }\n\n return null;\n }\n }]);\n\n return Transform;\n}();\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nvar RenderedElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(RenderedElement, _Element);\n\n function RenderedElement() {\n var _this;\n\n _classCallCheck(this, RenderedElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(RenderedElement).apply(this, arguments));\n _this.modifiedEmSizeStack = false;\n return _this;\n }\n\n _createClass(RenderedElement, [{\n key: \"calculateOpacity\",\n value: function calculateOpacity() {\n var opacity = 1.0; // tslint:disable-next-line: no-this-assignment\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue()) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getValue());\n }\n\n var _fillStyle = fillStyleProp.getString();\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).getString();\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').getValue());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit');\n var pointOrderStyleProp = this.getStyle('paint-order');\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n }\n\n if (pointOrderStyleProp.hasValue()) {\n // ?\n ctx.paintOrder = pointOrderStyleProp.getValue();\n }\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else if (typeof ctx.webkitLineDash !== 'undefined') {\n ctx.webkitLineDash = gaps;\n } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n ctx.webkitLineDashOffset = offset;\n } else if (typeof ctx.mozDashOffset !== 'undefined') {\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n } // transform\n\n\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 } // opacity\n\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(RenderedElement.prototype), \"clearContext\", this).call(this, ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n }]);\n\n return RenderedElement;\n}(Element);\n\nvar TextElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(TextElement, _RenderedElement);\n\n function TextElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TextElement).call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes));\n _this.type = 'text';\n _this.x = 0;\n _this.y = 0;\n _this.measureCache = -1;\n return _this;\n }\n\n _createClass(TextElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _get(_getPrototypeOf(TextElement.prototype), \"setContext\", this).call(this, ctx, fromMeasure);\n\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n }, {\n key: \"initializeCoordinates\",\n value: function initializeCoordinates(ctx) {\n this.x = this.getAttribute('x').getPixels('x');\n this.y = this.getAttribute('y').getPixels('y');\n var dxAttr = this.getAttribute('dx');\n var dyAttr = this.getAttribute('dy');\n\n if (dxAttr.hasValue()) {\n this.x += dxAttr.getPixels('x');\n }\n\n if (dyAttr.hasValue()) {\n this.y += dyAttr.getPixels('y');\n }\n\n this.x += this.getAnchorDelta(ctx, this, 0);\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var _this2 = this;\n\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n\n this.initializeCoordinates(ctx);\n var boundingBox = null;\n this.children.forEach(function (_, i) {\n var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getFontSize\",\n value: function getFontSize() {\n var document = this.document,\n parent = this.parent;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n }, {\n key: \"getTElementBoundingBox\",\n value: function getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n }, {\n key: \"getGlyph\",\n value: function getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n glyph = font.glyphs[char][arabicForm];\n\n if (!glyph && font.glyphs[char].type === 'glyph') {\n glyph = font.glyphs[char];\n }\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n }, {\n key: \"getText\",\n value: function getText() {\n return '';\n }\n }, {\n key: \"getTextFromNode\",\n value: function getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces(textNode.value || textNode.text || textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n } else if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var _this3 = this;\n\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n\n this.initializeCoordinates(ctx);\n this.children.forEach(function (_, i) {\n _this3.renderChild(ctx, _this3, _this3, i);\n });\n var mouse = this.document.screen.mouse; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n }, {\n key: \"renderTElementChildren\",\n value: function renderTElementChildren(ctx) {\n var document = this.document,\n parent = this.parent;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var unitsPerEm = customFont.fontFace.unitsPerEm;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var x = this.x,\n y = this.y;\n\n if (ctx.paintOrder === 'stroke') {\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n } else {\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n }\n }\n }, {\n key: \"getAnchorDelta\",\n value: function getAnchorDelta(ctx, parent, startI) {\n var textAnchor = this.getStyle('text-anchor').getString('start');\n\n if (textAnchor !== 'start') {\n var children = parent.children;\n var len = children.length;\n var child = null;\n var width = 0;\n\n for (var i = startI; i < len; i++) {\n child = children[i];\n\n if (i > startI && child.getAttribute('x').hasValue() || child.getAttribute('text-anchor').hasValue()) {\n break; // new group\n }\n\n width += child.measureTextRecursive(ctx);\n }\n\n return -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n return 0;\n }\n }, {\n key: \"adjustChildCoordinates\",\n value: function adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var textAnchor = child.getAttribute('text-anchor').getString('start');\n\n if (i === 0 && child.type !== 'textNode') {\n if (!xAttr.hasValue()) {\n xAttr.setValue(textParent.getAttribute('x').getValue('0'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(textParent.getAttribute('y').getValue('0'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(textParent.getAttribute('dx').getValue('0'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(textParent.getAttribute('dy').getValue('0'));\n }\n }\n\n if (xAttr.hasValue()) {\n child.x = xAttr.getPixels('x') + textParent.getAnchorDelta(ctx, parent, i);\n\n if (textAnchor !== 'start') {\n var width = child.measureTextRecursive(ctx);\n child.x += -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (textAnchor !== 'start') {\n var _width = child.measureTextRecursive(ctx);\n\n textParent.x += -1 * (textAnchor === 'end' ? _width : _width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x + child.measureText(ctx);\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y;\n return child;\n }\n }, {\n key: \"getChildBoundingBox\",\n value: function getChildBoundingBox(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n var boundingBox = child.getBoundingBox(ctx);\n child.children.forEach(function (_, i) {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n }, {\n key: \"renderChild\",\n value: function renderChild(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n child.render(ctx);\n child.children.forEach(function (_, i) {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n }, {\n key: \"measureTextRecursive\",\n value: function measureTextRecursive(ctx) {\n var width = this.children.reduce(function (width, child) {\n return width + child.measureTextRecursive(ctx);\n }, this.measureText(ctx));\n return width;\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx) {\n var measureCache = this.measureCache;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n }, {\n key: \"measureTargetText\",\n value: function measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var parent = this.parent;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n\n var _ctx$measureText = ctx.measureText(targetText),\n measure = _ctx$measureText.width;\n\n ctx.restore();\n return measure;\n }\n }]);\n\n return TextElement;\n}(RenderedElement);\n\nvar TSpanElement =\n/*#__PURE__*/\nfunction (_TextElement) {\n _inherits(TSpanElement, _TextElement);\n\n function TSpanElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TSpanElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TSpanElement).call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === TSpanElement ? true : captureTextNodes));\n _this.type = 'tspan'; // if this node has children, then they own the text\n\n _this.text = _this.children.length > 0 ? '' : _this.getTextFromNode();\n return _this;\n }\n\n _createClass(TSpanElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }]);\n\n return TSpanElement;\n}(TextElement);\n\nvar TextNode =\n/*#__PURE__*/\nfunction (_TSpanElement) {\n _inherits(TextNode, _TSpanElement);\n\n function TextNode() {\n var _this;\n\n _classCallCheck(this, TextNode);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TextNode).apply(this, arguments));\n _this.type = 'textNode';\n return _this;\n }\n\n return TextNode;\n}(TSpanElement);\n\nfunction preparePath(path) {\n var d = path.replace(/,/gm, ' ') // get rid of all commas\n // As the end of a match can also be the start of the next match, we need to run this replace twice.\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([^\\s])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2') // prefix commands with spaces\n .replace(/([0-9])([+\\-])/gm, '$1 $2') // separate digits on +- signs\n // Again, we need to run this twice to find all occurances\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/([Aa](\\s+[0-9]+){3})\\s+([01])\\s*([01])/gm, '$1 $3 $4 '); // shorthand elliptical arc path syntax\n\n return compressSpaces(d).trim();\n}\n\nvar PathParser =\n/*#__PURE__*/\nfunction () {\n function PathParser(path) {\n _classCallCheck(this, PathParser);\n\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = '';\n this.tokens = [];\n this.i = -1;\n this.previousCommand = '';\n this.points = [];\n this.angles = [];\n this.tokens = preparePath(path).split(' ');\n }\n\n _createClass(PathParser, [{\n key: \"reset\",\n value: function reset() {\n this.i = -1;\n this.command = '';\n this.previousCommand = '';\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n }, {\n key: \"isEnd\",\n value: function isEnd() {\n var i = this.i,\n tokens = this.tokens;\n return i >= tokens.length - 1;\n }\n }, {\n key: \"isCommandOrEnd\",\n value: function isCommandOrEnd() {\n if (this.isEnd()) {\n return true;\n }\n\n var i = this.i,\n tokens = this.tokens;\n return /^[A-Za-z]$/.test(tokens[i + 1]);\n }\n }, {\n key: \"isRelativeCommand\",\n value: function isRelativeCommand() {\n switch (this.command) {\n case 'm':\n case 'l':\n case 'h':\n case 'v':\n case 'c':\n case 's':\n case 'q':\n case 't':\n case 'a':\n case 'z':\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"getToken\",\n value: function getToken() {\n this.i++;\n return this.tokens[this.i];\n }\n }, {\n key: \"getScalar\",\n value: function getScalar() {\n return parseFloat(this.getToken());\n }\n }, {\n key: \"nextCommand\",\n value: function nextCommand() {\n this.previousCommand = this.command;\n this.command = this.getToken();\n }\n }, {\n key: \"getPoint\",\n value: function getPoint() {\n var point = new Point(this.getScalar(), this.getScalar());\n return this.makeAbsolute(point);\n }\n }, {\n key: \"getAsControlPoint\",\n value: function getAsControlPoint() {\n var point = this.getPoint();\n this.control = point;\n return point;\n }\n }, {\n key: \"getAsCurrentPoint\",\n value: function getAsCurrentPoint() {\n var point = this.getPoint();\n this.current = point;\n return point;\n }\n }, {\n key: \"getReflectedControlPoint\",\n value: function getReflectedControlPoint() {\n var previousCommand = this.previousCommand.toLowerCase();\n\n if (previousCommand !== 'c' && previousCommand !== 's' && previousCommand !== 'q' && previousCommand !== 't') {\n return this.current;\n } // reflect point\n\n\n var _this$current = this.current,\n cx = _this$current.x,\n cy = _this$current.y,\n _this$control = this.control,\n ox = _this$control.x,\n oy = _this$control.y;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n }, {\n key: \"makeAbsolute\",\n value: function makeAbsolute(point) {\n if (this.isRelativeCommand()) {\n var _this$current2 = this.current,\n x = _this$current2.x,\n y = _this$current2.y;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n }, {\n key: \"addMarker\",\n value: function addMarker(point, from, priorTo) {\n var points = this.points,\n angles = this.angles; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n }, {\n key: \"addMarkerAngle\",\n value: function addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n }, {\n key: \"getMarkerPoints\",\n value: function getMarkerPoints() {\n return this.points;\n }\n }, {\n key: \"getMarkerAngles\",\n value: function getMarkerAngles() {\n var angles = this.angles;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n }]);\n\n return PathParser;\n}();\n\nvar PathElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(PathElement, _RenderedElement);\n\n function PathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PathElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PathElement).call(this, document, node, captureTextNodes));\n _this.type = 'path';\n _this.pathParser = null;\n _this.pathParser = new PathParser(_this.getAttribute('d').getString());\n return _this;\n }\n\n _createClass(PathElement, [{\n key: \"path\",\n value: function path(ctx) {\n var pathParser = this.pathParser;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n pathParser.nextCommand();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n this.pathM(ctx, boundingBox);\n break;\n\n case 'L':\n case 'l':\n this.pathL(ctx, boundingBox);\n break;\n\n case 'H':\n case 'h':\n this.pathH(ctx, boundingBox);\n break;\n\n case 'V':\n case 'v':\n this.pathV(ctx, boundingBox);\n break;\n\n case 'C':\n case 'c':\n this.pathC(ctx, boundingBox);\n break;\n\n case 'S':\n case 's':\n this.pathS(ctx, boundingBox);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(ctx, boundingBox);\n break;\n\n case 'T':\n case 't':\n this.pathT(ctx, boundingBox);\n break;\n\n case 'A':\n case 'a':\n this.pathA(ctx, boundingBox);\n break;\n\n case 'Z':\n case 'z':\n this.pathZ(ctx, boundingBox);\n break;\n\n default:\n }\n }\n\n return boundingBox;\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(_) {\n return this.path();\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var pathParser = this.pathParser;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map(function (point, i) {\n return [point, angles[i]];\n });\n return markers;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n ctx.stroke();\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n\n var _markers$ = _slicedToArray(markers[0], 2),\n point = _markers$[0],\n angle = _markers$[1];\n\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var _markers$i = _slicedToArray(markers[i], 2),\n _point = _markers$i[0],\n _angle = _markers$i[1];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var _markers$markersLastI = _slicedToArray(markers[markersLastIndex], 2),\n _point2 = _markers$markersLastI[0],\n _angle2 = _markers$markersLastI[1];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n }, {\n key: \"pathM\",\n value: function pathM(ctx, boundingBox) {\n var pathParser = this.pathParser;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _point3 = pathParser.getAsCurrentPoint();\n\n var _x = _point3.x,\n _y = _point3.y;\n pathParser.addMarker(_point3, pathParser.start);\n boundingBox.addPoint(_x, _y);\n\n if (ctx) {\n ctx.lineTo(_x, _y);\n }\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }\n }, {\n key: \"pathH\",\n value: function pathH(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathV\",\n value: function pathV(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathC\",\n value: function pathC(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }\n }, {\n key: \"pathA\",\n value: function pathA(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0);\n var largeArcFlag = pathParser.getScalar();\n var sweepFlag = pathParser.getScalar();\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]); // angle delta\n\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = vectorsAngle(u, v);\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n } // for markers\n\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rx * Math.cos(ah), centp.y + ry * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rx > ry ? rx : ry;\n var sx = rx > ry ? 1 : rx / ry;\n var sy = rx > ry ? ry / rx : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n }\n }, {\n key: \"pathZ\",\n value: function pathZ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n\n pathParser.current = pathParser.start;\n }\n }]);\n\n return PathElement;\n}(RenderedElement);\n\nvar SVGElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(SVGElement, _RenderedElement);\n\n function SVGElement() {\n var _this;\n\n _classCallCheck(this, SVGElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SVGElement).apply(this, arguments));\n _this.type = 'svg';\n _this.root = false;\n return _this;\n }\n\n _createClass(SVGElement, [{\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(SVGElement.prototype), \"clearContext\", this).call(this, ctx);\n\n this.document.screen.viewPort.removeCurrent();\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var document = this.document;\n var screen = document.screen,\n window = document.window;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n }\n\n _get(_getPrototypeOf(SVGElement.prototype), \"setContext\", this).call(this, ctx); // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n var _screen$viewPort = screen.viewPort,\n width = _screen$viewPort.width,\n height = _screen$viewPort.height;\n\n if (!this.getAttribute('width').hasValue()) {\n this.getAttribute('width', true).setValue('100%');\n }\n\n if (!this.getAttribute('height').hasValue()) {\n this.getAttribute('height', true).setValue('100%');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getAttribute('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getAttribute('width').getPixels('x');\n height = this.getAttribute('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height);\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX: minX,\n minY: minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip: clip,\n clipX: clipX,\n clipY: clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n /**\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 key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n }]);\n\n return SVGElement;\n}(RenderedElement);\n\nvar RectElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(RectElement, _PathElement);\n\n function RectElement() {\n var _this;\n\n _classCallCheck(this, RectElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(RectElement).apply(this, arguments));\n _this.type = 'rect';\n return _this;\n }\n\n _createClass(RectElement, [{\n key: \"path\",\n value: function path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getAttribute('width').getPixels('x');\n var height = this.getAttribute('height').getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return RectElement;\n}(PathElement);\n\nvar CircleElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(CircleElement, _PathElement);\n\n function CircleElement() {\n var _this;\n\n _classCallCheck(this, CircleElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CircleElement).apply(this, arguments));\n _this.type = 'circle';\n return _this;\n }\n\n _createClass(CircleElement, [{\n key: \"path\",\n value: function path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return CircleElement;\n}(PathElement);\n\nvar EllipseElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(EllipseElement, _PathElement);\n\n function EllipseElement() {\n var _this;\n\n _classCallCheck(this, EllipseElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(EllipseElement).apply(this, arguments));\n _this.type = 'ellipse';\n return _this;\n }\n\n _createClass(EllipseElement, [{\n key: \"path\",\n value: function path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return EllipseElement;\n}(PathElement);\n\nvar LineElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(LineElement, _PathElement);\n\n function LineElement() {\n var _this;\n\n _classCallCheck(this, LineElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LineElement).apply(this, arguments));\n _this.type = 'line';\n return _this;\n }\n\n _createClass(LineElement, [{\n key: \"getPoints\",\n value: function getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var _this$getPoints = this.getPoints(),\n _this$getPoints2 = _slicedToArray(_this$getPoints, 2),\n _this$getPoints2$ = _this$getPoints2[0],\n x0 = _this$getPoints2$.x,\n y0 = _this$getPoints2$.y,\n _this$getPoints2$2 = _this$getPoints2[1],\n x1 = _this$getPoints2$2.x,\n y1 = _this$getPoints2$2.y;\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var _this$getPoints3 = this.getPoints(),\n _this$getPoints4 = _slicedToArray(_this$getPoints3, 2),\n p0 = _this$getPoints4[0],\n p1 = _this$getPoints4[1];\n\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n }]);\n\n return LineElement;\n}(PathElement);\n\nvar PolylineElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(PolylineElement, _PathElement);\n\n function PolylineElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PolylineElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PolylineElement).call(this, document, node, captureTextNodes));\n _this.type = 'polyline';\n _this.points = [];\n _this.points = Point.parsePath(_this.getAttribute('points').getString());\n return _this;\n }\n\n _createClass(PolylineElement, [{\n key: \"path\",\n value: function path(ctx) {\n var points = this.points;\n\n var _points = _slicedToArray(points, 1),\n _points$ = _points[0],\n x0 = _points$.x,\n y0 = _points$.y;\n\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var points = this.points;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach(function (point, i) {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n }]);\n\n return PolylineElement;\n}(PathElement);\n\nvar PolygonElement =\n/*#__PURE__*/\nfunction (_PolylineElement) {\n _inherits(PolygonElement, _PolylineElement);\n\n function PolygonElement() {\n var _this;\n\n _classCallCheck(this, PolygonElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PolygonElement).apply(this, arguments));\n _this.type = 'polygon';\n return _this;\n }\n\n _createClass(PolygonElement, [{\n key: \"path\",\n value: function path(ctx) {\n var boundingBox = _get(_getPrototypeOf(PolygonElement.prototype), \"path\", this).call(this, ctx);\n\n var _this$points = _slicedToArray(this.points, 1),\n _this$points$ = _this$points[0],\n x = _this$points$.x,\n y = _this$points$.y;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n }]);\n\n return PolygonElement;\n}(PolylineElement);\n\nvar PatternElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(PatternElement, _Element);\n\n function PatternElement() {\n var _this;\n\n _classCallCheck(this, PatternElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PatternElement).apply(this, arguments));\n _this.type = 'pattern';\n return _this;\n }\n\n _createClass(PatternElement, [{\n key: \"createPattern\",\n value: function createPattern(ctx, _, parentOpacityProp) {\n var width = this.getAttribute('width').getPixels('x', true);\n var height = this.getAttribute('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n }]);\n\n return PatternElement;\n}(Element);\n\nvar MarkerElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(MarkerElement, _Element);\n\n function MarkerElement() {\n var _this;\n\n _classCallCheck(this, MarkerElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MarkerElement).apply(this, arguments));\n _this.type = 'marker';\n return _this;\n }\n\n _createClass(MarkerElement, [{\n key: \"render\",\n value: function render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var x = point.x,\n y = point.y;\n var orient = this.getAttribute('orient').getValue('auto');\n var markerUnits = this.getAttribute('markerUnits').getValue('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getValue('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n }]);\n\n return MarkerElement;\n}(Element);\n\nvar DefsElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(DefsElement, _Element);\n\n function DefsElement() {\n var _this;\n\n _classCallCheck(this, DefsElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DefsElement).apply(this, arguments));\n _this.type = 'defs';\n return _this;\n }\n\n _createClass(DefsElement, [{\n key: \"render\",\n value: function render() {// NOOP\n }\n }]);\n\n return DefsElement;\n}(Element);\n\nvar GElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(GElement, _RenderedElement);\n\n function GElement() {\n var _this;\n\n _classCallCheck(this, GElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(GElement).apply(this, arguments));\n _this.type = 'g';\n return _this;\n }\n\n _createClass(GElement, [{\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n }]);\n\n return GElement;\n}(RenderedElement);\n\nvar GradientElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(GradientElement, _Element);\n\n function GradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GradientElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(GradientElement).call(this, document, node, captureTextNodes));\n _this.attributesToInherit = ['gradientUnits'];\n _this.stops = [];\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n stops = _assertThisInitialize.stops,\n children = _assertThisInitialize.children;\n\n children.forEach(function (child) {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n return _this;\n }\n\n _createClass(GradientElement, [{\n key: \"getGradientUnits\",\n value: function getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n }, {\n key: \"createGradient\",\n value: function createGradient(ctx, element, parentOpacityProp) {\n var _this2 = this;\n\n // tslint:disable-next-line: no-this-assignment\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var _stopsContainer = stopsContainer,\n stops = _stopsContainer.stops;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(function (stop) {\n gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var document = this.document;\n var _document$screen = document.screen,\n MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,\n viewPort = _document$screen.viewPort;\n\n var _viewPort$viewPorts = _slicedToArray(viewPort.viewPorts, 1),\n rootView = _viewPort$viewPorts[0];\n\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n }, {\n key: \"inheritStopContainer\",\n value: function inheritStopContainer(stopsContainer) {\n var _this3 = this;\n\n this.attributesToInherit.forEach(function (attributeToInherit) {\n if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n }, {\n key: \"addParentOpacity\",\n value: function addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getString();\n }\n\n return color;\n }\n }]);\n\n return GradientElement;\n}(Element);\n\nvar LinearGradientElement =\n/*#__PURE__*/\nfunction (_GradientElement) {\n _inherits(LinearGradientElement, _GradientElement);\n\n function LinearGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, LinearGradientElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LinearGradientElement).call(this, document, node, captureTextNodes));\n _this.type = 'linearGradient';\n\n _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n\n return _this;\n }\n\n _createClass(LinearGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var boundingBox = this.getGradientUnits() === 'objectBoundingBox' ? element.getBoundingBox(ctx) : null;\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 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n }]);\n\n return LinearGradientElement;\n}(GradientElement);\n\nvar RadialGradientElement =\n/*#__PURE__*/\nfunction (_GradientElement) {\n _inherits(RadialGradientElement, _GradientElement);\n\n function RadialGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, RadialGradientElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(RadialGradientElement).call(this, document, node, captureTextNodes));\n _this.type = 'radialGradient';\n\n _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n\n return _this;\n }\n\n _createClass(RadialGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var boundingBox = element.getBoundingBox(ctx);\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 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = this.getGradientUnits() === 'objectBoundingBox' ? 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 = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = this.getGradientUnits() === 'objectBoundingBox' ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = this.getGradientUnits() === 'objectBoundingBox' ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n }]);\n\n return RadialGradientElement;\n}(GradientElement);\n\nvar StopElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(StopElement, _Element);\n\n function StopElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StopElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StopElement).call(this, document, node, captureTextNodes));\n _this.type = 'stop';\n var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));\n\n var stopOpacity = _this.getStyle('stop-opacity');\n\n var stopColor = _this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n _this.offset = offset;\n _this.color = stopColor.getString();\n return _this;\n }\n\n return StopElement;\n}(Element);\n\nvar AnimateElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(AnimateElement, _Element);\n\n function AnimateElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AnimateElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AnimateElement).call(this, document, node, captureTextNodes));\n _this.type = 'animate';\n _this.duration = 0;\n _this.initialValue = null;\n _this.initialUnits = '';\n _this.removed = false;\n _this.frozen = false;\n document.screen.animations.push(_assertThisInitialized(_this));\n _this.begin = _this.getAttribute('begin').getMilliseconds();\n _this.maxDuration = _this.begin + _this.getAttribute('dur').getMilliseconds();\n _this.from = _this.getAttribute('from');\n _this.to = _this.getAttribute('to');\n _this.values = _this.getAttribute('values');\n\n if (_this.values.hasValue()) {\n _this.values.setValue(_this.values.getString().split(';'));\n }\n\n return _this;\n }\n\n _createClass(AnimateElement, [{\n key: \"getProperty\",\n value: function getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n }, {\n key: \"calcValue\",\n value: function calcValue() {\n var initialUnits = this.initialUnits;\n\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n }, {\n key: \"update\",\n value: function update(delta) {\n var parent = this.parent;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n }, {\n key: \"getProgress\",\n value: function getProgress() {\n var document = this.document,\n values = this.values;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n }]);\n\n return AnimateElement;\n}(Element);\n\nvar AnimateColorElement =\n/*#__PURE__*/\nfunction (_AnimateElement) {\n _inherits(AnimateColorElement, _AnimateElement);\n\n function AnimateColorElement() {\n var _this;\n\n _classCallCheck(this, AnimateColorElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AnimateColorElement).apply(this, arguments));\n _this.type = 'animateColor';\n return _this;\n }\n\n _createClass(AnimateColorElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to;\n\n var colorFrom = new RGBColor(from.getString());\n var colorTo = new RGBColor(to.getString());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(parseInt(r, 10), \", \").concat(parseInt(g, 10), \", \").concat(parseInt(b, 10), \")\");\n }\n\n return this.getAttribute('from').getString();\n }\n }]);\n\n return AnimateColorElement;\n}(AnimateElement);\n\nvar AnimateTransformElement =\n/*#__PURE__*/\nfunction (_AnimateElement) {\n _inherits(AnimateTransformElement, _AnimateElement);\n\n function AnimateTransformElement() {\n var _this;\n\n _classCallCheck(this, AnimateTransformElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AnimateTransformElement).apply(this, arguments));\n _this.type = 'animateTransform';\n return _this;\n }\n\n _createClass(AnimateTransformElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map(function (from, i) {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n }]);\n\n return AnimateTransformElement;\n}(AnimateElement);\n\nvar FontElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FontElement, _Element);\n\n function FontElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FontElement).call(this, document, node, captureTextNodes));\n _this.type = 'font';\n _this.glyphs = {};\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n var definitions = document.definitions;\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n children = _assertThisInitialize.children;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var child = _step.value;\n\n switch (child.type) {\n case 'font-face':\n {\n _this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = _assertThisInitialized(_this);\n }\n\n break;\n }\n\n case 'missing-glyph':\n _this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n _this.isRTL = true;\n _this.isArabic = true;\n\n if (typeof _this.glyphs[glyph.unicode] === 'undefined') {\n _this.glyphs[glyph.unicode] = {};\n }\n\n _this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n _this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n\n default:\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _this;\n }\n\n _createClass(FontElement, [{\n key: \"render\",\n value: function render() {// NO RENDER\n }\n }]);\n\n return FontElement;\n}(Element);\n\nvar FontFaceElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FontFaceElement, _Element);\n\n function FontFaceElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontFaceElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FontFaceElement).call(this, document, node, captureTextNodes));\n _this.type = 'font-face';\n _this.ascent = _this.getAttribute('ascent').getNumber();\n _this.descent = _this.getAttribute('descent').getNumber();\n _this.unitsPerEm = _this.getAttribute('units-per-em').getNumber();\n return _this;\n }\n\n return FontFaceElement;\n}(Element);\n\nvar MissingGlyphElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(MissingGlyphElement, _PathElement);\n\n function MissingGlyphElement() {\n var _this;\n\n _classCallCheck(this, MissingGlyphElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MissingGlyphElement).apply(this, arguments));\n _this.type = 'missing-glyph';\n _this.horizAdvX = 0;\n return _this;\n }\n\n return MissingGlyphElement;\n}(PathElement);\n\nvar GlyphElement =\n/*#__PURE__*/\nfunction (_PathElement) {\n _inherits(GlyphElement, _PathElement);\n\n function GlyphElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GlyphElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(GlyphElement).call(this, document, node, captureTextNodes));\n _this.type = 'glyph';\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n _this.unicode = _this.getAttribute('unicode').getString();\n _this.arabicForm = _this.getAttribute('arabic-form').getString();\n return _this;\n }\n\n return GlyphElement;\n}(PathElement);\n\nvar TRefElement =\n/*#__PURE__*/\nfunction (_TextElement) {\n _inherits(TRefElement, _TextElement);\n\n function TRefElement() {\n var _this;\n\n _classCallCheck(this, TRefElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TRefElement).apply(this, arguments));\n _this.type = 'tref';\n return _this;\n }\n\n _createClass(TRefElement, [{\n key: \"getText\",\n value: function getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n }]);\n\n return TRefElement;\n}(TextElement);\n\nvar AElement =\n/*#__PURE__*/\nfunction (_TextElement) {\n _inherits(AElement, _TextElement);\n\n function AElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AElement).call(this, document, node, captureTextNodes));\n _this.type = 'a';\n var childNodes = node.childNodes;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(function (node) {\n return node.nodeType === 3;\n });\n _this.hasText = hasText;\n _this.text = hasText ? _this.getTextFromNode(firstChild) : '';\n return _this;\n }\n\n _createClass(AElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n _get(_getPrototypeOf(AElement.prototype), \"renderChildren\", this).call(this, ctx);\n\n var document = this.document,\n x = this.x,\n y = this.y;\n var mouse = document.screen.mouse;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick() {\n var window = this.document.window;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n }]);\n\n return AElement;\n}(TextElement);\n\nvar TextPathElement =\n/*#__PURE__*/\nfunction (_TextElement) {\n _inherits(TextPathElement, _TextElement);\n\n function TextPathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextPathElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TextPathElement).call(this, document, node, captureTextNodes));\n _this.type = 'textPath';\n _this.textWidth = 0;\n _this.textHeight = 0;\n _this.pathLength = -1;\n _this.glyphInfo = null;\n _this.letterSpacingCache = [];\n _this.measuresCache = new Map([['', 0]]);\n\n var pathElement = _this.getHrefAttribute().getDefinition();\n\n _this.text = _this.getTextFromNode();\n _this.dataArray = _this.parsePathData(pathElement);\n return _this;\n }\n\n _createClass(TextPathElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var dataArray = this.dataArray;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(function (_ref) {\n var command = _ref.command,\n points = _ref.points;\n\n switch (command) {\n case 'L':\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case 'M':\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case 'C':\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case 'Q':\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case 'A':\n {\n var cx = points[0];\n var cy = points[1];\n var rx = points[2];\n var ry = points[3];\n var theta = points[4];\n var dTheta = points[5];\n var psi = points[6];\n var fs = points[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case 'z':\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n\n default:\n }\n });\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var glyphInfo = this.glyphInfo;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach(function (glyph, i) {\n var p0 = glyph.p0,\n p1 = glyph.p1,\n partialText = glyph.text;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(glyphInfo[i].rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } //// To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n }, {\n key: \"getLetterSpacingAt\",\n value: function getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n }, {\n key: \"findSegmentToFitChar\",\n value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var segment = {\n p0: this.getEquidistantPointOnPath(offset, splineStep),\n p1: this.getEquidistantPointOnPath(offset + glyphWidth, splineStep)\n };\n offset += glyphWidth;\n return {\n offset: offset,\n segment: segment\n };\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx, text) {\n var measuresCache = this.measuresCache;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n }, {\n key: \"setTextData\",\n value: function setTextData(ctx) {\n var _this2 = this;\n\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = toNumbers(this.parent.getAttribute('dx').getString('0'));\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce(function (acc, cur) {\n return acc + cur || 0;\n }, 0);\n this.textWidth = this.measureText(ctx);\n this.textHeight = this.getFontSize();\n var textFullWidth = Math.max(this.textWidth + dxSum, 0);\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach(function (char, i) {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, char, i),\n nextOffset = _this2$findSegmentToF.offset,\n segment = _this2$findSegmentToF.segment;\n\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n }\n\n var width = _this2.getLineLength(segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y); // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n\n\n var kern = 0; // placeholder for future implementation\n\n var midpoint = _this2.getPointOnLine(kern + width / 2.0, segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y);\n\n var rotation = Math.atan2(segment.p1.y - segment.p0.y, segment.p1.x - segment.p0.x);\n\n _this2.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation: rotation\n });\n });\n }\n }, {\n key: \"parsePathData\",\n value: function parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var pathParser = path.pathParser;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var current = pathParser.current;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var cmd = '';\n var points = [];\n pathParser.nextCommand();\n var upperCommand = pathParser.command.toUpperCase();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n cmd = this.pathM(pathParser, points);\n break;\n\n case 'L':\n case 'l':\n cmd = this.pathL(pathParser, points);\n break;\n\n case 'H':\n case 'h':\n cmd = this.pathH(pathParser, points);\n break;\n\n case 'V':\n case 'v':\n cmd = this.pathV(pathParser, points);\n break;\n\n case 'C':\n case 'c':\n this.pathC(pathParser, points);\n break;\n\n case 'S':\n case 's':\n cmd = this.pathS(pathParser, points);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(pathParser, points);\n break;\n\n case 'T':\n case 't':\n cmd = this.pathT(pathParser, points);\n break;\n\n case 'A':\n case 'a':\n points = this.pathA(pathParser);\n break;\n\n case 'Z':\n case 'z':\n pathParser.current = pathParser.start;\n break;\n\n default:\n }\n\n if (upperCommand !== 'Z') {\n pathCommands.push({\n command: cmd || upperCommand,\n points: points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, cmd || upperCommand, points)\n });\n } else {\n pathCommands.push({\n command: 'z',\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n }, {\n key: \"pathM\",\n value: function pathM(pathParser, points) {\n var p = pathParser.getAsCurrentPoint(); // pathParser.addMarker(p);\n\n points.push(p.x, p.y);\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _p = pathParser.getAsCurrentPoint();\n\n points.push(_p.x, _p.y);\n return 'L';\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var p = pathParser.getAsCurrentPoint();\n points.push(p.x, p.y);\n }\n\n return 'L';\n }\n }, {\n key: \"pathH\",\n value: function pathH(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathV\",\n value: function pathV(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathC\",\n value: function pathC(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'C';\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'Q';\n }\n }, {\n key: \"pathA\",\n value: function pathA(pathParser) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current; // x1, y1\n\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0); // φ\n\n var largeArcFlag = pathParser.getScalar(); // fA\n\n var sweepFlag = pathParser.getScalar(); // fS\n\n var currentPoint = pathParser.getAsCurrentPoint(); // x2, y2\n // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n if (sweepFlag === 0 && ad > 0) {\n ad = ad - 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad = ad + 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rx, ry, a1, ad, xAxisRotation, sweepFlag];\n }\n }\n }, {\n key: \"calcLength\",\n value: function calcLength(x, y, cmd, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (cmd) {\n case 'L':\n return this.getLineLength(x, y, points[0], points[1]);\n\n case 'C':\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case 'Q':\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case 'A':\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n\n default:\n }\n\n return 0;\n }\n }, {\n key: \"getPointOnLine\",\n value: function getPointOnLine(dist, P1x, P1y, P2x, P2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : P1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : P1y;\n var m = (P2y - P1y) / (P2x - P1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (P2x === P1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - P1y) / (fromX - P1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n }, {\n key: \"getPointOnPath\",\n value: function getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var dataArray = this.dataArray;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = dataArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var pathCmd = _step.value;\n\n if (pathCmd && (pathCmd.pathLength < 0.00005 || cumulativePathLength + pathCmd.pathLength + 0.00005 < distance)) {\n cumulativePathLength += pathCmd.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (pathCmd.command) {\n case 'L':\n p = this.getPointOnLine(delta, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.start.x, pathCmd.start.y);\n break;\n\n case 'A':\n var start = pathCmd.points[4]; // 4 = theta\n\n var dTheta = pathCmd.points[5]; // 5 = dTheta\n\n var end = pathCmd.points[4] + dTheta;\n currentT = start + delta / pathCmd.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\n break;\n\n case 'C':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\n break;\n\n case 'Q':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\n break;\n\n default:\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"getLineLength\",\n value: function getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n }, {\n key: \"getPathLength\",\n value: function getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce(function (length, command) {\n return command.pathLength > 0 ? length + command.pathLength : length;\n }, 0);\n }\n\n return this.pathLength;\n }\n }, {\n key: \"getPointOnCubicBezier\",\n value: function getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnQuadraticBezier\",\n value: function getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnEllipticalArc\",\n value: function getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n }, {\n key: \"buildEquidistantCache\",\n value: function buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step: step,\n precision: precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n }, {\n key: \"getEquidistantPointOnPath\",\n value: function getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n }]);\n\n return TextPathElement;\n}(TextElement);\n\nvar ImageElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(ImageElement, _RenderedElement);\n\n function ImageElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, ImageElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageElement).call(this, document, node, captureTextNodes));\n _this.type = 'image';\n _this.loaded = false;\n\n var href = _this.getHrefAttribute().getString();\n\n if (!href) {\n return _possibleConstructorReturn(_this);\n }\n\n var isSvg = /\\.svg$/.test(href);\n document.images.push(_assertThisInitialized(_this));\n\n if (!isSvg) {\n _this.loadImage(href);\n } else {\n _this.loadSvg(href);\n }\n\n _this.isSvg = isSvg;\n return _this;\n }\n\n _createClass(ImageElement, [{\n key: \"loadImage\",\n value: function () {\n var _loadImage = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee(href) {\n var image;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return this.document.createImage(href);\n\n case 3:\n image = _context.sent;\n this.image = image;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"ERROR: image \\\"\".concat(href, \"\\\" not found\"), _context.t0);\n\n case 10:\n this.loaded = true;\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function loadImage(_x) {\n return _loadImage.apply(this, arguments);\n }\n\n return loadImage;\n }()\n }, {\n key: \"loadSvg\",\n value: function () {\n var _loadSvg = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee2(href) {\n var response, svg;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return this.document.fetch(href);\n\n case 3:\n response = _context2.sent;\n _context2.next = 6;\n return response.text();\n\n case 6:\n svg = _context2.sent;\n this.image = svg;\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"ERROR: image \\\"\".concat(href, \"\\\" not found\"), _context2.t0);\n\n case 13:\n this.loaded = true;\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 10]]);\n }));\n\n function loadSvg(_x2) {\n return _loadSvg.apply(this, arguments);\n }\n\n return loadSvg;\n }()\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getAttribute('width').getPixels('x');\n var height = this.getAttribute('height').getPixels('y');\n\n if (!width || !height) {\n return;\n }\n\n ctx.save();\n\n if (this.isSvg) {\n document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: x,\n offsetY: y,\n scaleWidth: width,\n scaleHeight: height\n }).render();\n } else {\n var image = this.image;\n ctx.translate(x, y);\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: width,\n desiredWidth: image.width,\n height: height,\n desiredHeight: image.height\n });\n\n if (this.loaded) {\n if (typeof image.complete === 'undefined' || image.complete) {\n ctx.drawImage(image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getAttribute('width').getPixels('x');\n var height = this.getAttribute('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n }]);\n\n return ImageElement;\n}(RenderedElement);\n\nvar SymbolElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(SymbolElement, _RenderedElement);\n\n function SymbolElement() {\n var _this;\n\n _classCallCheck(this, SymbolElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SymbolElement).apply(this, arguments));\n _this.type = 'symbol';\n return _this;\n }\n\n _createClass(SymbolElement, [{\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return SymbolElement;\n}(RenderedElement);\n\nvar SVGFontLoader =\n/*#__PURE__*/\nfunction () {\n function SVGFontLoader(document) {\n _classCallCheck(this, SVGFontLoader);\n\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n _createClass(SVGFontLoader, [{\n key: \"load\",\n value: function () {\n var _load = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee(fontFamily, url) {\n var document, svgDocument, fonts;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n document = this.document;\n _context.next = 4;\n return document.canvg.parser.load(url);\n\n case 4:\n svgDocument = _context.sent;\n fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(function (fontNode) {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"ERROR: font \\\"\".concat(url, \"\\\" not found\"), _context.t0);\n\n case 12:\n this.loaded = true;\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 9]]);\n }));\n\n function load(_x, _x2) {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return SVGFontLoader;\n}();\n\nvar StyleElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(StyleElement, _Element);\n\n function StyleElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StyleElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StyleElement).call(this, document, node, captureTextNodes));\n _this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes).map(function (_) {\n return _.data;\n }).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*\\/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments;\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(function (_) {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(function (_) {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(function (cssProp) {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(function (src) {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n return _this;\n }\n\n return StyleElement;\n}(Element);\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nvar UseElement =\n/*#__PURE__*/\nfunction (_RenderedElement) {\n _inherits(UseElement, _RenderedElement);\n\n function UseElement() {\n var _this;\n\n _classCallCheck(this, UseElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UseElement).apply(this, arguments));\n _this.type = 'use';\n return _this;\n }\n\n _createClass(UseElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n _get(_getPrototypeOf(UseElement.prototype), \"setContext\", this).call(this, ctx);\n\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var element = this.element;\n\n if (element) {\n element.path(ctx);\n }\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n element = this.element;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children;\n }\n\n if (tempSvg.type === 'svg') {\n var widthAttr = this.getAttribute('width');\n var heightAttr = this.getAttribute('height'); // if symbol or svg, inherit width/height from me\n\n if (widthAttr.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', this.getAttribute('width').getString());\n }\n\n if (heightAttr.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightAttr.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = null;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var element = this.element;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n }, {\n key: \"elementTransform\",\n value: function elementTransform() {\n var document = this.document,\n element = this.element;\n return Transform.fromElement(document, element);\n }\n }, {\n key: \"element\",\n get: function get() {\n if (!this._element) {\n this._element = this.getHrefAttribute().getDefinition();\n }\n\n return this._element;\n }\n }]);\n\n return UseElement;\n}(RenderedElement);\n\nfunction imGet(img, x, y, width, _, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * (mi < 0 ? v - 255 : v);\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nvar FeColorMatrixElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FeColorMatrixElement, _Element);\n\n function FeColorMatrixElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeColorMatrixElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FeColorMatrixElement).call(this, document, node, captureTextNodes));\n _this.type = 'feColorMatrix';\n var matrix = toNumbers(_this.getAttribute('values').getString());\n\n switch (_this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'luminanceToAlpha':\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n break;\n\n default:\n }\n\n _this.matrix = matrix;\n _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();\n return _this;\n }\n\n _createClass(FeColorMatrixElement, [{\n key: \"apply\",\n value: function apply(ctx, _, __, width, height) {\n // assuming x==0 && y==0 for now\n var includeOpacity = this.includeOpacity,\n matrix = this.matrix;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = ng = nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n }]);\n\n return FeColorMatrixElement;\n}(Element);\n\nvar MaskElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(MaskElement, _Element);\n\n function MaskElement() {\n var _this;\n\n _classCallCheck(this, MaskElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MaskElement).apply(this, arguments));\n _this.type = 'mask';\n return _this;\n }\n\n _createClass(MaskElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n var document = this.document; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getAttribute('width').getPixels('x');\n var height = this.getAttribute('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n } // temporarily remove mask to avoid recursion\n\n\n var mask = element.getStyle('mask').getString();\n element.getStyle('mask').setValue('');\n var cMask = document.createCanvas(x + width, y + height);\n var maskCtx = cMask.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 var cm = 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 });\n cm.apply(maskCtx, 0, 0, x + width, y + height);\n var c = document.createCanvas(x + width, y + height);\n var tempCtx = c.getContext('2d');\n document.screen.setDefaults(tempCtx);\n element.render(tempCtx);\n tempCtx.globalCompositeOperation = 'destination-in';\n tempCtx.fillStyle = maskCtx.createPattern(cMask, 'no-repeat');\n tempCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tempCtx.createPattern(c, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n element.getStyle('mask').setValue(mask);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return MaskElement;\n}(Element);\n\nvar noop = function noop() {};\n\nvar ClipPathElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(ClipPathElement, _Element);\n\n function ClipPathElement() {\n var _this;\n\n _classCallCheck(this, ClipPathElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ClipPathElement).apply(this, arguments));\n _this.type = 'clipPath';\n return _this;\n }\n\n _createClass(ClipPathElement, [{\n key: \"apply\",\n value: function apply(ctx) {\n var document = this.document;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var beginPath = ctx.beginPath,\n closePath = ctx.closePath;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(function (child) {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return ClipPathElement;\n}(Element);\n\nvar FilterElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FilterElement, _Element);\n\n function FilterElement() {\n var _this;\n\n _classCallCheck(this, FilterElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FilterElement).apply(this, arguments));\n _this.type = 'filter';\n return _this;\n }\n\n _createClass(FilterElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n // render as temp svg\n var document = this.document;\n var boundingBox = element.getBoundingBox(ctx);\n var x = Math.floor(boundingBox.x1);\n var y = Math.floor(boundingBox.y1);\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height); // temporarily remove filter to avoid recursion\n\n var filter = element.getStyle('filter').getString();\n element.getStyle('filter').setValue('');\n var px = 0;\n var py = 0;\n this.children.forEach(function (child) {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var tmpCanvas = document.createCanvas(width + 2 * px, height + 2 * py);\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 this.children.forEach(function (child) {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, width + 2 * px, height + 2 * py);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py); // reassign filter\n\n element.getStyle('filter', true).setValue(filter);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return FilterElement;\n}(Element);\n\nvar FeDropShadowElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FeDropShadowElement, _Element);\n\n function FeDropShadowElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeDropShadowElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FeDropShadowElement).call(this, document, node, captureTextNodes));\n _this.type = 'feDropShadow';\n\n _this.addStylesFromStyleDefinition();\n\n return _this;\n }\n\n _createClass(FeDropShadowElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeDropShadowElement;\n}(Element);\n\nvar FeMorphologyElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FeMorphologyElement, _Element);\n\n function FeMorphologyElement() {\n var _this;\n\n _classCallCheck(this, FeMorphologyElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FeMorphologyElement).apply(this, arguments));\n _this.type = 'feMorphology';\n return _this;\n }\n\n _createClass(FeMorphologyElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeMorphologyElement;\n}(Element);\n\nvar FeCompositeElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FeCompositeElement, _Element);\n\n function FeCompositeElement() {\n var _this;\n\n _classCallCheck(this, FeCompositeElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FeCompositeElement).apply(this, arguments));\n _this.type = 'feComposite';\n return _this;\n }\n\n _createClass(FeCompositeElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeCompositeElement;\n}(Element);\n\nvar FeGaussianBlurElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(FeGaussianBlurElement, _Element);\n\n function FeGaussianBlurElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeGaussianBlurElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FeGaussianBlurElement).call(this, document, node, captureTextNodes));\n _this.type = 'feGaussianBlur';\n _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());\n _this.extraFilterDistance = _this.blurRadius;\n return _this;\n }\n\n _createClass(FeGaussianBlurElement, [{\n key: \"apply\",\n value: function apply(ctx, x, y, width, height) {\n var document = this.document,\n blurRadius = this.blurRadius;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n }]);\n\n return FeGaussianBlurElement;\n}(Element);\n\nvar TitleElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(TitleElement, _Element);\n\n function TitleElement() {\n var _this;\n\n _classCallCheck(this, TitleElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TitleElement).apply(this, arguments));\n _this.type = 'title';\n return _this;\n }\n\n return TitleElement;\n}(Element);\n\nvar DescElement =\n/*#__PURE__*/\nfunction (_Element) {\n _inherits(DescElement, _Element);\n\n function DescElement() {\n var _this;\n\n _classCallCheck(this, DescElement);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DescElement).apply(this, arguments));\n _this.type = 'desc';\n return _this;\n }\n\n return DescElement;\n}(Element);\n\nvar elementTypes = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee(src) {\n var image;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n image = document.createElement('img'); // image.crossOrigin = 'Anonymous';\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n image.onload = function () {\n resolve(image);\n };\n\n image.onerror = function () {\n reject();\n };\n\n image.src = src;\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _createImage.apply(this, arguments);\n}\n\nvar Document =\n/*#__PURE__*/\nfunction () {\n function Document(canvg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$rootEmSize = _ref.rootEmSize,\n rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,\n _ref$emSize = _ref.emSize,\n emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,\n _ref$createCanvas = _ref.createCanvas,\n createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,\n _ref$createImage = _ref.createImage,\n createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage;\n\n _classCallCheck(this, Document);\n\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = createImage;\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n _createClass(Document, [{\n key: \"popEmSize\",\n value: function popEmSize() {\n var emSizeStack = this.emSizeStack;\n emSizeStack.pop();\n }\n }, {\n key: \"getUniqueId\",\n value: function getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n }, {\n key: \"isImagesLoaded\",\n value: function isImagesLoaded() {\n return this.images.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"isFontsLoaded\",\n value: function isFontsLoaded() {\n return this.fonts.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"createDocumentElement\",\n value: function createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n }, {\n key: \"createElement\",\n value: function createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n }, {\n key: \"createTextNode\",\n value: function createTextNode(node) {\n return new TextNode(this, node);\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(config) {\n this.screen.setViewBox(_objectSpread({\n document: this\n }, config));\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.screen.window;\n }\n }, {\n key: \"fetch\",\n get: function get() {\n return this.screen.fetch;\n }\n }, {\n key: \"ctx\",\n get: function get() {\n return this.screen.ctx;\n }\n }, {\n key: \"emSize\",\n get: function get() {\n var emSizeStack = this.emSizeStack;\n return emSizeStack[emSizeStack.length - 1];\n },\n set: function set(value) {\n var emSizeStack = this.emSizeStack;\n emSizeStack.push(value);\n }\n }]);\n\n return Document;\n}();\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elementTypes;\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nvar Canvg =\n/*#__PURE__*/\nfunction () {\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 function Canvg(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, Canvg);\n\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg isntance 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 */\n\n\n _createClass(Canvg, [{\n key: \"fork\",\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 */\n value: function fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\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 */\n\n }, {\n key: \"forkString\",\n value: function forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\r\n * Document is ready promise.\r\n */\n\n }, {\n key: \"ready\",\n value: function ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n */\n\n }, {\n key: \"isReady\",\n value: function 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 key: \"render\",\n value: function () {\n var _render = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee() {\n var options,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n this.start(_objectSpread$1({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n _context.next = 4;\n return this.ready();\n\n case 4:\n this.stop();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n }, {\n key: \"start\",\n value: function start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var documentElement = this.documentElement,\n screen = this.screen,\n baseOptions = this.options;\n screen.start(documentElement, _objectSpread$1({\n enableRedraw: true\n }, baseOptions, {}, options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n }, {\n key: \"stop\",\n value: function 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 key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n }], [{\n key: \"from\",\n value: function () {\n var _from = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee2(ctx, svg) {\n var options,\n parser,\n svgDocument,\n _args2 = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};\n parser = new Parser(options);\n _context2.next = 4;\n return parser.parse(svg);\n\n case 4:\n svgDocument = _context2.sent;\n return _context2.abrupt(\"return\", new Canvg(ctx, svgDocument, options));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function from(_x, _x2) {\n return _from.apply(this, arguments);\n }\n\n return from;\n }()\n /**\r\n * Create Canvg isntance 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 */\n\n }, {\n key: \"fromString\",\n value: function fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n }]);\n\n return Canvg;\n}();\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n */\nfunction offscreen() {\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n createCanvas: function createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n createImage: function () {\n var _createImage = _asyncToGenerator(\n /*#__PURE__*/\n _regeneratorRuntime.mark(function _callee(url) {\n var response, blob, img;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch(url);\n\n case 2:\n response = _context.sent;\n _context.next = 5;\n return response.blob();\n\n case 5:\n blob = _context.sent;\n _context.next = 8;\n return createImageBitmap(blob);\n\n case 8:\n img = _context.sent;\n return _context.abrupt(\"return\", img);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function createImage(_x) {\n return _createImage.apply(this, arguments);\n }\n\n return createImage;\n }()\n };\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 */\nfunction node(_ref) {\n var DOMParser = _ref.DOMParser,\n canvas = _ref.canvas,\n fetch = _ref.fetch;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParser,\n fetch: fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\n\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\nexport default Canvg;\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, getSelectorSpecificity, normalizeAttributeName, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIC8vIE5vdGU6IFtcInJldHVyblwiXSBtdXN0IGJlIHVzZWQgZm9yIEVTMyBwYXJzaW5nIGNvbXBhdGliaWxpdHkuXG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9XG4pKTtcblxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIC8vIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZSwgc28gdGhlIGFib3ZlXG4gIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAvLyBpbiBjYXNlIHJ1bnRpbWUuanMgYWNjaWRlbnRhbGx5IHJ1bnMgaW4gc3RyaWN0IG1vZGUsIHdlIGNhbiBlc2NhcGVcbiAgLy8gc3RyaWN0IG1vZGUgdXNpbmcgYSBnbG9iYWwgRnVuY3Rpb24gY2FsbC4gVGhpcyBjb3VsZCBjb25jZWl2YWJseSBmYWlsXG4gIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAvLyB0aGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIGZpeCB0aGUgYWNjaWRlbnRhbCBzdHJpY3QgbW9kZSBwcm9ibGVtLiBJZlxuICAvLyB5b3UndmUgbWlzY29uZmlndXJlZCB5b3VyIGJ1bmRsZXIgdG8gZm9yY2Ugc3RyaWN0IG1vZGUgYW5kIGFwcGxpZWQgYVxuICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgLy8gcHJvYmxlbXMsIHBsZWFzZSBkZXRhaWwgeW91ciB1bmlxdWUgcHJlZGljYW1lbnQgaW4gYSBHaXRIdWIgaXNzdWUuXG4gIEZ1bmN0aW9uKFwiclwiLCBcInJlZ2VuZXJhdG9yUnVudGltZSA9IHJcIikocnVudGltZSk7XG59XG4iXSwibmFtZXMiOlsicnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwiJFN5bWJvbCIsIlN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiaXRlcmF0b3IiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJzZWxmIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsImNyZWF0ZSIsImNvbnRleHQiLCJDb250ZXh0IiwiX2ludm9rZSIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwib2JqIiwiYXJnIiwidHlwZSIsImNhbGwiLCJlcnIiLCJHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0IiwiR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCIsIkdlblN0YXRlRXhlY3V0aW5nIiwiR2VuU3RhdGVDb21wbGV0ZWQiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJjb25zdHJ1Y3RvciIsImRpc3BsYXlOYW1lIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiX19hd2FpdCIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwidmFsdWUiLCJQcm9taXNlIiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiZW5xdWV1ZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiYXN5bmMiLCJpdGVyIiwibmV4dCIsImRvbmUiLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0b1N0cmluZyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0Iiwia2V5cyIsIm9iamVjdCIsImtleSIsInJldmVyc2UiLCJsZW5ndGgiLCJwb3AiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJpIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290RW50cnkiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIm1vZHVsZSIsInJlZ2VuZXJhdG9yUnVudGltZSIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwiRnVuY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\nvar nativeApply = getBuiltIn('Reflect', 'apply');\nvar functionApply = Function.apply;\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n nativeApply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n apply: function apply(target, thisArgument, argumentsList) {\n aFunction(target);\n anObject(argumentsList);\n return nativeApply\n ? nativeApply(target, thisArgument, argumentsList)\n : functionApply.call(target, thisArgument, argumentsList);\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"sourceRoot":""}