{ this.currentData.t = this.data.d.k[this.keysIndex].s.t; var e = this.currentData, s = this.keysIndex; if (this.lock) this.setCurrentData(this.currentData); else { var i; this.lock = !0, this._mdf = !1; var a = this.effectsSequence.length, r = t || this.data.d.k[this.keysIndex].s; for (i = 0; i < a; i += 1) r = s !== this.keysIndex ? this.effectsSequence[i](r, r.t) : this.effectsSequence[i](this.currentData, r.t); e !== r && this.setCurrentData(r), this.v = this.currentData, this.pv = this.v, this.lock = !1, this.frameId = this.elem.globalData.frameId } } }, gt.prototype.getKeyframeValue = function() { for (var t = this.data.d.k, e = this.elem.comp.renderedFrame, s = 0, i = t.length; s <= i - 1 && !(s === i - 1 || t[s + 1].t > e);) s += 1; return this.keysIndex !== s && (this.keysIndex = s), this.data.d.k[this.keysIndex].s }, gt.prototype.buildFinalText = function(t) { for (var e, s = V.getCombinedCharacterCodes(), i = [], a = 0, r = t.length; a < r;) e = t.charCodeAt(a), -1 !== s.indexOf(e) ? i[i.length - 1] += t.charAt(a) : 55296 <= e && e <= 56319 && 56320 <= (e = t.charCodeAt(a + 1)) && e <= 57343 ? (i.push(t.substr(a, 2)), a += 1) : i.push(t.charAt(a)), a += 1; return i }, gt.prototype.completeTextData = function(t) { t.__complete = !0; var e, s, i, a, r, n, h, o = this.elem.globalData.fontManager, l = this.data, p = [], f = 0, d = l.m.g, m = 0, c = 0, u = 0, g = [], y = 0, v = 0, b = o.getFontByName(t.f), _ = 0, k = q(b); t.fWeight = k.weight, t.fStyle = k.style, t.finalSize = t.s, t.finalText = this.buildFinalText(t.t), s = t.finalText.length, t.finalLineHeight = t.lh; var A, P = t.tr / 1e3 * t.finalSize; if (t.sz) for (var S, C, D = !0, x = t.sz[0], w = t.sz[1]; D;) { y = S = 0, s = (C = this.buildFinalText(t.t)).length, P = t.tr / 1e3 * t.finalSize; var F = -1; for (e = 0; e < s; e += 1) A = C[e].charCodeAt(0), i = !1, ' ' === C[e] ? F = e : 13 !== A && 3 !== A || (i = !(y = 0), S += t.finalLineHeight || 1.2 * t.finalSize), x < y + (_ = o.chars ? (h = o.getCharData(C[e], b.fStyle, b.fFamily), i ? 0 : h.w * t.finalSize / 100) : o.measureText(C[e], t.f, t.finalSize)) && ' ' !== C[e] ? (-1 === F ? s += 1 : e = F, S += t.finalLineHeight || 1.2 * t.finalSize, C.splice(e, F === e ? 1 : 0, '\r'), F = -1, y = 0) : (y += _, y += P); S += b.ascent * t.finalSize / 100, this.canResize && t.finalSize > this.minimumFontSize && w < S ? (t.finalSize -= 1, t.finalLineHeight = t.finalSize * t.lh / t.s) : (t.finalText = C, s = t.finalText.length, D = !1) } y = -P; var T, E = _ = 0; for (e = 0; e < s; e += 1) if (i = !1, 13 === (A = (T = t.finalText[e]).charCodeAt(0)) || 3 === A ? (E = 0, g.push(y), v = v < y ? y : v, y = -2 * P, i = !(a = ''), u += 1) : a = T, _ = o.chars ? (h = o.getCharData(T, b.fStyle, o.getFontByName(t.f).fFamily), i ? 0 : h.w * t.finalSize / 100) : o.measureText(a, t.f, t.finalSize), ' ' === T ? E += _ + P : (y += _ + P + E, E = 0), p.push({ l: _, an: _, add: m, n: i, anIndexes: [], val: a, line: u, animatorJustifyOffset: 0 }), 2 == d) { if (m += _, '' === a || ' ' === a || e === s - 1) { for ('' !== a && ' ' !== a || (m -= _); c <= e;) p[c].an = m, p[c].ind = f, p[c].extra = _, c += 1; f += 1, m = 0 } } else if (3 == d) { if (m += _, '' === a || e === s - 1) { for ('' === a && (m -= _); c <= e;) p[c].an = m, p[c].ind = f, p[c].extra = _, c += 1; m = 0, f += 1 } } else p[f].ind = f, p[f].extra = 0, f += 1; if (t.l = p, v = v < y ? y : v, g.push(y), t.sz) t.boxWidth = t.sz[0], t.justifyOffset = 0; else switch (t.boxWidth = v, t.j) { case 1: t.justifyOffset = -t.boxWidth; break; case 2: t.justifyOffset = -t.boxWidth / 2; break; default: t.justifyOffset = 0 } t.lineWidths = g; var M, I, L, V, R = l.a; n = R.length; var z = []; for (r = 0; r < n; r += 1) { for ((M = R[r]).a.sc && (t.strokeColorAnim = !0), M.a.sw && (t.strokeWidthAnim = !0), (M.a.fc || M.a.fh || M.a.fs || M.a.fb) && (t.fillColorAnim = !0), V = 0, L = M.s.b, e = 0; e < s; e += 1) (I = p[e]).anIndexes[r] = V, (1 == L && '' !== I.val || 2 == L && '' !== I.val && ' ' !== I.val || 3 == L && (I.n || ' ' == I.val || e == s - 1) || 4 == L && (I.n || e == s - 1)) && (1 === M.s.rn && z.push(V), V += 1); l.a[r].s.totalChars = V; var N, O = -1; if (1 === M.s.rn) for (e = 0; e < s; e += 1) O != (I = p[e]).anIndexes[r] && (O = I.anIndexes[r], N = z.splice(Math.floor(Math.random() * z.length), 1)[0]), I.anIndexes[r] = N } t.yOffset = t.finalLineHeight || 1.2 * t.finalSize, t.ls = t.ls || 0, t.ascent = b.ascent * t.finalSize / 100 }, gt.prototype.updateDocumentData = function(t, e) { e = void 0 === e ? this.keysIndex : e; var s = this.copyData({}, this.data.d.k[e].s); s = this.copyData(s, t), this.data.d.k[e].s = s, this.recalculate(e), this.elem.addDynamicProperty(this) }, gt.prototype.recalculate = function(t) { var e = this.data.d.k[t].s; e.__complete = !1, this.keysIndex = 0, this._isFirstFrame = !0, this.getValue(e) }, gt.prototype.canResizeFont = function(t) { this.canResize = t, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this) }, gt.prototype.setMinimumFontSize = function(t) { this.minimumFontSize = Math.floor(t) || 1, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this) }; var yt, vt, bt, _t, kt, At = function() { var m = Math.max, c = Math.min, u = Math.floor; function i(t, e) { this._currentTextLength = -1, this.k = !1, this.data = e, this.elem = t, this.comp = t.comp, this.finalS = 0, this.finalE = 0, this.initDynamicPropertyContainer(t), this.s = R.getProp(t, e.s || {k: 0}, 0, 0, this), this.e = 'e' in e ? R.getProp(t, e.e, 0, 0, this) : {v: 100}, this.o = R.getProp(t, e.o || {k: 0}, 0, 0, this), this.xe = R.getProp(t, e.xe || {k: 0}, 0, 0, this), this.ne = R.getProp(t, e.ne || {k: 0}, 0, 0, this), this.a = R.getProp(t, e.a, 0, .01, this), this.dynamicProperties.length || this.getValue() } return i.prototype = { getMult: function(t) { this._currentTextLength !== this.elem.textProperty.currentData.l.length && this.getValue(); var e = 0, s = 0, i = 1, a = 1; 0 < this.ne.v ? e = this.ne.v / 100 : s = -this.ne.v / 100, 0 < this.xe.v ? i = 1 - this.xe.v / 100 : a = 1 + this.xe.v / 100; var r = W.getBezierEasing(e, s, i, a).get, n = 0, h = this.finalS, o = this.finalE, l = this.data.sh; if (2 === l) n = r(n = o === h ? o <= t ? 1 : 0 : m(0, c(.5 / (o - h) + (t - h) / (o - h), 1))); else if (3 === l) n = r(n = o === h ? o <= t ? 0 : 1 : 1 - m(0, c(.5 / (o - h) + (t - h) / (o - h), 1))); else if (4 === l) o === h ? n = 0 : (n = m(0, c(.5 / (o - h) + (t - h) / (o - h), 1))) < .5 ? n *= 2 : n = 1 - 2 * (n - .5), n = r(n); else if (5 === l) { if (o === h) n = 0; else { var p = o - h, f = -p / 2 + (t = c(m(0, t + .5 - h), o - h)), d = p / 2; n = Math.sqrt(1 - f * f / (d * d)) } n = r(n) } else n = 6 === l ? r(n = o === h ? 0 : (t = c(m(0, t + .5 - h), o - h), (1 + Math.cos(Math.PI + 2 * Math.PI * t / (o - h))) / 2)) : (t >= u(h) && (n = m(0, c(t - h < 0 ? c(o, 1) - (h - t) : o - t, 1))), r(n)); return n * this.a.v }, getValue: function(t) { this.iterateDynamicProperties(), this._mdf = t || this._mdf, this._currentTextLength = this.elem.textProperty.currentData.l.length || 0, t && 2 === this.data.r && (this.e.v = this._currentTextLength); var e = 2 === this.data.r ? 1 : 100 / this.data.totalChars, s = this.o.v / e, i = this.s.v / e + s, a = this.e.v / e + s; if (a < i) { var r = i; i = a, a = r } this.finalS = i, this.finalE = a } }, M([F], i), { getTextSelectorProp: function(t, e, s) { return new i(t, e, s) } } }(), Pt = function(t, e, s) { var i = 0, a = t, r = D(a); return { newElement: function() { return i ? r[i -= 1] : e() }, release: function(t) { i === a && (r = St.double(r), a *= 2), s && s(t), r[i] = t, i += 1 } } }, St = { double: function(t) { return t.concat(D(t.length)) } }, Ct = Pt(8, function() { return j('float32', 2) }), Dt = ((yt = Pt( 4, function() { return new N }, function(t) { var e, s = t._length; for (e = 0; e < s; e += 1) Ct.release(t.v[e]), Ct.release(t.i[e]), Ct.release(t.o[e]), t.v[e] = null, t.i[e] = null, t.o[e] = null; t._length = 0, t.c = !1 })) .clone = function(t) { var e, s = yt.newElement(), i = void 0 === t._length ? t.v.length : t._length; for (s.setLength(i), s.c = t.c, e = 0; e < i; e += 1) s.setTripleAt( t.v[e][0], t.v[e][1], t.o[e][0], t.o[e][1], t.i[e][0], t.i[e][1], e); return s }, yt), xt = (vt = { newShapeCollection: function() { var t; t = bt ? kt[bt -= 1] : new Q; return t }, release: function(t) { var e, s = t._length; for (e = 0; e < s; e += 1) Dt.release(t.shapes[e]); t._length = 0, bt === _t && (kt = St.double(kt), _t *= 2); kt[bt] = t, bt += 1 } }, bt = 0, kt = D(_t = 4), vt), wt = Pt(8, function() { return { lengths: [], totalLength: 0 } }, function(t) { var e, s = t.lengths.length; for (e = 0; e < s; e += 1) Ft.release(t.lengths[e]); t.lengths.length = 0 }), Ft = Pt(8, function() { return { addedLength: 0, percents: j('float32', P), lengths: j('float32', P) } }), Tt = function() { function r(t) { for (var e, s = t.split('\r\n'), i = {}, a = 0, r = 0; r < s.length; r += 1) 2 === (e = s[r].split(':')).length && (i[e[0]] = e[1].trim(), a += 1); if (0 === a) throw new Error; return i } return function(e) { for (var t = [], s = 0; s < e.length; s += 1) { var i = e[s], a = {time: i.tm, duration: i.dr}; try { a.payload = JSON.parse(e[s].cm) } catch (t) { try { a.payload = r(e[s].cm) } catch (t) { a.payload = {name: e[s]} } } t.push(a) } return t } }(); function Et() {} function Mt(t, e) { this.animationItem = t, this.layers = null, this.renderedFrame = -1, this.svgElement = x('svg'); var s = ''; if (e && e.title) { var i = x('title'), a = S(); i.setAttribute('id', a), i.textContent = e.title, this.svgElement.appendChild(i), s += a } if (e && e.description) { var r = x('desc'), n = S(); r.setAttribute('id', n), r.textContent = e.description, this.svgElement.appendChild(r), s += ' ' + n } s && this.svgElement.setAttribute('aria-labelledby', s); var h = x('defs'); this.svgElement.appendChild(h); var o = x('g'); this.svgElement.appendChild(o), this.layerElement = o, this.renderConfig = { preserveAspectRatio: e && e.preserveAspectRatio || 'xMidYMid meet', imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || 'xMidYMid slice', progressiveLoad: e && e.progressiveLoad || !1, hideOnTransparent: !(e && !1 === e.hideOnTransparent), viewBoxOnly: e && e.viewBoxOnly || !1, viewBoxSize: e && e.viewBoxSize || !1, className: e && e.className || '', id: e && e.id || '', focusable: e && e.focusable, filterSize: { width: e && e.filterSize && e.filterSize.width || '100%', height: e && e.filterSize && e.filterSize.height || '100%', x: e && e.filterSize && e.filterSize.x || '0%', y: e && e.filterSize && e.filterSize.y || '0%' } }, this.globalData = {_mdf: !1, frameNum: -1, defs: h, renderConfig: this.renderConfig}, this.elements = [], this.pendingElements = [], this.destroyed = !1, this.rendererType = 'svg' } function It(t, e, s) { this.data = t, this.element = e, this.globalData = s, this.storedData = [], this.masksProperties = this.data.masksProperties || [], this.maskElement = null; var i, a, r = this.globalData.defs, n = this.masksProperties ? this.masksProperties.length : 0; this.viewData = D(n), this.solidPath = ''; var h, o, l, p, f, d, m = this.masksProperties, c = 0, u = [], g = S(), y = 'clipPath', v = 'clip-path'; for (i = 0; i < n; i += 1) if (('a' !== m[i].mode && 'n' !== m[i].mode || m[i].inv || 100 !== m[i].o.k || m[i].o.x) && (v = y = 'mask'), 's' !== m[i].mode && 'i' !== m[i].mode || 0 !== c ? l = null : ((l = x('rect')).setAttribute('fill', '#ffffff'), l.setAttribute('width', this.element.comp.data.w || 0), l.setAttribute('height', this.element.comp.data.h || 0), u.push(l)), a = x('path'), 'n' === m[i].mode) this.viewData[i] = { op: R.getProp(this.element, m[i].o, 0, .01, this.element), prop: H.getShapeProp(this.element, m[i], 3), elem: a, lastPath: '' }, r.appendChild(a); else { var b; if (c += 1, a.setAttribute('fill', 's' === m[i].mode ? '#000000' : '#ffffff'), a.setAttribute('clip-rule', 'nonzero'), 0 !== m[i].x.k ? (v = y = 'mask', d = R.getProp(this.element, m[i].x, 0, null, this.element), b = S(), (p = x('filter')).setAttribute('id', b), (f = x('feMorphology')).setAttribute('operator', 'erode'), f.setAttribute('in', 'SourceGraphic'), f.setAttribute('radius', '0'), p.appendChild(f), r.appendChild(p), a.setAttribute( 'stroke', 's' === m[i].mode ? '#000000' : '#ffffff')) : d = f = null, this.storedData[i] = { elem: a, x: d, expan: f, lastPath: '', lastOperator: '', filterId: b, lastRadius: 0 }, 'i' === m[i].mode) { o = u.length; var _ = x('g'); for (h = 0; h < o; h += 1) _.appendChild(u[h]); var k = x('mask'); k.setAttribute('mask-type', 'alpha'), k.setAttribute('id', g + '_' + c), k.appendChild(a), r.appendChild(k), _.setAttribute('mask', 'url(' + A + '#' + g + '_' + c + ')'), u.length = 0, u.push(_) } else u.push(a); m[i].inv && !this.solidPath && (this.solidPath = this.createLayerSolidPath()), this.viewData[i] = { elem: a, lastPath: '', op: R.getProp(this.element, m[i].o, 0, .01, this.element), prop: H.getShapeProp(this.element, m[i], 3), invRect: l }, this.viewData[i].prop.k || this.drawPath(m[i], this.viewData[i].prop.v, this.viewData[i]) } for (this.maskElement = x(y), n = u.length, i = 0; i < n; i += 1) this.maskElement.appendChild(u[i]); 0 < c && (this.maskElement.setAttribute('id', g), this.element.maskedElement.setAttribute(v, 'url(' + A + '#' + g + ')'), r.appendChild(this.maskElement)), this.viewData.length && this.element.addRenderableComponent(this) } function Lt() {} function Vt() {} function Rt() {} function zt() {} function Nt() {} function Ot(t, e) { this.elem = t, this.pos = e } function qt(t, e) { this.data = t, this.type = t.ty, this.d = '', this.lvl = e, this._mdf = !1, this.closed = !0 === t.hd, this.pElem = x('path'), this.msElem = null } function Bt(t, e, s) { this.caches = [], this.styles = [], this.transformers = t, this.lStr = '', this.sh = s, this.lvl = e, this._isAnimated = !!s.k; for (var i = 0, a = t.length; i < a;) { if (t[i].mProps.dynamicProperties.length) { this._isAnimated = !0; break } i += 1 } } function jt(t, e, s) { this.transform = {mProps: t, op: e, container: s}, this.elements = [], this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length } function Wt(t, e, s) { this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = R.getProp(t, e.o, 0, .01, this), this.w = R.getProp(t, e.w, 0, null, this), this.d = new $(t, e.d || {}, 'svg', this), this.c = R.getProp(t, e.c, 1, 255, this), this.style = s, this._isAnimated = !!this._isAnimated } function Xt(t, e, s) { this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = R.getProp(t, e.o, 0, .01, this), this.c = R.getProp(t, e.c, 1, 255, this), this.style = s } function Ht(t, e, s) { this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.initGradientData(t, e, s) } function Yt(t, e, s) { this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.w = R.getProp(t, e.w, 0, null, this), this.d = new $(t, e.d || {}, 'svg', this), this.initGradientData(t, e, s), this._isAnimated = !!this._isAnimated } function Gt() { this.it = [], this.prevViewData = [], this.gr = x('g') } Et.prototype.checkLayers = function(t) { var e, s, i = this.layers.length; for (this.completeLayers = !0, e = i - 1; 0 <= e; e -= 1) this.elements[e] || (s = this.layers[e]).ip - s.st <= t - this.layers[e].st && s.op - s.st > t - this.layers[e].st && this.buildItem(e), this.completeLayers = !!this.elements[e] && this.completeLayers; this.checkPendingElements() }, Et.prototype.createItem = function(t) { switch (t.ty) { case 2: return this.createImage(t); case 0: return this.createComp(t); case 1: return this.createSolid(t); case 3: return this.createNull(t); case 4: return this.createShape(t); case 5: return this.createText(t); case 6: return this.createAudio(t); case 13: return this.createCamera(t); case 15: return this.createFootage(t); default: return this.createNull(t) } }, Et.prototype.createCamera = function() { throw new Error('You\'re using a 3d camera. Try the html renderer.') }, Et.prototype.createAudio = function(t) { return new ie(t, this.globalData, this) }, Et.prototype.createFootage = function(t) { return new FootageElement(t, this.globalData, this) }, Et.prototype.buildAllItems = function() { var t, e = this.layers.length; for (t = 0; t < e; t += 1) this.buildItem(t); this.checkPendingElements() }, Et.prototype.includeLayers = function(t) { var e; this.completeLayers = !1; var s, i = t.length, a = this.layers.length; for (e = 0; e < i; e += 1) for (s = 0; s < a;) { if (this.layers[s].id === t[e].id) { this.layers[s] = t[e]; break } s += 1 } }, Et.prototype.setProjectInterface = function(t) { this.globalData.projectInterface = t }, Et.prototype.initItems = function() { this.globalData.progressiveLoad || this.buildAllItems() }, Et.prototype.buildElementParenting = function(t, e, s) { for (var i = this.elements, a = this.layers, r = 0, n = a.length; r < n;) a[r].ind == e && (i[r] && !0 !== i[r] ? (s.push(i[r]), i[r].setAsParent(), void 0 !== a[r].parent ? this.buildElementParenting(t, a[r].parent, s) : t.setHierarchy(s)) : (this.buildItem(r), this.addPendingElement(t))), r += 1 }, Et.prototype.addPendingElement = function(t) { this.pendingElements.push(t) }, Et.prototype.searchExtraCompositions = function(t) { var e, s = t.length; for (e = 0; e < s; e += 1) if (t[e].xt) { var i = this.createComp(t[e]); i.initExpressions(), this.globalData.projectInterface.registerComposition(i) } }, Et.prototype.setupGlobalData = function(t, e) { this.globalData.fontManager = new V, this.globalData.fontManager.addChars(t.chars), this.globalData.fontManager.addFonts(t.fonts, e), this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem), this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem), this.globalData.imageLoader = this.animationItem.imagePreloader, this.globalData.audioController = this.animationItem.audioController, this.globalData.frameId = 0, this.globalData.frameRate = t.fr, this.globalData.nm = t.nm, this.globalData.compSize = {w: t.w, h: t.h} }, M([Et], Mt), Mt.prototype.createNull = function(t) { return new Ut(t, this.globalData, this) }, Mt.prototype.createShape = function(t) { return new ne(t, this.globalData, this) }, Mt.prototype.createText = function(t) { return new re(t, this.globalData, this) }, Mt.prototype.createImage = function(t) { return new ee(t, this.globalData, this) }, Mt.prototype.createComp = function(t) { return new ae(t, this.globalData, this) }, Mt.prototype.createSolid = function(t) { return new se(t, this.globalData, this) }, Mt.prototype.configAnimation = function(t) { this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg'), this.renderConfig.viewBoxSize ? this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize) : this.svgElement.setAttribute('viewBox', '0 0 ' + t.w + ' ' + t.h), this.renderConfig.viewBoxOnly || (this.svgElement.setAttribute('width', t.w), this.svgElement.setAttribute('height', t.h), this.svgElement.style.width = '100%', this.svgElement.style.height = '100%', this.svgElement.style.transform = 'translate3d(0,0,0)'), this.renderConfig.className && this.svgElement.setAttribute('class', this.renderConfig.className), this.renderConfig.id && this.svgElement.setAttribute('id', this.renderConfig.id), void 0 !== this.renderConfig.focusable && this.svgElement.setAttribute('focusable', this.renderConfig.focusable), this.svgElement.setAttribute( 'preserveAspectRatio', this.renderConfig.preserveAspectRatio), this.animationItem.wrapper.appendChild(this.svgElement); var e = this.globalData.defs; this.setupGlobalData(t, e), this.globalData.progressiveLoad = this.renderConfig.progressiveLoad, this.data = t; var s = x('clipPath'), i = x('rect'); i.setAttribute('width', t.w), i.setAttribute('height', t.h), i.setAttribute('x', 0), i.setAttribute('y', 0); var a = S(); s.setAttribute('id', a), s.appendChild(i), this.layerElement.setAttribute('clip-path', 'url(' + A + '#' + a + ')'), e.appendChild(s), this.layers = t.layers, this.elements = D(t.layers.length) }, Mt.prototype.destroy = function() { var t; this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ''), this.layerElement = null, this.globalData.defs = null; var e = this.layers ? this.layers.length : 0; for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy(); this.elements.length = 0, this.destroyed = !0, this.animationItem = null }, Mt.prototype.updateContainerSize = function() {}, Mt.prototype.buildItem = function(t) { var e = this.elements; if (!e[t] && 99 !== this.layers[t].ty) { e[t] = !0; var s = this.createItem(this.layers[t]); e[t] = s, h && (0 === this.layers[t].ty && this.globalData.projectInterface.registerComposition(s), s.initExpressions()), this.appendElementInPos(s, t), this.layers[t].tt && (this.elements[t - 1] && !0 !== this.elements[t - 1] ? s.setMatte(e[t - 1].layerId) : (this.buildItem(t - 1), this.addPendingElement(s))) } }, Mt.prototype.checkPendingElements = function() { for (; this.pendingElements.length;) { var t = this.pendingElements.pop(); if (t.checkParenting(), t.data.tt) for (var e = 0, s = this.elements.length; e < s;) { if (this.elements[e] === t) { t.setMatte(this.elements[e - 1].layerId); break } e += 1 } } }, Mt.prototype.renderFrame = function(t) { if (this.renderedFrame !== t && !this.destroyed) { var e; null === t ? t = this.renderedFrame : this.renderedFrame = t, this.globalData.frameNum = t, this.globalData.frameId += 1, this.globalData.projectInterface.currentFrame = t, this.globalData._mdf = !1; var s = this.layers.length; for (this.completeLayers || this.checkLayers(t), e = s - 1; 0 <= e; e -= 1) (this.completeLayers || this.elements[e]) && this.elements[e].prepareFrame(t - this.layers[e].st); if (this.globalData._mdf) for (e = 0; e < s; e += 1) (this.completeLayers || this.elements[e]) && this.elements[e].renderFrame() } }, Mt.prototype.appendElementInPos = function(t, e) { var s = t.getBaseElement(); if (s) { for (var i, a = 0; a < e;) this.elements[a] && !0 !== this.elements[a] && this.elements[a].getBaseElement() && (i = this.elements[a].getBaseElement()), a += 1; i ? this.layerElement.insertBefore(s, i) : this.layerElement.appendChild(s) } }, Mt.prototype.hide = function() { this.layerElement.style.display = 'none' }, Mt.prototype.show = function() { this.layerElement.style.display = 'block' }, It.prototype.getMaskProperty = function(t) { return this.viewData[t].prop }, It.prototype.renderFrame = function(t) { var e, s = this.element.finalTransform.mat, i = this.masksProperties.length; for (e = 0; e < i; e += 1) if ((this.viewData[e].prop._mdf || t) && this.drawPath( this.masksProperties[e], this.viewData[e].prop.v, this.viewData[e]), (this.viewData[e].op._mdf || t) && this.viewData[e].elem.setAttribute( 'fill-opacity', this.viewData[e].op.v), 'n' !== this.masksProperties[e].mode && (this.viewData[e].invRect && (this.element.finalTransform.mProp._mdf || t) && this.viewData[e].invRect.setAttribute( 'transform', s.getInverseMatrix().to2dCSS()), this.storedData[e].x && (this.storedData[e].x._mdf || t))) { var a = this.storedData[e].expan; this.storedData[e].x.v < 0 ? ('erode' !== this.storedData[e].lastOperator && (this.storedData[e].lastOperator = 'erode', this.storedData[e].elem.setAttribute( 'filter', 'url(' + A + '#' + this.storedData[e].filterId + ')')), a.setAttribute('radius', -this.storedData[e].x.v)) : ('dilate' !== this.storedData[e].lastOperator && (this.storedData[e].lastOperator = 'dilate', this.storedData[e].elem.setAttribute('filter', null)), this.storedData[e].elem.setAttribute( 'stroke-width', 2 * this.storedData[e].x.v)) } }, It.prototype.getMaskelement = function() { return this.maskElement }, It.prototype.createLayerSolidPath = function() { var t = 'M0,0 '; return t += ' h' + this.globalData.compSize.w, t += ' v' + this.globalData.compSize.h, t += ' h-' + this.globalData.compSize.w, t += ' v-' + this.globalData.compSize.h + ' ' }, It.prototype.drawPath = function(t, e, s) { var i, a, r = ' M' + e.v[0][0] + ',' + e.v[0][1]; for (a = e._length, i = 1; i < a; i += 1) r += ' C' + e.o[i - 1][0] + ',' + e.o[i - 1][1] + ' ' + e.i[i][0] + ',' + e.i[i][1] + ' ' + e.v[i][0] + ',' + e.v[i][1]; if (e.c && 1 < a && (r += ' C' + e.o[i - 1][0] + ',' + e.o[i - 1][1] + ' ' + e.i[0][0] + ',' + e.i[0][1] + ' ' + e.v[0][0] + ',' + e.v[0][1]), s.lastPath !== r) { var n = ''; s.elem && (e.c && (n = t.inv ? this.solidPath + r : r), s.elem.setAttribute('d', n)), s.lastPath = r } }, It.prototype.destroy = function() { this.element = null, this.globalData = null, this.maskElement = null, this.data = null, this.masksProperties = null }, Lt.prototype = { initHierarchy: function() { this.hierarchy = [], this._isParent = !1, this.checkParenting() }, setHierarchy: function(t) { this.hierarchy = t }, setAsParent: function() { this._isParent = !0 }, checkParenting: function() { void 0 !== this.data.parent && this.comp.buildElementParenting(this, this.data.parent, []) } }, Vt.prototype = { initFrame: function() { this._isFirstFrame = !1, this.dynamicProperties = [], this._mdf = !1 }, prepareProperties: function(t, e) { var s, i = this.dynamicProperties.length; for (s = 0; s < i; s += 1) (e || this._isParent && 'transform' === this.dynamicProperties[s].propType) && (this.dynamicProperties[s].getValue(), this.dynamicProperties[s]._mdf && (this.globalData._mdf = !0, this._mdf = !0)) }, addDynamicProperty: function(t) { -1 === this.dynamicProperties.indexOf(t) && this.dynamicProperties.push(t) } }, Rt.prototype = { initTransform: function() { this.finalTransform = { mProp: this.data.ks ? z.getTransformProperty(this, this.data.ks, this) : {o: 0}, _matMdf: !1, _opMdf: !1, mat: new I }, this.data.ao && (this.finalTransform.mProp.autoOriented = !0), this.data.ty }, renderTransform: function() { if (this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame, this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame, this.hierarchy) { var t, e = this.finalTransform.mat, s = 0, i = this.hierarchy.length; if (!this.finalTransform._matMdf) for (; s < i;) { if (this.hierarchy[s].finalTransform.mProp._mdf) { this.finalTransform._matMdf = !0; break } s += 1 } if (this.finalTransform._matMdf) for (t = this.finalTransform.mProp.v.props, e.cloneFromProps(t), s = 0; s < i; s += 1) t = this.hierarchy[s].finalTransform.mProp.v.props, e.transform( t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9], t[10], t[11], t[12], t[13], t[14], t[15]) } }, globalToLocal: function(t) { var e = []; e.push(this.finalTransform); for (var s, i = !0, a = this.comp; i;) a.finalTransform ? (a.data.hasMask && e.splice(0, 0, a.finalTransform), a = a.comp) : i = !1; var r, n = e.length; for (s = 0; s < n; s += 1) r = e[s].mat.applyToPointArray(0, 0, 0), t = [t[0] - r[0], t[1] - r[1], 0]; return t }, mHelper: new I }, zt.prototype = { initRenderable: function() { this.isInRange = !1, this.hidden = !1, this.isTransparent = !1, this.renderableComponents = [] }, addRenderableComponent: function(t) { -1 === this.renderableComponents.indexOf(t) && this.renderableComponents.push(t) }, removeRenderableComponent: function(t) { -1 !== this.renderableComponents.indexOf(t) && this.renderableComponents.splice( this.renderableComponents.indexOf(t), 1) }, prepareRenderableFrame: function(t) { this.checkLayerLimits(t) }, checkTransparency: function() { this.finalTransform.mProp.o.v <= 0 ? !this.isTransparent && this.globalData.renderConfig.hideOnTransparent && (this.isTransparent = !0, this.hide()) : this.isTransparent && (this.isTransparent = !1, this.show()) }, checkLayerLimits: function(t) { this.data.ip - this.data.st <= t && this.data.op - this.data.st > t ? !0 !== this.isInRange && (this.globalData._mdf = !0, this._mdf = !0, this.isInRange = !0, this.show()) : !1 !== this.isInRange && (this.globalData._mdf = !0, this.isInRange = !1, this.hide()) }, renderRenderable: function() { var t, e = this.renderableComponents.length; for (t = 0; t < e; t += 1) this.renderableComponents[t].renderFrame(this._isFirstFrame) }, sourceRectAtTime: function() { return { top: 0, left: 0, width: 100, height: 100 } }, getLayerSize: function() { return 5 === this.data.ty ? {w: this.data.textData.width, h: this.data.textData.height} : {w: this.data.width, h: this.data.height} } }, M( [ zt, function(t) { function e() {} return e.prototype = t, e }({ initElement: function(t, e, s) { this.initFrame(), this.initBaseData(t, e, s), this.initTransform(t, e, s), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide() }, hide: function() { this.hidden || this.isInRange && !this.isTransparent || ((this.baseElement || this.layerElement).style.display = 'none', this.hidden = !0) }, show: function() { this.isInRange && !this.isTransparent && (this.data.hd || ((this.baseElement || this.layerElement).style.display = 'block'), this.hidden = !1, this._isFirstFrame = !0) }, renderFrame: function() { this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame = !1)) }, renderInnerContent: function() {}, prepareFrame: function(t) { this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.checkTransparency() }, destroy: function() { this.innerElem = null, this.destroyBaseElement() } }) ], Nt), qt.prototype.reset = function() { this.d = '', this._mdf = !1 }, Bt.prototype.setAsAnimated = function() { this._isAnimated = !0 }, M([F], Wt), M([F], Xt), Ht.prototype.initGradientData = function(t, e, s) { this.o = R.getProp(t, e.o, 0, .01, this), this.s = R.getProp(t, e.s, 1, null, this), this.e = R.getProp(t, e.e, 1, null, this), this.h = R.getProp(t, e.h || {k: 0}, 0, .01, this), this.a = R.getProp(t, e.a || {k: 0}, 0, B, this), this.g = new tt(t, e.g, this), this.style = s, this.stops = [], this.setGradientData(s.pElem, e), this.setGradientOpacity(e, s), this._isAnimated = !!this._isAnimated }, Ht.prototype.setGradientData = function(t, e) { var s = S(), i = x(1 === e.t ? 'linearGradient' : 'radialGradient'); i.setAttribute('id', s), i.setAttribute('spreadMethod', 'pad'), i.setAttribute('gradientUnits', 'userSpaceOnUse'); var a, r, n, h = []; for (n = 4 * e.g.p, r = 0; r < n; r += 4) a = x('stop'), i.appendChild(a), h.push(a); t.setAttribute( 'gf' === e.ty ? 'fill' : 'stroke', 'url(' + A + '#' + s + ')'), this.gf = i, this.cst = h }, Ht.prototype.setGradientOpacity = function(t, e) { if (this.g._hasOpacity && !this.g._collapsable) { var s, i, a, r = x('mask'), n = x('path'); r.appendChild(n); var h = S(), o = S(); r.setAttribute('id', o); var l = x(1 === t.t ? 'linearGradient' : 'radialGradient'); l.setAttribute('id', h), l.setAttribute('spreadMethod', 'pad'), l.setAttribute('gradientUnits', 'userSpaceOnUse'), a = t.g.k.k[0].s ? t.g.k.k[0].s.length : t.g.k.k.length; var p = this.stops; for (i = 4 * t.g.p; i < a; i += 2) (s = x('stop')).setAttribute('stop-color', 'rgb(255,255,255)'), l.appendChild(s), p.push(s); n.setAttribute( 'gf' === t.ty ? 'fill' : 'stroke', 'url(' + A + '#' + h + ')'), this.of = l, this.ms = r, this.ost = p, this.maskId = o, e.msElem = n } }, M([F], Ht), M([Ht, F], Yt); var Kt = function() { var g = new I, y = new I; function e(t, e, s) { (s || e.transform.op._mdf) && e.transform.container.setAttribute('opacity', e.transform.op.v), (s || e.transform.mProps._mdf) && e.transform.container.setAttribute( 'transform', e.transform.mProps.v.to2dCSS()) } function s(t, e, s) { var i, a, r, n, h, o, l, p, f, d, m, c = e.styles.length, u = e.lvl; for (o = 0; o < c; o += 1) { if (n = e.sh._mdf || s, e.styles[o].lvl < u) { for (p = y.reset(), d = u - e.styles[o].lvl, m = e.transformers.length - 1; !n && 0 < d;) n = e.transformers[m].mProps._mdf || n, d -= 1, m -= 1; if (n) for (d = u - e.styles[o].lvl, m = e.transformers.length - 1; 0 < d;) f = e.transformers[m].mProps.v.props, p.transform( f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7], f[8], f[9], f[10], f[11], f[12], f[13], f[14], f[15]), d -= 1, m -= 1 } else p = g; if (a = (l = e.sh.paths)._length, n) { for (r = '', i = 0; i < a; i += 1) (h = l.shapes[i]) && h._length && (r += it(h, h._length, h.c, p)); e.caches[o] = r } else r = e.caches[o]; e.styles[o].d += !0 === t.hd ? '' : r, e.styles[o]._mdf = n || e.styles[o]._mdf } } function i(t, e, s) { var i = e.style; (e.c._mdf || s) && i.pElem.setAttribute( 'fill', 'rgb(' + f(e.c.v[0]) + ',' + f(e.c.v[1]) + ',' + f(e.c.v[2]) + ')'), (e.o._mdf || s) && i.pElem.setAttribute('fill-opacity', e.o.v) } function a(t, e, s) { r(t, e, s), n(t, e, s) } function r(t, e, s) { var i, a, r, n, h, o = e.gf, l = e.g._hasOpacity, p = e.s.v, f = e.e.v; if (e.o._mdf || s) { var d = 'gf' === t.ty ? 'fill-opacity' : 'stroke-opacity'; e.style.pElem.setAttribute(d, e.o.v) } if (e.s._mdf || s) { var m = 1 === t.t ? 'x1' : 'cx', c = 'x1' === m ? 'y1' : 'cy'; o.setAttribute(m, p[0]), o.setAttribute(c, p[1]), l && !e.g._collapsable && (e.of.setAttribute(m, p[0]), e.of.setAttribute(c, p[1])) } if (e.g._cmdf || s) { i = e.cst; var u = e.g.c; for (r = i.length, a = 0; a < r; a += 1) (n = i[a]).setAttribute('offset', u[4 * a] + '%'), n.setAttribute( 'stop-color', 'rgb(' + u[4 * a + 1] + ',' + u[4 * a + 2] + ',' + u[4 * a + 3] + ')') } if (l && (e.g._omdf || s)) { var g = e.g.o; for (r = (i = e.g._collapsable ? e.cst : e.ost).length, a = 0; a < r; a += 1) n = i[a], e.g._collapsable || n.setAttribute('offset', g[2 * a] + '%'), n.setAttribute('stop-opacity', g[2 * a + 1]) } if (1 === t.t) (e.e._mdf || s) && (o.setAttribute('x2', f[0]), o.setAttribute('y2', f[1]), l && !e.g._collapsable && (e.of.setAttribute('x2', f[0]), e.of.setAttribute('y2', f[1]))); else if ( (e.s._mdf || e.e._mdf || s) && (h = Math.sqrt( Math.pow(p[0] - f[0], 2) + Math.pow(p[1] - f[1], 2)), o.setAttribute('r', h), l && !e.g._collapsable && e.of.setAttribute('r', h)), e.e._mdf || e.h._mdf || e.a._mdf || s) { h || (h = Math.sqrt( Math.pow(p[0] - f[0], 2) + Math.pow(p[1] - f[1], 2))); var y = Math.atan2(f[1] - p[1], f[0] - p[0]), v = e.h.v; 1 <= v ? v = .99 : v <= -1 && (v = -.99); var b = h * v, _ = Math.cos(y + e.a.v) * b + p[0], k = Math.sin(y + e.a.v) * b + p[1]; o.setAttribute('fx', _), o.setAttribute('fy', k), l && !e.g._collapsable && (e.of.setAttribute('fx', _), e.of.setAttribute('fy', k)) } } function n(t, e, s) { var i = e.style, a = e.d; a && (a._mdf || s) && a.dashStr && (i.pElem.setAttribute('stroke-dasharray', a.dashStr), i.pElem.setAttribute('stroke-dashoffset', a.dashoffset[0])), e.c && (e.c._mdf || s) && i.pElem.setAttribute( 'stroke', 'rgb(' + f(e.c.v[0]) + ',' + f(e.c.v[1]) + ',' + f(e.c.v[2]) + ')'), (e.o._mdf || s) && i.pElem.setAttribute('stroke-opacity', e.o.v), (e.w._mdf || s) && (i.pElem.setAttribute('stroke-width', e.w.v), i.msElem && i.msElem.setAttribute('stroke-width', e.w.v)) } return { createRenderFunction: function(t) { switch (t.ty) { case 'fl': return i; case 'gf': return r; case 'gs': return a; case 'st': return n; case 'sh': case 'el': case 'rc': case 'sr': return s; case 'tr': return e; default: return null } } } }(); function Jt() {} function Ut(t, e, s) { this.initFrame(), this.initBaseData(t, e, s), this.initFrame(), this.initTransform(t, e, s), this.initHierarchy() } function Zt() {} function Qt() {} function $t() {} function te() {} function ee(t, e, s) { this.assetData = e.getAssetData(t.refId), this.initElement(t, e, s), this.sourceRect = { top: 0, left: 0, width: this.assetData.w, height: this.assetData.h } } function se(t, e, s) { this.initElement(t, e, s) } function ie(t, e, s) { this.initFrame(), this.initRenderable(), this.assetData = e.getAssetData(t.refId), this.initBaseData(t, e, s), this._isPlaying = !1, this._canPlay = !1; var i = this.globalData.getAssetsPath(this.assetData); this.audio = this.globalData.audioController.createAudio(i), this._currentTime = 0, this.globalData.audioController.addAudio(this), this.tm = t.tm ? R.getProp(this, t.tm, 0, e.frameRate, this) : {_placeholder: !0} } function ae(t, e, s) { this.layers = t.layers, this.supports3d = !0, this.completeLayers = !1, this.pendingElements = [], this.elements = this.layers ? D(this.layers.length) : [], this.initElement(t, e, s), this.tm = t.tm ? R.getProp(this, t.tm, 0, e.frameRate, this) : {_placeholder: !0} } function re(t, e, s) { this.textSpans = [], this.renderType = 'svg', this.initElement(t, e, s) } function ne(t, e, s) { this.shapes = [], this.shapesData = t.shapes, this.stylesList = [], this.shapeModifiers = [], this.itemsData = [], this.processedElements = [], this.animatedContents = [], this.initElement(t, e, s), this.prevViewData = [] } Jt.prototype = { checkMasks: function() { if (!this.data.hasMask) return !1; for (var t = 0, e = this.data.masksProperties.length; t < e;) { if ('n' !== this.data.masksProperties[t].mode && !1 !== this.data.masksProperties[t].cl) return !0; t += 1 } return !1 }, initExpressions: function() { this.layerInterface = LayerExpressionInterface(this), this.data.hasMask && this.maskManager && this.layerInterface.registerMaskInterface(this.maskManager); var t = EffectsExpressionInterface.createEffectsInterface( this, this.layerInterface); this.layerInterface.registerEffectsInterface(t), 0 === this.data.ty || this.data.xt ? this.compInterface = CompExpressionInterface(this) : 4 === this.data.ty ? (this.layerInterface.shapeInterface = ShapeExpressionInterface( this.shapesData, this.itemsData, this.layerInterface), this.layerInterface.content = this.layerInterface.shapeInterface) : 5 === this.data.ty && (this.layerInterface.textInterface = TextExpressionInterface(this), this.layerInterface.text = this.layerInterface.textInterface) }, setBlendMode: function() { var t = E(this.data.bm); (this.baseElement || this.layerElement).style['mix-blend-mode'] = t }, initBaseData: function(t, e, s) { this.globalData = e, this.comp = s, this.data = t, this.layerId = S(), this.data.sr || (this.data.sr = 1), this.effectsManager = new fe(this.data, this, this.dynamicProperties) }, getType: function() { return this.type }, sourceRectAtTime: function() {} }, Ut.prototype.prepareFrame = function(t) { this.prepareProperties(t, !0) }, Ut.prototype.renderFrame = function() {}, Ut.prototype.getBaseElement = function() { return null }, Ut.prototype.destroy = function() {}, Ut.prototype.sourceRectAtTime = function() {}, Ut.prototype.hide = function() {}, M([Jt, Rt, Lt, Vt], Ut), Zt.prototype = { initRendererElement: function() { this.layerElement = x('g') }, createContainerElements: function() { this.matteElement = x('g'), this.transformedElement = this.layerElement, this.maskedElement = this.layerElement, this._sizeChanged = !1; var t, e, s, i = null; if (this.data.td) { if (3 == this.data.td || 1 == this.data.td) { var a = x('mask'); a.setAttribute('id', this.layerId), a.setAttribute( 'mask-type', 3 == this.data.td ? 'luminance' : 'alpha'), a.appendChild(this.layerElement), i = a, this.globalData.defs.appendChild(a), nt.maskType || 1 != this.data.td || (a.setAttribute('mask-type', 'luminance'), t = S(), e = ht.createFilter(t), this.globalData.defs.appendChild(e), e.appendChild(ht.createAlphaToLuminanceFilter()), (s = x('g')).appendChild(this.layerElement), i = s, a.appendChild(s), s.setAttribute('filter', 'url(' + A + '#' + t + ')')) } else if (2 == this.data.td) { var r = x('mask'); r.setAttribute('id', this.layerId), r.setAttribute('mask-type', 'alpha'); var n = x('g'); r.appendChild(n), t = S(), e = ht.createFilter(t); var h = x('feComponentTransfer'); h.setAttribute('in', 'SourceGraphic'), e.appendChild(h); var o = x('feFuncA'); o.setAttribute('type', 'table'), o.setAttribute('tableValues', '1.0 0.0'), h.appendChild(o), this.globalData.defs.appendChild(e); var l = x('rect'); l.setAttribute('width', this.comp.data.w), l.setAttribute('height', this.comp.data.h), l.setAttribute('x', '0'), l.setAttribute('y', '0'), l.setAttribute('fill', '#ffffff'), l.setAttribute('opacity', '0'), n.setAttribute('filter', 'url(' + A + '#' + t + ')'), n.appendChild(l), n.appendChild(this.layerElement), i = n, nt.maskType || (r.setAttribute('mask-type', 'luminance'), e.appendChild(ht.createAlphaToLuminanceFilter()), s = x('g'), n.appendChild(l), s.appendChild(this.layerElement), i = s, n.appendChild(s)), this.globalData.defs.appendChild(r) } } else this.data.tt ? (this.matteElement.appendChild(this.layerElement), i = this.matteElement, this.baseElement = this.matteElement) : this.baseElement = this.layerElement; if (this.data.ln && this.layerElement.setAttribute('id', this.data.ln), this.data.cl && this.layerElement.setAttribute('class', this.data.cl), 0 === this.data.ty && !this.data.hd) { var p = x('clipPath'), f = x('path'); f.setAttribute( 'd', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z'); var d = S(); if (p.setAttribute('id', d), p.appendChild(f), this.globalData.defs.appendChild(p), this.checkMasks()) { var m = x('g'); m.setAttribute('clip-path', 'url(' + A + '#' + d + ')'), m.appendChild(this.layerElement), this.transformedElement = m, i ? i.appendChild(this.transformedElement) : this.baseElement = this.transformedElement } else this.layerElement.setAttribute( 'clip-path', 'url(' + A + '#' + d + ')') } 0 !== this.data.bm && this.setBlendMode() }, renderElement: function() { this.finalTransform._matMdf && this.transformedElement.setAttribute( 'transform', this.finalTransform.mat.to2dCSS()), this.finalTransform._opMdf && this.transformedElement.setAttribute( 'opacity', this.finalTransform.mProp.o.v) }, destroyBaseElement: function() { this.layerElement = null, this.matteElement = null, this.maskManager.destroy() }, getBaseElement: function() { return this.data.hd ? null : this.baseElement }, createRenderableComponents: function() { this.maskManager = new It(this.data, this, this.globalData), this.renderableEffectsManager = new oe(this) }, setMatte: function(t) { this.matteElement && this.matteElement.setAttribute('mask', 'url(' + A + '#' + t + ')') } }, Qt.prototype = { addShapeToModifiers: function(t) { var e, s = this.shapeModifiers.length; for (e = 0; e < s; e += 1) this.shapeModifiers[e].addShape(t) }, isShapeInAnimatedModifiers: function(t) { for (var e = this.shapeModifiers.length; 0 < e;) if (this.shapeModifiers[0].isAnimatedWithShape(t)) return !0; return !1 }, renderModifiers: function() { if (this.shapeModifiers.length) { var t, e = this.shapes.length; for (t = 0; t < e; t += 1) this.shapes[t].sh.reset(); for (t = (e = this.shapeModifiers.length) - 1; 0 <= t && !this.shapeModifiers[t].processShapes(this._isFirstFrame); t -= 1); } }, lcEnum: {1: 'butt', 2: 'round', 3: 'square'}, ljEnum: {1: 'miter', 2: 'round', 3: 'bevel'}, searchProcessedElement: function(t) { for (var e = this.processedElements, s = 0, i = e.length; s < i;) { if (e[s].elem === t) return e[s].pos; s += 1 } return 0 }, addProcessedElement: function(t, e) { for (var s = this.processedElements, i = s.length; i;) if (s[i -= 1].elem === t) return void (s[i].pos = e); s.push(new Ot(t, e)) }, prepareFrame: function(t) { this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange) } }, $t.prototype.initElement = function(t, e, s) { this.lettersChangedFlag = !0, this.initFrame(), this.initBaseData(t, e, s), this.textProperty = new gt(this, t.t, this.dynamicProperties), this.textAnimator = new mt(t.t, this.renderType, this), this.initTransform(t, e, s), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(), this.textAnimator.searchProperties(this.dynamicProperties) }, $t.prototype.prepareFrame = function(t) { this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), (this.textProperty._mdf || this.textProperty._isFirstFrame) && (this.buildNewText(), this.textProperty._isFirstFrame = !1, this.textProperty._mdf = !1) }, $t.prototype.createPathShape = function(t, e) { var s, i, a = e.length, r = ''; for (s = 0; s < a; s += 1) i = e[s].ks.k, r += it(i, i.i.length, !0, t); return r }, $t.prototype.updateDocumentData = function(t, e) { this.textProperty.updateDocumentData(t, e) }, $t.prototype.canResizeFont = function(t) { this.textProperty.canResizeFont(t) }, $t.prototype.setMinimumFontSize = function(t) { this.textProperty.setMinimumFontSize(t) }, $t.prototype.applyTextPropertiesToMatrix = function(t, e, s, i, a) { switch (t.ps && e.translate(t.ps[0], t.ps[1] + t.ascent, 0), e.translate(0, -t.ls, 0), t.j) { case 1: e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[s]), 0, 0); break; case 2: e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[s]) / 2, 0, 0) } e.translate(i, a, 0) }, $t.prototype.buildColor = function(t) { return 'rgb(' + Math.round(255 * t[0]) + ',' + Math.round(255 * t[1]) + ',' + Math.round(255 * t[2]) + ')' }, $t.prototype.emptyProp = new ut, $t.prototype.destroy = function() {}, M([Jt, Rt, Lt, Vt, Nt], te), te.prototype.initElement = function(t, e, s) { this.initFrame(), this.initBaseData(t, e, s), this.initTransform(t, e, s), this.initRenderable(), this.initHierarchy(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), !this.data.xt && e.progressiveLoad || this.buildAllItems(), this.hide() }, te.prototype.prepareFrame = function(t) { if (this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.isInRange || this.data.xt) { if (this.tm._placeholder) this.renderedFrame = t / this.data.sr; else { var e = this.tm.v; e === this.data.op && (e = this.data.op - 1), this.renderedFrame = e } var s, i = this.elements.length; for (this.completeLayers || this.checkLayers(this.renderedFrame), s = i - 1; 0 <= s; s -= 1) (this.completeLayers || this.elements[s]) && (this.elements[s].prepareFrame( this.renderedFrame - this.layers[s].st), this.elements[s]._mdf && (this._mdf = !0)) } }, te.prototype.renderInnerContent = function() { var t, e = this.layers.length; for (t = 0; t < e; t += 1) (this.completeLayers || this.elements[t]) && this.elements[t].renderFrame() }, te.prototype.setElements = function(t) { this.elements = t }, te.prototype.getElements = function() { return this.elements }, te.prototype.destroyElements = function() { var t, e = this.layers.length; for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy() }, te.prototype.destroy = function() { this.destroyElements(), this.destroyBaseElement() }, M([Jt, Rt, Zt, Lt, Vt, Nt], ee), ee.prototype.createContent = function() { var t = this.globalData.getAssetsPath(this.assetData); this.innerElem = x('image'), this.innerElem.setAttribute('width', this.assetData.w + 'px'), this.innerElem.setAttribute('height', this.assetData.h + 'px'), this.innerElem.setAttribute( 'preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio), this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', t), this.layerElement.appendChild(this.innerElem) }, ee.prototype.sourceRectAtTime = function() { return this.sourceRect }, M([ee], se), se.prototype.createContent = function() { var t = x('rect'); t.setAttribute('width', this.data.sw), t.setAttribute('height', this.data.sh), t.setAttribute('fill', this.data.sc), this.layerElement.appendChild(t) }, ie.prototype.prepareFrame = function(t) { if (this.prepareRenderableFrame(t, !0), this.prepareProperties(t, !0), this.tm._placeholder) this._currentTime = t / this.data.sr; else { var e = this.tm.v; this._currentTime = e } }, M([zt, Jt, Vt], ie), ie.prototype.renderFrame = function() { this.isInRange && this._canPlay && (this._isPlaying ? (!this.audio.playing() || .1 < Math.abs( this._currentTime / this.globalData.frameRate - this.audio.seek())) && this.audio.seek( this._currentTime / this.globalData.frameRate) : (this.audio.play(), this.audio.seek(this._currentTime / this.globalData.frameRate), this._isPlaying = !0)) }, ie.prototype.show = function() {}, ie.prototype.hide = function() { this.audio.pause(), this._isPlaying = !1 }, ie.prototype.pause = function() { this.audio.pause(), this._isPlaying = !1, this._canPlay = !1 }, ie.prototype.resume = function() { this._canPlay = !0 }, ie.prototype.setRate = function(t) { this.audio.rate(t) }, ie.prototype.volume = function(t) { this.audio.volume(t) }, ie.prototype.getBaseElement = function() { return null }, ie.prototype.destroy = function() {}, ie.prototype.sourceRectAtTime = function() {}, ie.prototype.initExpressions = function() {}, M([Mt, te, Zt], ae), M([Jt, Rt, Zt, Lt, Vt, Nt, $t], re), re.prototype.createContent = function() { this.data.singleShape && !this