{"version":3,"file":"chunk.5b542ae67892f406a2fd.js","mappings":"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","sources":["webpack:///../../../node_modules/.pnpm/lottie-web@5.12.2/node_modules/lottie-web/build/player/lottie.js","webpack:///../../../node_modules/.pnpm/react-lottie@1.2.3_react@18.2.0/node_modules/react-lottie/dist/index.js"],"sourcesContent":["(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lottieWeb = require('lottie-web');\n\nvar _lottieWeb2 = _interopRequireDefault(_lottieWeb);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Lottie = function (_React$Component) {\n (0, _inherits3.default)(Lottie, _React$Component);\n\n function Lottie() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Lottie);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Lottie.__proto__ || (0, _getPrototypeOf2.default)(Lottie)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickToPause = function () {\n // The pause() method is for handling pausing by passing a prop isPaused\n // This method is for handling the ability to pause by clicking on the animation\n if (_this.anim.isPaused) {\n _this.anim.play();\n } else {\n _this.anim.pause();\n }\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Lottie, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n options = _props.options,\n eventListeners = _props.eventListeners;\n var loop = options.loop,\n autoplay = options.autoplay,\n animationData = options.animationData,\n rendererSettings = options.rendererSettings,\n segments = options.segments;\n\n\n this.options = {\n container: this.el,\n renderer: 'svg',\n loop: loop !== false,\n autoplay: autoplay !== false,\n segments: segments !== false,\n animationData: animationData,\n rendererSettings: rendererSettings\n };\n\n this.options = (0, _extends3.default)({}, this.options, options);\n\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(eventListeners);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps /* , nextState */) {\n /* Recreate the animation handle if the data is changed */\n if (this.options.animationData !== nextProps.options.animationData) {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options = (0, _extends3.default)({}, this.options, nextProps.options);\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(nextProps.eventListeners);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isStopped) {\n this.stop();\n } else if (this.props.segments) {\n this.playSegments();\n } else {\n this.play();\n }\n\n this.pause();\n this.setSpeed();\n this.setDirection();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options.animationData = null;\n this.anim = null;\n }\n }, {\n key: 'setSpeed',\n value: function setSpeed() {\n this.anim.setSpeed(this.props.speed);\n }\n }, {\n key: 'setDirection',\n value: function setDirection() {\n this.anim.setDirection(this.props.direction);\n }\n }, {\n key: 'play',\n value: function play() {\n this.anim.play();\n }\n }, {\n key: 'playSegments',\n value: function playSegments() {\n this.anim.playSegments(this.props.segments);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.anim.stop();\n }\n }, {\n key: 'pause',\n value: function pause() {\n if (this.props.isPaused && !this.anim.isPaused) {\n this.anim.pause();\n } else if (!this.props.isPaused && this.anim.isPaused) {\n this.anim.pause();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.anim.destroy();\n }\n }, {\n key: 'registerEvents',\n value: function registerEvents(eventListeners) {\n var _this2 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this2.anim.addEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'deRegisterEvents',\n value: function deRegisterEvents(eventListeners) {\n var _this3 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this3.anim.removeEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height,\n ariaRole = _props2.ariaRole,\n ariaLabel = _props2.ariaLabel,\n isClickToPauseDisabled = _props2.isClickToPauseDisabled,\n title = _props2.title;\n\n\n var getSize = function getSize(initial) {\n var size = void 0;\n\n if (typeof initial === 'number') {\n size = initial + 'px';\n } else {\n size = initial || '100%';\n }\n\n return size;\n };\n\n var lottieStyles = (0, _extends3.default)({\n width: getSize(width),\n height: getSize(height),\n overflow: 'hidden',\n margin: '0 auto',\n outline: 'none'\n }, this.props.style);\n\n var onClickHandler = isClickToPauseDisabled ? function () {\n return null;\n } : this.handleClickToPause;\n\n return (\n // Bug with eslint rules https://github.com/airbnb/javascript/issues/1374\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _react2.default.createElement('div', {\n ref: function ref(c) {\n _this4.el = c;\n },\n style: lottieStyles,\n onClick: onClickHandler,\n title: title,\n role: ariaRole,\n 'aria-label': ariaLabel,\n tabIndex: '0'\n })\n );\n }\n }]);\n return Lottie;\n}(_react2.default.Component);\n\nexports.default = Lottie;\n\n\nLottie.propTypes = {\n eventListeners: _propTypes2.default.arrayOf(_propTypes2.default.object),\n options: _propTypes2.default.object.isRequired,\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n isStopped: _propTypes2.default.bool,\n isPaused: _propTypes2.default.bool,\n speed: _propTypes2.default.number,\n segments: _propTypes2.default.arrayOf(_propTypes2.default.number),\n direction: _propTypes2.default.number,\n ariaRole: _propTypes2.default.string,\n ariaLabel: _propTypes2.default.string,\n isClickToPauseDisabled: _propTypes2.default.bool,\n title: _propTypes2.default.string\n};\n\nLottie.defaultProps = {\n eventListeners: [],\n isStopped: false,\n isPaused: false,\n speed: 1,\n ariaRole: 'button',\n ariaLabel: 'animation',\n isClickToPauseDisabled: false,\n title: ''\n};"],"names":["factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","value","getLocationHref","type","document","createElement","sources","destination","i","sourcePrototype","len","length","attr","prototype","Object","hasOwnProperty","call","object","prop","getOwnPropertyDescriptor","ProxyFunction","audioControllerFactory","audioFactory","this","audios","_volume","_isMuted","AudioController","addAudio","audio","push","pause","resume","setRate","rateValue","createAudio","assetPath","window","Howl","src","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createRegularArray","Array","apply","obj","_typeof$6","Symbol","iterator","constructor","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","test","userAgent","_shouldRoundValues","bmPow","Math","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","propertyNames","random","abs","val","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","round","element","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","currentTime","totalTime","frameMultiplier","direction","totalLoops","currentLoop","firstFrame","totalFrames","target","nativeError","createElementID","_count","h","s","v","r","g","b","f","p","q","t","d","color","offset","hsv","RGBtoHSV","HSVtoRGB","rgbToHex","hex","colorMap","toString","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","data","_workerSelf","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","e","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeLayers","completeShapes","shapes","a","id","comp","findComp","__used","JSON","parse","stringify","ks","it","o","minimum","animVersionString","animVersion","split","minimumVersion","checkText","textLayer","documentData","animationData","checkVersion","iterateLayers","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","closed","completeClosingShapes","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","formatResponse","open","join","error","send","completeData","payload","animation","event","process","onComplete","onError","loadAnimation","setupWorker","processId","createProcess","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","createTag","width","height","ctx","getContext","fillStyle","fillRect","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","assetData","assetsPath","originalPath","imagePath","u","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","ob","getAssetsPath","footageData","_footageLoaded","imageLoaded","footageLoaded","testImageLoaded","createFootageData","images","ImagePreloaderFactory","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","addEventListener","createImageData","createNS","setAttributeNS","_elementHelper","append","appendChild","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","splice","markerParser","line","lines","keys","keysCount","trim","Error","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","parsePayloadLines","__","name","ProjectInterface","compositions","nm","prepareFrame","xt","currentFrame","compInterface","_thisProjectFunction","registerComposition","renderers","registerRenderer","key","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","BMEnterFrameEvent","extendPrototype","setParams","params","wrapper","container","animType","RendererClass","getRenderer","rendererSettings","globalData","defs","setProjectInterface","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","getRegisteredRenderer","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","Number","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","index","getElementByPath","BMCompleteLoopEvent","BMCompleteEvent","BMSegmentStartEvent","BMDestroyEvent","BMRenderFrameErrorEvent","BMConfigErrorEvent","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","ev","animItem","subtractPlayingCount","elem","activate","removeElement","addPlayingCount","nowTime","elapsedTime","requestAnimationFrame","first","registerAnimation","searchAnimations","standalone","animElements","concat","slice","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","replace","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","aT","A","B","C","points","_p","_mSampleValues","_precomputed","get","x","mX1","mY1","mX2","mY2","_precompute","calcBezier","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","getSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","math","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","segmentLength","partial","partialLength","storedData","buildBezierData","bezierName","pointOnLine2D","bezierData","BezierData","PointData","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","getDistancePerc","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","bezFunction","initFrame","mathAbs","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","y","n","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","renderedFrame","endTime","_caching","renderResult","interpolateValue","multipliedValue","mult","_mdf","frameId","effectsSequence","lock","setVValue","_isFirstFrame","finalValue","kf","effectFunction","addDynamicProperty","vel","getValue","processEffectsSequence","addEffect","getValueAtCurrentTime","arrLen","PropertyFactory","getProp","sid","slotManager","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","ValueProperty","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShape","paths","localShapeCollection","shape1","shape2","shapesEqual","reset","resetShape","interpolateShapeCurrentTime","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","convertEllToPath","EllShapePropertyFactory","p0","p1","s0","_cw","_v","StarShapeProperty","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","StarShapePropertyFactory","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","convertRectToPath","RectShapePropertyFactory","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","props","mCos","mSin","_t","sx","shear","sz","l","m","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","matrix","matrixProps","transform","_identity","matr","z","determinant","inverseMatrix","getInverseMatrix","applyToPointArray","pts","retPts","inversePoint","isIdentity","p4","p5","p12","p13","cssValue","roundMatrixProperty","rotate","rotateX","rotateY","rotateZ","skew","skewFromAxis","scale","setTransform","translate","multiply","applyToPoint","applyToX","applyToY","applyToZ","applyToTriplePoints","applyToPointStringified","toCSS","to2dCSS","cloneFromProps","equals","inversePoints","_typeof$3","lottie","href","prefix","roundValues","plugin","readyStateCheckInterval","variable","vars","queryString","pair","decodeURIComponent","setLocation","setSubframeRendering","setQuality","inBrowser","installPlugin","useWebWorker","setIDPrefix","setPrefix","__getFactory","getFactory","version","scripts","myScript","getQueryVariable","checkReady","exports","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","TrimModifier","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","PuckerAndBloatModifier","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","TransformProperty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","lerp","singleRoot","delta","p3","PolynomialBezier","linearize","pointEqual","lerpPoint","coeffx","polynomialCoefficients","coeffy","quadRoots","t2","box","boundingBox","cx","cy","intersectData","depth","tolerance","intersections","maxRecursion","boxIntersect","d1s","splitData","d2s","intersectsImpl","start1","end1","start2","end2","v3","v4","crossProduct","floatZero","hypot","floatEqual","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","vector","rot","cur","prevIndex","nextIndex","pVector","getPerpendicularVector","frequency","pointType","getProjectingAngle","prevPoint","nextPoint","prevDist","nextDist","setPoint","dist","normalAngle","polarOffset","p1a","p1b","p2b","p2a","linearOffset","lineIntersection","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","pointDistance","intersection","intersect","outa","outb","getIntersection","pruneSegmentIntersection","right","mid","flex","inflectionPoints","offsetSegment","fontData","styles","fStyle","fWeight","toLowerCase","weight","RepeaterModifier","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","RoundCornersModifier","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","filter","singlePoint","p10","p11","p20","p21","bounds","extrema","bottom","other","shapeSegmentInverted","ZigZagModifier","pointsType","count","zigZagCorner","zigZagSegment","OffsetPathModifier","ml","lj","inputBezier","multiSegments","offsetSegmentSplit","pruneIntersections","lastSeg","multiSegment","joinLines","FontManager","emptyChar","w","size","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","font","family","parentNode","fontFamily","node","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","def","helper","engine","fontProps","getFontProperties","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","string","codePoint","charCodeAt","second","getCodePoint","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isRegionalCode","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","forEach","createHelper","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","setUpNode","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slots","assign","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","mode","effects","ef","effectElements","effectItem","GroupEffect","imageLoader","initBaseData","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","eff","SliderEffect","AngleEffect","ColorEffect","PointEffect","CheckboxEffect","LayerIndexEffect","MaskIndexEffect","EffectsManager","NoValueEffect","BaseElement","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","FrameElement","prepareProperties","isVisible","_isParent","FootageElement","getBaseElement","FootageInterface","getFootageData","AudioElement","timeRemapped","totalVolume","volumeValue","BaseRenderer","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","slotFactory","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","TransformElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","MaskElement","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","filterManager","source","createFilter","filters","Effect","effect","countsAsEffect","initElement","sourceRect","SVGEffects","SVGBaseElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","HierarchyElement","initHierarchy","checkParenting","createProxyFunction","createContent","renderInnerContent","innerElem","RenderableDOMElement","IImageElement","pr","imagePreserveAspectRatio","IShapeElement","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","ProcessedElement","lineCapEnum","lineJoinEnum","transformers","level","caches","lStr","lvl","pElem","msElem","dataProps","dashStr","dashArray","dashoffset","styleOb","DashProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initGradientData","prevViewData","gr","SVGShapeData","SVGStyleData","SVGStrokeStyleData","SVGFillStyleData","SVGNoStyleData","GradientProperty","comparePoints","SVGGradientFillStyleData","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","SVGGradientStrokeStyleData","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","renderFill","renderGradientStroke","renderPath","renderContentTransform","renderNoop","stylesList","animatedContents","sw","fc","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","SVGShapeElement","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","ShapeGroupData","createTransformElement","transformProperty","SVGTransformData","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","LetterProps","update","updated","TextProperty","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","_currentTextLength","finalS","finalE","xe","ne","sm","TextSelectorPropFactory","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","animatorProps","defaultData","textAnimatorAnimatables","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorProperty","searchProperties","TextAnimatorDataProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","addHueToRGB","addSaturationToRGB","addBrightnessToRGB","atan","ITextElement","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","textSpans","supports3d","config","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","destroyed","sequences","sequenceList","transform_key_count","SVGTextLottieElement","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","String","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","SVGCompElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","ISolidElement","NullElement","SVGRendererBase","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","ICompElement","setElements","getElements","destroyElements","SVGRenderer","ShapeTransformManager","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","_svg","loadLuma","loadLumaCanvas","getLumaCanvas","createCanvas","registeredEffects","hasMasks","CVEffects","CVMaskElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","transformsManager","styledShapes","styledShape","trNodes","stroke","fill","currentRender","sWidth","fValue","strokeStyle","lineCap","stack","cArrPos","cTr","CanvasContext","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","threeDElements","camera","CVBaseElement","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","CVShapeData","CVShapeElement","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","CVTextElement","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","CVImageElement","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","CVSolidElement","CanvasRendererBase","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","CVCompElement","CanvasRenderer","HBaseElement","checkBlendMode","tg","styleDiv","transformedElementStyle","matrixValue","webkitTransform","addEffects","HSolidElement","backgroundColor","HShapeElement","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","HTextElement","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","HCameraElement","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","HImageElement","Image","imageElem","HybridRendererBase","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","HCompElement","_createBaseContainerElements","HybridRenderer","defineProperty","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","nodecrypto","global","rngname","startdenom","significance","keylen","me","S","result","typ","flatten","seed","smear","stringseed","tostring","options","shortseed","mixkey","entropy","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","ARC4","prng","int32","quick","pass","is_math_call","state","copy","seedRandom","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","tOfV","tOfA","$bm_isInstanceOfArray","lenA","retArr","initialize$2","easeInBez","easeOutBez","easeInOutBez","tOfB","isNumerable","lenB","$bm_sum","$bm_sub","sub","$bm_mul","mul","$bm_div","$bm_mod","mod","mm","radians_to_degrees","radiansToDegrees","degrees_to_radians","helperLengthArray","arr1","arr2","vec","hue2rgb","tMin","tMax","value1","value2","_tMin","rnd","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","property","_value","noOp","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","elem1","elem2","fVec","pitch","val1","val2","applyEase","iKey","lenKey","obKey","fps","seedrandom","randSeed","substring","framesPerSecond","hasParent","frameExpressionId","executeExpression","__preventDeadCodeRemoval","loopInDuration","loopOutDuration","lookAt","easeOut","easeIn","ease","nearestKey","framesToTime","timeToFrames","posterizeTime","initiateExpression","$bm_neg","clamp","degreesToRadians","normalize","rgbToHsl","hslToRgb","linear","createPath","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","_mask","_data","MaskInterface","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","completeProperty","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","defaultGetter","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","toWorldMat","getMatrix","applyPoint","invertPoint","transformInterface","toWorldVec","fromWorldVec","sampleImage","anchorPointDescriptor","getDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","mn","_propertyGroup","groupInterface","createGroupInterface","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","iterateElements","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformValueAtTime","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","addPropertyDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","addDecorator","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","linearFilter","matrixFilter","initialized","feComponentTransfer","feFuncR","feFuncG","feFuncB","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","SVGTintFilter","colorBlack","colorWhite","SVGFillFilter","SVGStrokeEffect","initialize","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","SVGTritoneFilter","color1","color2","color3","tableR","tableG","tableB","SVGProLevelsFilter","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","SVGDropShadowEffect","col","_svgMatteSymbols","filterElem","SVGMatte3Effect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","SVGGaussianBlurEffect","sigma","dimensions","sigmaX","sigmaY","edgeMode","TransformEffect","forceFrame","isUniformScale","scaleHeight","scaleWidth","SVGTransformEffect","CVTransformEffect","getInterface","initialize$1","registerEffect$1","registerEffect","module","_extends3","_interopRequireDefault","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_react2","_propTypes2","_lottieWeb2","__esModule","default","Lottie","_React$Component","_ref","_temp","_this","_ret","_len","arguments","_key","__proto__","handleClickToPause","_props","eventListeners","el","registerEvents","nextProps","deRegisterEvents","isStopped","_this2","eventListener","_this3","_this4","_props2","ariaRole","isClickToPauseDisabled","getSize","initial","lottieStyles","outline","onClickHandler","ref","onClick","role","tabIndex","Component","arrayOf","isRequired","oneOfType","number","bool","defaultProps"],"sourceRoot":""}