(function(react, _elementor_ui, _elementor_icons, _wordpress_i18n) { //#region \0rolldown/runtime.js var __create = Object.create; var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esmMin = (fn, res, err) => () => { if (err) throw err[0]; try { return fn && (res = fn(fn = 0)), res; } catch (e) { throw err = [e], e; } }; var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports); var __exportAll = (all, no_symbols) => { let target = {}; for (var name in all) { __defProp(target, name, { get: all[name], enumerable: true }); } if (!no_symbols) { __defProp(target, Symbol.toStringTag, { value: "Module" }); } return target; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { key = keys[i]; if (!__hasOwnProp.call(to, key) && key !== except) { __defProp(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } } } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); //#endregion react = __toESM(react); //#region node_modules/@babel/runtime/helpers/esm/classCallCheck.js function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } var init_classCallCheck = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/typeof.js function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var init_typeof = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/toPrimitive.js function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var init_toPrimitive = __esmMin((() => { init_typeof(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/toPropertyKey.js function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } var init_toPropertyKey = __esmMin((() => { init_typeof(); init_toPrimitive(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/createClass.js function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } var init_createClass = __esmMin((() => { init_toPropertyKey(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } var init_assertThisInitialized = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } var init_possibleConstructorReturn = __esmMin((() => { init_typeof(); init_assertThisInitialized(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } var init_getPrototypeOf = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } var init_setPrototypeOf = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/inherits.js function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } var init_inherits = __esmMin((() => { init_setPrototypeOf(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/extends.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } //#endregion //#region node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty(e, r, t) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } var init_defineProperty = __esmMin((() => { init_toPropertyKey(); })); //#endregion //#region node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_react_is_development = /* @__PURE__ */ __commonJSMin(((exports) => { (function() { "use strict"; var hasSymbol = typeof Symbol === "function" && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; function isValidElementType(type) { return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === "object" && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } } var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; function isAsyncMode(object) { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); })); //#endregion //#region node_modules/prop-types/node_modules/react-is/index.js var require_react_is = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = require_react_is_development(); })); //#endregion //#region node_modules/object-assign/index.js /* object-assign (c) Sindre Sorhus @license MIT */ var require_object_assign = /* @__PURE__ */ __commonJSMin(((exports, module) => { var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === void 0) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(val); } function shouldUseNative() { try { if (!Object.assign) return false; var test1 = /* @__PURE__ */ new String("abc"); test1[5] = "de"; if (Object.getOwnPropertyNames(test1)[0] === "5") return false; var test2 = {}; for (var i = 0; i < 10; i++) test2["_" + String.fromCharCode(i)] = i; if (Object.getOwnPropertyNames(test2).map(function(n) { return test2[n]; }).join("") !== "0123456789") return false; var test3 = {}; "abcdefghijklmnopqrst".split("").forEach(function(letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") return false; return true; } catch (err) { return false; } } module.exports = shouldUseNative() ? Object.assign : function(target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) if (hasOwnProperty.call(from, key)) to[key] = from[key]; if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) if (propIsEnumerable.call(from, symbols[i])) to[symbols[i]] = from[symbols[i]]; } } return to; }; })); //#endregion //#region node_modules/prop-types/lib/ReactPropTypesSecret.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_ReactPropTypesSecret = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; module.exports = ReactPropTypesSecret; })); //#endregion //#region node_modules/prop-types/lib/has.js var require_has = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); })); //#endregion //#region node_modules/prop-types/checkPropTypes.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_checkPropTypes = /* @__PURE__ */ __commonJSMin(((exports, module) => { var printWarning = function() {}; var ReactPropTypesSecret = require_ReactPropTypesSecret(); var loggedTypeFailures = {}; var has = require_has(); printWarning = function(text) { var message = "Warning: " + text; if (typeof console !== "undefined") console.error(message); try { throw new Error(message); } catch (x) {} }; /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) { var error; try { if (typeof typeSpecs[typeSpecName] !== "function") { var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); err.name = "Invariant Violation"; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) printWarning((componentName || "React class") + ": type specification of " + location + " `" + typeSpecName + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof error + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."); if (error instanceof Error && !(error.message in loggedTypeFailures)) { loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ""; printWarning("Failed " + location + " type: " + error.message + (stack != null ? stack : "")); } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes.resetWarningCache = function() { loggedTypeFailures = {}; }; module.exports = checkPropTypes; })); //#endregion //#region node_modules/prop-types/factoryWithTypeCheckers.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_factoryWithTypeCheckers = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactIs = require_react_is(); var assign = require_object_assign(); var ReactPropTypesSecret = require_ReactPropTypesSecret(); var has = require_has(); var checkPropTypes = require_checkPropTypes(); var printWarning = function() {}; printWarning = function(text) { var message = "Warning: " + text; if (typeof console !== "undefined") console.error(message); try { throw new Error(message); } catch (x) {} }; function emptyFunctionThatReturnsNull() { return null; } module.exports = function(isValidElement, throwOnDirectAccess) { var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = "@@iterator"; /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === "function") return iteratorFn; } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = "<>"; var ReactPropTypes = { array: createPrimitiveTypeChecker("array"), bigint: createPrimitiveTypeChecker("bigint"), bool: createPrimitiveTypeChecker("boolean"), func: createPrimitiveTypeChecker("function"), number: createPrimitiveTypeChecker("number"), object: createPrimitiveTypeChecker("object"), string: createPrimitiveTypeChecker("string"), symbol: createPrimitiveTypeChecker("symbol"), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ function is(x, y) { if (x === y) return x !== 0 || 1 / x === 1 / y; else return x !== x && y !== y; } /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === "object" ? data : {}; this.stack = ""; } PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { var err = /* @__PURE__ */ new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types"); err.name = "Invariant Violation"; throw err; } else if (typeof console !== "undefined") { var cacheKey = componentName + ":" + propName; if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { printWarning("You are manually calling a React.PropTypes validation function for the `" + propFullName + "` prop on `" + componentName + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); } return null; } else return validate(props, propName, componentName, location, propFullName); } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; if (getPropType(propValue) !== expectedType) { var preciseType = getPreciseType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), { expectedType }); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + "[" + i + "]", ReactPropTypesSecret); if (error instanceof Error) return error; } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (arguments.length > 1) printWarning("Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."); else printWarning("Invalid argument supplied to oneOf, expected an array."); return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null; var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { if (getPreciseType(value) === "symbol") return String(value); return value; }); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); for (var key in propValue) if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error instanceof Error) return error; } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { printWarning("Invalid argument supplied to oneOfType, expected an instance of array."); return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== "function") { printWarning("Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i + "."); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) return null; if (checkerResult.data && has(checkerResult.data, "expectedType")) expectedTypes.push(checkerResult.data.expectedType); } var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { return new PropTypeError((componentName || "React class") + ": " + location + " type `" + propFullName + "." + key + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + type + "`."); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) return error; } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); for (var key in assign({}, props[propName], shapeTypes)) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); if (!checker) return new PropTypeError("Invalid " + location + " `" + propFullName + "` key `" + key + "` supplied to `" + componentName + "`.\nBad object: " + JSON.stringify(props[propName], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(shapeTypes), null, " ")); var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) return error; } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case "number": case "string": case "undefined": return true; case "boolean": return !propValue; case "object": if (Array.isArray(propValue)) return propValue.every(isNode); if (propValue === null || isValidElement(propValue)) return true; var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) if (!isNode(step.value)) return false; } else while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) return false; } } } else return false; return true; default: return false; } } function isSymbol(propType, propValue) { if (propType === "symbol") return true; if (!propValue) return false; if (propValue["@@toStringTag"] === "Symbol") return true; if (typeof Symbol === "function" && propValue instanceof Symbol) return true; return false; } function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) return "array"; if (propValue instanceof RegExp) return "object"; if (isSymbol(propType, propValue)) return "symbol"; return propType; } function getPreciseType(propValue) { if (typeof propValue === "undefined" || propValue === null) return "" + propValue; var propType = getPropType(propValue); if (propType === "object") { if (propValue instanceof Date) return "date"; else if (propValue instanceof RegExp) return "regexp"; } return propType; } function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case "array": case "object": return "an " + type; case "boolean": case "date": case "regexp": return "a " + type; default: return type; } } function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) return ANONYMOUS; return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; })); //#endregion //#region node_modules/prop-types/index.js var require_prop_types = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactIs = require_react_is(); var throwOnDirectAccess = true; module.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js init_defineProperty(); var import_prop_types = /* @__PURE__ */ __toESM(require_prop_types()); function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } //#endregion //#region node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js function _objectWithoutProperties(e, t) { if (null == e) return {}; var o; var r; var i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } //#endregion //#region node_modules/lottie-web/build/player/lottie.js var require_lottie = /* @__PURE__ */ __commonJSMin(((exports, module) => { typeof document !== "undefined" && typeof navigator !== "undefined" && (function(global, factory) { typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.lottie = factory()); })(exports, (function() { "use strict"; var svgNS = "http://www.w3.org/2000/svg"; var locationHref = ""; var _useWebWorker = false; var initialDefaultFrame = -999999; var setWebWorker = function setWebWorker(flag) { _useWebWorker = !!flag; }; var getWebWorker = function getWebWorker() { return _useWebWorker; }; var setLocationHref = function setLocationHref(value) { locationHref = value; }; var getLocationHref = function getLocationHref() { return locationHref; }; function createTag(type) { return document.createElement(type); } function extendPrototype(sources, destination) { var i; var len = sources.length; var sourcePrototype; for (i = 0; i < len; i += 1) { sourcePrototype = sources[i].prototype; for (var attr in sourcePrototype) if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr]; } } function getDescriptor(object, prop) { return Object.getOwnPropertyDescriptor(object, prop); } function createProxyFunction(prototype) { function ProxyFunction() {} ProxyFunction.prototype = prototype; return ProxyFunction; } var audioControllerFactory = function() { function AudioController(audioFactory) { this.audios = []; this.audioFactory = audioFactory; this._volume = 1; this._isMuted = false; } AudioController.prototype = { addAudio: function addAudio(audio) { this.audios.push(audio); }, pause: function pause() { var i; var len = this.audios.length; for (i = 0; i < len; i += 1) this.audios[i].pause(); }, resume: function resume() { var i; var len = this.audios.length; for (i = 0; i < len; i += 1) this.audios[i].resume(); }, setRate: function setRate(rateValue) { var i; var len = this.audios.length; for (i = 0; i < len; i += 1) this.audios[i].setRate(rateValue); }, createAudio: function createAudio(assetPath) { if (this.audioFactory) return this.audioFactory(assetPath); if (window.Howl) return new window.Howl({ src: [assetPath] }); return { isPlaying: false, play: function play() { this.isPlaying = true; }, seek: function seek() { this.isPlaying = false; }, playing: function playing() {}, rate: function rate() {}, setVolume: function setVolume() {} }; }, setAudioFactory: function setAudioFactory(audioFactory) { this.audioFactory = audioFactory; }, setVolume: function setVolume(value) { this._volume = value; this._updateVolume(); }, mute: function mute() { this._isMuted = true; this._updateVolume(); }, unmute: function unmute() { this._isMuted = false; this._updateVolume(); }, getVolume: function getVolume() { return this._volume; }, _updateVolume: function _updateVolume() { var i; var len = this.audios.length; for (i = 0; i < len; i += 1) this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1)); } }; return function() { return new AudioController(); }; }(); var createTypedArray = function() { function createRegularArray(type, len) { var i = 0; var arr = []; var value; switch (type) { case "int16": case "uint8c": value = 1; break; default: value = 1.1; break; } for (i = 0; i < len; i += 1) arr.push(value); return arr; } function createTypedArrayFactory(type, len) { if (type === "float32") return new Float32Array(len); if (type === "int16") return new Int16Array(len); if (type === "uint8c") return new Uint8ClampedArray(len); return createRegularArray(type, len); } if (typeof Uint8ClampedArray === "function" && typeof Float32Array === "function") return createTypedArrayFactory; return createRegularArray; }(); function createSizedArray(len) { return Array.apply(null, { length: len }); } function _typeof$6(o) { "@babel/helpers - typeof"; return _typeof$6 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$6(o); } var subframeEnabled = true; var expressionsPlugin = null; var expressionsInterfaces = null; var idPrefix$1 = ""; var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); var _shouldRoundValues = false; var bmPow = Math.pow; var bmSqrt = Math.sqrt; var bmFloor = Math.floor; var bmMax = Math.max; var bmMin = Math.min; var BMMath = {}; (function() { 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" ]; var i; var len = propertyNames.length; for (i = 0; i < len; i += 1) BMMath[propertyNames[i]] = Math[propertyNames[i]]; })(); function ProjectInterface$1() { return {}; } BMMath.random = Math.random; BMMath.abs = function(val) { if (_typeof$6(val) === "object" && val.length) { var absArr = createSizedArray(val.length); var i; var len = val.length; for (i = 0; i < len; i += 1) absArr[i] = Math.abs(val[i]); return absArr; } return Math.abs(val); }; var defaultCurveSegments = 150; var degToRads = Math.PI / 180; var roundCorner = .5519; function roundValues(flag) { _shouldRoundValues = !!flag; } function bmRnd(value) { if (_shouldRoundValues) return Math.round(value); return value; } function styleDiv(element) { element.style.position = "absolute"; element.style.top = 0; element.style.left = 0; element.style.display = "block"; element.style.transformOrigin = "0 0"; element.style.webkitTransformOrigin = "0 0"; element.style.backfaceVisibility = "visible"; element.style.webkitBackfaceVisibility = "visible"; element.style.transformStyle = "preserve-3d"; element.style.webkitTransformStyle = "preserve-3d"; element.style.mozTransformStyle = "preserve-3d"; } function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) { this.type = type; this.currentTime = currentTime; this.totalTime = totalTime; this.direction = frameMultiplier < 0 ? -1 : 1; } function BMCompleteEvent(type, frameMultiplier) { this.type = type; this.direction = frameMultiplier < 0 ? -1 : 1; } function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) { this.type = type; this.currentLoop = currentLoop; this.totalLoops = totalLoops; this.direction = frameMultiplier < 0 ? -1 : 1; } function BMSegmentStartEvent(type, firstFrame, totalFrames) { this.type = type; this.firstFrame = firstFrame; this.totalFrames = totalFrames; } function BMDestroyEvent(type, target) { this.type = type; this.target = target; } function BMRenderFrameErrorEvent(nativeError, currentTime) { this.type = "renderFrameError"; this.nativeError = nativeError; this.currentTime = currentTime; } function BMConfigErrorEvent(nativeError) { this.type = "configError"; this.nativeError = nativeError; } function BMAnimationConfigErrorEvent(type, nativeError) { this.type = type; this.nativeError = nativeError; } var createElementID = function() { var _count = 0; return function createID() { _count += 1; return idPrefix$1 + "__lottie_element_" + _count; }; }(); function HSVtoRGB(h, s, v) { var r; var g; var b; var i; var f; var p; var q; var t; i = Math.floor(h * 6); f = h * 6 - i; p = v * (1 - s); q = v * (1 - f * s); t = v * (1 - (1 - f) * s); switch (i % 6) { case 0: r = v; g = t; b = p; break; case 1: r = q; g = v; b = p; break; case 2: r = p; g = v; b = t; break; case 3: r = p; g = q; b = v; break; case 4: r = t; g = p; b = v; break; case 5: r = v; g = p; b = q; break; default: break; } return [ r, g, b ]; } function RGBtoHSV(r, g, b) { var max = Math.max(r, g, b); var min = Math.min(r, g, b); var d = max - min; var h; var s = max === 0 ? 0 : d / max; var v = max / 255; switch (max) { case min: h = 0; break; case r: h = g - b + d * (g < b ? 6 : 0); h /= 6 * d; break; case g: h = b - r + d * 2; h /= 6 * d; break; case b: h = r - g + d * 4; h /= 6 * d; break; default: break; } return [ h, s, v ]; } function addSaturationToRGB(color, offset) { var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); hsv[1] += offset; if (hsv[1] > 1) hsv[1] = 1; else if (hsv[1] <= 0) hsv[1] = 0; return HSVtoRGB(hsv[0], hsv[1], hsv[2]); } function addBrightnessToRGB(color, offset) { var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); hsv[2] += offset; if (hsv[2] > 1) hsv[2] = 1; else if (hsv[2] < 0) hsv[2] = 0; return HSVtoRGB(hsv[0], hsv[1], hsv[2]); } function addHueToRGB(color, offset) { var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); hsv[0] += offset / 360; if (hsv[0] > 1) hsv[0] -= 1; else if (hsv[0] < 0) hsv[0] += 1; return HSVtoRGB(hsv[0], hsv[1], hsv[2]); } var rgbToHex = function() { var colorMap = []; var i; var hex; for (i = 0; i < 256; i += 1) { hex = i.toString(16); colorMap[i] = hex.length === 1 ? "0" + hex : hex; } return function(r, g, b) { if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0; return "#" + colorMap[r] + colorMap[g] + colorMap[b]; }; }(); var setSubframeEnabled = function setSubframeEnabled(flag) { subframeEnabled = !!flag; }; var getSubframeEnabled = function getSubframeEnabled() { return subframeEnabled; }; var setExpressionsPlugin = function setExpressionsPlugin(value) { expressionsPlugin = value; }; var getExpressionsPlugin = function getExpressionsPlugin() { return expressionsPlugin; }; var setExpressionInterfaces = function setExpressionInterfaces(value) { expressionsInterfaces = value; }; var getExpressionInterfaces = function getExpressionInterfaces() { return expressionsInterfaces; }; var setDefaultCurveSegments = function setDefaultCurveSegments(value) { defaultCurveSegments = value; }; var getDefaultCurveSegments = function getDefaultCurveSegments() { return defaultCurveSegments; }; var setIdPrefix = function setIdPrefix(value) { idPrefix$1 = value; }; var getIdPrefix = function getIdPrefix() { return idPrefix$1; }; function createNS(type) { return document.createElementNS(svgNS, type); } function _typeof$5(o) { "@babel/helpers - typeof"; return _typeof$5 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$5(o); } var dataManager = function() { var _counterId = 1; var processes = []; var workerFn; var workerInstance; var workerProxy = { onmessage: function onmessage() {}, postMessage: function postMessage(path) { workerFn({ data: path }); } }; var _workerSelf = { postMessage: function postMessage(data) { workerProxy.onmessage({ data }); } }; function createWorker(fn) { if (window.Worker && window.Blob && getWebWorker()) { var blob = new Blob(["var _workerSelf = self; self.onmessage = ", fn.toString()], { type: "text/javascript" }); var url = URL.createObjectURL(blob); return new Worker(url); } workerFn = fn; return workerProxy; } function setupWorker() { if (!workerInstance) { workerInstance = createWorker(function workerStart(e) { function dataFunctionManager() { function completeLayers(layers, comps) { var layerData; var i; var len = layers.length; var j; var jLen; var k; var kLen; for (i = 0; i < len; i += 1) { layerData = layers[i]; if ("ks" in layerData && !layerData.completed) { layerData.completed = true; if (layerData.hasMask) { var maskProps = layerData.masksProperties; jLen = maskProps.length; for (j = 0; j < jLen; j += 1) if (maskProps[j].pt.k.i) convertPathsToAbsoluteValues(maskProps[j].pt.k); else { kLen = maskProps[j].pt.k.length; for (k = 0; k < kLen; k += 1) { if (maskProps[j].pt.k[k].s) convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]); if (maskProps[j].pt.k[k].e) convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]); } } } if (layerData.ty === 0) { layerData.layers = findCompLayers(layerData.refId, comps); completeLayers(layerData.layers, comps); } else if (layerData.ty === 4) completeShapes(layerData.shapes); else if (layerData.ty === 5) completeText(layerData); } } } function completeChars(chars, assets) { if (chars) { var i = 0; var len = chars.length; for (i = 0; i < len; i += 1) if (chars[i].t === 1) { chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); completeLayers(chars[i].data.layers, assets); } } } function findComp(id, comps) { var i = 0; var len = comps.length; while (i < len) { if (comps[i].id === id) return comps[i]; i += 1; } return null; } function findCompLayers(id, comps) { var comp = findComp(id, comps); if (comp) { if (!comp.layers.__used) { comp.layers.__used = true; return comp.layers; } return JSON.parse(JSON.stringify(comp.layers)); } return null; } function completeShapes(arr) { var i; var len = arr.length; var j; var jLen; for (i = len - 1; i >= 0; i -= 1) if (arr[i].ty === "sh") if (arr[i].ks.k.i) convertPathsToAbsoluteValues(arr[i].ks.k); else { jLen = arr[i].ks.k.length; for (j = 0; j < jLen; j += 1) { if (arr[i].ks.k[j].s) convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]); if (arr[i].ks.k[j].e) convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]); } } else if (arr[i].ty === "gr") completeShapes(arr[i].it); } function convertPathsToAbsoluteValues(path) { var i; var len = path.i.length; for (i = 0; i < len; i += 1) { path.i[i][0] += path.v[i][0]; path.i[i][1] += path.v[i][1]; path.o[i][0] += path.v[i][0]; path.o[i][1] += path.v[i][1]; } } function checkVersion(minimum, animVersionString) { var animVersion = animVersionString ? animVersionString.split(".") : [ 100, 100, 100 ]; if (minimum[0] > animVersion[0]) return true; if (animVersion[0] > minimum[0]) return false; if (minimum[1] > animVersion[1]) return true; if (animVersion[1] > minimum[1]) return false; if (minimum[2] > animVersion[2]) return true; if (animVersion[2] > minimum[2]) return false; return null; } var checkText = function() { var minimumVersion = [ 4, 4, 14 ]; function updateTextLayer(textLayer) { var documentData = textLayer.t.d; textLayer.t.d = { k: [{ s: documentData, t: 0 }] }; } function iterateLayers(layers) { var i; var len = layers.length; for (i = 0; i < len; i += 1) if (layers[i].ty === 5) updateTextLayer(layers[i]); } return function(animationData) { if (checkVersion(minimumVersion, animationData.v)) { iterateLayers(animationData.layers); if (animationData.assets) { var i; var len = animationData.assets.length; for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers); } } }; }(); var checkChars = function() { var minimumVersion = [ 4, 7, 99 ]; return function(animationData) { if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) { var i; var len = animationData.chars.length; for (i = 0; i < len; i += 1) { var charData = animationData.chars[i]; if (charData.data && charData.data.shapes) { completeShapes(charData.data.shapes); charData.data.ip = 0; charData.data.op = 99999; charData.data.st = 0; charData.data.sr = 1; charData.data.ks = { p: { k: [0, 0], a: 0 }, s: { k: [100, 100], a: 0 }, a: { k: [0, 0], a: 0 }, r: { k: 0, a: 0 }, o: { k: 100, a: 0 } }; if (!animationData.chars[i].t) { charData.data.shapes.push({ ty: "no" }); charData.data.shapes[0].it.push({ p: { k: [0, 0], a: 0 }, s: { k: [100, 100], a: 0 }, a: { k: [0, 0], a: 0 }, r: { k: 0, a: 0 }, o: { k: 100, a: 0 }, sk: { k: 0, a: 0 }, sa: { k: 0, a: 0 }, ty: "tr" }); } } } } }; }(); var checkPathProperties = function() { var minimumVersion = [ 5, 7, 15 ]; function updateTextLayer(textLayer) { var pathData = textLayer.t.p; if (typeof pathData.a === "number") pathData.a = { a: 0, k: pathData.a }; if (typeof pathData.p === "number") pathData.p = { a: 0, k: pathData.p }; if (typeof pathData.r === "number") pathData.r = { a: 0, k: pathData.r }; } function iterateLayers(layers) { var i; var len = layers.length; for (i = 0; i < len; i += 1) if (layers[i].ty === 5) updateTextLayer(layers[i]); } return function(animationData) { if (checkVersion(minimumVersion, animationData.v)) { iterateLayers(animationData.layers); if (animationData.assets) { var i; var len = animationData.assets.length; for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers); } } }; }(); var checkColors = function() { var minimumVersion = [ 4, 1, 9 ]; function iterateShapes(shapes) { var i; var len = shapes.length; var j; var jLen; for (i = 0; i < len; i += 1) if (shapes[i].ty === "gr") iterateShapes(shapes[i].it); else if (shapes[i].ty === "fl" || shapes[i].ty === "st") if (shapes[i].c.k && shapes[i].c.k[0].i) { jLen = shapes[i].c.k.length; for (j = 0; j < jLen; j += 1) { if (shapes[i].c.k[j].s) { shapes[i].c.k[j].s[0] /= 255; shapes[i].c.k[j].s[1] /= 255; shapes[i].c.k[j].s[2] /= 255; shapes[i].c.k[j].s[3] /= 255; } if (shapes[i].c.k[j].e) { shapes[i].c.k[j].e[0] /= 255; shapes[i].c.k[j].e[1] /= 255; shapes[i].c.k[j].e[2] /= 255; shapes[i].c.k[j].e[3] /= 255; } } } else { shapes[i].c.k[0] /= 255; shapes[i].c.k[1] /= 255; shapes[i].c.k[2] /= 255; shapes[i].c.k[3] /= 255; } } function iterateLayers(layers) { var i; var len = layers.length; for (i = 0; i < len; i += 1) if (layers[i].ty === 4) iterateShapes(layers[i].shapes); } return function(animationData) { if (checkVersion(minimumVersion, animationData.v)) { iterateLayers(animationData.layers); if (animationData.assets) { var i; var len = animationData.assets.length; for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers); } } }; }(); var checkShapes = function() { var minimumVersion = [ 4, 4, 18 ]; function completeClosingShapes(arr) { var i; var len = arr.length; var j; var jLen; for (i = len - 1; i >= 0; i -= 1) if (arr[i].ty === "sh") if (arr[i].ks.k.i) arr[i].ks.k.c = arr[i].closed; else { jLen = arr[i].ks.k.length; for (j = 0; j < jLen; j += 1) { if (arr[i].ks.k[j].s) arr[i].ks.k[j].s[0].c = arr[i].closed; if (arr[i].ks.k[j].e) arr[i].ks.k[j].e[0].c = arr[i].closed; } } else if (arr[i].ty === "gr") completeClosingShapes(arr[i].it); } function iterateLayers(layers) { var layerData; var i; var len = layers.length; var j; var jLen; var k; var kLen; for (i = 0; i < len; i += 1) { layerData = layers[i]; if (layerData.hasMask) { var maskProps = layerData.masksProperties; jLen = maskProps.length; for (j = 0; j < jLen; j += 1) if (maskProps[j].pt.k.i) maskProps[j].pt.k.c = maskProps[j].cl; else { kLen = maskProps[j].pt.k.length; for (k = 0; k < kLen; k += 1) { if (maskProps[j].pt.k[k].s) maskProps[j].pt.k[k].s[0].c = maskProps[j].cl; if (maskProps[j].pt.k[k].e) maskProps[j].pt.k[k].e[0].c = maskProps[j].cl; } } } if (layerData.ty === 4) completeClosingShapes(layerData.shapes); } } return function(animationData) { if (checkVersion(minimumVersion, animationData.v)) { iterateLayers(animationData.layers); if (animationData.assets) { var i; var len = animationData.assets.length; for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers); } } }; }(); function completeData(animationData) { if (animationData.__complete) return; checkColors(animationData); checkText(animationData); checkChars(animationData); checkPathProperties(animationData); checkShapes(animationData); completeLayers(animationData.layers, animationData.assets); completeChars(animationData.chars, animationData.assets); animationData.__complete = true; } function completeText(data) { if (data.t.a.length === 0 && !("m" in data.t.p)) {} } var moduleOb = {}; moduleOb.completeData = completeData; moduleOb.checkColors = checkColors; moduleOb.checkChars = checkChars; moduleOb.checkPathProperties = checkPathProperties; moduleOb.checkShapes = checkShapes; moduleOb.completeLayers = completeLayers; return moduleOb; } if (!_workerSelf.dataManager) _workerSelf.dataManager = dataFunctionManager(); if (!_workerSelf.assetLoader) _workerSelf.assetLoader = function() { function formatResponse(xhr) { var contentTypeHeader = xhr.getResponseHeader("content-type"); if (contentTypeHeader && xhr.responseType === "json" && contentTypeHeader.indexOf("json") !== -1) return xhr.response; if (xhr.response && _typeof$5(xhr.response) === "object") return xhr.response; if (xhr.response && typeof xhr.response === "string") return JSON.parse(xhr.response); if (xhr.responseText) return JSON.parse(xhr.responseText); return null; } function loadAsset(path, fullPath, callback, errorCallback) { var response; var xhr = new XMLHttpRequest(); try { xhr.responseType = "json"; } catch (err) {} xhr.onreadystatechange = function() { if (xhr.readyState === 4) if (xhr.status === 200) { response = formatResponse(xhr); callback(response); } else try { response = formatResponse(xhr); callback(response); } catch (err) { if (errorCallback) errorCallback(err); } }; try { xhr.open([ "G", "E", "T" ].join(""), path, true); } catch (error) { xhr.open([ "G", "E", "T" ].join(""), fullPath + "/" + path, true); } xhr.send(); } return { load: loadAsset }; }(); if (e.data.type === "loadAnimation") _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function(data) { _workerSelf.dataManager.completeData(data); _workerSelf.postMessage({ id: e.data.id, payload: data, status: "success" }); }, function() { _workerSelf.postMessage({ id: e.data.id, status: "error" }); }); else if (e.data.type === "complete") { var animation = e.data.animation; _workerSelf.dataManager.completeData(animation); _workerSelf.postMessage({ id: e.data.id, payload: animation, status: "success" }); } else if (e.data.type === "loadData") _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function(data) { _workerSelf.postMessage({ id: e.data.id, payload: data, status: "success" }); }, function() { _workerSelf.postMessage({ id: e.data.id, status: "error" }); }); }); workerInstance.onmessage = function(event) { var data = event.data; var id = data.id; var process = processes[id]; processes[id] = null; if (data.status === "success") process.onComplete(data.payload); else if (process.onError) process.onError(); }; } } function createProcess(onComplete, onError) { _counterId += 1; var id = "processId_" + _counterId; processes[id] = { onComplete, onError }; return id; } function loadAnimation(path, onComplete, onError) { setupWorker(); var processId = createProcess(onComplete, onError); workerInstance.postMessage({ type: "loadAnimation", path, fullPath: window.location.origin + window.location.pathname, id: processId }); } function loadData(path, onComplete, onError) { setupWorker(); var processId = createProcess(onComplete, onError); workerInstance.postMessage({ type: "loadData", path, fullPath: window.location.origin + window.location.pathname, id: processId }); } function completeAnimation(anim, onComplete, onError) { setupWorker(); var processId = createProcess(onComplete, onError); workerInstance.postMessage({ type: "complete", animation: anim, id: processId }); } return { loadAnimation, loadData, completeAnimation }; }(); var ImagePreloader = function() { var proxyImage = function() { var canvas = createTag("canvas"); canvas.width = 1; canvas.height = 1; var ctx = canvas.getContext("2d"); ctx.fillStyle = "rgba(0,0,0,0)"; ctx.fillRect(0, 0, 1, 1); return canvas; }(); function imageLoaded() { this.loadedAssets += 1; if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { if (this.imagesLoadedCb) this.imagesLoadedCb(null); } } function footageLoaded() { this.loadedFootagesCount += 1; if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { if (this.imagesLoadedCb) this.imagesLoadedCb(null); } } function getAssetsPath(assetData, assetsPath, originalPath) { var path = ""; if (assetData.e) path = assetData.p; else if (assetsPath) { var imagePath = assetData.p; if (imagePath.indexOf("images/") !== -1) imagePath = imagePath.split("/")[1]; path = assetsPath + imagePath; } else { path = originalPath; path += assetData.u ? assetData.u : ""; path += assetData.p; } return path; } function testImageLoaded(img) { var _count = 0; var intervalId = setInterval(function() { if (img.getBBox().width || _count > 500) { this._imageLoaded(); clearInterval(intervalId); } _count += 1; }.bind(this), 50); } function createImageData(assetData) { var path = getAssetsPath(assetData, this.assetsPath, this.path); var img = createNS("image"); if (isSafari) this.testImageLoaded(img); else img.addEventListener("load", this._imageLoaded, false); img.addEventListener("error", function() { ob.img = proxyImage; this._imageLoaded(); }.bind(this), false); img.setAttributeNS("http://www.w3.org/1999/xlink", "href", path); if (this._elementHelper.append) this._elementHelper.append(img); else this._elementHelper.appendChild(img); var ob = { img, assetData }; return ob; } function createImgData(assetData) { var path = getAssetsPath(assetData, this.assetsPath, this.path); var img = createTag("img"); img.crossOrigin = "anonymous"; img.addEventListener("load", this._imageLoaded, false); img.addEventListener("error", function() { ob.img = proxyImage; this._imageLoaded(); }.bind(this), false); img.src = path; var ob = { img, assetData }; return ob; } function createFootageData(data) { var ob = { assetData: data }; var path = getAssetsPath(data, this.assetsPath, this.path); dataManager.loadData(path, function(footageData) { ob.img = footageData; this._footageLoaded(); }.bind(this), function() { ob.img = {}; this._footageLoaded(); }.bind(this)); return ob; } function loadAssets(assets, cb) { this.imagesLoadedCb = cb; var i; var len = assets.length; for (i = 0; i < len; i += 1) if (!assets[i].layers) { if (!assets[i].t || assets[i].t === "seq") { this.totalImages += 1; this.images.push(this._createImageData(assets[i])); } else if (assets[i].t === 3) { this.totalFootages += 1; this.images.push(this.createFootageData(assets[i])); } } } function setPath(path) { this.path = path || ""; } function setAssetsPath(path) { this.assetsPath = path || ""; } function getAsset(assetData) { var i = 0; var len = this.images.length; while (i < len) { if (this.images[i].assetData === assetData) return this.images[i].img; i += 1; } return null; } function destroy() { this.imagesLoadedCb = null; this.images.length = 0; } function loadedImages() { return this.totalImages === this.loadedAssets; } function loadedFootages() { return this.totalFootages === this.loadedFootagesCount; } function setCacheType(type, elementHelper) { if (type === "svg") { this._elementHelper = elementHelper; this._createImageData = this.createImageData.bind(this); } else this._createImageData = this.createImgData.bind(this); } function ImagePreloaderFactory() { this._imageLoaded = imageLoaded.bind(this); this._footageLoaded = footageLoaded.bind(this); this.testImageLoaded = testImageLoaded.bind(this); this.createFootageData = createFootageData.bind(this); this.assetsPath = ""; this.path = ""; this.totalImages = 0; this.totalFootages = 0; this.loadedAssets = 0; this.loadedFootagesCount = 0; this.imagesLoadedCb = null; this.images = []; } ImagePreloaderFactory.prototype = { loadAssets, setAssetsPath, setPath, loadedImages, loadedFootages, destroy, getAsset, createImgData, createImageData, imageLoaded, footageLoaded, setCacheType }; return ImagePreloaderFactory; }(); function BaseEvent() {} BaseEvent.prototype = { triggerEvent: function triggerEvent(eventName, args) { if (this._cbs[eventName]) { var callbacks = this._cbs[eventName]; for (var i = 0; i < callbacks.length; i += 1) callbacks[i](args); } }, addEventListener: function addEventListener(eventName, callback) { if (!this._cbs[eventName]) this._cbs[eventName] = []; this._cbs[eventName].push(callback); return function() { this.removeEventListener(eventName, callback); }.bind(this); }, removeEventListener: function removeEventListener(eventName, callback) { if (!callback) this._cbs[eventName] = null; else if (this._cbs[eventName]) { var i = 0; var len = this._cbs[eventName].length; while (i < len) { if (this._cbs[eventName][i] === callback) { this._cbs[eventName].splice(i, 1); i -= 1; len -= 1; } i += 1; } if (!this._cbs[eventName].length) this._cbs[eventName] = null; } } }; var markerParser = function() { function parsePayloadLines(payload) { var lines = payload.split("\r\n"); var keys = {}; var line; var keysCount = 0; for (var i = 0; i < lines.length; i += 1) { line = lines[i].split(":"); if (line.length === 2) { keys[line[0]] = line[1].trim(); keysCount += 1; } } if (keysCount === 0) throw new Error(); return keys; } return function(_markers) { var markers = []; for (var i = 0; i < _markers.length; i += 1) { var _marker = _markers[i]; var markerData = { time: _marker.tm, duration: _marker.dr }; try { markerData.payload = JSON.parse(_markers[i].cm); } catch (_) { try { markerData.payload = parsePayloadLines(_markers[i].cm); } catch (__) { markerData.payload = { name: _markers[i].cm }; } } markers.push(markerData); } return markers; }; }(); var ProjectInterface = function() { function registerComposition(comp) { this.compositions.push(comp); } return function() { function _thisProjectFunction(name) { var i = 0; var len = this.compositions.length; while (i < len) { if (this.compositions[i].data && this.compositions[i].data.nm === name) { if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) this.compositions[i].prepareFrame(this.currentFrame); return this.compositions[i].compInterface; } i += 1; } return null; } _thisProjectFunction.compositions = []; _thisProjectFunction.currentFrame = 0; _thisProjectFunction.registerComposition = registerComposition; return _thisProjectFunction; }; }(); var renderers = {}; var registerRenderer = function registerRenderer(key, value) { renderers[key] = value; }; function getRenderer(key) { return renderers[key]; } function getRegisteredRenderer() { if (renderers.canvas) return "canvas"; for (var key in renderers) if (renderers[key]) return key; return ""; } function _typeof$4(o) { "@babel/helpers - typeof"; return _typeof$4 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$4(o); } var AnimationItem = function AnimationItem() { this._cbs = []; this.name = ""; this.path = ""; this.isLoaded = false; this.currentFrame = 0; this.currentRawFrame = 0; this.firstFrame = 0; this.totalFrames = 0; this.frameRate = 0; this.frameMult = 0; this.playSpeed = 1; this.playDirection = 1; this.playCount = 0; this.animationData = {}; this.assets = []; this.isPaused = true; this.autoplay = false; this.loop = true; this.renderer = null; this.animationID = createElementID(); this.assetsPath = ""; this.timeCompleted = 0; this.segmentPos = 0; this.isSubframeEnabled = getSubframeEnabled(); this.segments = []; this._idle = true; this._completedLoop = false; this.projectInterface = ProjectInterface(); this.imagePreloader = new ImagePreloader(); this.audioController = audioControllerFactory(); this.markers = []; this.configAnimation = this.configAnimation.bind(this); this.onSetupError = this.onSetupError.bind(this); this.onSegmentComplete = this.onSegmentComplete.bind(this); this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0); this.expressionsPlugin = getExpressionsPlugin(); }; extendPrototype([BaseEvent], AnimationItem); AnimationItem.prototype.setParams = function(params) { if (params.wrapper || params.container) this.wrapper = params.wrapper || params.container; var animType = "svg"; if (params.animType) animType = params.animType; else if (params.renderer) animType = params.renderer; var RendererClass = getRenderer(animType); this.renderer = new RendererClass(this, params.rendererSettings); this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs); this.renderer.setProjectInterface(this.projectInterface); this.animType = animType; if (params.loop === "" || params.loop === null || params.loop === void 0 || params.loop === true) this.loop = true; else if (params.loop === false) this.loop = false; else this.loop = parseInt(params.loop, 10); this.autoplay = "autoplay" in params ? params.autoplay : true; this.name = params.name ? params.name : ""; this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, "autoloadSegments") ? params.autoloadSegments : true; this.assetsPath = params.assetsPath; this.initialSegment = params.initialSegment; if (params.audioFactory) this.audioController.setAudioFactory(params.audioFactory); if (params.animationData) this.setupAnimation(params.animationData); else if (params.path) { if (params.path.lastIndexOf("\\") !== -1) this.path = params.path.substr(0, params.path.lastIndexOf("\\") + 1); else this.path = params.path.substr(0, params.path.lastIndexOf("/") + 1); this.fileName = params.path.substr(params.path.lastIndexOf("/") + 1); this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json")); dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError); } }; AnimationItem.prototype.onSetupError = function() { this.trigger("data_failed"); }; AnimationItem.prototype.setupAnimation = function(data) { dataManager.completeAnimation(data, this.configAnimation); }; AnimationItem.prototype.setData = function(wrapper, animationData) { if (animationData) { if (_typeof$4(animationData) !== "object") animationData = JSON.parse(animationData); } var params = { wrapper, animationData }; var wrapperAttributes = wrapper.attributes; params.path = wrapperAttributes.getNamedItem("data-animation-path") ? wrapperAttributes.getNamedItem("data-animation-path").value : wrapperAttributes.getNamedItem("data-bm-path") ? wrapperAttributes.getNamedItem("data-bm-path").value : wrapperAttributes.getNamedItem("bm-path") ? wrapperAttributes.getNamedItem("bm-path").value : ""; params.animType = wrapperAttributes.getNamedItem("data-anim-type") ? wrapperAttributes.getNamedItem("data-anim-type").value : wrapperAttributes.getNamedItem("data-bm-type") ? wrapperAttributes.getNamedItem("data-bm-type").value : wrapperAttributes.getNamedItem("bm-type") ? wrapperAttributes.getNamedItem("bm-type").value : wrapperAttributes.getNamedItem("data-bm-renderer") ? wrapperAttributes.getNamedItem("data-bm-renderer").value : wrapperAttributes.getNamedItem("bm-renderer") ? wrapperAttributes.getNamedItem("bm-renderer").value : getRegisteredRenderer() || "canvas"; var loop = wrapperAttributes.getNamedItem("data-anim-loop") ? wrapperAttributes.getNamedItem("data-anim-loop").value : wrapperAttributes.getNamedItem("data-bm-loop") ? wrapperAttributes.getNamedItem("data-bm-loop").value : wrapperAttributes.getNamedItem("bm-loop") ? wrapperAttributes.getNamedItem("bm-loop").value : ""; if (loop === "false") params.loop = false; else if (loop === "true") params.loop = true; else if (loop !== "") params.loop = parseInt(loop, 10); params.autoplay = (wrapperAttributes.getNamedItem("data-anim-autoplay") ? wrapperAttributes.getNamedItem("data-anim-autoplay").value : wrapperAttributes.getNamedItem("data-bm-autoplay") ? wrapperAttributes.getNamedItem("data-bm-autoplay").value : wrapperAttributes.getNamedItem("bm-autoplay") ? wrapperAttributes.getNamedItem("bm-autoplay").value : true) !== "false"; params.name = wrapperAttributes.getNamedItem("data-name") ? wrapperAttributes.getNamedItem("data-name").value : wrapperAttributes.getNamedItem("data-bm-name") ? wrapperAttributes.getNamedItem("data-bm-name").value : wrapperAttributes.getNamedItem("bm-name") ? wrapperAttributes.getNamedItem("bm-name").value : ""; if ((wrapperAttributes.getNamedItem("data-anim-prerender") ? wrapperAttributes.getNamedItem("data-anim-prerender").value : wrapperAttributes.getNamedItem("data-bm-prerender") ? wrapperAttributes.getNamedItem("data-bm-prerender").value : wrapperAttributes.getNamedItem("bm-prerender") ? wrapperAttributes.getNamedItem("bm-prerender").value : "") === "false") params.prerender = false; if (!params.path) this.trigger("destroy"); else this.setParams(params); }; AnimationItem.prototype.includeLayers = function(data) { if (data.op > this.animationData.op) { this.animationData.op = data.op; this.totalFrames = Math.floor(data.op - this.animationData.ip); } var layers = this.animationData.layers; var i; var len = layers.length; var newLayers = data.layers; var j; var jLen = newLayers.length; for (j = 0; j < jLen; j += 1) { i = 0; while (i < len) { if (layers[i].id === newLayers[j].id) { layers[i] = newLayers[j]; break; } i += 1; } } if (data.chars || data.fonts) { this.renderer.globalData.fontManager.addChars(data.chars); this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs); } if (data.assets) { len = data.assets.length; for (i = 0; i < len; i += 1) this.animationData.assets.push(data.assets[i]); } this.animationData.__complete = false; dataManager.completeAnimation(this.animationData, this.onSegmentComplete); }; AnimationItem.prototype.onSegmentComplete = function(data) { this.animationData = data; var expressionsPlugin = getExpressionsPlugin(); if (expressionsPlugin) expressionsPlugin.initExpressions(this); this.loadNextSegment(); }; AnimationItem.prototype.loadNextSegment = function() { var segments = this.animationData.segments; if (!segments || segments.length === 0 || !this.autoloadSegments) { this.trigger("data_ready"); this.timeCompleted = this.totalFrames; return; } var segment = segments.shift(); this.timeCompleted = segment.time * this.frameRate; var segmentPath = this.path + this.fileName + "_" + this.segmentPos + ".json"; this.segmentPos += 1; dataManager.loadData(segmentPath, this.includeLayers.bind(this), function() { this.trigger("data_failed"); }.bind(this)); }; AnimationItem.prototype.loadSegments = function() { if (!this.animationData.segments) this.timeCompleted = this.totalFrames; this.loadNextSegment(); }; AnimationItem.prototype.imagesLoaded = function() { this.trigger("loaded_images"); this.checkLoaded(); }; AnimationItem.prototype.preloadImages = function() { this.imagePreloader.setAssetsPath(this.assetsPath); this.imagePreloader.setPath(this.path); this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this)); }; AnimationItem.prototype.configAnimation = function(animData) { if (!this.renderer) return; try { this.animationData = animData; if (this.initialSegment) { this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]); this.firstFrame = Math.round(this.initialSegment[0]); } else { this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip); this.firstFrame = Math.round(this.animationData.ip); } this.renderer.configAnimation(animData); if (!animData.assets) animData.assets = []; this.assets = this.animationData.assets; this.frameRate = this.animationData.fr; this.frameMult = this.animationData.fr / 1e3; this.renderer.searchExtraCompositions(animData.assets); this.markers = markerParser(animData.markers || []); this.trigger("config_ready"); this.preloadImages(); this.loadSegments(); this.updaFrameModifier(); this.waitForFontsLoaded(); if (this.isPaused) this.audioController.pause(); } catch (error) { this.triggerConfigError(error); } }; AnimationItem.prototype.waitForFontsLoaded = function() { if (!this.renderer) return; if (this.renderer.globalData.fontManager.isLoaded) this.checkLoaded(); else setTimeout(this.waitForFontsLoaded.bind(this), 20); }; AnimationItem.prototype.checkLoaded = function() { if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) { this.isLoaded = true; var expressionsPlugin = getExpressionsPlugin(); if (expressionsPlugin) expressionsPlugin.initExpressions(this); this.renderer.initItems(); setTimeout(function() { this.trigger("DOMLoaded"); }.bind(this), 0); this.gotoFrame(); if (this.autoplay) this.play(); } }; AnimationItem.prototype.resize = function(width, height) { var _width = typeof width === "number" ? width : void 0; var _height = typeof height === "number" ? height : void 0; this.renderer.updateContainerSize(_width, _height); }; AnimationItem.prototype.setSubframe = function(flag) { this.isSubframeEnabled = !!flag; }; AnimationItem.prototype.gotoFrame = function() { this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) this.currentFrame = this.timeCompleted; this.trigger("enterFrame"); this.renderFrame(); this.trigger("drawnFrame"); }; AnimationItem.prototype.renderFrame = function() { if (this.isLoaded === false || !this.renderer) return; try { if (this.expressionsPlugin) this.expressionsPlugin.resetFrame(); this.renderer.renderFrame(this.currentFrame + this.firstFrame); } catch (error) { this.triggerRenderFrameError(error); } }; AnimationItem.prototype.play = function(name) { if (name && this.name !== name) return; if (this.isPaused === true) { this.isPaused = false; this.trigger("_play"); this.audioController.resume(); if (this._idle) { this._idle = false; this.trigger("_active"); } } }; AnimationItem.prototype.pause = function(name) { if (name && this.name !== name) return; if (this.isPaused === false) { this.isPaused = true; this.trigger("_pause"); this._idle = true; this.trigger("_idle"); this.audioController.pause(); } }; AnimationItem.prototype.togglePause = function(name) { if (name && this.name !== name) return; if (this.isPaused === true) this.play(); else this.pause(); }; AnimationItem.prototype.stop = function(name) { if (name && this.name !== name) return; this.pause(); this.playCount = 0; this._completedLoop = false; this.setCurrentRawFrameValue(0); }; AnimationItem.prototype.getMarkerData = function(markerName) { var marker; for (var i = 0; i < this.markers.length; i += 1) { marker = this.markers[i]; if (marker.payload && marker.payload.name === markerName) return marker; } return null; }; AnimationItem.prototype.goToAndStop = function(value, isFrame, name) { if (name && this.name !== name) return; var numValue = Number(value); if (isNaN(numValue)) { var marker = this.getMarkerData(value); if (marker) this.goToAndStop(marker.time, true); } else if (isFrame) this.setCurrentRawFrameValue(value); else this.setCurrentRawFrameValue(value * this.frameModifier); this.pause(); }; AnimationItem.prototype.goToAndPlay = function(value, isFrame, name) { if (name && this.name !== name) return; var numValue = Number(value); if (isNaN(numValue)) { var marker = this.getMarkerData(value); if (marker) if (!marker.duration) this.goToAndStop(marker.time, true); else this.playSegments([marker.time, marker.time + marker.duration], true); } else this.goToAndStop(numValue, isFrame, name); this.play(); }; AnimationItem.prototype.advanceTime = function(value) { if (this.isPaused === true || this.isLoaded === false) return; var nextValue = this.currentRawFrame + value * this.frameModifier; var _isComplete = false; if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) if (!this.loop || this.playCount === this.loop) { if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) { _isComplete = true; nextValue = this.totalFrames - 1; } } else if (nextValue >= this.totalFrames) { this.playCount += 1; if (!this.checkSegments(nextValue % this.totalFrames)) { this.setCurrentRawFrameValue(nextValue % this.totalFrames); this._completedLoop = true; this.trigger("loopComplete"); } } else this.setCurrentRawFrameValue(nextValue); else if (nextValue < 0) { if (!this.checkSegments(nextValue % this.totalFrames)) if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames); if (!this._completedLoop) this._completedLoop = true; else this.trigger("loopComplete"); } else { _isComplete = true; nextValue = 0; } } else this.setCurrentRawFrameValue(nextValue); if (_isComplete) { this.setCurrentRawFrameValue(nextValue); this.pause(); this.trigger("complete"); } }; AnimationItem.prototype.adjustSegment = function(arr, offset) { this.playCount = 0; if (arr[1] < arr[0]) { if (this.frameModifier > 0) if (this.playSpeed < 0) this.setSpeed(-this.playSpeed); else this.setDirection(-1); this.totalFrames = arr[0] - arr[1]; this.timeCompleted = this.totalFrames; this.firstFrame = arr[1]; this.setCurrentRawFrameValue(this.totalFrames - .001 - offset); } else if (arr[1] > arr[0]) { if (this.frameModifier < 0) if (this.playSpeed < 0) this.setSpeed(-this.playSpeed); else this.setDirection(1); this.totalFrames = arr[1] - arr[0]; this.timeCompleted = this.totalFrames; this.firstFrame = arr[0]; this.setCurrentRawFrameValue(.001 + offset); } this.trigger("segmentStart"); }; AnimationItem.prototype.setSegment = function(init, end) { var pendingFrame = -1; if (this.isPaused) { if (this.currentRawFrame + this.firstFrame < init) pendingFrame = init; else if (this.currentRawFrame + this.firstFrame > end) pendingFrame = end - init; } this.firstFrame = init; this.totalFrames = end - init; this.timeCompleted = this.totalFrames; if (pendingFrame !== -1) this.goToAndStop(pendingFrame, true); }; AnimationItem.prototype.playSegments = function(arr, forceFlag) { if (forceFlag) this.segments.length = 0; if (_typeof$4(arr[0]) === "object") { var i; var len = arr.length; for (i = 0; i < len; i += 1) this.segments.push(arr[i]); } else this.segments.push(arr); if (this.segments.length && forceFlag) this.adjustSegment(this.segments.shift(), 0); if (this.isPaused) this.play(); }; AnimationItem.prototype.resetSegments = function(forceFlag) { this.segments.length = 0; this.segments.push([this.animationData.ip, this.animationData.op]); if (forceFlag) this.checkSegments(0); }; AnimationItem.prototype.checkSegments = function(offset) { if (this.segments.length) { this.adjustSegment(this.segments.shift(), offset); return true; } return false; }; AnimationItem.prototype.destroy = function(name) { if (name && this.name !== name || !this.renderer) return; this.renderer.destroy(); this.imagePreloader.destroy(); this.trigger("destroy"); this._cbs = null; this.onEnterFrame = null; this.onLoopComplete = null; this.onComplete = null; this.onSegmentStart = null; this.onDestroy = null; this.renderer = null; this.expressionsPlugin = null; this.imagePreloader = null; this.projectInterface = null; }; AnimationItem.prototype.setCurrentRawFrameValue = function(value) { this.currentRawFrame = value; this.gotoFrame(); }; AnimationItem.prototype.setSpeed = function(val) { this.playSpeed = val; this.updaFrameModifier(); }; AnimationItem.prototype.setDirection = function(val) { this.playDirection = val < 0 ? -1 : 1; this.updaFrameModifier(); }; AnimationItem.prototype.setLoop = function(isLooping) { this.loop = isLooping; }; AnimationItem.prototype.setVolume = function(val, name) { if (name && this.name !== name) return; this.audioController.setVolume(val); }; AnimationItem.prototype.getVolume = function() { return this.audioController.getVolume(); }; AnimationItem.prototype.mute = function(name) { if (name && this.name !== name) return; this.audioController.mute(); }; AnimationItem.prototype.unmute = function(name) { if (name && this.name !== name) return; this.audioController.unmute(); }; AnimationItem.prototype.updaFrameModifier = function() { this.frameModifier = this.frameMult * this.playSpeed * this.playDirection; this.audioController.setRate(this.playSpeed * this.playDirection); }; AnimationItem.prototype.getPath = function() { return this.path; }; AnimationItem.prototype.getAssetsPath = function(assetData) { var path = ""; if (assetData.e) path = assetData.p; else if (this.assetsPath) { var imagePath = assetData.p; if (imagePath.indexOf("images/") !== -1) imagePath = imagePath.split("/")[1]; path = this.assetsPath + imagePath; } else { path = this.path; path += assetData.u ? assetData.u : ""; path += assetData.p; } return path; }; AnimationItem.prototype.getAssetData = function(id) { var i = 0; var len = this.assets.length; while (i < len) { if (id === this.assets[i].id) return this.assets[i]; i += 1; } return null; }; AnimationItem.prototype.hide = function() { this.renderer.hide(); }; AnimationItem.prototype.show = function() { this.renderer.show(); }; AnimationItem.prototype.getDuration = function(isFrame) { return isFrame ? this.totalFrames : this.totalFrames / this.frameRate; }; AnimationItem.prototype.updateDocumentData = function(path, documentData, index) { try { this.renderer.getElementByPath(path).updateDocumentData(documentData, index); } catch (error) {} }; AnimationItem.prototype.trigger = function(name) { if (this._cbs && this._cbs[name]) switch (name) { case "enterFrame": this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier)); break; case "drawnFrame": this.drawnFrameEvent.currentTime = this.currentFrame; this.drawnFrameEvent.totalTime = this.totalFrames; this.drawnFrameEvent.direction = this.frameModifier; this.triggerEvent(name, this.drawnFrameEvent); break; case "loopComplete": this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); break; case "complete": this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult)); break; case "segmentStart": this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); break; case "destroy": this.triggerEvent(name, new BMDestroyEvent(name, this)); break; default: this.triggerEvent(name); } if (name === "enterFrame" && this.onEnterFrame) this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult)); if (name === "loopComplete" && this.onLoopComplete) this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); if (name === "complete" && this.onComplete) this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult)); if (name === "segmentStart" && this.onSegmentStart) this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); if (name === "destroy" && this.onDestroy) this.onDestroy.call(this, new BMDestroyEvent(name, this)); }; AnimationItem.prototype.triggerRenderFrameError = function(nativeError) { var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame); this.triggerEvent("error", error); if (this.onError) this.onError.call(this, error); }; AnimationItem.prototype.triggerConfigError = function(nativeError) { var error = new BMConfigErrorEvent(nativeError, this.currentFrame); this.triggerEvent("error", error); if (this.onError) this.onError.call(this, error); }; var animationManager = function() { var moduleOb = {}; var registeredAnimations = []; var initTime = 0; var len = 0; var playingAnimationsNum = 0; var _stopped = true; var _isFrozen = false; function removeElement(ev) { var i = 0; var animItem = ev.target; while (i < len) { if (registeredAnimations[i].animation === animItem) { registeredAnimations.splice(i, 1); i -= 1; len -= 1; if (!animItem.isPaused) subtractPlayingCount(); } i += 1; } } function registerAnimation(element, animationData) { if (!element) return null; var i = 0; while (i < len) { if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) return registeredAnimations[i].animation; i += 1; } var animItem = new AnimationItem(); setupAnimation(animItem, element); animItem.setData(element, animationData); return animItem; } function getRegisteredAnimations() { var i; var lenAnims = registeredAnimations.length; var animations = []; for (i = 0; i < lenAnims; i += 1) animations.push(registeredAnimations[i].animation); return animations; } function addPlayingCount() { playingAnimationsNum += 1; activate(); } function subtractPlayingCount() { playingAnimationsNum -= 1; } function setupAnimation(animItem, element) { animItem.addEventListener("destroy", removeElement); animItem.addEventListener("_active", addPlayingCount); animItem.addEventListener("_idle", subtractPlayingCount); registeredAnimations.push({ elem: element, animation: animItem }); len += 1; } function loadAnimation(params) { var animItem = new AnimationItem(); setupAnimation(animItem, null); animItem.setParams(params); return animItem; } function setSpeed(val, animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setSpeed(val, animation); } function setDirection(val, animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setDirection(val, animation); } function play(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.play(animation); } function resume(nowTime) { var elapsedTime = nowTime - initTime; var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.advanceTime(elapsedTime); initTime = nowTime; if (playingAnimationsNum && !_isFrozen) window.requestAnimationFrame(resume); else _stopped = true; } function first(nowTime) { initTime = nowTime; window.requestAnimationFrame(resume); } function pause(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.pause(animation); } function goToAndStop(value, isFrame, animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.goToAndStop(value, isFrame, animation); } function stop(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.stop(animation); } function togglePause(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.togglePause(animation); } function destroy(animation) { var i; for (i = len - 1; i >= 0; i -= 1) registeredAnimations[i].animation.destroy(animation); } function searchAnimations(animationData, standalone, renderer) { var animElements = [].concat([].slice.call(document.getElementsByClassName("lottie")), [].slice.call(document.getElementsByClassName("bodymovin"))); var i; var lenAnims = animElements.length; for (i = 0; i < lenAnims; i += 1) { if (renderer) animElements[i].setAttribute("data-bm-type", renderer); registerAnimation(animElements[i], animationData); } if (standalone && lenAnims === 0) { if (!renderer) renderer = "svg"; var body = document.getElementsByTagName("body")[0]; body.innerText = ""; var div = createTag("div"); div.style.width = "100%"; div.style.height = "100%"; div.setAttribute("data-bm-type", renderer); body.appendChild(div); registerAnimation(div, animationData); } } function resize() { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.resize(); } function activate() { if (!_isFrozen && playingAnimationsNum) { if (_stopped) { window.requestAnimationFrame(first); _stopped = false; } } } function freeze() { _isFrozen = true; } function unfreeze() { _isFrozen = false; activate(); } function setVolume(val, animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setVolume(val, animation); } function mute(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.mute(animation); } function unmute(animation) { var i; for (i = 0; i < len; i += 1) registeredAnimations[i].animation.unmute(animation); } moduleOb.registerAnimation = registerAnimation; moduleOb.loadAnimation = loadAnimation; moduleOb.setSpeed = setSpeed; moduleOb.setDirection = setDirection; moduleOb.play = play; moduleOb.pause = pause; moduleOb.stop = stop; moduleOb.togglePause = togglePause; moduleOb.searchAnimations = searchAnimations; moduleOb.resize = resize; moduleOb.goToAndStop = goToAndStop; moduleOb.destroy = destroy; moduleOb.freeze = freeze; moduleOb.unfreeze = unfreeze; moduleOb.setVolume = setVolume; moduleOb.mute = mute; moduleOb.unmute = unmute; moduleOb.getRegisteredAnimations = getRegisteredAnimations; return moduleOb; }(); var BezierFactory = function() { /** * BezierEasing - use bezier curve for transition easing function * by Gaëtan Renaudeau 2014 - 2015 – MIT License * * Credits: is based on Firefox's nsSMILKeySpline.cpp * Usage: * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ]) * spline.get(x) => returns the easing value | x must be in [0, 1] range * */ var ob = {}; ob.getBezierEasing = getBezierEasing; var beziers = {}; function getBezierEasing(a, b, c, d, nm) { var str = nm || ("bez_" + a + "_" + b + "_" + c + "_" + d).replace(/\./g, "p"); if (beziers[str]) return beziers[str]; var bezEasing = new BezierEasing([ a, b, c, d ]); beziers[str] = bezEasing; return bezEasing; } var NEWTON_ITERATIONS = 4; var NEWTON_MIN_SLOPE = .001; var SUBDIVISION_PRECISION = 1e-7; var SUBDIVISION_MAX_ITERATIONS = 10; var kSplineTableSize = 11; var kSampleStepSize = 1 / (kSplineTableSize - 1); var float32ArraySupported = typeof Float32Array === "function"; function A(aA1, aA2) { return 1 - 3 * aA2 + 3 * aA1; } function B(aA1, aA2) { return 3 * aA2 - 6 * aA1; } function C(aA1) { return 3 * aA1; } function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } function getSlope(aT, aA1, aA2) { return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1); } function binarySubdivide(aX, aA, aB, mX1, mX2) { var currentX; var currentT; var i = 0; do { currentT = aA + (aB - aA) / 2; currentX = calcBezier(currentT, mX1, mX2) - aX; if (currentX > 0) aB = currentT; else aA = currentT; } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); return currentT; } function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { for (var i = 0; i < NEWTON_ITERATIONS; ++i) { var currentSlope = getSlope(aGuessT, mX1, mX2); if (currentSlope === 0) return aGuessT; var currentX = calcBezier(aGuessT, mX1, mX2) - aX; aGuessT -= currentX / currentSlope; } return aGuessT; } /** * points is an array of [ mX1, mY1, mX2, mY2 ] */ function BezierEasing(points) { this._p = points; this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); this._precomputed = false; this.get = this.get.bind(this); } BezierEasing.prototype = { get: function get(x) { var mX1 = this._p[0]; var mY1 = this._p[1]; var mX2 = this._p[2]; var mY2 = this._p[3]; if (!this._precomputed) this._precompute(); if (mX1 === mY1 && mX2 === mY2) return x; if (x === 0) return 0; if (x === 1) return 1; return calcBezier(this._getTForX(x), mY1, mY2); }, _precompute: function _precompute() { var mX1 = this._p[0]; var mY1 = this._p[1]; var mX2 = this._p[2]; var mY2 = this._p[3]; this._precomputed = true; if (mX1 !== mY1 || mX2 !== mY2) this._calcSampleValues(); }, _calcSampleValues: function _calcSampleValues() { var mX1 = this._p[0]; var mX2 = this._p[2]; for (var i = 0; i < kSplineTableSize; ++i) this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); }, /** * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection. */ _getTForX: function _getTForX(aX) { var mX1 = this._p[0]; var mX2 = this._p[2]; var mSampleValues = this._mSampleValues; var intervalStart = 0; var currentSample = 1; var lastSample = kSplineTableSize - 1; for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) intervalStart += kSampleStepSize; --currentSample; var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]); var guessForT = intervalStart + dist * kSampleStepSize; var initialSlope = getSlope(guessForT, mX1, mX2); if (initialSlope >= NEWTON_MIN_SLOPE) return newtonRaphsonIterate(aX, guessForT, mX1, mX2); if (initialSlope === 0) return guessForT; return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); } }; return ob; }(); var pooling = function() { function _double(arr) { return arr.concat(createSizedArray(arr.length)); } return { "double": _double }; }(); var poolFactory = function() { return function(initialLength, _create, _release) { var _length = 0; var _maxLength = initialLength; var pool = createSizedArray(_maxLength); var ob = { newElement, release }; function newElement() { var element; if (_length) { _length -= 1; element = pool[_length]; } else element = _create(); return element; } function release(element) { if (_length === _maxLength) { pool = pooling["double"](pool); _maxLength *= 2; } if (_release) _release(element); pool[_length] = element; _length += 1; } return ob; }; }(); var bezierLengthPool = function() { function create() { return { addedLength: 0, percents: createTypedArray("float32", getDefaultCurveSegments()), lengths: createTypedArray("float32", getDefaultCurveSegments()) }; } return poolFactory(8, create); }(); var segmentsLengthPool = function() { function create() { return { lengths: [], totalLength: 0 }; } function release(element) { var i; var len = element.lengths.length; for (i = 0; i < len; i += 1) bezierLengthPool.release(element.lengths[i]); element.lengths.length = 0; } return poolFactory(8, create, release); }(); function bezFunction() { var math = Math; function pointOnLine2D(x1, y1, x2, y2, x3, y3) { var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1; return det1 > -.001 && det1 < .001; } function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) { if (z1 === 0 && z2 === 0 && z3 === 0) return pointOnLine2D(x1, y1, x2, y2, x3, y3); var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2)); var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2)); var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2)); var diffDist; if (dist1 > dist2) if (dist1 > dist3) diffDist = dist1 - dist2 - dist3; else diffDist = dist3 - dist2 - dist1; else if (dist3 > dist2) diffDist = dist3 - dist2 - dist1; else diffDist = dist2 - dist1 - dist3; return diffDist > -1e-4 && diffDist < 1e-4; } var getBezierLength = function() { return function(pt1, pt2, pt3, pt4) { var curveSegments = getDefaultCurveSegments(); var k; var i; var len; var ptCoord; var perc; var addedLength = 0; var ptDistance; var point = []; var lastPoint = []; var lengthData = bezierLengthPool.newElement(); len = pt3.length; for (k = 0; k < curveSegments; k += 1) { perc = k / (curveSegments - 1); ptDistance = 0; for (i = 0; i < len; i += 1) { 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]; point[i] = ptCoord; if (lastPoint[i] !== null) ptDistance += bmPow(point[i] - lastPoint[i], 2); lastPoint[i] = point[i]; } if (ptDistance) { ptDistance = bmSqrt(ptDistance); addedLength += ptDistance; } lengthData.percents[k] = perc; lengthData.lengths[k] = addedLength; } lengthData.addedLength = addedLength; return lengthData; }; }(); function getSegmentsLength(shapeData) { var segmentsLength = segmentsLengthPool.newElement(); var closed = shapeData.c; var pathV = shapeData.v; var pathO = shapeData.o; var pathI = shapeData.i; var i; var len = shapeData._length; var lengths = segmentsLength.lengths; var totalLength = 0; for (i = 0; i < len - 1; i += 1) { lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]); totalLength += lengths[i].addedLength; } if (closed && len) { lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]); totalLength += lengths[i].addedLength; } segmentsLength.totalLength = totalLength; return segmentsLength; } function BezierData(length) { this.segmentLength = 0; this.points = new Array(length); } function PointData(partial, point) { this.partialLength = partial; this.point = point; } var buildBezierData = function() { var storedData = {}; return function(pt1, pt2, pt3, pt4) { var bezierName = (pt1[0] + "_" + pt1[1] + "_" + pt2[0] + "_" + pt2[1] + "_" + pt3[0] + "_" + pt3[1] + "_" + pt4[0] + "_" + pt4[1]).replace(/\./g, "p"); if (!storedData[bezierName]) { var curveSegments = getDefaultCurveSegments(); var k; var i; var len; var ptCoord; var perc; var addedLength = 0; var ptDistance; var point; var lastPoint = null; 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])) curveSegments = 2; var bezierData = new BezierData(curveSegments); len = pt3.length; for (k = 0; k < curveSegments; k += 1) { point = createSizedArray(len); perc = k / (curveSegments - 1); ptDistance = 0; for (i = 0; i < len; i += 1) { 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]; point[i] = ptCoord; if (lastPoint !== null) ptDistance += bmPow(point[i] - lastPoint[i], 2); } ptDistance = bmSqrt(ptDistance); addedLength += ptDistance; bezierData.points[k] = new PointData(ptDistance, point); lastPoint = point; } bezierData.segmentLength = addedLength; storedData[bezierName] = bezierData; } return storedData[bezierName]; }; }(); function getDistancePerc(perc, bezierData) { var percents = bezierData.percents; var lengths = bezierData.lengths; var len = percents.length; var initPos = bmFloor((len - 1) * perc); var lengthPos = perc * bezierData.addedLength; var lPerc = 0; if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) return percents[initPos]; var dir = lengths[initPos] > lengthPos ? -1 : 1; var flag = true; while (flag) { if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) { lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]); flag = false; } else initPos += dir; if (initPos < 0 || initPos >= len - 1) { if (initPos === len - 1) return percents[initPos]; flag = false; } } return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc; } function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) { var t1 = getDistancePerc(percent, bezierData); var u1 = 1 - t1; return [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]) * 1e3) / 1e3, 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]) * 1e3) / 1e3]; } var bezierSegmentPoints = createTypedArray("float32", 8); function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) { if (startPerc < 0) startPerc = 0; else if (startPerc > 1) startPerc = 1; var t0 = getDistancePerc(startPerc, bezierData); endPerc = endPerc > 1 ? 1 : endPerc; var t1 = getDistancePerc(endPerc, bezierData); var i; var len = pt1.length; var u0 = 1 - t0; var u1 = 1 - t1; var u0u0u0 = u0 * u0 * u0; var t0u0u0_3 = t0 * u0 * u0 * 3; var t0t0u0_3 = t0 * t0 * u0 * 3; var t0t0t0 = t0 * t0 * t0; var u0u0u1 = u0 * u0 * u1; var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; var t0t0t1 = t0 * t0 * t1; var u0u1u1 = u0 * u1 * u1; var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; var t0t1t1 = t0 * t1 * t1; var u1u1u1 = u1 * u1 * u1; var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; var t1t1t1 = t1 * t1 * t1; for (i = 0; i < len; i += 1) { bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1e3) / 1e3; bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1e3) / 1e3; bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1e3) / 1e3; bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1e3) / 1e3; } return bezierSegmentPoints; } return { getSegmentsLength, getNewSegment, getPointInSegment, buildBezierData, pointOnLine2D, pointOnLine3D }; } var bez = bezFunction(); var initFrame = initialDefaultFrame; var mathAbs = Math.abs; function interpolateValue(frameNum, caching) { var offsetTime = this.offsetTime; var newValue; if (this.propType === "multidimensional") newValue = createTypedArray("float32", this.pv.length); var iterationIndex = caching.lastIndex; var i = iterationIndex; var len = this.keyframes.length - 1; var flag = true; var keyData; var nextKeyData; var keyframeMetadata; while (flag) { keyData = this.keyframes[i]; nextKeyData = this.keyframes[i + 1]; if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) { if (keyData.h) keyData = nextKeyData; iterationIndex = 0; break; } if (nextKeyData.t - offsetTime > frameNum) { iterationIndex = i; break; } if (i < len - 1) i += 1; else { iterationIndex = 0; flag = false; } } keyframeMetadata = this.keyframesMetadata[i] || {}; var k; var kLen; var perc; var jLen; var j; var fnc; var nextKeyTime = nextKeyData.t - offsetTime; var keyTime = keyData.t - offsetTime; var endValue; if (keyData.to) { if (!keyframeMetadata.bezierData) keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti); var bezierData = keyframeMetadata.bezierData; if (frameNum >= nextKeyTime || frameNum < keyTime) { var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0; kLen = bezierData.points[ind].point.length; for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[ind].point[k]; } else { if (keyframeMetadata.__fnct) fnc = keyframeMetadata.__fnct; else { fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get; keyframeMetadata.__fnct = fnc; } perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); var distanceInLine = bezierData.segmentLength * perc; var segmentPerc; var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0; j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0; flag = true; jLen = bezierData.points.length; while (flag) { addedLength += bezierData.points[j].partialLength; if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) { kLen = bezierData.points[j].point.length; for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[j].point[k]; break; } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) { segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength; kLen = bezierData.points[j].point.length; for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc; break; } if (j < jLen - 1) j += 1; else flag = false; } caching._lastPoint = j; caching._lastAddedLength = addedLength - bezierData.points[j].partialLength; caching._lastKeyframeIndex = i; } } else { var outX; var outY; var inX; var inY; var keyValue; len = keyData.s.length; endValue = nextKeyData.s || keyData.e; if (this.sh && keyData.h !== 1) if (frameNum >= nextKeyTime) { newValue[0] = endValue[0]; newValue[1] = endValue[1]; newValue[2] = endValue[2]; } else if (frameNum <= keyTime) { newValue[0] = keyData.s[0]; newValue[1] = keyData.s[1]; newValue[2] = keyData.s[2]; } else { var quatStart = createQuaternion(keyData.s); var quatEnd = createQuaternion(endValue); var time = (frameNum - keyTime) / (nextKeyTime - keyTime); quaternionToEuler(newValue, slerp(quatStart, quatEnd, time)); } else for (i = 0; i < len; i += 1) { if (keyData.h !== 1) if (frameNum >= nextKeyTime) perc = 1; else if (frameNum < keyTime) perc = 0; else { if (keyData.o.x.constructor === Array) { if (!keyframeMetadata.__fnct) keyframeMetadata.__fnct = []; if (!keyframeMetadata.__fnct[i]) { outX = keyData.o.x[i] === void 0 ? keyData.o.x[0] : keyData.o.x[i]; outY = keyData.o.y[i] === void 0 ? keyData.o.y[0] : keyData.o.y[i]; inX = keyData.i.x[i] === void 0 ? keyData.i.x[0] : keyData.i.x[i]; inY = keyData.i.y[i] === void 0 ? keyData.i.y[0] : keyData.i.y[i]; fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; keyframeMetadata.__fnct[i] = fnc; } else fnc = keyframeMetadata.__fnct[i]; } else if (!keyframeMetadata.__fnct) { outX = keyData.o.x; outY = keyData.o.y; inX = keyData.i.x; inY = keyData.i.y; fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; keyData.keyframeMetadata = fnc; } else fnc = keyframeMetadata.__fnct; perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); } endValue = nextKeyData.s || keyData.e; keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc; if (this.propType === "multidimensional") newValue[i] = keyValue; else newValue = keyValue; } } caching.lastIndex = iterationIndex; return newValue; } function slerp(a, b, t) { var out = []; var ax = a[0]; var ay = a[1]; var az = a[2]; var aw = a[3]; var bx = b[0]; var by = b[1]; var bz = b[2]; var bw = b[3]; var omega; var cosom; var sinom; var scale0; var scale1; cosom = ax * bx + ay * by + az * bz + aw * bw; if (cosom < 0) { cosom = -cosom; bx = -bx; by = -by; bz = -bz; bw = -bw; } if (1 - cosom > 1e-6) { omega = Math.acos(cosom); sinom = Math.sin(omega); scale0 = Math.sin((1 - t) * omega) / sinom; scale1 = Math.sin(t * omega) / sinom; } else { scale0 = 1 - t; scale1 = t; } out[0] = scale0 * ax + scale1 * bx; out[1] = scale0 * ay + scale1 * by; out[2] = scale0 * az + scale1 * bz; out[3] = scale0 * aw + scale1 * bw; return out; } function quaternionToEuler(out, quat) { var qx = quat[0]; var qy = quat[1]; var qz = quat[2]; var qw = quat[3]; var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz); var attitude = Math.asin(2 * qx * qy + 2 * qz * qw); var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz); out[0] = heading / degToRads; out[1] = attitude / degToRads; out[2] = bank / degToRads; } function createQuaternion(values) { var heading = values[0] * degToRads; var attitude = values[1] * degToRads; var bank = values[2] * degToRads; var c1 = Math.cos(heading / 2); var c2 = Math.cos(attitude / 2); var c3 = Math.cos(bank / 2); var s1 = Math.sin(heading / 2); var s2 = Math.sin(attitude / 2); var s3 = Math.sin(bank / 2); var w = c1 * c2 * c3 - s1 * s2 * s3; return [ s1 * s2 * c3 + c1 * c2 * s3, s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, w ]; } function getValueAtCurrentTime() { var frameNum = this.comp.renderedFrame - this.offsetTime; var initTime = this.keyframes[0].t - this.offsetTime; var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) { if (this._caching.lastFrame >= frameNum) { this._caching._lastKeyframeIndex = -1; this._caching.lastIndex = 0; } var renderResult = this.interpolateValue(frameNum, this._caching); this.pv = renderResult; } this._caching.lastFrame = frameNum; return this.pv; } function setVValue(val) { var multipliedValue; if (this.propType === "unidimensional") { multipliedValue = val * this.mult; if (mathAbs(this.v - multipliedValue) > 1e-5) { this.v = multipliedValue; this._mdf = true; } } else { var i = 0; var len = this.v.length; while (i < len) { multipliedValue = val[i] * this.mult; if (mathAbs(this.v[i] - multipliedValue) > 1e-5) { this.v[i] = multipliedValue; this._mdf = true; } i += 1; } } } function processEffectsSequence() { if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) return; if (this.lock) { this.setVValue(this.pv); return; } this.lock = true; this._mdf = this._isFirstFrame; var i; var len = this.effectsSequence.length; var finalValue = this.kf ? this.pv : this.data.k; for (i = 0; i < len; i += 1) finalValue = this.effectsSequence[i](finalValue); this.setVValue(finalValue); this._isFirstFrame = false; this.lock = false; this.frameId = this.elem.globalData.frameId; } function addEffect(effectFunction) { this.effectsSequence.push(effectFunction); this.container.addDynamicProperty(this); } function ValueProperty(elem, data, mult, container) { this.propType = "unidimensional"; this.mult = mult || 1; this.data = data; this.v = mult ? data.k * mult : data.k; this.pv = data.k; this._mdf = false; this.elem = elem; this.container = container; this.comp = elem.comp; this.k = false; this.kf = false; this.vel = 0; this.effectsSequence = []; this._isFirstFrame = true; this.getValue = processEffectsSequence; this.setVValue = setVValue; this.addEffect = addEffect; } function MultiDimensionalProperty(elem, data, mult, container) { this.propType = "multidimensional"; this.mult = mult || 1; this.data = data; this._mdf = false; this.elem = elem; this.container = container; this.comp = elem.comp; this.k = false; this.kf = false; this.frameId = -1; var i; var len = data.k.length; this.v = createTypedArray("float32", len); this.pv = createTypedArray("float32", len); this.vel = createTypedArray("float32", len); for (i = 0; i < len; i += 1) { this.v[i] = data.k[i] * this.mult; this.pv[i] = data.k[i]; } this._isFirstFrame = true; this.effectsSequence = []; this.getValue = processEffectsSequence; this.setVValue = setVValue; this.addEffect = addEffect; } function KeyframedValueProperty(elem, data, mult, container) { this.propType = "unidimensional"; this.keyframes = data.k; this.keyframesMetadata = []; this.offsetTime = elem.data.st; this.frameId = -1; this._caching = { lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1 }; this.k = true; this.kf = true; this.data = data; this.mult = mult || 1; this.elem = elem; this.container = container; this.comp = elem.comp; this.v = initFrame; this.pv = initFrame; this._isFirstFrame = true; this.getValue = processEffectsSequence; this.setVValue = setVValue; this.interpolateValue = interpolateValue; this.effectsSequence = [getValueAtCurrentTime.bind(this)]; this.addEffect = addEffect; } function KeyframedMultidimensionalProperty(elem, data, mult, container) { this.propType = "multidimensional"; var i; var len = data.k.length; var s; var e; var to; var ti; for (i = 0; i < len - 1; i += 1) if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) { s = data.k[i].s; e = data.k[i + 1].s; to = data.k[i].to; ti = data.k[i].ti; 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])) { data.k[i].to = null; data.k[i].ti = null; } if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) { if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) { data.k[i].to = null; data.k[i].ti = null; } } } this.effectsSequence = [getValueAtCurrentTime.bind(this)]; this.data = data; this.keyframes = data.k; this.keyframesMetadata = []; this.offsetTime = elem.data.st; this.k = true; this.kf = true; this._isFirstFrame = true; this.mult = mult || 1; this.elem = elem; this.container = container; this.comp = elem.comp; this.getValue = processEffectsSequence; this.setVValue = setVValue; this.interpolateValue = interpolateValue; this.frameId = -1; var arrLen = data.k[0].s.length; this.v = createTypedArray("float32", arrLen); this.pv = createTypedArray("float32", arrLen); for (i = 0; i < arrLen; i += 1) { this.v[i] = initFrame; this.pv[i] = initFrame; } this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray("float32", arrLen) }; this.addEffect = addEffect; } var PropertyFactory = function() { function getProp(elem, data, type, mult, container) { if (data.sid) data = elem.globalData.slotManager.getProp(data); var p; if (!data.k.length) p = new ValueProperty(elem, data, mult, container); else if (typeof data.k[0] === "number") p = new MultiDimensionalProperty(elem, data, mult, container); else switch (type) { case 0: p = new KeyframedValueProperty(elem, data, mult, container); break; case 1: p = new KeyframedMultidimensionalProperty(elem, data, mult, container); break; default: break; } if (p.effectsSequence.length) container.addDynamicProperty(p); return p; } return { getProp }; }(); function DynamicPropertyContainer() {} DynamicPropertyContainer.prototype = { addDynamicProperty: function addDynamicProperty(prop) { if (this.dynamicProperties.indexOf(prop) === -1) { this.dynamicProperties.push(prop); this.container.addDynamicProperty(this); this._isAnimated = true; } }, iterateDynamicProperties: function iterateDynamicProperties() { this._mdf = false; var i; var len = this.dynamicProperties.length; for (i = 0; i < len; i += 1) { this.dynamicProperties[i].getValue(); if (this.dynamicProperties[i]._mdf) this._mdf = true; } }, initDynamicPropertyContainer: function initDynamicPropertyContainer(container) { this.container = container; this.dynamicProperties = []; this._mdf = false; this._isAnimated = false; } }; var pointPool = function() { function create() { return createTypedArray("float32", 2); } return poolFactory(8, create); }(); function ShapePath() { this.c = false; this._length = 0; this._maxLength = 8; this.v = createSizedArray(this._maxLength); this.o = createSizedArray(this._maxLength); this.i = createSizedArray(this._maxLength); } ShapePath.prototype.setPathData = function(closed, len) { this.c = closed; this.setLength(len); var i = 0; while (i < len) { this.v[i] = pointPool.newElement(); this.o[i] = pointPool.newElement(); this.i[i] = pointPool.newElement(); i += 1; } }; ShapePath.prototype.setLength = function(len) { while (this._maxLength < len) this.doubleArrayLength(); this._length = len; }; ShapePath.prototype.doubleArrayLength = function() { this.v = this.v.concat(createSizedArray(this._maxLength)); this.i = this.i.concat(createSizedArray(this._maxLength)); this.o = this.o.concat(createSizedArray(this._maxLength)); this._maxLength *= 2; }; ShapePath.prototype.setXYAt = function(x, y, type, pos, replace) { var arr; this._length = Math.max(this._length, pos + 1); if (this._length >= this._maxLength) this.doubleArrayLength(); switch (type) { case "v": arr = this.v; break; case "i": arr = this.i; break; case "o": arr = this.o; break; default: arr = []; break; } if (!arr[pos] || arr[pos] && !replace) arr[pos] = pointPool.newElement(); arr[pos][0] = x; arr[pos][1] = y; }; ShapePath.prototype.setTripleAt = function(vX, vY, oX, oY, iX, iY, pos, replace) { this.setXYAt(vX, vY, "v", pos, replace); this.setXYAt(oX, oY, "o", pos, replace); this.setXYAt(iX, iY, "i", pos, replace); }; ShapePath.prototype.reverse = function() { var newPath = new ShapePath(); newPath.setPathData(this.c, this._length); var vertices = this.v; var outPoints = this.o; var inPoints = this.i; var init = 0; if (this.c) { newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false); init = 1; } var cnt = this._length - 1; var len = this._length; var i; for (i = init; i < len; i += 1) { newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false); cnt -= 1; } return newPath; }; ShapePath.prototype.length = function() { return this._length; }; var shapePool = function() { function create() { return new ShapePath(); } function release(shapePath) { var len = shapePath._length; var i; for (i = 0; i < len; i += 1) { pointPool.release(shapePath.v[i]); pointPool.release(shapePath.i[i]); pointPool.release(shapePath.o[i]); shapePath.v[i] = null; shapePath.i[i] = null; shapePath.o[i] = null; } shapePath._length = 0; shapePath.c = false; } function clone(shape) { var cloned = factory.newElement(); var i; var len = shape._length === void 0 ? shape.v.length : shape._length; cloned.setLength(len); cloned.c = shape.c; for (i = 0; i < len; i += 1) 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); return cloned; } var factory = poolFactory(4, create, release); factory.clone = clone; return factory; }(); function ShapeCollection() { this._length = 0; this._maxLength = 4; this.shapes = createSizedArray(this._maxLength); } ShapeCollection.prototype.addShape = function(shapeData) { if (this._length === this._maxLength) { this.shapes = this.shapes.concat(createSizedArray(this._maxLength)); this._maxLength *= 2; } this.shapes[this._length] = shapeData; this._length += 1; }; ShapeCollection.prototype.releaseShapes = function() { var i; for (i = 0; i < this._length; i += 1) shapePool.release(this.shapes[i]); this._length = 0; }; var shapeCollectionPool = function() { var ob = { newShapeCollection, release }; var _length = 0; var _maxLength = 4; var pool = createSizedArray(_maxLength); function newShapeCollection() { var shapeCollection; if (_length) { _length -= 1; shapeCollection = pool[_length]; } else shapeCollection = new ShapeCollection(); return shapeCollection; } function release(shapeCollection) { var i; var len = shapeCollection._length; for (i = 0; i < len; i += 1) shapePool.release(shapeCollection.shapes[i]); shapeCollection._length = 0; if (_length === _maxLength) { pool = pooling["double"](pool); _maxLength *= 2; } pool[_length] = shapeCollection; _length += 1; } return ob; }(); var ShapePropertyFactory = function() { var initFrame = -999999; function interpolateShape(frameNum, previousValue, caching) { var iterationIndex = caching.lastIndex; var keyPropS; var keyPropE; var isHold; var j; var k; var jLen; var kLen; var perc; var vertexValue; var kf = this.keyframes; if (frameNum < kf[0].t - this.offsetTime) { keyPropS = kf[0].s[0]; isHold = true; iterationIndex = 0; } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) { keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]; isHold = true; } else { var i = iterationIndex; var len = kf.length - 1; var flag = true; var keyData; var nextKeyData; var keyframeMetadata; while (flag) { keyData = kf[i]; nextKeyData = kf[i + 1]; if (nextKeyData.t - this.offsetTime > frameNum) break; if (i < len - 1) i += 1; else flag = false; } keyframeMetadata = this.keyframesMetadata[i] || {}; isHold = keyData.h === 1; iterationIndex = i; if (!isHold) { if (frameNum >= nextKeyData.t - this.offsetTime) perc = 1; else if (frameNum < keyData.t - this.offsetTime) perc = 0; else { var fnc; if (keyframeMetadata.__fnct) fnc = keyframeMetadata.__fnct; else { fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get; keyframeMetadata.__fnct = fnc; } perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime))); } keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]; } keyPropS = keyData.s[0]; } jLen = previousValue._length; kLen = keyPropS.i[0].length; caching.lastIndex = iterationIndex; for (j = 0; j < jLen; j += 1) for (k = 0; k < kLen; k += 1) { vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc; previousValue.i[j][k] = vertexValue; vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc; previousValue.o[j][k] = vertexValue; vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc; previousValue.v[j][k] = vertexValue; } } function interpolateShapeCurrentTime() { var frameNum = this.comp.renderedFrame - this.offsetTime; var initTime = this.keyframes[0].t - this.offsetTime; var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; var lastFrame = this._caching.lastFrame; if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) { this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0; this.interpolateShape(frameNum, this.pv, this._caching); } this._caching.lastFrame = frameNum; return this.pv; } function resetShape() { this.paths = this.localShapeCollection; } function shapesEqual(shape1, shape2) { if (shape1._length !== shape2._length || shape1.c !== shape2.c) return false; var i; var len = shape1._length; for (i = 0; i < len; i += 1) 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]) return false; return true; } function setVValue(newPath) { if (!shapesEqual(this.v, newPath)) { this.v = shapePool.clone(newPath); this.localShapeCollection.releaseShapes(); this.localShapeCollection.addShape(this.v); this._mdf = true; this.paths = this.localShapeCollection; } } function processEffectsSequence() { if (this.elem.globalData.frameId === this.frameId) return; if (!this.effectsSequence.length) { this._mdf = false; return; } if (this.lock) { this.setVValue(this.pv); return; } this.lock = true; this._mdf = false; var finalValue; if (this.kf) finalValue = this.pv; else if (this.data.ks) finalValue = this.data.ks.k; else finalValue = this.data.pt.k; var i; var len = this.effectsSequence.length; for (i = 0; i < len; i += 1) finalValue = this.effectsSequence[i](finalValue); this.setVValue(finalValue); this.lock = false; this.frameId = this.elem.globalData.frameId; } function ShapeProperty(elem, data, type) { this.propType = "shape"; this.comp = elem.comp; this.container = elem; this.elem = elem; this.data = data; this.k = false; this.kf = false; this._mdf = false; var pathData = type === 3 ? data.pt.k : data.ks.k; this.v = shapePool.clone(pathData); this.pv = shapePool.clone(this.v); this.localShapeCollection = shapeCollectionPool.newShapeCollection(); this.paths = this.localShapeCollection; this.paths.addShape(this.v); this.reset = resetShape; this.effectsSequence = []; } function addEffect(effectFunction) { this.effectsSequence.push(effectFunction); this.container.addDynamicProperty(this); } ShapeProperty.prototype.interpolateShape = interpolateShape; ShapeProperty.prototype.getValue = processEffectsSequence; ShapeProperty.prototype.setVValue = setVValue; ShapeProperty.prototype.addEffect = addEffect; function KeyframedShapeProperty(elem, data, type) { this.propType = "shape"; this.comp = elem.comp; this.elem = elem; this.container = elem; this.offsetTime = elem.data.st; this.keyframes = type === 3 ? data.pt.k : data.ks.k; this.keyframesMetadata = []; this.k = true; this.kf = true; var len = this.keyframes[0].s[0].i.length; this.v = shapePool.newElement(); this.v.setPathData(this.keyframes[0].s[0].c, len); this.pv = shapePool.clone(this.v); this.localShapeCollection = shapeCollectionPool.newShapeCollection(); this.paths = this.localShapeCollection; this.paths.addShape(this.v); this.lastFrame = initFrame; this.reset = resetShape; this._caching = { lastFrame: initFrame, lastIndex: 0 }; this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]; } KeyframedShapeProperty.prototype.getValue = processEffectsSequence; KeyframedShapeProperty.prototype.interpolateShape = interpolateShape; KeyframedShapeProperty.prototype.setVValue = setVValue; KeyframedShapeProperty.prototype.addEffect = addEffect; var EllShapeProperty = function() { var cPoint = roundCorner; function EllShapePropertyFactory(elem, data) { this.v = shapePool.newElement(); this.v.setPathData(true, 4); this.localShapeCollection = shapeCollectionPool.newShapeCollection(); this.paths = this.localShapeCollection; this.localShapeCollection.addShape(this.v); this.d = data.d; this.elem = elem; this.comp = elem.comp; this.frameId = -1; this.initDynamicPropertyContainer(elem); this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); if (this.dynamicProperties.length) this.k = true; else { this.k = false; this.convertEllToPath(); } } EllShapePropertyFactory.prototype = { reset: resetShape, getValue: function getValue() { if (this.elem.globalData.frameId === this.frameId) return; this.frameId = this.elem.globalData.frameId; this.iterateDynamicProperties(); if (this._mdf) this.convertEllToPath(); }, convertEllToPath: function convertEllToPath() { var p0 = this.p.v[0]; var p1 = this.p.v[1]; var s0 = this.s.v[0] / 2; var s1 = this.s.v[1] / 2; var _cw = this.d !== 3; var _v = this.v; _v.v[0][0] = p0; _v.v[0][1] = p1 - s1; _v.v[1][0] = _cw ? p0 + s0 : p0 - s0; _v.v[1][1] = p1; _v.v[2][0] = p0; _v.v[2][1] = p1 + s1; _v.v[3][0] = _cw ? p0 - s0 : p0 + s0; _v.v[3][1] = p1; _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; _v.i[0][1] = p1 - s1; _v.i[1][0] = _cw ? p0 + s0 : p0 - s0; _v.i[1][1] = p1 - s1 * cPoint; _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; _v.i[2][1] = p1 + s1; _v.i[3][0] = _cw ? p0 - s0 : p0 + s0; _v.i[3][1] = p1 + s1 * cPoint; _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; _v.o[0][1] = p1 - s1; _v.o[1][0] = _cw ? p0 + s0 : p0 - s0; _v.o[1][1] = p1 + s1 * cPoint; _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; _v.o[2][1] = p1 + s1; _v.o[3][0] = _cw ? p0 - s0 : p0 + s0; _v.o[3][1] = p1 - s1 * cPoint; } }; extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory); return EllShapePropertyFactory; }(); var StarShapeProperty = function() { function StarShapePropertyFactory(elem, data) { this.v = shapePool.newElement(); this.v.setPathData(true, 0); this.elem = elem; this.comp = elem.comp; this.data = data; this.frameId = -1; this.d = data.d; this.initDynamicPropertyContainer(elem); if (data.sy === 1) { this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this); this.is = PropertyFactory.getProp(elem, data.is, 0, .01, this); this.convertToPath = this.convertStarToPath; } else this.convertToPath = this.convertPolygonToPath; this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this); this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this); this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this); this.os = PropertyFactory.getProp(elem, data.os, 0, .01, this); this.localShapeCollection = shapeCollectionPool.newShapeCollection(); this.localShapeCollection.addShape(this.v); this.paths = this.localShapeCollection; if (this.dynamicProperties.length) this.k = true; else { this.k = false; this.convertToPath(); } } StarShapePropertyFactory.prototype = { reset: resetShape, getValue: function getValue() { if (this.elem.globalData.frameId === this.frameId) return; this.frameId = this.elem.globalData.frameId; this.iterateDynamicProperties(); if (this._mdf) this.convertToPath(); }, convertStarToPath: function convertStarToPath() { var numPts = Math.floor(this.pt.v) * 2; var angle = Math.PI * 2 / numPts; var longFlag = true; var longRad = this.or.v; var shortRad = this.ir.v; var longRound = this.os.v; var shortRound = this.is.v; var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2); var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2); var i; var rad; var roundness; var perimSegment; var currentAng = -Math.PI / 2; currentAng += this.r.v; var dir = this.data.d === 3 ? -1 : 1; this.v._length = 0; for (i = 0; i < numPts; i += 1) { rad = longFlag ? longRad : shortRad; roundness = longFlag ? longRound : shortRound; perimSegment = longFlag ? longPerimSegment : shortPerimSegment; var x = rad * Math.cos(currentAng); var y = rad * Math.sin(currentAng); var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); x += +this.p.v[0]; y += +this.p.v[1]; 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); longFlag = !longFlag; currentAng += angle * dir; } }, convertPolygonToPath: function convertPolygonToPath() { var numPts = Math.floor(this.pt.v); var angle = Math.PI * 2 / numPts; var rad = this.or.v; var roundness = this.os.v; var perimSegment = 2 * Math.PI * rad / (numPts * 4); var i; var currentAng = -Math.PI * .5; var dir = this.data.d === 3 ? -1 : 1; currentAng += this.r.v; this.v._length = 0; for (i = 0; i < numPts; i += 1) { var x = rad * Math.cos(currentAng); var y = rad * Math.sin(currentAng); var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); x += +this.p.v[0]; y += +this.p.v[1]; 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); currentAng += angle * dir; } this.paths.length = 0; this.paths[0] = this.v; } }; extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory); return StarShapePropertyFactory; }(); var RectShapeProperty = function() { function RectShapePropertyFactory(elem, data) { this.v = shapePool.newElement(); this.v.c = true; this.localShapeCollection = shapeCollectionPool.newShapeCollection(); this.localShapeCollection.addShape(this.v); this.paths = this.localShapeCollection; this.elem = elem; this.comp = elem.comp; this.frameId = -1; this.d = data.d; this.initDynamicPropertyContainer(elem); this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this); if (this.dynamicProperties.length) this.k = true; else { this.k = false; this.convertRectToPath(); } } RectShapePropertyFactory.prototype = { convertRectToPath: function convertRectToPath() { var p0 = this.p.v[0]; var p1 = this.p.v[1]; var v0 = this.s.v[0] / 2; var v1 = this.s.v[1] / 2; var round = bmMin(v0, v1, this.r.v); var cPoint = round * (1 - roundCorner); this.v._length = 0; if (this.d === 2 || this.d === 1) { this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true); this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true); if (round !== 0) { this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true); this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true); this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true); this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true); this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true); this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true); } else { this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2); this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3); } } else { this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true); if (round !== 0) { this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true); this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true); this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true); this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true); this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true); this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true); this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true); } else { this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true); this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true); this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true); } } }, getValue: function getValue() { if (this.elem.globalData.frameId === this.frameId) return; this.frameId = this.elem.globalData.frameId; this.iterateDynamicProperties(); if (this._mdf) this.convertRectToPath(); }, reset: resetShape }; extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory); return RectShapePropertyFactory; }(); function getShapeProp(elem, data, type) { var prop; if (type === 3 || type === 4) if ((type === 3 ? data.pt : data.ks).k.length) prop = new KeyframedShapeProperty(elem, data, type); else prop = new ShapeProperty(elem, data, type); else if (type === 5) prop = new RectShapeProperty(elem, data); else if (type === 6) prop = new EllShapeProperty(elem, data); else if (type === 7) prop = new StarShapeProperty(elem, data); if (prop.k) elem.addDynamicProperty(prop); return prop; } function getConstructorFunction() { return ShapeProperty; } function getKeyframedConstructorFunction() { return KeyframedShapeProperty; } var ob = {}; ob.getShapeProp = getShapeProp; ob.getConstructorFunction = getConstructorFunction; ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction; return ob; }(); /*! Transformation Matrix v2.0 (c) Epistemex 2014-2015 www.epistemex.com By Ken Fyrstenberg Contributions by leeoniya. License: MIT, header required. */ /** * 2D transformation matrix object initialized with identity matrix. * * The matrix can synchronize a canvas context by supplying the context * as an argument, or later apply current absolute transform to an * existing context. * * All values are handled as floating point values. * * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix * @prop {number} a - scale x * @prop {number} b - shear y * @prop {number} c - shear x * @prop {number} d - scale y * @prop {number} e - translate x * @prop {number} f - translate y * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context * @constructor */ var Matrix = function() { var _cos = Math.cos; var _sin = Math.sin; var _tan = Math.tan; var _rnd = Math.round; function reset() { 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; return this; } function rotate(angle) { if (angle === 0) return this; var mCos = _cos(angle); var mSin = _sin(angle); return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } function rotateX(angle) { if (angle === 0) return this; var mCos = _cos(angle); var mSin = _sin(angle); return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1); } function rotateY(angle) { if (angle === 0) return this; var mCos = _cos(angle); var mSin = _sin(angle); return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1); } function rotateZ(angle) { if (angle === 0) return this; var mCos = _cos(angle); var mSin = _sin(angle); return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } function shear(sx, sy) { return this._t(1, sy, sx, 1, 0, 0); } function skew(ax, ay) { return this.shear(_tan(ax), _tan(ay)); } function skewFromAxis(ax, angle) { var mCos = _cos(angle); var mSin = _sin(angle); 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); } function scale(sx, sy, sz) { if (!sz && sz !== 0) sz = 1; if (sx === 1 && sy === 1 && sz === 1) return this; return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1); } function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { this.props[0] = a; this.props[1] = b; this.props[2] = c; this.props[3] = d; this.props[4] = e; this.props[5] = f; this.props[6] = g; this.props[7] = h; this.props[8] = i; this.props[9] = j; this.props[10] = k; this.props[11] = l; this.props[12] = m; this.props[13] = n; this.props[14] = o; this.props[15] = p; return this; } function translate(tx, ty, tz) { tz = tz || 0; if (tx !== 0 || ty !== 0 || tz !== 0) return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1); return this; } function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) { var _p = this.props; 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) { _p[12] = _p[12] * a2 + _p[15] * m2; _p[13] = _p[13] * f2 + _p[15] * n2; _p[14] = _p[14] * k2 + _p[15] * o2; _p[15] *= p2; this._identityCalculated = false; return this; } var a1 = _p[0]; var b1 = _p[1]; var c1 = _p[2]; var d1 = _p[3]; var e1 = _p[4]; var f1 = _p[5]; var g1 = _p[6]; var h1 = _p[7]; var i1 = _p[8]; var j1 = _p[9]; var k1 = _p[10]; var l1 = _p[11]; var m1 = _p[12]; var n1 = _p[13]; var o1 = _p[14]; var p1 = _p[15]; _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2; _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2; _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2; _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2; _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2; _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2; _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2; _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2; _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2; _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2; _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2; _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2; _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2; _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2; _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2; _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2; this._identityCalculated = false; return this; } function multiply(matrix) { var matrixProps = matrix.props; 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]); } function isIdentity() { if (!this._identityCalculated) { 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); this._identityCalculated = true; } return this._identity; } function equals(matr) { var i = 0; while (i < 16) { if (matr.props[i] !== this.props[i]) return false; i += 1; } return true; } function clone(matr) { var i; for (i = 0; i < 16; i += 1) matr.props[i] = this.props[i]; return matr; } function cloneFromProps(props) { var i; for (i = 0; i < 16; i += 1) this.props[i] = props[i]; } function applyToPoint(x, y, z) { return { x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14] }; } function applyToX(x, y, z) { return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12]; } function applyToY(x, y, z) { return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13]; } function applyToZ(x, y, z) { return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]; } function getInverseMatrix() { var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]; var a = this.props[5] / determinant; var b = -this.props[1] / determinant; var c = -this.props[4] / determinant; var d = this.props[0] / determinant; var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant; var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant; var inverseMatrix = new Matrix(); inverseMatrix.props[0] = a; inverseMatrix.props[1] = b; inverseMatrix.props[4] = c; inverseMatrix.props[5] = d; inverseMatrix.props[12] = e; inverseMatrix.props[13] = f; return inverseMatrix; } function inversePoint(pt) { return this.getInverseMatrix().applyToPointArray(pt[0], pt[1], pt[2] || 0); } function inversePoints(pts) { var i; var len = pts.length; var retPts = []; for (i = 0; i < len; i += 1) retPts[i] = inversePoint(pts[i]); return retPts; } function applyToTriplePoints(pt1, pt2, pt3) { var arr = createTypedArray("float32", 6); if (this.isIdentity()) { arr[0] = pt1[0]; arr[1] = pt1[1]; arr[2] = pt2[0]; arr[3] = pt2[1]; arr[4] = pt3[0]; arr[5] = pt3[1]; } else { var p0 = this.props[0]; var p1 = this.props[1]; var p4 = this.props[4]; var p5 = this.props[5]; var p12 = this.props[12]; var p13 = this.props[13]; arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12; arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13; arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12; arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13; arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12; arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13; } return arr; } function applyToPointArray(x, y, z) { var arr; if (this.isIdentity()) arr = [ x, y, z ]; else 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] ]; return arr; } function applyToPointStringified(x, y) { if (this.isIdentity()) return x + "," + y; var _p = this.props; 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; } function toCSS() { var i = 0; var props = this.props; var cssValue = "matrix3d("; var v = 1e4; while (i < 16) { cssValue += _rnd(props[i] * v) / v; cssValue += i === 15 ? ")" : ","; i += 1; } return cssValue; } function roundMatrixProperty(val) { var v = 1e4; if (val < 1e-6 && val > 0 || val > -1e-6 && val < 0) return _rnd(val * v) / v; return val; } function to2dCSS() { var props = this.props; var _a = roundMatrixProperty(props[0]); var _b = roundMatrixProperty(props[1]); var _c = roundMatrixProperty(props[4]); var _d = roundMatrixProperty(props[5]); var _e = roundMatrixProperty(props[12]); var _f = roundMatrixProperty(props[13]); return "matrix(" + _a + "," + _b + "," + _c + "," + _d + "," + _e + "," + _f + ")"; } return function() { this.reset = reset; this.rotate = rotate; this.rotateX = rotateX; this.rotateY = rotateY; this.rotateZ = rotateZ; this.skew = skew; this.skewFromAxis = skewFromAxis; this.shear = shear; this.scale = scale; this.setTransform = setTransform; this.translate = translate; this.transform = transform; this.multiply = multiply; this.applyToPoint = applyToPoint; this.applyToX = applyToX; this.applyToY = applyToY; this.applyToZ = applyToZ; this.applyToPointArray = applyToPointArray; this.applyToTriplePoints = applyToTriplePoints; this.applyToPointStringified = applyToPointStringified; this.toCSS = toCSS; this.to2dCSS = to2dCSS; this.clone = clone; this.cloneFromProps = cloneFromProps; this.equals = equals; this.inversePoints = inversePoints; this.inversePoint = inversePoint; this.getInverseMatrix = getInverseMatrix; this._t = this.transform; this.isIdentity = isIdentity; this._identity = true; this._identityCalculated = false; this.props = createTypedArray("float32", 16); this.reset(); }; }(); function _typeof$3(o) { "@babel/helpers - typeof"; return _typeof$3 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$3(o); } var lottie = {}; var standalone = "__[STANDALONE]__"; var animationData = "__[ANIMATIONDATA]__"; var renderer = ""; function setLocation(href) { setLocationHref(href); } function searchAnimations() { if (standalone === true) animationManager.searchAnimations(animationData, standalone, renderer); else animationManager.searchAnimations(); } function setSubframeRendering(flag) { setSubframeEnabled(flag); } function setPrefix(prefix) { setIdPrefix(prefix); } function loadAnimation(params) { if (standalone === true) params.animationData = JSON.parse(animationData); return animationManager.loadAnimation(params); } function setQuality(value) { if (typeof value === "string") switch (value) { case "high": setDefaultCurveSegments(200); break; default: case "medium": setDefaultCurveSegments(50); break; case "low": setDefaultCurveSegments(10); break; } else if (!isNaN(value) && value > 1) setDefaultCurveSegments(value); if (getDefaultCurveSegments() >= 50) roundValues(false); else roundValues(true); } function inBrowser() { return typeof navigator !== "undefined"; } function installPlugin(type, plugin) { if (type === "expressions") setExpressionsPlugin(plugin); } function getFactory(name) { switch (name) { case "propertyFactory": return PropertyFactory; case "shapePropertyFactory": return ShapePropertyFactory; case "matrix": return Matrix; default: return null; } } lottie.play = animationManager.play; lottie.pause = animationManager.pause; lottie.setLocationHref = setLocation; lottie.togglePause = animationManager.togglePause; lottie.setSpeed = animationManager.setSpeed; lottie.setDirection = animationManager.setDirection; lottie.stop = animationManager.stop; lottie.searchAnimations = searchAnimations; lottie.registerAnimation = animationManager.registerAnimation; lottie.loadAnimation = loadAnimation; lottie.setSubframeRendering = setSubframeRendering; lottie.resize = animationManager.resize; lottie.goToAndStop = animationManager.goToAndStop; lottie.destroy = animationManager.destroy; lottie.setQuality = setQuality; lottie.inBrowser = inBrowser; lottie.installPlugin = installPlugin; lottie.freeze = animationManager.freeze; lottie.unfreeze = animationManager.unfreeze; lottie.setVolume = animationManager.setVolume; lottie.mute = animationManager.mute; lottie.unmute = animationManager.unmute; lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations; lottie.useWebWorker = setWebWorker; lottie.setIDPrefix = setPrefix; lottie.__getFactory = getFactory; lottie.version = "5.13.0"; function checkReady() { if (document.readyState === "complete") { clearInterval(readyStateCheckInterval); searchAnimations(); } } function getQueryVariable(variable) { var vars = queryString.split("&"); for (var i = 0; i < vars.length; i += 1) { var pair = vars[i].split("="); if (decodeURIComponent(pair[0]) == variable) return decodeURIComponent(pair[1]); } return null; } var queryString = ""; if (standalone) { var scripts = document.getElementsByTagName("script"); var myScript = scripts[scripts.length - 1] || { src: "" }; queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, "") : ""; renderer = getQueryVariable("renderer"); } var readyStateCheckInterval = setInterval(checkReady, 100); try { if (!((typeof exports === "undefined" ? "undefined" : _typeof$3(exports)) === "object" && typeof module !== "undefined") && !(typeof define === "function" && define.amd)) window.bodymovin = lottie; } catch (err) {} var ShapeModifiers = function() { var ob = {}; var modifiers = {}; ob.registerModifier = registerModifier; ob.getModifier = getModifier; function registerModifier(nm, factory) { if (!modifiers[nm]) modifiers[nm] = factory; } function getModifier(nm, elem, data) { return new modifiers[nm](elem, data); } return ob; }(); function ShapeModifier() {} ShapeModifier.prototype.initModifierProperties = function() {}; ShapeModifier.prototype.addShapeToModifier = function() {}; ShapeModifier.prototype.addShape = function(data) { if (!this.closed) { data.sh.container.addDynamicProperty(data.sh); var shapeData = { shape: data.sh, data, localShapeCollection: shapeCollectionPool.newShapeCollection() }; this.shapes.push(shapeData); this.addShapeToModifier(shapeData); if (this._isAnimated) data.setAsAnimated(); } }; ShapeModifier.prototype.init = function(elem, data) { this.shapes = []; this.elem = elem; this.initDynamicPropertyContainer(elem); this.initModifierProperties(elem, data); this.frameId = initialDefaultFrame; this.closed = false; this.k = false; if (this.dynamicProperties.length) this.k = true; else this.getValue(true); }; ShapeModifier.prototype.processKeys = function() { if (this.elem.globalData.frameId === this.frameId) return; this.frameId = this.elem.globalData.frameId; this.iterateDynamicProperties(); }; extendPrototype([DynamicPropertyContainer], ShapeModifier); function TrimModifier() {} extendPrototype([ShapeModifier], TrimModifier); TrimModifier.prototype.initModifierProperties = function(elem, data) { this.s = PropertyFactory.getProp(elem, data.s, 0, .01, this); this.e = PropertyFactory.getProp(elem, data.e, 0, .01, this); this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this); this.sValue = 0; this.eValue = 0; this.getValue = this.processKeys; this.m = data.m; this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length; }; TrimModifier.prototype.addShapeToModifier = function(shapeData) { shapeData.pathsData = []; }; TrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) { var segments = []; if (e <= 1) segments.push({ s, e }); else if (s >= 1) segments.push({ s: s - 1, e: e - 1 }); else { segments.push({ s, e: 1 }); segments.push({ s: 0, e: e - 1 }); } var shapeSegments = []; var i; var len = segments.length; var segmentOb; for (i = 0; i < len; i += 1) { segmentOb = segments[i]; if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) { var shapeS; var shapeE; if (segmentOb.s * totalModifierLength <= addedLength) shapeS = 0; else shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength; if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) shapeE = 1; else shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength; shapeSegments.push([shapeS, shapeE]); } } if (!shapeSegments.length) shapeSegments.push([0, 0]); return shapeSegments; }; TrimModifier.prototype.releasePathsData = function(pathsData) { var i; var len = pathsData.length; for (i = 0; i < len; i += 1) segmentsLengthPool.release(pathsData[i]); pathsData.length = 0; return pathsData; }; TrimModifier.prototype.processShapes = function(_isFirstFrame) { var s; var e; if (this._mdf || _isFirstFrame) { var o = this.o.v % 360 / 360; if (o < 0) o += 1; if (this.s.v > 1) s = 1 + o; else if (this.s.v < 0) s = 0 + o; else s = this.s.v + o; if (this.e.v > 1) e = 1 + o; else if (this.e.v < 0) e = 0 + o; else e = this.e.v + o; if (s > e) { var _s = s; s = e; e = _s; } s = Math.round(s * 1e4) * 1e-4; e = Math.round(e * 1e4) * 1e-4; this.sValue = s; this.eValue = e; } else { s = this.sValue; e = this.eValue; } var shapePaths; var i; var len = this.shapes.length; var j; var jLen; var pathsData; var pathData; var totalShapeLength; var totalModifierLength = 0; if (e === s) for (i = 0; i < len; i += 1) { this.shapes[i].localShapeCollection.releaseShapes(); this.shapes[i].shape._mdf = true; this.shapes[i].shape.paths = this.shapes[i].localShapeCollection; if (this._mdf) this.shapes[i].pathsData.length = 0; } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) { var segments = []; var shapeData; var localShapeCollection; for (i = 0; i < len; i += 1) { shapeData = this.shapes[i]; if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) shapeData.shape.paths = shapeData.localShapeCollection; else { shapePaths = shapeData.shape.paths; jLen = shapePaths._length; totalShapeLength = 0; if (!shapeData.shape._mdf && shapeData.pathsData.length) totalShapeLength = shapeData.totalShapeLength; else { pathsData = this.releasePathsData(shapeData.pathsData); for (j = 0; j < jLen; j += 1) { pathData = bez.getSegmentsLength(shapePaths.shapes[j]); pathsData.push(pathData); totalShapeLength += pathData.totalLength; } shapeData.totalShapeLength = totalShapeLength; shapeData.pathsData = pathsData; } totalModifierLength += totalShapeLength; shapeData.shape._mdf = true; } } var shapeS = s; var shapeE = e; var addedLength = 0; var edges; for (i = len - 1; i >= 0; i -= 1) { shapeData = this.shapes[i]; if (shapeData.shape._mdf) { localShapeCollection = shapeData.localShapeCollection; localShapeCollection.releaseShapes(); if (this.m === 2 && len > 1) { edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength); addedLength += shapeData.totalShapeLength; } else edges = [[shapeS, shapeE]]; jLen = edges.length; for (j = 0; j < jLen; j += 1) { shapeS = edges[j][0]; shapeE = edges[j][1]; segments.length = 0; if (shapeE <= 1) segments.push({ s: shapeData.totalShapeLength * shapeS, e: shapeData.totalShapeLength * shapeE }); else if (shapeS >= 1) segments.push({ s: shapeData.totalShapeLength * (shapeS - 1), e: shapeData.totalShapeLength * (shapeE - 1) }); else { segments.push({ s: shapeData.totalShapeLength * shapeS, e: shapeData.totalShapeLength }); segments.push({ s: 0, e: shapeData.totalShapeLength * (shapeE - 1) }); } var newShapesData = this.addShapes(shapeData, segments[0]); if (segments[0].s !== segments[0].e) { if (segments.length > 1) if (shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1].c) { var lastShape = newShapesData.pop(); this.addPaths(newShapesData, localShapeCollection); newShapesData = this.addShapes(shapeData, segments[1], lastShape); } else { this.addPaths(newShapesData, localShapeCollection); newShapesData = this.addShapes(shapeData, segments[1]); } this.addPaths(newShapesData, localShapeCollection); } } shapeData.shape.paths = localShapeCollection; } } } else if (this._mdf) for (i = 0; i < len; i += 1) { this.shapes[i].pathsData.length = 0; this.shapes[i].shape._mdf = true; } }; TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) { var i; var len = newPaths.length; for (i = 0; i < len; i += 1) localShapeCollection.addShape(newPaths[i]); }; TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) { shapePath.setXYAt(pt2[0], pt2[1], "o", pos); shapePath.setXYAt(pt3[0], pt3[1], "i", pos + 1); if (newShape) shapePath.setXYAt(pt1[0], pt1[1], "v", pos); shapePath.setXYAt(pt4[0], pt4[1], "v", pos + 1); }; TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) { shapePath.setXYAt(points[1], points[5], "o", pos); shapePath.setXYAt(points[2], points[6], "i", pos + 1); if (newShape) shapePath.setXYAt(points[0], points[4], "v", pos); shapePath.setXYAt(points[3], points[7], "v", pos + 1); }; TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) { var pathsData = shapeData.pathsData; var shapePaths = shapeData.shape.paths.shapes; var i; var len = shapeData.shape.paths._length; var j; var jLen; var addedLength = 0; var currentLengthData; var segmentCount; var lengths; var segment; var shapes = []; var initPos; var newShape = true; if (!shapePath) { shapePath = shapePool.newElement(); segmentCount = 0; initPos = 0; } else { segmentCount = shapePath._length; initPos = shapePath._length; } shapes.push(shapePath); for (i = 0; i < len; i += 1) { lengths = pathsData[i].lengths; shapePath.c = shapePaths[i].c; jLen = shapePaths[i].c ? lengths.length : lengths.length + 1; for (j = 1; j < jLen; j += 1) { currentLengthData = lengths[j - 1]; if (addedLength + currentLengthData.addedLength < shapeSegment.s) { addedLength += currentLengthData.addedLength; shapePath.c = false; } else if (addedLength > shapeSegment.e) { shapePath.c = false; break; } else { if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) { this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape); newShape = false; } else { 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]); this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); newShape = false; shapePath.c = false; } addedLength += currentLengthData.addedLength; segmentCount += 1; } } if (shapePaths[i].c && lengths.length) { currentLengthData = lengths[j - 1]; if (addedLength <= shapeSegment.e) { var segmentLength = lengths[j - 1].addedLength; if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) { this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape); newShape = false; } else { 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]); this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); newShape = false; shapePath.c = false; } } else shapePath.c = false; addedLength += currentLengthData.addedLength; segmentCount += 1; } if (shapePath._length) { shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], "i", initPos); shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], "o", shapePath._length - 1); } if (addedLength > shapeSegment.e) break; if (i < len - 1) { shapePath = shapePool.newElement(); newShape = true; shapes.push(shapePath); segmentCount = 0; } } return shapes; }; function PuckerAndBloatModifier() {} extendPrototype([ShapeModifier], PuckerAndBloatModifier); PuckerAndBloatModifier.prototype.initModifierProperties = function(elem, data) { this.getValue = this.processKeys; this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this); this._isAnimated = !!this.amount.effectsSequence.length; }; PuckerAndBloatModifier.prototype.processPath = function(path, amount) { var percent = amount / 100; var centerPoint = [0, 0]; var pathLength = path._length; var i = 0; for (i = 0; i < pathLength; i += 1) { centerPoint[0] += path.v[i][0]; centerPoint[1] += path.v[i][1]; } centerPoint[0] /= pathLength; centerPoint[1] /= pathLength; var clonedPath = shapePool.newElement(); clonedPath.c = path.c; var vX; var vY; var oX; var oY; var iX; var iY; for (i = 0; i < pathLength; i += 1) { vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent; vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent; oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent; oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent; iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent; iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent; clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i); } return clonedPath; }; PuckerAndBloatModifier.prototype.processShapes = function(_isFirstFrame) { var shapePaths; var i; var len = this.shapes.length; var j; var jLen; var amount = this.amount.v; if (amount !== 0) { var shapeData; var localShapeCollection; for (i = 0; i < len; i += 1) { shapeData = this.shapes[i]; localShapeCollection = shapeData.localShapeCollection; if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { localShapeCollection.releaseShapes(); shapeData.shape._mdf = true; shapePaths = shapeData.shape.paths.shapes; jLen = shapeData.shape.paths._length; for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amount)); } shapeData.shape.paths = shapeData.localShapeCollection; } } if (!this.dynamicProperties.length) this._mdf = false; }; var TransformPropertyFactory = function() { var defaultVector = [0, 0]; function applyToMatrix(mat) { var _mdf = this._mdf; this.iterateDynamicProperties(); this._mdf = this._mdf || _mdf; if (this.a) mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); if (this.s) mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]); if (this.sk) mat.skewFromAxis(-this.sk.v, this.sa.v); if (this.r) mat.rotate(-this.r.v); else 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]); if (this.data.p.s) if (this.data.p.z) mat.translate(this.px.v, this.py.v, -this.pz.v); else mat.translate(this.px.v, this.py.v, 0); else mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); } function processKeys(forceRender) { if (this.elem.globalData.frameId === this.frameId) return; if (this._isDirty) { this.precalculateMatrix(); this._isDirty = false; } this.iterateDynamicProperties(); if (this._mdf || forceRender) { var frameRate; this.v.cloneFromProps(this.pre.props); if (this.appliedTransformations < 1) this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); if (this.appliedTransformations < 2) this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]); if (this.sk && this.appliedTransformations < 3) this.v.skewFromAxis(-this.sk.v, this.sa.v); if (this.r && this.appliedTransformations < 4) this.v.rotate(-this.r.v); else if (!this.r && this.appliedTransformations < 4) 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]); if (this.autoOriented) { var v1; var v2; frameRate = this.elem.globalData.frameRate; if (this.p && this.p.keyframes && this.p.getValueAtTime) if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) { v1 = this.p.getValueAtTime((this.p.keyframes[0].t + .01) / frameRate, 0); v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0); } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) { v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0); v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - .05) / frameRate, 0); } else { v1 = this.p.pv; v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - .01) / frameRate, this.p.offsetTime); } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) { v1 = []; v2 = []; var px = this.px; var py = this.py; if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) { v1[0] = px.getValueAtTime((px.keyframes[0].t + .01) / frameRate, 0); v1[1] = py.getValueAtTime((py.keyframes[0].t + .01) / frameRate, 0); v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0); v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0); } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) { v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0); v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0); v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - .01) / frameRate, 0); v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - .01) / frameRate, 0); } else { v1 = [px.pv, py.pv]; v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - .01) / frameRate, px.offsetTime); v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - .01) / frameRate, py.offsetTime); } } else { v2 = defaultVector; v1 = v2; } this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0])); } if (this.data.p && this.data.p.s) if (this.data.p.z) this.v.translate(this.px.v, this.py.v, -this.pz.v); else this.v.translate(this.px.v, this.py.v, 0); else this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); } this.frameId = this.elem.globalData.frameId; } function precalculateMatrix() { this.appliedTransformations = 0; this.pre.reset(); if (!this.a.effectsSequence.length) { this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); this.appliedTransformations = 1; } else return; if (!this.s.effectsSequence.length) { this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]); this.appliedTransformations = 2; } else return; if (this.sk) if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) { this.pre.skewFromAxis(-this.sk.v, this.sa.v); this.appliedTransformations = 3; } else return; if (this.r) { if (!this.r.effectsSequence.length) { this.pre.rotate(-this.r.v); this.appliedTransformations = 4; } } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) { 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]); this.appliedTransformations = 4; } } function autoOrient() {} function addDynamicProperty(prop) { this._addDynamicProperty(prop); this.elem.addDynamicProperty(prop); this._isDirty = true; } function TransformProperty(elem, data, container) { this.elem = elem; this.frameId = -1; this.propType = "transform"; this.data = data; this.v = new Matrix(); this.pre = new Matrix(); this.appliedTransformations = 0; this.initDynamicPropertyContainer(container || elem); if (data.p && data.p.s) { this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this); this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this); if (data.p.z) this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this); } else this.p = PropertyFactory.getProp(elem, data.p || { k: [ 0, 0, 0 ] }, 1, 0, this); if (data.rx) { this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this); this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this); this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this); if (data.or.k[0].ti) { var i; var len = data.or.k.length; for (i = 0; i < len; i += 1) { data.or.k[i].to = null; data.or.k[i].ti = null; } } this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); this.or.sh = true; } else this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this); if (data.sk) { this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this); this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this); } this.a = PropertyFactory.getProp(elem, data.a || { k: [ 0, 0, 0 ] }, 1, 0, this); this.s = PropertyFactory.getProp(elem, data.s || { k: [ 100, 100, 100 ] }, 1, .01, this); if (data.o) this.o = PropertyFactory.getProp(elem, data.o, 0, .01, elem); else this.o = { _mdf: false, v: 1 }; this._isDirty = true; if (!this.dynamicProperties.length) this.getValue(true); } TransformProperty.prototype = { applyToMatrix, getValue: processKeys, precalculateMatrix, autoOrient }; extendPrototype([DynamicPropertyContainer], TransformProperty); TransformProperty.prototype.addDynamicProperty = addDynamicProperty; TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty; function getTransformProperty(elem, data, container) { return new TransformProperty(elem, data, container); } return { getTransformProperty }; }(); function RepeaterModifier() {} extendPrototype([ShapeModifier], RepeaterModifier); RepeaterModifier.prototype.initModifierProperties = function(elem, data) { this.getValue = this.processKeys; this.c = PropertyFactory.getProp(elem, data.c, 0, null, this); this.o = PropertyFactory.getProp(elem, data.o, 0, null, this); this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this); this.so = PropertyFactory.getProp(elem, data.tr.so, 0, .01, this); this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, .01, this); this.data = data; if (!this.dynamicProperties.length) this.getValue(true); this._isAnimated = !!this.dynamicProperties.length; this.pMatrix = new Matrix(); this.rMatrix = new Matrix(); this.sMatrix = new Matrix(); this.tMatrix = new Matrix(); this.matrix = new Matrix(); }; RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv) { var dir = inv ? -1 : 1; var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc); var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc); pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]); rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); rMatrix.rotate(-transform.r.v * dir * perc); rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY); sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); }; RepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) { this.elem = elem; this.arr = arr; this.pos = pos; this.elemsData = elemsData; this._currentCopies = 0; this._elements = []; this._groups = []; this.frameId = -1; this.initDynamicPropertyContainer(elem); this.initModifierProperties(elem, arr[pos]); while (pos > 0) { pos -= 1; this._elements.unshift(arr[pos]); } if (this.dynamicProperties.length) this.k = true; else this.getValue(true); }; RepeaterModifier.prototype.resetElements = function(elements) { var i; var len = elements.length; for (i = 0; i < len; i += 1) { elements[i]._processed = false; if (elements[i].ty === "gr") this.resetElements(elements[i].it); } }; RepeaterModifier.prototype.cloneElements = function(elements) { var newElements = JSON.parse(JSON.stringify(elements)); this.resetElements(newElements); return newElements; }; RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) { var i; var len = elements.length; for (i = 0; i < len; i += 1) { elements[i]._render = renderFlag; if (elements[i].ty === "gr") this.changeGroupRender(elements[i].it, renderFlag); } }; RepeaterModifier.prototype.processShapes = function(_isFirstFrame) { var items; var itemsTransform; var i; var dir; var cont; var hasReloaded = false; if (this._mdf || _isFirstFrame) { var copies = Math.ceil(this.c.v); if (this._groups.length < copies) { while (this._groups.length < copies) { var group = { it: this.cloneElements(this._elements), ty: "gr" }; group.it.push({ a: { a: 0, ix: 1, k: [0, 0] }, nm: "Transform", o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: "tr" }); this.arr.splice(0, 0, group); this._groups.splice(0, 0, group); this._currentCopies += 1; } this.elem.reloadShapes(); hasReloaded = true; } cont = 0; var renderFlag; for (i = 0; i <= this._groups.length - 1; i += 1) { renderFlag = cont < copies; this._groups[i]._render = renderFlag; this.changeGroupRender(this._groups[i].it, renderFlag); if (!renderFlag) { var elems = this.elemsData[i].it; var transformData = elems[elems.length - 1]; if (transformData.transform.op.v !== 0) { transformData.transform.op._mdf = true; transformData.transform.op.v = 0; } else transformData.transform.op._mdf = false; } cont += 1; } this._currentCopies = copies; var offset = this.o.v; var offsetModulo = offset % 1; var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset); var pProps = this.pMatrix.props; var rProps = this.rMatrix.props; var sProps = this.sMatrix.props; this.pMatrix.reset(); this.rMatrix.reset(); this.sMatrix.reset(); this.tMatrix.reset(); this.matrix.reset(); var iteration = 0; if (offset > 0) { while (iteration < roundOffset) { this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); iteration += 1; } if (offsetModulo) { this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false); iteration += offsetModulo; } } else if (offset < 0) { while (iteration > roundOffset) { this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true); iteration -= 1; } if (offsetModulo) { this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true); iteration -= offsetModulo; } } i = this.data.m === 1 ? 0 : this._currentCopies - 1; dir = this.data.m === 1 ? 1 : -1; cont = this._currentCopies; var j; var jLen; while (cont) { items = this.elemsData[i].it; itemsTransform = items[items.length - 1].transform.mProps.v.props; jLen = itemsTransform.length; items[items.length - 1].transform.mProps._mdf = true; items[items.length - 1].transform.op._mdf = true; 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)); if (iteration !== 0) { if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); 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]); 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]); 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]); for (j = 0; j < jLen; j += 1) itemsTransform[j] = this.matrix.props[j]; this.matrix.reset(); } else { this.matrix.reset(); for (j = 0; j < jLen; j += 1) itemsTransform[j] = this.matrix.props[j]; } iteration += 1; cont -= 1; i += dir; } } else { cont = this._currentCopies; i = 0; dir = 1; while (cont) { items = this.elemsData[i].it; itemsTransform = items[items.length - 1].transform.mProps.v.props; items[items.length - 1].transform.mProps._mdf = false; items[items.length - 1].transform.op._mdf = false; cont -= 1; i += dir; } } return hasReloaded; }; RepeaterModifier.prototype.addShape = function() {}; function RoundCornersModifier() {} extendPrototype([ShapeModifier], RoundCornersModifier); RoundCornersModifier.prototype.initModifierProperties = function(elem, data) { this.getValue = this.processKeys; this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this); this._isAnimated = !!this.rd.effectsSequence.length; }; RoundCornersModifier.prototype.processPath = function(path, round) { var clonedPath = shapePool.newElement(); clonedPath.c = path.c; var i; var len = path._length; var currentV; var currentI; var currentO; var closerV; var distance; var newPosPerc; var index = 0; var vX; var vY; var oX; var oY; var iX; var iY; for (i = 0; i < len; i += 1) { currentV = path.v[i]; currentO = path.o[i]; currentI = path.i[i]; if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) if ((i === 0 || i === len - 1) && !path.c) { clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index); index += 1; } else { if (i === 0) closerV = path.v[len - 1]; else closerV = path.v[i - 1]; distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; vX = iX; iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc; vY = iY; oX = vX - (vX - currentV[0]) * roundCorner; oY = vY - (vY - currentV[1]) * roundCorner; clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); index += 1; if (i === len - 1) closerV = path.v[0]; else closerV = path.v[i + 1]; distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; vX = oX; oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc; vY = oY; iX = vX - (vX - currentV[0]) * roundCorner; iY = vY - (vY - currentV[1]) * roundCorner; clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); index += 1; } else { 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); index += 1; } } return clonedPath; }; RoundCornersModifier.prototype.processShapes = function(_isFirstFrame) { var shapePaths; var i; var len = this.shapes.length; var j; var jLen; var rd = this.rd.v; if (rd !== 0) { var shapeData; var localShapeCollection; for (i = 0; i < len; i += 1) { shapeData = this.shapes[i]; localShapeCollection = shapeData.localShapeCollection; if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { localShapeCollection.releaseShapes(); shapeData.shape._mdf = true; shapePaths = shapeData.shape.paths.shapes; jLen = shapeData.shape.paths._length; for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], rd)); } shapeData.shape.paths = shapeData.localShapeCollection; } } if (!this.dynamicProperties.length) this._mdf = false; }; function floatEqual(a, b) { return Math.abs(a - b) * 1e5 <= Math.min(Math.abs(a), Math.abs(b)); } function floatZero(f) { return Math.abs(f) <= 1e-5; } function lerp(p0, p1, amount) { return p0 * (1 - amount) + p1 * amount; } function lerpPoint(p0, p1, amount) { return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)]; } function quadRoots(a, b, c) { if (a === 0) return []; var s = b * b - 4 * a * c; if (s < 0) return []; var singleRoot = -b / (2 * a); if (s === 0) return [singleRoot]; var delta = Math.sqrt(s) / (2 * a); return [singleRoot - delta, singleRoot + delta]; } function polynomialCoefficients(p0, p1, p2, p3) { return [ -p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0 ]; } function singlePoint(p) { return new PolynomialBezier(p, p, p, p, false); } function PolynomialBezier(p0, p1, p2, p3, linearize) { if (linearize && pointEqual(p0, p1)) p1 = lerpPoint(p0, p3, 1 / 3); if (linearize && pointEqual(p2, p3)) p2 = lerpPoint(p0, p3, 2 / 3); var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]); var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]); this.a = [coeffx[0], coeffy[0]]; this.b = [coeffx[1], coeffy[1]]; this.c = [coeffx[2], coeffy[2]]; this.d = [coeffx[3], coeffy[3]]; this.points = [ p0, p1, p2, p3 ]; } PolynomialBezier.prototype.point = function(t) { 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]]; }; PolynomialBezier.prototype.derivative = function(t) { 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]]; }; PolynomialBezier.prototype.tangentAngle = function(t) { var p = this.derivative(t); return Math.atan2(p[1], p[0]); }; PolynomialBezier.prototype.normalAngle = function(t) { var p = this.derivative(t); return Math.atan2(p[0], p[1]); }; PolynomialBezier.prototype.inflectionPoints = function() { var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1]; if (floatZero(denom)) return []; var tcusp = -.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom; var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom; if (square < 0) return []; var root = Math.sqrt(square); if (floatZero(root)) { if (root > 0 && root < 1) return [tcusp]; return []; } return [tcusp - root, tcusp + root].filter(function(r) { return r > 0 && r < 1; }); }; PolynomialBezier.prototype.split = function(t) { if (t <= 0) return [singlePoint(this.points[0]), this]; if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])]; var p10 = lerpPoint(this.points[0], this.points[1], t); var p11 = lerpPoint(this.points[1], this.points[2], t); var p12 = lerpPoint(this.points[2], this.points[3], t); var p20 = lerpPoint(p10, p11, t); var p21 = lerpPoint(p11, p12, t); var p3 = lerpPoint(p20, p21, t); return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)]; }; function extrema(bez, comp) { var min = bez.points[0][comp]; var max = bez.points[bez.points.length - 1][comp]; if (min > max) { var e = max; max = min; min = e; } var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]); for (var i = 0; i < f.length; i += 1) if (f[i] > 0 && f[i] < 1) { var val = bez.point(f[i])[comp]; if (val < min) min = val; else if (val > max) max = val; } return { min, max }; } PolynomialBezier.prototype.bounds = function() { return { x: extrema(this, 0), y: extrema(this, 1) }; }; PolynomialBezier.prototype.boundingBox = function() { var bounds = this.bounds(); return { left: bounds.x.min, right: bounds.x.max, top: bounds.y.min, bottom: bounds.y.max, width: bounds.x.max - bounds.x.min, height: bounds.y.max - bounds.y.min, cx: (bounds.x.max + bounds.x.min) / 2, cy: (bounds.y.max + bounds.y.min) / 2 }; }; function intersectData(bez, t1, t2) { var box = bez.boundingBox(); return { cx: box.cx, cy: box.cy, width: box.width, height: box.height, bez, t: (t1 + t2) / 2, t1, t2 }; } function splitData(data) { var split = data.bez.split(.5); return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)]; } function boxIntersect(b1, b2) { return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height; } function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) { if (!boxIntersect(d1, d2)) return; if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) { intersections.push([d1.t, d2.t]); return; } var d1s = splitData(d1); var d2s = splitData(d2); intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion); intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion); intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion); intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion); } PolynomialBezier.prototype.intersections = function(other, tolerance, maxRecursion) { if (tolerance === void 0) tolerance = 2; if (maxRecursion === void 0) maxRecursion = 7; var intersections = []; intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion); return intersections; }; PolynomialBezier.shapeSegment = function(shapePath, index) { var nextIndex = (index + 1) % shapePath.length(); return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true); }; PolynomialBezier.shapeSegmentInverted = function(shapePath, index) { var nextIndex = (index + 1) % shapePath.length(); return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true); }; function crossProduct(a, b) { 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] ]; } function lineIntersection(start1, end1, start2, end2) { var v1 = [ start1[0], start1[1], 1 ]; var v2 = [ end1[0], end1[1], 1 ]; var v3 = [ start2[0], start2[1], 1 ]; var v4 = [ end2[0], end2[1], 1 ]; var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4)); if (floatZero(r[2])) return null; return [r[0] / r[2], r[1] / r[2]]; } function polarOffset(p, angle, length) { return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length]; } function pointDistance(p1, p2) { return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]); } function pointEqual(p1, p2) { return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]); } function ZigZagModifier() {} extendPrototype([ShapeModifier], ZigZagModifier); ZigZagModifier.prototype.initModifierProperties = function(elem, data) { this.getValue = this.processKeys; this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this); this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this); this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this); this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0; }; function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) { var angO = angle - Math.PI / 2; var angI = angle + Math.PI / 2; var px = point[0] + Math.cos(angle) * direction * amplitude; var py = point[1] - Math.sin(angle) * direction * amplitude; 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()); } function getPerpendicularVector(pt1, pt2) { var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]]; var rot = -Math.PI * .5; return [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]]; } function getProjectingAngle(path, cur) { var prevIndex = cur === 0 ? path.length() - 1 : cur - 1; var nextIndex = (cur + 1) % path.length(); var prevPoint = path.v[prevIndex]; var nextPoint = path.v[nextIndex]; var pVector = getPerpendicularVector(prevPoint, nextPoint); return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]); } function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) { var angle = getProjectingAngle(path, cur); var point = path.v[cur % path._length]; var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1]; var nextPoint = path.v[(cur + 1) % path._length]; var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0; var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0; setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType); } function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) { for (var i = 0; i < frequency; i += 1) { var t = (i + 1) / (frequency + 1); 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; var angle = segment.normalAngle(t); setPoint(outputBezier, segment.point(t), angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType); direction = -direction; } return direction; } ZigZagModifier.prototype.processPath = function(path, amplitude, frequency, pointType) { var count = path._length; var clonedPath = shapePool.newElement(); clonedPath.c = path.c; if (!path.c) count -= 1; if (count === 0) return clonedPath; var direction = -1; var segment = PolynomialBezier.shapeSegment(path, 0); zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction); for (var i = 0; i < count; i += 1) { direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction); if (i === count - 1 && !path.c) segment = null; else segment = PolynomialBezier.shapeSegment(path, (i + 1) % count); zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction); } return clonedPath; }; ZigZagModifier.prototype.processShapes = function(_isFirstFrame) { var shapePaths; var i; var len = this.shapes.length; var j; var jLen; var amplitude = this.amplitude.v; var frequency = Math.max(0, Math.round(this.frequency.v)); var pointType = this.pointsType.v; if (amplitude !== 0) { var shapeData; var localShapeCollection; for (i = 0; i < len; i += 1) { shapeData = this.shapes[i]; localShapeCollection = shapeData.localShapeCollection; if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { localShapeCollection.releaseShapes(); shapeData.shape._mdf = true; shapePaths = shapeData.shape.paths.shapes; jLen = shapeData.shape.paths._length; for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType)); } shapeData.shape.paths = shapeData.localShapeCollection; } } if (!this.dynamicProperties.length) this._mdf = false; }; function linearOffset(p1, p2, amount) { var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]); return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)]; } function offsetSegment(segment, amount) { var p0; var p1a; var p1b; var p2b; var p2a; var p3; var e = linearOffset(segment.points[0], segment.points[1], amount); p0 = e[0]; p1a = e[1]; e = linearOffset(segment.points[1], segment.points[2], amount); p1b = e[0]; p2b = e[1]; e = linearOffset(segment.points[2], segment.points[3], amount); p2a = e[0]; p3 = e[1]; var p1 = lineIntersection(p0, p1a, p1b, p2b); if (p1 === null) p1 = p1a; var p2 = lineIntersection(p2a, p3, p1b, p2b); if (p2 === null) p2 = p2a; return new PolynomialBezier(p0, p1, p2, p3); } function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) { var p0 = seg1.points[3]; var p1 = seg2.points[0]; if (lineJoin === 3) return p0; if (pointEqual(p0, p1)) return p0; if (lineJoin === 2) { var angleOut = -seg1.tangentAngle(1); var angleIn = -seg2.tangentAngle(0) + Math.PI; var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100)); var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2; var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner); outputBezier.setXYAt(tan[0], tan[1], "o", outputBezier.length() - 1); tan = polarOffset(p1, angleIn, 2 * radius * roundCorner); outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length()); return p1; } var intersection = lineIntersection(pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2], p0, p1, pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1]); if (intersection && pointDistance(intersection, p0) < miterLimit) { outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length()); return intersection; } return p0; } function getIntersection(a, b) { var intersect = a.intersections(b); if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift(); if (intersect.length) return intersect[0]; return null; } function pruneSegmentIntersection(a, b) { var outa = a.slice(); var outb = b.slice(); var intersect = getIntersection(a[a.length - 1], b[0]); if (intersect) { outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0]; outb[0] = b[0].split(intersect[1])[1]; } if (a.length > 1 && b.length > 1) { intersect = getIntersection(a[0], b[b.length - 1]); if (intersect) return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]]; } return [outa, outb]; } function pruneIntersections(segments) { var e; for (var i = 1; i < segments.length; i += 1) { e = pruneSegmentIntersection(segments[i - 1], segments[i]); segments[i - 1] = e[0]; segments[i] = e[1]; } if (segments.length > 1) { e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]); segments[segments.length - 1] = e[0]; segments[0] = e[1]; } return segments; } function offsetSegmentSplit(segment, amount) { var flex = segment.inflectionPoints(); var left; var right; var split; var mid; if (flex.length === 0) return [offsetSegment(segment, amount)]; if (flex.length === 1 || floatEqual(flex[1], 1)) { split = segment.split(flex[0]); left = split[0]; right = split[1]; return [offsetSegment(left, amount), offsetSegment(right, amount)]; } split = segment.split(flex[0]); left = split[0]; var t = (flex[1] - flex[0]) / (1 - flex[0]); split = split[1].split(t); mid = split[0]; right = split[1]; return [ offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount) ]; } function OffsetPathModifier() {} extendPrototype([ShapeModifier], OffsetPathModifier); OffsetPathModifier.prototype.initModifierProperties = function(elem, data) { this.getValue = this.processKeys; this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this); this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this); this.lineJoin = data.lj; this._isAnimated = this.amount.effectsSequence.length !== 0; }; OffsetPathModifier.prototype.processPath = function(inputBezier, amount, lineJoin, miterLimit) { var outputBezier = shapePool.newElement(); outputBezier.c = inputBezier.c; var count = inputBezier.length(); if (!inputBezier.c) count -= 1; var i; var j; var segment; var multiSegments = []; for (i = 0; i < count; i += 1) { segment = PolynomialBezier.shapeSegment(inputBezier, i); multiSegments.push(offsetSegmentSplit(segment, amount)); } if (!inputBezier.c) for (i = count - 1; i >= 0; i -= 1) { segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i); multiSegments.push(offsetSegmentSplit(segment, amount)); } multiSegments = pruneIntersections(multiSegments); var lastPoint = null; var lastSeg = null; for (i = 0; i < multiSegments.length; i += 1) { var multiSegment = multiSegments[i]; if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit); lastSeg = multiSegment[multiSegment.length - 1]; for (j = 0; j < multiSegment.length; j += 1) { segment = multiSegment[j]; if (lastPoint && pointEqual(segment.points[0], lastPoint)) outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], "o", outputBezier.length() - 1); else 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()); 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()); lastPoint = segment.points[3]; } } if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit); return outputBezier; }; OffsetPathModifier.prototype.processShapes = function(_isFirstFrame) { var shapePaths; var i; var len = this.shapes.length; var j; var jLen; var amount = this.amount.v; var miterLimit = this.miterLimit.v; var lineJoin = this.lineJoin; if (amount !== 0) { var shapeData; var localShapeCollection; for (i = 0; i < len; i += 1) { shapeData = this.shapes[i]; localShapeCollection = shapeData.localShapeCollection; if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { localShapeCollection.releaseShapes(); shapeData.shape._mdf = true; shapePaths = shapeData.shape.paths.shapes; jLen = shapeData.shape.paths._length; for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit)); } shapeData.shape.paths = shapeData.localShapeCollection; } } if (!this.dynamicProperties.length) this._mdf = false; }; function getFontProperties(fontData) { var styles = fontData.fStyle ? fontData.fStyle.split(" ") : []; var fWeight = "normal"; var fStyle = "normal"; var len = styles.length; var styleName; for (var i = 0; i < len; i += 1) { styleName = styles[i].toLowerCase(); switch (styleName) { case "italic": fStyle = "italic"; break; case "bold": fWeight = "700"; break; case "black": fWeight = "900"; break; case "medium": fWeight = "500"; break; case "regular": case "normal": fWeight = "400"; break; case "light": case "thin": fWeight = "200"; break; default: break; } } return { style: fStyle, weight: fontData.fWeight || fWeight }; } var FontManager = function() { var maxWaitingTime = 5e3; var emptyChar = { w: 0, size: 0, shapes: [], data: { shapes: [] } }; var combinedCharacters = []; 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 ]); var BLACK_FLAG_CODE_POINT = 127988; var CANCEL_TAG_CODE_POINT = 917631; var A_TAG_CODE_POINT = 917601; var Z_TAG_CODE_POINT = 917626; var VARIATION_SELECTOR_16_CODE_POINT = 65039; var ZERO_WIDTH_JOINER_CODE_POINT = 8205; var REGIONAL_CHARACTER_A_CODE_POINT = 127462; var REGIONAL_CHARACTER_Z_CODE_POINT = 127487; var surrogateModifiers = [ "d83cdffb", "d83cdffc", "d83cdffd", "d83cdffe", "d83cdfff" ]; function trimFontOptions(font) { var familyArray = font.split(","); var i; var len = familyArray.length; var enabledFamilies = []; for (i = 0; i < len; i += 1) if (familyArray[i] !== "sans-serif" && familyArray[i] !== "monospace") enabledFamilies.push(familyArray[i]); return enabledFamilies.join(","); } function setUpNode(font, family) { var parentNode = createTag("span"); parentNode.setAttribute("aria-hidden", true); parentNode.style.fontFamily = family; var node = createTag("span"); node.innerText = "giItT1WQy@!-/#"; parentNode.style.position = "absolute"; parentNode.style.left = "-10000px"; parentNode.style.top = "-10000px"; parentNode.style.fontSize = "300px"; parentNode.style.fontVariant = "normal"; parentNode.style.fontStyle = "normal"; parentNode.style.fontWeight = "normal"; parentNode.style.letterSpacing = "0"; parentNode.appendChild(node); document.body.appendChild(parentNode); var width = node.offsetWidth; node.style.fontFamily = trimFontOptions(font) + ", " + family; return { node, w: width, parent: parentNode }; } function checkLoadedFonts() { var i; var len = this.fonts.length; var node; var w; var loadedCount = len; for (i = 0; i < len; i += 1) if (this.fonts[i].loaded) loadedCount -= 1; else if (this.fonts[i].fOrigin === "n" || this.fonts[i].origin === 0) this.fonts[i].loaded = true; else { node = this.fonts[i].monoCase.node; w = this.fonts[i].monoCase.w; if (node.offsetWidth !== w) { loadedCount -= 1; this.fonts[i].loaded = true; } else { node = this.fonts[i].sansCase.node; w = this.fonts[i].sansCase.w; if (node.offsetWidth !== w) { loadedCount -= 1; this.fonts[i].loaded = true; } } if (this.fonts[i].loaded) { this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent); this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent); } } if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) setTimeout(this.checkLoadedFontsBinded, 20); else setTimeout(this.setIsLoadedBinded, 10); } function createHelper(fontData, def) { var engine = document.body && def ? "svg" : "canvas"; var helper; var fontProps = getFontProperties(fontData); if (engine === "svg") { var tHelper = createNS("text"); tHelper.style.fontSize = "100px"; tHelper.setAttribute("font-family", fontData.fFamily); tHelper.setAttribute("font-style", fontProps.style); tHelper.setAttribute("font-weight", fontProps.weight); tHelper.textContent = "1"; if (fontData.fClass) { tHelper.style.fontFamily = "inherit"; tHelper.setAttribute("class", fontData.fClass); } else tHelper.style.fontFamily = fontData.fFamily; def.appendChild(tHelper); helper = tHelper; } else { var tCanvasHelper = new OffscreenCanvas(500, 500).getContext("2d"); tCanvasHelper.font = fontProps.style + " " + fontProps.weight + " 100px " + fontData.fFamily; helper = tCanvasHelper; } function measure(text) { if (engine === "svg") { helper.textContent = text; return helper.getComputedTextLength(); } return helper.measureText(text).width; } return { measureText: measure }; } function addFonts(fontData, defs) { if (!fontData) { this.isLoaded = true; return; } if (this.chars) { this.isLoaded = true; this.fonts = fontData.list; return; } if (!document.body) { this.isLoaded = true; fontData.list.forEach(function(data) { data.helper = createHelper(data); data.cache = {}; }); this.fonts = fontData.list; return; } var fontArr = fontData.list; var i; var len = fontArr.length; var _pendingFonts = len; for (i = 0; i < len; i += 1) { var shouldLoadFont = true; var loadedSelector; var j; fontArr[i].loaded = false; fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, "monospace"); fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, "sans-serif"); if (!fontArr[i].fPath) { fontArr[i].loaded = true; _pendingFonts -= 1; } else if (fontArr[i].fOrigin === "p" || fontArr[i].origin === 3) { loadedSelector = document.querySelectorAll("style[f-forigin=\"p\"][f-family=\"" + fontArr[i].fFamily + "\"], style[f-origin=\"3\"][f-family=\"" + fontArr[i].fFamily + "\"]"); if (loadedSelector.length > 0) shouldLoadFont = false; if (shouldLoadFont) { var s = createTag("style"); s.setAttribute("f-forigin", fontArr[i].fOrigin); s.setAttribute("f-origin", fontArr[i].origin); s.setAttribute("f-family", fontArr[i].fFamily); s.type = "text/css"; s.innerText = "@font-face {font-family: " + fontArr[i].fFamily + "; font-style: normal; src: url('" + fontArr[i].fPath + "');}"; defs.appendChild(s); } } else if (fontArr[i].fOrigin === "g" || fontArr[i].origin === 1) { loadedSelector = document.querySelectorAll("link[f-forigin=\"g\"], link[f-origin=\"1\"]"); for (j = 0; j < loadedSelector.length; j += 1) if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) shouldLoadFont = false; if (shouldLoadFont) { var l = createTag("link"); l.setAttribute("f-forigin", fontArr[i].fOrigin); l.setAttribute("f-origin", fontArr[i].origin); l.type = "text/css"; l.rel = "stylesheet"; l.href = fontArr[i].fPath; document.body.appendChild(l); } } else if (fontArr[i].fOrigin === "t" || fontArr[i].origin === 2) { loadedSelector = document.querySelectorAll("script[f-forigin=\"t\"], script[f-origin=\"2\"]"); for (j = 0; j < loadedSelector.length; j += 1) if (fontArr[i].fPath === loadedSelector[j].src) shouldLoadFont = false; if (shouldLoadFont) { var sc = createTag("link"); sc.setAttribute("f-forigin", fontArr[i].fOrigin); sc.setAttribute("f-origin", fontArr[i].origin); sc.setAttribute("rel", "stylesheet"); sc.setAttribute("href", fontArr[i].fPath); defs.appendChild(sc); } } fontArr[i].helper = createHelper(fontArr[i], defs); fontArr[i].cache = {}; this.fonts.push(fontArr[i]); } if (_pendingFonts === 0) this.isLoaded = true; else setTimeout(this.checkLoadedFonts.bind(this), 100); } function addChars(chars) { if (!chars) return; if (!this.chars) this.chars = []; var i; var len = chars.length; var j; var jLen = this.chars.length; var found; for (i = 0; i < len; i += 1) { j = 0; found = false; while (j < jLen) { if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) found = true; j += 1; } if (!found) { this.chars.push(chars[i]); jLen += 1; } } } function getCharData(_char, style, font) { var i = 0; var len = this.chars.length; while (i < len) { if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) return this.chars[i]; i += 1; } if ((typeof _char === "string" && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn && !this._warned) { this._warned = true; console.warn("Missing character from exported characters list: ", _char, style, font); } return emptyChar; } function measureText(_char2, fontName, size) { var fontData = this.getFontByName(fontName); var index = _char2; if (!fontData.cache[index]) { var tHelper = fontData.helper; if (_char2 === " ") { var doubleSize = tHelper.measureText("|" + _char2 + "|"); var singleSize = tHelper.measureText("||"); fontData.cache[index] = (doubleSize - singleSize) / 100; } else fontData.cache[index] = tHelper.measureText(_char2) / 100; } return fontData.cache[index] * size; } function getFontByName(name) { var i = 0; var len = this.fonts.length; while (i < len) { if (this.fonts[i].fName === name) return this.fonts[i]; i += 1; } return this.fonts[0]; } function getCodePoint(string) { var codePoint = 0; var first = string.charCodeAt(0); if (first >= 55296 && first <= 56319) { var second = string.charCodeAt(1); if (second >= 56320 && second <= 57343) codePoint = (first - 55296) * 1024 + second - 56320 + 65536; } return codePoint; } function isModifier(firstCharCode, secondCharCode) { var sum = firstCharCode.toString(16) + secondCharCode.toString(16); return surrogateModifiers.indexOf(sum) !== -1; } function isZeroWidthJoiner(charCode) { return charCode === ZERO_WIDTH_JOINER_CODE_POINT; } function isVariationSelector(charCode) { return charCode === VARIATION_SELECTOR_16_CODE_POINT; } function isRegionalCode(string) { var codePoint = getCodePoint(string); if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) return true; return false; } function isFlagEmoji(string) { return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2)); } function isCombinedCharacter(_char3) { return combinedCharacters.indexOf(_char3) !== -1; } function isRegionalFlag(text, index) { var codePoint = getCodePoint(text.substr(index, 2)); if (codePoint !== BLACK_FLAG_CODE_POINT) return false; var count = 0; index += 2; while (count < 5) { codePoint = getCodePoint(text.substr(index, 2)); if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) return false; count += 1; index += 2; } return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT; } function setIsLoaded() { this.isLoaded = true; } var Font = function Font() { this.fonts = []; this.chars = null; this.typekitLoaded = 0; this.isLoaded = false; this._warned = false; this.initTime = Date.now(); this.setIsLoadedBinded = this.setIsLoaded.bind(this); this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this); }; Font.isModifier = isModifier; Font.isZeroWidthJoiner = isZeroWidthJoiner; Font.isFlagEmoji = isFlagEmoji; Font.isRegionalCode = isRegionalCode; Font.isCombinedCharacter = isCombinedCharacter; Font.isRegionalFlag = isRegionalFlag; Font.isVariationSelector = isVariationSelector; Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT; Font.prototype = { addChars, addFonts, getCharData, getFontByName, measureText, checkLoadedFonts, setIsLoaded }; return Font; }(); function SlotManager(animationData) { this.animationData = animationData; } SlotManager.prototype.getProp = function(data) { if (this.animationData.slots && this.animationData.slots[data.sid]) return Object.assign(data, this.animationData.slots[data.sid].p); return data; }; function slotFactory(animationData) { return new SlotManager(animationData); } function RenderableElement() {} RenderableElement.prototype = { initRenderable: function initRenderable() { this.isInRange = false; this.hidden = false; this.isTransparent = false; this.renderableComponents = []; }, addRenderableComponent: function addRenderableComponent(component) { if (this.renderableComponents.indexOf(component) === -1) this.renderableComponents.push(component); }, removeRenderableComponent: function removeRenderableComponent(component) { if (this.renderableComponents.indexOf(component) !== -1) this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1); }, prepareRenderableFrame: function prepareRenderableFrame(num) { this.checkLayerLimits(num); }, checkTransparency: function checkTransparency() { if (this.finalTransform.mProp.o.v <= 0) { if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) { this.isTransparent = true; this.hide(); } } else if (this.isTransparent) { this.isTransparent = false; this.show(); } }, /** * @function * Initializes frame related properties. * * @param {number} num * current frame number in Layer's time * */ checkLayerLimits: function checkLayerLimits(num) { if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) { if (this.isInRange !== true) { this.globalData._mdf = true; this._mdf = true; this.isInRange = true; this.show(); } } else if (this.isInRange !== false) { this.globalData._mdf = true; this.isInRange = false; this.hide(); } }, renderRenderable: function renderRenderable() { var i; var len = this.renderableComponents.length; for (i = 0; i < len; i += 1) this.renderableComponents[i].renderFrame(this._isFirstFrame); }, sourceRectAtTime: function sourceRectAtTime() { return { top: 0, left: 0, width: 100, height: 100 }; }, getLayerSize: function getLayerSize() { if (this.data.ty === 5) return { w: this.data.textData.width, h: this.data.textData.height }; return { w: this.data.width, h: this.data.height }; } }; var getBlendMode = function() { var blendModeEnums = { 0: "source-over", 1: "multiply", 2: "screen", 3: "overlay", 4: "darken", 5: "lighten", 6: "color-dodge", 7: "color-burn", 8: "hard-light", 9: "soft-light", 10: "difference", 11: "exclusion", 12: "hue", 13: "saturation", 14: "color", 15: "luminosity" }; return function(mode) { return blendModeEnums[mode] || ""; }; }(); function SliderEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); } function AngleEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); } function ColorEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); } function PointEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); } function LayerIndexEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); } function MaskIndexEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); } function CheckboxEffect(data, elem, container) { this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); } function NoValueEffect() { this.p = {}; } function EffectsManager(data, element) { var effects = data.ef || []; this.effectElements = []; var i; var len = effects.length; var effectItem; for (i = 0; i < len; i += 1) { effectItem = new GroupEffect(effects[i], element); this.effectElements.push(effectItem); } } function GroupEffect(data, element) { this.init(data, element); } extendPrototype([DynamicPropertyContainer], GroupEffect); GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties; GroupEffect.prototype.init = function(data, element) { this.data = data; this.effectElements = []; this.initDynamicPropertyContainer(element); var i; var len = this.data.ef.length; var eff; var effects = this.data.ef; for (i = 0; i < len; i += 1) { eff = null; switch (effects[i].ty) { case 0: eff = new SliderEffect(effects[i], element, this); break; case 1: eff = new AngleEffect(effects[i], element, this); break; case 2: eff = new ColorEffect(effects[i], element, this); break; case 3: eff = new PointEffect(effects[i], element, this); break; case 4: case 7: eff = new CheckboxEffect(effects[i], element, this); break; case 10: eff = new LayerIndexEffect(effects[i], element, this); break; case 11: eff = new MaskIndexEffect(effects[i], element, this); break; case 5: eff = new EffectsManager(effects[i], element, this); break; default: eff = new NoValueEffect(effects[i], element, this); break; } if (eff) this.effectElements.push(eff); } }; function BaseElement() {} BaseElement.prototype = { checkMasks: function checkMasks() { if (!this.data.hasMask) return false; var i = 0; var len = this.data.masksProperties.length; while (i < len) { if (this.data.masksProperties[i].mode !== "n" && this.data.masksProperties[i].cl !== false) return true; i += 1; } return false; }, initExpressions: function initExpressions() { var expressionsInterfaces = getExpressionInterfaces(); if (!expressionsInterfaces) return; var LayerExpressionInterface = expressionsInterfaces("layer"); var EffectsExpressionInterface = expressionsInterfaces("effects"); var ShapeExpressionInterface = expressionsInterfaces("shape"); var TextExpressionInterface = expressionsInterfaces("text"); var CompExpressionInterface = expressionsInterfaces("comp"); this.layerInterface = LayerExpressionInterface(this); if (this.data.hasMask && this.maskManager) this.layerInterface.registerMaskInterface(this.maskManager); var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface); this.layerInterface.registerEffectsInterface(effectsInterface); if (this.data.ty === 0 || this.data.xt) this.compInterface = CompExpressionInterface(this); else if (this.data.ty === 4) { this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface); this.layerInterface.content = this.layerInterface.shapeInterface; } else if (this.data.ty === 5) { this.layerInterface.textInterface = TextExpressionInterface(this); this.layerInterface.text = this.layerInterface.textInterface; } }, setBlendMode: function setBlendMode() { var blendModeValue = getBlendMode(this.data.bm); var elem = this.baseElement || this.layerElement; elem.style["mix-blend-mode"] = blendModeValue; }, initBaseData: function initBaseData(data, globalData, comp) { this.globalData = globalData; this.comp = comp; this.data = data; this.layerId = createElementID(); if (!this.data.sr) this.data.sr = 1; this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties); }, getType: function getType() { return this.type; }, sourceRectAtTime: function sourceRectAtTime() {} }; /** * @file * Handles element's layer frame update. * Checks layer in point and out point * */ function FrameElement() {} FrameElement.prototype = { /** * @function * Initializes frame related properties. * */ initFrame: function initFrame() { this._isFirstFrame = false; this.dynamicProperties = []; this._mdf = false; }, /** * @function * Calculates all dynamic values * * @param {number} num * current frame number in Layer's time * @param {boolean} isVisible * if layers is currently in range * */ prepareProperties: function prepareProperties(num, isVisible) { var i; var len = this.dynamicProperties.length; for (i = 0; i < len; i += 1) if (isVisible || this._isParent && this.dynamicProperties[i].propType === "transform") { this.dynamicProperties[i].getValue(); if (this.dynamicProperties[i]._mdf) { this.globalData._mdf = true; this._mdf = true; } } }, addDynamicProperty: function addDynamicProperty(prop) { if (this.dynamicProperties.indexOf(prop) === -1) this.dynamicProperties.push(prop); } }; function FootageElement(data, globalData, comp) { this.initFrame(); this.initRenderable(); this.assetData = globalData.getAssetData(data.refId); this.footageData = globalData.imageLoader.getAsset(this.assetData); this.initBaseData(data, globalData, comp); } FootageElement.prototype.prepareFrame = function() {}; extendPrototype([ RenderableElement, BaseElement, FrameElement ], FootageElement); FootageElement.prototype.getBaseElement = function() { return null; }; FootageElement.prototype.renderFrame = function() {}; FootageElement.prototype.destroy = function() {}; FootageElement.prototype.initExpressions = function() { var expressionsInterfaces = getExpressionInterfaces(); if (!expressionsInterfaces) return; var FootageInterface = expressionsInterfaces("footage"); this.layerInterface = FootageInterface(this); }; FootageElement.prototype.getFootageData = function() { return this.footageData; }; function AudioElement(data, globalData, comp) { this.initFrame(); this.initRenderable(); this.assetData = globalData.getAssetData(data.refId); this.initBaseData(data, globalData, comp); this._isPlaying = false; this._canPlay = false; var assetPath = this.globalData.getAssetsPath(this.assetData); this.audio = this.globalData.audioController.createAudio(assetPath); this._currentTime = 0; this.globalData.audioController.addAudio(this); this._volumeMultiplier = 1; this._volume = 1; this._previousVolume = null; this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, .01, this); } AudioElement.prototype.prepareFrame = function(num) { this.prepareRenderableFrame(num, true); this.prepareProperties(num, true); if (!this.tm._placeholder) { var timeRemapped = this.tm.v; this._currentTime = timeRemapped; } else this._currentTime = num / this.data.sr; this._volume = this.lv.v[0]; var totalVolume = this._volume * this._volumeMultiplier; if (this._previousVolume !== totalVolume) { this._previousVolume = totalVolume; this.audio.volume(totalVolume); } }; extendPrototype([ RenderableElement, BaseElement, FrameElement ], AudioElement); AudioElement.prototype.renderFrame = function() { if (this.isInRange && this._canPlay) { if (!this._isPlaying) { this.audio.play(); this.audio.seek(this._currentTime / this.globalData.frameRate); this._isPlaying = true; } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > .1) this.audio.seek(this._currentTime / this.globalData.frameRate); } }; AudioElement.prototype.show = function() {}; AudioElement.prototype.hide = function() { this.audio.pause(); this._isPlaying = false; }; AudioElement.prototype.pause = function() { this.audio.pause(); this._isPlaying = false; this._canPlay = false; }; AudioElement.prototype.resume = function() { this._canPlay = true; }; AudioElement.prototype.setRate = function(rateValue) { this.audio.rate(rateValue); }; AudioElement.prototype.volume = function(volumeValue) { this._volumeMultiplier = volumeValue; this._previousVolume = volumeValue * this._volume; this.audio.volume(this._previousVolume); }; AudioElement.prototype.getBaseElement = function() { return null; }; AudioElement.prototype.destroy = function() {}; AudioElement.prototype.sourceRectAtTime = function() {}; AudioElement.prototype.initExpressions = function() {}; function BaseRenderer() {} BaseRenderer.prototype.checkLayers = function(num) { var i; var len = this.layers.length; var data; this.completeLayers = true; for (i = len - 1; i >= 0; i -= 1) { if (!this.elements[i]) { data = this.layers[i]; if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) this.buildItem(i); } this.completeLayers = this.elements[i] ? this.completeLayers : false; } this.checkPendingElements(); }; BaseRenderer.prototype.createItem = function(layer) { switch (layer.ty) { case 2: return this.createImage(layer); case 0: return this.createComp(layer); case 1: return this.createSolid(layer); case 3: return this.createNull(layer); case 4: return this.createShape(layer); case 5: return this.createText(layer); case 6: return this.createAudio(layer); case 13: return this.createCamera(layer); case 15: return this.createFootage(layer); default: return this.createNull(layer); } }; BaseRenderer.prototype.createCamera = function() { throw new Error("You're using a 3d camera. Try the html renderer."); }; BaseRenderer.prototype.createAudio = function(data) { return new AudioElement(data, this.globalData, this); }; BaseRenderer.prototype.createFootage = function(data) { return new FootageElement(data, this.globalData, this); }; BaseRenderer.prototype.buildAllItems = function() { var i; var len = this.layers.length; for (i = 0; i < len; i += 1) this.buildItem(i); this.checkPendingElements(); }; BaseRenderer.prototype.includeLayers = function(newLayers) { this.completeLayers = false; var i; var len = newLayers.length; var j; var jLen = this.layers.length; for (i = 0; i < len; i += 1) { j = 0; while (j < jLen) { if (this.layers[j].id === newLayers[i].id) { this.layers[j] = newLayers[i]; break; } j += 1; } } }; BaseRenderer.prototype.setProjectInterface = function(pInterface) { this.globalData.projectInterface = pInterface; }; BaseRenderer.prototype.initItems = function() { if (!this.globalData.progressiveLoad) this.buildAllItems(); }; BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) { var elements = this.elements; var layers = this.layers; var i = 0; var len = layers.length; while (i < len) { if (layers[i].ind == parentName) if (!elements[i] || elements[i] === true) { this.buildItem(i); this.addPendingElement(element); } else { hierarchy.push(elements[i]); elements[i].setAsParent(); if (layers[i].parent !== void 0) this.buildElementParenting(element, layers[i].parent, hierarchy); else element.setHierarchy(hierarchy); } i += 1; } }; BaseRenderer.prototype.addPendingElement = function(element) { this.pendingElements.push(element); }; BaseRenderer.prototype.searchExtraCompositions = function(assets) { var i; var len = assets.length; for (i = 0; i < len; i += 1) if (assets[i].xt) { var comp = this.createComp(assets[i]); comp.initExpressions(); this.globalData.projectInterface.registerComposition(comp); } }; BaseRenderer.prototype.getElementById = function(ind) { var i; var len = this.elements.length; for (i = 0; i < len; i += 1) if (this.elements[i].data.ind === ind) return this.elements[i]; return null; }; BaseRenderer.prototype.getElementByPath = function(path) { var pathValue = path.shift(); var element; if (typeof pathValue === "number") element = this.elements[pathValue]; else { var i; var len = this.elements.length; for (i = 0; i < len; i += 1) if (this.elements[i].data.nm === pathValue) { element = this.elements[i]; break; } } if (path.length === 0) return element; return element.getElementByPath(path); }; BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) { this.globalData.fontManager = new FontManager(); this.globalData.slotManager = slotFactory(animData); this.globalData.fontManager.addChars(animData.chars); this.globalData.fontManager.addFonts(animData.fonts, fontsContainer); 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 = animData.fr; this.globalData.nm = animData.nm; this.globalData.compSize = { w: animData.w, h: animData.h }; }; var effectTypes = { TRANSFORM_EFFECT: "transformEFfect" }; function TransformElement() {} TransformElement.prototype = { initTransform: function initTransform() { var mat = new Matrix(); this.finalTransform = { mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 }, _matMdf: false, _localMatMdf: false, _opMdf: false, mat, localMat: mat, localOpacity: 1 }; if (this.data.ao) this.finalTransform.mProp.autoOriented = true; if (this.data.ty !== 11) {} }, renderTransform: function renderTransform() { this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame; this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame; if (this.hierarchy) { var mat; var finalMat = this.finalTransform.mat; var i = 0; var len = this.hierarchy.length; if (!this.finalTransform._matMdf) while (i < len) { if (this.hierarchy[i].finalTransform.mProp._mdf) { this.finalTransform._matMdf = true; break; } i += 1; } if (this.finalTransform._matMdf) { mat = this.finalTransform.mProp.v.props; finalMat.cloneFromProps(mat); for (i = 0; i < len; i += 1) finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v); } } if (!this.localTransforms || this.finalTransform._matMdf) this.finalTransform._localMatMdf = this.finalTransform._matMdf; if (this.finalTransform._opMdf) this.finalTransform.localOpacity = this.finalTransform.mProp.o.v; }, renderLocalTransform: function renderLocalTransform() { if (this.localTransforms) { var i = 0; var len = this.localTransforms.length; this.finalTransform._localMatMdf = this.finalTransform._matMdf; if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) while (i < len) { if (this.localTransforms[i]._mdf) this.finalTransform._localMatMdf = true; if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) { this.finalTransform.localOpacity = this.finalTransform.mProp.o.v; this.finalTransform._opMdf = true; } i += 1; } if (this.finalTransform._localMatMdf) { var localMat = this.finalTransform.localMat; this.localTransforms[0].matrix.clone(localMat); for (i = 1; i < len; i += 1) { var lmat = this.localTransforms[i].matrix; localMat.multiply(lmat); } localMat.multiply(this.finalTransform.mat); } if (this.finalTransform._opMdf) { var localOp = this.finalTransform.localOpacity; for (i = 0; i < len; i += 1) localOp *= this.localTransforms[i].opacity * .01; this.finalTransform.localOpacity = localOp; } } }, searchEffectTransforms: function searchEffectTransforms() { if (this.renderableEffectsManager) { var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT); if (transformEffects.length) { this.localTransforms = []; this.finalTransform.localMat = new Matrix(); var i = 0; var len = transformEffects.length; for (i = 0; i < len; i += 1) this.localTransforms.push(transformEffects[i]); } } }, globalToLocal: function globalToLocal(pt) { var transforms = []; transforms.push(this.finalTransform); var flag = true; var comp = this.comp; while (flag) if (comp.finalTransform) { if (comp.data.hasMask) transforms.splice(0, 0, comp.finalTransform); comp = comp.comp; } else flag = false; var i; var len = transforms.length; var ptNew; for (i = 0; i < len; i += 1) { ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); pt = [ pt[0] - ptNew[0], pt[1] - ptNew[1], 0 ]; } return pt; }, mHelper: new Matrix() }; function MaskElement(data, element, globalData) { this.data = data; this.element = element; this.globalData = globalData; this.storedData = []; this.masksProperties = this.data.masksProperties || []; this.maskElement = null; var defs = this.globalData.defs; var i; var len = this.masksProperties ? this.masksProperties.length : 0; this.viewData = createSizedArray(len); this.solidPath = ""; var path; var properties = this.masksProperties; var count = 0; var currentMasks = []; var j; var jLen; var layerId = createElementID(); var rect; var expansor; var feMorph; var x; var maskType = "clipPath"; var maskRef = "clip-path"; for (i = 0; i < len; i += 1) { if (properties[i].mode !== "a" && properties[i].mode !== "n" || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) { maskType = "mask"; maskRef = "mask"; } if ((properties[i].mode === "s" || properties[i].mode === "i") && count === 0) { rect = createNS("rect"); rect.setAttribute("fill", "#ffffff"); rect.setAttribute("width", this.element.comp.data.w || 0); rect.setAttribute("height", this.element.comp.data.h || 0); currentMasks.push(rect); } else rect = null; path = createNS("path"); if (properties[i].mode === "n") { this.viewData[i] = { op: PropertyFactory.getProp(this.element, properties[i].o, 0, .01, this.element), prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), elem: path, lastPath: "" }; defs.appendChild(path); } else { count += 1; path.setAttribute("fill", properties[i].mode === "s" ? "#000000" : "#ffffff"); path.setAttribute("clip-rule", "nonzero"); var filterID; if (properties[i].x.k !== 0) { maskType = "mask"; maskRef = "mask"; x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element); filterID = createElementID(); expansor = createNS("filter"); expansor.setAttribute("id", filterID); feMorph = createNS("feMorphology"); feMorph.setAttribute("operator", "erode"); feMorph.setAttribute("in", "SourceGraphic"); feMorph.setAttribute("radius", "0"); expansor.appendChild(feMorph); defs.appendChild(expansor); path.setAttribute("stroke", properties[i].mode === "s" ? "#000000" : "#ffffff"); } else { feMorph = null; x = null; } this.storedData[i] = { elem: path, x, expan: feMorph, lastPath: "", lastOperator: "", filterId: filterID, lastRadius: 0 }; if (properties[i].mode === "i") { jLen = currentMasks.length; var g = createNS("g"); for (j = 0; j < jLen; j += 1) g.appendChild(currentMasks[j]); var mask = createNS("mask"); mask.setAttribute("mask-type", "alpha"); mask.setAttribute("id", layerId + "_" + count); mask.appendChild(path); defs.appendChild(mask); g.setAttribute("mask", "url(" + getLocationHref() + "#" + layerId + "_" + count + ")"); currentMasks.length = 0; currentMasks.push(g); } else currentMasks.push(path); if (properties[i].inv && !this.solidPath) this.solidPath = this.createLayerSolidPath(); this.viewData[i] = { elem: path, lastPath: "", op: PropertyFactory.getProp(this.element, properties[i].o, 0, .01, this.element), prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), invRect: rect }; if (!this.viewData[i].prop.k) this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]); } } this.maskElement = createNS(maskType); len = currentMasks.length; for (i = 0; i < len; i += 1) this.maskElement.appendChild(currentMasks[i]); if (count > 0) { this.maskElement.setAttribute("id", layerId); this.element.maskedElement.setAttribute(maskRef, "url(" + getLocationHref() + "#" + layerId + ")"); defs.appendChild(this.maskElement); } if (this.viewData.length) this.element.addRenderableComponent(this); } MaskElement.prototype.getMaskProperty = function(pos) { return this.viewData[pos].prop; }; MaskElement.prototype.renderFrame = function(isFirstFrame) { var finalMat = this.element.finalTransform.mat; var i; var len = this.masksProperties.length; for (i = 0; i < len; i += 1) { if (this.viewData[i].prop._mdf || isFirstFrame) this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]); if (this.viewData[i].op._mdf || isFirstFrame) this.viewData[i].elem.setAttribute("fill-opacity", this.viewData[i].op.v); if (this.masksProperties[i].mode !== "n") { if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) this.viewData[i].invRect.setAttribute("transform", finalMat.getInverseMatrix().to2dCSS()); if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) { var feMorph = this.storedData[i].expan; if (this.storedData[i].x.v < 0) { if (this.storedData[i].lastOperator !== "erode") { this.storedData[i].lastOperator = "erode"; this.storedData[i].elem.setAttribute("filter", "url(" + getLocationHref() + "#" + this.storedData[i].filterId + ")"); } feMorph.setAttribute("radius", -this.storedData[i].x.v); } else { if (this.storedData[i].lastOperator !== "dilate") { this.storedData[i].lastOperator = "dilate"; this.storedData[i].elem.setAttribute("filter", null); } this.storedData[i].elem.setAttribute("stroke-width", this.storedData[i].x.v * 2); } } } } }; MaskElement.prototype.getMaskelement = function() { return this.maskElement; }; MaskElement.prototype.createLayerSolidPath = function() { var path = "M0,0 "; path += " h" + this.globalData.compSize.w; path += " v" + this.globalData.compSize.h; path += " h-" + this.globalData.compSize.w; path += " v-" + this.globalData.compSize.h + " "; return path; }; MaskElement.prototype.drawPath = function(pathData, pathNodes, viewData) { var pathString = " M" + pathNodes.v[0][0] + "," + pathNodes.v[0][1]; var i; var len = pathNodes._length; for (i = 1; i < len; i += 1) 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]; if (pathNodes.c && len > 1) 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]; if (viewData.lastPath !== pathString) { var pathShapeValue = ""; if (viewData.elem) { if (pathNodes.c) pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString; viewData.elem.setAttribute("d", pathShapeValue); } viewData.lastPath = pathString; } }; MaskElement.prototype.destroy = function() { this.element = null; this.globalData = null; this.maskElement = null; this.data = null; this.masksProperties = null; }; var filtersFactory = function() { var ob = {}; ob.createFilter = createFilter; ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter; function createFilter(filId, skipCoordinates) { var fil = createNS("filter"); fil.setAttribute("id", filId); if (skipCoordinates !== true) { fil.setAttribute("filterUnits", "objectBoundingBox"); fil.setAttribute("x", "0%"); fil.setAttribute("y", "0%"); fil.setAttribute("width", "100%"); fil.setAttribute("height", "100%"); } return fil; } function createAlphaToLuminanceFilter() { var feColorMatrix = createNS("feColorMatrix"); feColorMatrix.setAttribute("type", "matrix"); feColorMatrix.setAttribute("color-interpolation-filters", "sRGB"); feColorMatrix.setAttribute("values", "0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"); return feColorMatrix; } return ob; }(); var featureSupport = function() { var ob = { maskType: true, svgLumaHidden: true, offscreenCanvas: typeof OffscreenCanvas !== "undefined" }; 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)) ob.maskType = false; if (/firefox/i.test(navigator.userAgent)) ob.svgLumaHidden = false; return ob; }(); var registeredEffects$1 = {}; var idPrefix = "filter_result_"; function SVGEffects(elem) { var i; var source = "SourceGraphic"; var len = elem.data.ef ? elem.data.ef.length : 0; var filId = createElementID(); var fil = filtersFactory.createFilter(filId, true); var count = 0; this.filters = []; var filterManager; for (i = 0; i < len; i += 1) { filterManager = null; var type = elem.data.ef[i].ty; if (registeredEffects$1[type]) { var Effect = registeredEffects$1[type].effect; filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source); source = idPrefix + count; if (registeredEffects$1[type].countsAsEffect) count += 1; } if (filterManager) this.filters.push(filterManager); } if (count) { elem.globalData.defs.appendChild(fil); elem.layerElement.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); } if (this.filters.length) elem.addRenderableComponent(this); } SVGEffects.prototype.renderFrame = function(_isFirstFrame) { var i; var len = this.filters.length; for (i = 0; i < len; i += 1) this.filters[i].renderFrame(_isFirstFrame); }; SVGEffects.prototype.getEffects = function(type) { var i; var len = this.filters.length; var effects = []; for (i = 0; i < len; i += 1) if (this.filters[i].type === type) effects.push(this.filters[i]); return effects; }; function registerEffect$1(id, effect, countsAsEffect) { registeredEffects$1[id] = { effect, countsAsEffect }; } function SVGBaseElement() {} SVGBaseElement.prototype = { initRendererElement: function initRendererElement() { this.layerElement = createNS("g"); }, createContainerElements: function createContainerElements() { this.matteElement = createNS("g"); this.transformedElement = this.layerElement; this.maskedElement = this.layerElement; this._sizeChanged = false; var layerElementParent = null; if (this.data.td) { this.matteMasks = {}; var gg = createNS("g"); gg.setAttribute("id", this.layerId); gg.appendChild(this.layerElement); layerElementParent = gg; this.globalData.defs.appendChild(gg); } else if (this.data.tt) { this.matteElement.appendChild(this.layerElement); layerElementParent = this.matteElement; this.baseElement = this.matteElement; } else this.baseElement = this.layerElement; if (this.data.ln) this.layerElement.setAttribute("id", this.data.ln); if (this.data.cl) this.layerElement.setAttribute("class", this.data.cl); if (this.data.ty === 0 && !this.data.hd) { var cp = createNS("clipPath"); var pt = createNS("path"); pt.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z"); var clipId = createElementID(); cp.setAttribute("id", clipId); cp.appendChild(pt); this.globalData.defs.appendChild(cp); if (this.checkMasks()) { var cpGroup = createNS("g"); cpGroup.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")"); cpGroup.appendChild(this.layerElement); this.transformedElement = cpGroup; if (layerElementParent) layerElementParent.appendChild(this.transformedElement); else this.baseElement = this.transformedElement; } else this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")"); } if (this.data.bm !== 0) this.setBlendMode(); }, renderElement: function renderElement() { if (this.finalTransform._localMatMdf) this.transformedElement.setAttribute("transform", this.finalTransform.localMat.to2dCSS()); if (this.finalTransform._opMdf) this.transformedElement.setAttribute("opacity", this.finalTransform.localOpacity); }, destroyBaseElement: function destroyBaseElement() { this.layerElement = null; this.matteElement = null; this.maskManager.destroy(); }, getBaseElement: function getBaseElement() { if (this.data.hd) return null; return this.baseElement; }, createRenderableComponents: function createRenderableComponents() { this.maskManager = new MaskElement(this.data, this, this.globalData); this.renderableEffectsManager = new SVGEffects(this); this.searchEffectTransforms(); }, getMatte: function getMatte(matteType) { if (!this.matteMasks) this.matteMasks = {}; if (!this.matteMasks[matteType]) { var id = this.layerId + "_" + matteType; var filId; var fil; var useElement; var gg; if (matteType === 1 || matteType === 3) { var masker = createNS("mask"); masker.setAttribute("id", id); masker.setAttribute("mask-type", matteType === 3 ? "luminance" : "alpha"); useElement = createNS("use"); useElement.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId); masker.appendChild(useElement); this.globalData.defs.appendChild(masker); if (!featureSupport.maskType && matteType === 1) { masker.setAttribute("mask-type", "luminance"); filId = createElementID(); fil = filtersFactory.createFilter(filId); this.globalData.defs.appendChild(fil); fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); gg = createNS("g"); gg.appendChild(useElement); masker.appendChild(gg); gg.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); } } else if (matteType === 2) { var maskGroup = createNS("mask"); maskGroup.setAttribute("id", id); maskGroup.setAttribute("mask-type", "alpha"); var maskGrouper = createNS("g"); maskGroup.appendChild(maskGrouper); filId = createElementID(); fil = filtersFactory.createFilter(filId); var feCTr = createNS("feComponentTransfer"); feCTr.setAttribute("in", "SourceGraphic"); fil.appendChild(feCTr); var feFunc = createNS("feFuncA"); feFunc.setAttribute("type", "table"); feFunc.setAttribute("tableValues", "1.0 0.0"); feCTr.appendChild(feFunc); this.globalData.defs.appendChild(fil); var alphaRect = createNS("rect"); alphaRect.setAttribute("width", this.comp.data.w); alphaRect.setAttribute("height", this.comp.data.h); alphaRect.setAttribute("x", "0"); alphaRect.setAttribute("y", "0"); alphaRect.setAttribute("fill", "#ffffff"); alphaRect.setAttribute("opacity", "0"); maskGrouper.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); maskGrouper.appendChild(alphaRect); useElement = createNS("use"); useElement.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId); maskGrouper.appendChild(useElement); if (!featureSupport.maskType) { maskGroup.setAttribute("mask-type", "luminance"); fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); gg = createNS("g"); maskGrouper.appendChild(alphaRect); gg.appendChild(this.layerElement); maskGrouper.appendChild(gg); } this.globalData.defs.appendChild(maskGroup); } this.matteMasks[matteType] = id; } return this.matteMasks[matteType]; }, setMatte: function setMatte(id) { if (!this.matteElement) return; this.matteElement.setAttribute("mask", "url(" + getLocationHref() + "#" + id + ")"); } }; /** * @file * Handles AE's layer parenting property. * */ function HierarchyElement() {} HierarchyElement.prototype = { /** * @function * Initializes hierarchy properties * */ initHierarchy: function initHierarchy() { this.hierarchy = []; this._isParent = false; this.checkParenting(); }, /** * @function * Sets layer's hierarchy. * @param {array} hierarch * layer's parent list * */ setHierarchy: function setHierarchy(hierarchy) { this.hierarchy = hierarchy; }, /** * @function * Sets layer as parent. * */ setAsParent: function setAsParent() { this._isParent = true; }, /** * @function * Searches layer's parenting chain * */ checkParenting: function checkParenting() { if (this.data.parent !== void 0) this.comp.buildElementParenting(this, this.data.parent, []); } }; function RenderableDOMElement() {} (function() { extendPrototype([RenderableElement, createProxyFunction({ initElement: function initElement(data, globalData, comp) { this.initFrame(); this.initBaseData(data, globalData, comp); this.initTransform(data, globalData, comp); this.initHierarchy(); this.initRenderable(); this.initRendererElement(); this.createContainerElements(); this.createRenderableComponents(); this.createContent(); this.hide(); }, hide: function hide() { if (!this.hidden && (!this.isInRange || this.isTransparent)) { var elem = this.baseElement || this.layerElement; elem.style.display = "none"; this.hidden = true; } }, show: function show() { if (this.isInRange && !this.isTransparent) { if (!this.data.hd) { var elem = this.baseElement || this.layerElement; elem.style.display = "block"; } this.hidden = false; this._isFirstFrame = true; } }, renderFrame: function renderFrame() { if (this.data.hd || this.hidden) return; this.renderTransform(); this.renderRenderable(); this.renderLocalTransform(); this.renderElement(); this.renderInnerContent(); if (this._isFirstFrame) this._isFirstFrame = false; }, renderInnerContent: function renderInnerContent() {}, prepareFrame: function prepareFrame(num) { this._mdf = false; this.prepareRenderableFrame(num); this.prepareProperties(num, this.isInRange); this.checkTransparency(); }, destroy: function destroy() { this.innerElem = null; this.destroyBaseElement(); } })], RenderableDOMElement); })(); function IImageElement(data, globalData, comp) { this.assetData = globalData.getAssetData(data.refId); if (this.assetData && this.assetData.sid) this.assetData = globalData.slotManager.getProp(this.assetData); this.initElement(data, globalData, comp); this.sourceRect = { top: 0, left: 0, width: this.assetData.w, height: this.assetData.h }; } extendPrototype([ BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement ], IImageElement); IImageElement.prototype.createContent = function() { var assetPath = this.globalData.getAssetsPath(this.assetData); this.innerElem = createNS("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", assetPath); this.layerElement.appendChild(this.innerElem); }; IImageElement.prototype.sourceRectAtTime = function() { return this.sourceRect; }; function ProcessedElement(element, position) { this.elem = element; this.pos = position; } function IShapeElement() {} IShapeElement.prototype = { addShapeToModifiers: function addShapeToModifiers(data) { var i; var len = this.shapeModifiers.length; for (i = 0; i < len; i += 1) this.shapeModifiers[i].addShape(data); }, isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) { var i = 0; var len = this.shapeModifiers.length; while (i < len) if (this.shapeModifiers[i].isAnimatedWithShape(data)) return true; return false; }, renderModifiers: function renderModifiers() { if (!this.shapeModifiers.length) return; var i; var len = this.shapes.length; for (i = 0; i < len; i += 1) this.shapes[i].sh.reset(); len = this.shapeModifiers.length; var shouldBreakProcess; for (i = len - 1; i >= 0; i -= 1) { shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); if (shouldBreakProcess) break; } }, searchProcessedElement: function searchProcessedElement(elem) { var elements = this.processedElements; var i = 0; var len = elements.length; while (i < len) { if (elements[i].elem === elem) return elements[i].pos; i += 1; } return 0; }, addProcessedElement: function addProcessedElement(elem, pos) { var elements = this.processedElements; var i = elements.length; while (i) { i -= 1; if (elements[i].elem === elem) { elements[i].pos = pos; return; } } elements.push(new ProcessedElement(elem, pos)); }, prepareFrame: function prepareFrame(num) { this.prepareRenderableFrame(num); this.prepareProperties(num, this.isInRange); } }; var lineCapEnum = { 1: "butt", 2: "round", 3: "square" }; var lineJoinEnum = { 1: "miter", 2: "round", 3: "bevel" }; function SVGShapeData(transformers, level, shape) { this.caches = []; this.styles = []; this.transformers = transformers; this.lStr = ""; this.sh = shape; this.lvl = level; this._isAnimated = !!shape.k; var i = 0; var len = transformers.length; while (i < len) { if (transformers[i].mProps.dynamicProperties.length) { this._isAnimated = true; break; } i += 1; } } SVGShapeData.prototype.setAsAnimated = function() { this._isAnimated = true; }; function SVGStyleData(data, level) { this.data = data; this.type = data.ty; this.d = ""; this.lvl = level; this._mdf = false; this.closed = data.hd === true; this.pElem = createNS("path"); this.msElem = null; } SVGStyleData.prototype.reset = function() { this.d = ""; this._mdf = false; }; function DashProperty(elem, data, renderer, container) { this.elem = elem; this.frameId = -1; this.dataProps = createSizedArray(data.length); this.renderer = renderer; this.k = false; this.dashStr = ""; this.dashArray = createTypedArray("float32", data.length ? data.length - 1 : 0); this.dashoffset = createTypedArray("float32", 1); this.initDynamicPropertyContainer(container); var i; var len = data.length || 0; var prop; for (i = 0; i < len; i += 1) { prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this); this.k = prop.k || this.k; this.dataProps[i] = { n: data[i].n, p: prop }; } if (!this.k) this.getValue(true); this._isAnimated = this.k; } DashProperty.prototype.getValue = function(forceRender) { if (this.elem.globalData.frameId === this.frameId && !forceRender) return; this.frameId = this.elem.globalData.frameId; this.iterateDynamicProperties(); this._mdf = this._mdf || forceRender; if (this._mdf) { var i = 0; var len = this.dataProps.length; if (this.renderer === "svg") this.dashStr = ""; for (i = 0; i < len; i += 1) if (this.dataProps[i].n !== "o") if (this.renderer === "svg") this.dashStr += " " + this.dataProps[i].p.v; else this.dashArray[i] = this.dataProps[i].p.v; else this.dashoffset[0] = this.dataProps[i].p.v; } }; extendPrototype([DynamicPropertyContainer], DashProperty); function SVGStrokeStyleData(elem, data, styleOb) { this.initDynamicPropertyContainer(elem); this.getValue = this.iterateDynamicProperties; this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this); this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); this.d = new DashProperty(elem, data.d || {}, "svg", this); this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); this.style = styleOb; this._isAnimated = !!this._isAnimated; } extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData); function SVGFillStyleData(elem, data, styleOb) { this.initDynamicPropertyContainer(elem); this.getValue = this.iterateDynamicProperties; this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this); this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); this.style = styleOb; } extendPrototype([DynamicPropertyContainer], SVGFillStyleData); function SVGNoStyleData(elem, data, styleOb) { this.initDynamicPropertyContainer(elem); this.getValue = this.iterateDynamicProperties; this.style = styleOb; } extendPrototype([DynamicPropertyContainer], SVGNoStyleData); function GradientProperty(elem, data, container) { this.data = data; this.c = createTypedArray("uint8c", data.p * 4); var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4; this.o = createTypedArray("float32", cLength); this._cmdf = false; this._omdf = false; this._collapsable = this.checkCollapsable(); this._hasOpacity = cLength; this.initDynamicPropertyContainer(container); this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this); this.k = this.prop.k; this.getValue(true); } GradientProperty.prototype.comparePoints = function(values, points) { var i = 0; var len = this.o.length / 2; var diff; while (i < len) { diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]); if (diff > .01) return false; i += 1; } return true; }; GradientProperty.prototype.checkCollapsable = function() { if (this.o.length / 2 !== this.c.length / 4) return false; if (this.data.k.k[0].s) { var i = 0; var len = this.data.k.k.length; while (i < len) { if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) return false; i += 1; } } else if (!this.comparePoints(this.data.k.k, this.data.p)) return false; return true; }; GradientProperty.prototype.getValue = function(forceRender) { this.prop.getValue(); this._mdf = false; this._cmdf = false; this._omdf = false; if (this.prop._mdf || forceRender) { var i; var len = this.data.p * 4; var mult; var val; for (i = 0; i < len; i += 1) { mult = i % 4 === 0 ? 100 : 255; val = Math.round(this.prop.v[i] * mult); if (this.c[i] !== val) { this.c[i] = val; this._cmdf = !forceRender; } } if (this.o.length) { len = this.prop.v.length; for (i = this.data.p * 4; i < len; i += 1) { mult = i % 2 === 0 ? 100 : 1; val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]; if (this.o[i - this.data.p * 4] !== val) { this.o[i - this.data.p * 4] = val; this._omdf = !forceRender; } } } this._mdf = !forceRender; } }; extendPrototype([DynamicPropertyContainer], GradientProperty); function SVGGradientFillStyleData(elem, data, styleOb) { this.initDynamicPropertyContainer(elem); this.getValue = this.iterateDynamicProperties; this.initGradientData(elem, data, styleOb); } SVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb) { this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this); this.s = PropertyFactory.getProp(elem, data.s, 1, null, this); this.e = PropertyFactory.getProp(elem, data.e, 1, null, this); this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, .01, this); this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this); this.g = new GradientProperty(elem, data.g, this); this.style = styleOb; this.stops = []; this.setGradientData(styleOb.pElem, data); this.setGradientOpacity(data, styleOb); this._isAnimated = !!this._isAnimated; }; SVGGradientFillStyleData.prototype.setGradientData = function(pathElement, data) { var gradientId = createElementID(); var gfill = createNS(data.t === 1 ? "linearGradient" : "radialGradient"); gfill.setAttribute("id", gradientId); gfill.setAttribute("spreadMethod", "pad"); gfill.setAttribute("gradientUnits", "userSpaceOnUse"); var stops = []; var stop; var j; var jLen = data.g.p * 4; for (j = 0; j < jLen; j += 4) { stop = createNS("stop"); gfill.appendChild(stop); stops.push(stop); } pathElement.setAttribute(data.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + gradientId + ")"); this.gf = gfill; this.cst = stops; }; SVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb) { if (this.g._hasOpacity && !this.g._collapsable) { var stop; var j; var jLen; var mask = createNS("mask"); var maskElement = createNS("path"); mask.appendChild(maskElement); var opacityId = createElementID(); var maskId = createElementID(); mask.setAttribute("id", maskId); var opFill = createNS(data.t === 1 ? "linearGradient" : "radialGradient"); opFill.setAttribute("id", opacityId); opFill.setAttribute("spreadMethod", "pad"); opFill.setAttribute("gradientUnits", "userSpaceOnUse"); jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length; var stops = this.stops; for (j = data.g.p * 4; j < jLen; j += 2) { stop = createNS("stop"); stop.setAttribute("stop-color", "rgb(255,255,255)"); opFill.appendChild(stop); stops.push(stop); } maskElement.setAttribute(data.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + opacityId + ")"); if (data.ty === "gs") { maskElement.setAttribute("stroke-linecap", lineCapEnum[data.lc || 2]); maskElement.setAttribute("stroke-linejoin", lineJoinEnum[data.lj || 2]); if (data.lj === 1) maskElement.setAttribute("stroke-miterlimit", data.ml); } this.of = opFill; this.ms = mask; this.ost = stops; this.maskId = maskId; styleOb.msElem = maskElement; } }; extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData); function SVGGradientStrokeStyleData(elem, data, styleOb) { this.initDynamicPropertyContainer(elem); this.getValue = this.iterateDynamicProperties; this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); this.d = new DashProperty(elem, data.d || {}, "svg", this); this.initGradientData(elem, data, styleOb); this._isAnimated = !!this._isAnimated; } extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData); function ShapeGroupData() { this.it = []; this.prevViewData = []; this.gr = createNS("g"); } function SVGTransformData(mProps, op, container) { this.transform = { mProps, op, container }; this.elements = []; this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length; } var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) { if (length === 0) return ""; var _o = pathNodes.o; var _i = pathNodes.i; var _v = pathNodes.v; var i; var shapeString = " M" + mat.applyToPointStringified(_v[0][0], _v[0][1]); for (i = 1; i < length; i += 1) 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]); if (closed && length) { 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]); shapeString += "z"; } return shapeString; }; var SVGElementsRenderer = function() { var _identityMatrix = new Matrix(); var _matrixHelper = new Matrix(); var ob = { createRenderFunction }; function createRenderFunction(data) { switch (data.ty) { case "fl": return renderFill; case "gf": return renderGradient; case "gs": return renderGradientStroke; case "st": return renderStroke; case "sh": case "el": case "rc": case "sr": return renderPath; case "tr": return renderContentTransform; case "no": return renderNoop; default: return null; } } function renderContentTransform(styleData, itemData, isFirstFrame) { if (isFirstFrame || itemData.transform.op._mdf) itemData.transform.container.setAttribute("opacity", itemData.transform.op.v); if (isFirstFrame || itemData.transform.mProps._mdf) itemData.transform.container.setAttribute("transform", itemData.transform.mProps.v.to2dCSS()); } function renderNoop() {} function renderPath(styleData, itemData, isFirstFrame) { var j; var jLen; var pathStringTransformed; var redraw; var pathNodes; var l; var lLen = itemData.styles.length; var lvl = itemData.lvl; var paths; var mat; var iterations; var k; for (l = 0; l < lLen; l += 1) { redraw = itemData.sh._mdf || isFirstFrame; if (itemData.styles[l].lvl < lvl) { mat = _matrixHelper.reset(); iterations = lvl - itemData.styles[l].lvl; k = itemData.transformers.length - 1; while (!redraw && iterations > 0) { redraw = itemData.transformers[k].mProps._mdf || redraw; iterations -= 1; k -= 1; } if (redraw) { iterations = lvl - itemData.styles[l].lvl; k = itemData.transformers.length - 1; while (iterations > 0) { mat.multiply(itemData.transformers[k].mProps.v); iterations -= 1; k -= 1; } } } else mat = _identityMatrix; paths = itemData.sh.paths; jLen = paths._length; if (redraw) { pathStringTransformed = ""; for (j = 0; j < jLen; j += 1) { pathNodes = paths.shapes[j]; if (pathNodes && pathNodes._length) pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat); } itemData.caches[l] = pathStringTransformed; } else pathStringTransformed = itemData.caches[l]; itemData.styles[l].d += styleData.hd === true ? "" : pathStringTransformed; itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf; } } function renderFill(styleData, itemData, isFirstFrame) { var styleElem = itemData.style; if (itemData.c._mdf || isFirstFrame) styleElem.pElem.setAttribute("fill", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"); if (itemData.o._mdf || isFirstFrame) styleElem.pElem.setAttribute("fill-opacity", itemData.o.v); } function renderGradientStroke(styleData, itemData, isFirstFrame) { renderGradient(styleData, itemData, isFirstFrame); renderStroke(styleData, itemData, isFirstFrame); } function renderGradient(styleData, itemData, isFirstFrame) { var gfill = itemData.gf; var hasOpacity = itemData.g._hasOpacity; var pt1 = itemData.s.v; var pt2 = itemData.e.v; if (itemData.o._mdf || isFirstFrame) { var attr = styleData.ty === "gf" ? "fill-opacity" : "stroke-opacity"; itemData.style.pElem.setAttribute(attr, itemData.o.v); } if (itemData.s._mdf || isFirstFrame) { var attr1 = styleData.t === 1 ? "x1" : "cx"; var attr2 = attr1 === "x1" ? "y1" : "cy"; gfill.setAttribute(attr1, pt1[0]); gfill.setAttribute(attr2, pt1[1]); if (hasOpacity && !itemData.g._collapsable) { itemData.of.setAttribute(attr1, pt1[0]); itemData.of.setAttribute(attr2, pt1[1]); } } var stops; var i; var len; var stop; if (itemData.g._cmdf || isFirstFrame) { stops = itemData.cst; var cValues = itemData.g.c; len = stops.length; for (i = 0; i < len; i += 1) { stop = stops[i]; stop.setAttribute("offset", cValues[i * 4] + "%"); stop.setAttribute("stop-color", "rgb(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + ")"); } } if (hasOpacity && (itemData.g._omdf || isFirstFrame)) { var oValues = itemData.g.o; if (itemData.g._collapsable) stops = itemData.cst; else stops = itemData.ost; len = stops.length; for (i = 0; i < len; i += 1) { stop = stops[i]; if (!itemData.g._collapsable) stop.setAttribute("offset", oValues[i * 2] + "%"); stop.setAttribute("stop-opacity", oValues[i * 2 + 1]); } } if (styleData.t === 1) { if (itemData.e._mdf || isFirstFrame) { gfill.setAttribute("x2", pt2[0]); gfill.setAttribute("y2", pt2[1]); if (hasOpacity && !itemData.g._collapsable) { itemData.of.setAttribute("x2", pt2[0]); itemData.of.setAttribute("y2", pt2[1]); } } } else { var rad; if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) { rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); gfill.setAttribute("r", rad); if (hasOpacity && !itemData.g._collapsable) itemData.of.setAttribute("r", rad); } if (itemData.s._mdf || itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) { if (!rad) rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); var percent = itemData.h.v; if (percent >= 1) percent = .99; else if (percent <= -1) percent = -.99; var dist = rad * percent; var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; gfill.setAttribute("fx", x); gfill.setAttribute("fy", y); if (hasOpacity && !itemData.g._collapsable) { itemData.of.setAttribute("fx", x); itemData.of.setAttribute("fy", y); } } } } function renderStroke(styleData, itemData, isFirstFrame) { var styleElem = itemData.style; var d = itemData.d; if (d && (d._mdf || isFirstFrame) && d.dashStr) { styleElem.pElem.setAttribute("stroke-dasharray", d.dashStr); styleElem.pElem.setAttribute("stroke-dashoffset", d.dashoffset[0]); } if (itemData.c && (itemData.c._mdf || isFirstFrame)) styleElem.pElem.setAttribute("stroke", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"); if (itemData.o._mdf || isFirstFrame) styleElem.pElem.setAttribute("stroke-opacity", itemData.o.v); if (itemData.w._mdf || isFirstFrame) { styleElem.pElem.setAttribute("stroke-width", itemData.w.v); if (styleElem.msElem) styleElem.msElem.setAttribute("stroke-width", itemData.w.v); } } return ob; }(); function SVGShapeElement(data, globalData, comp) { this.shapes = []; this.shapesData = data.shapes; this.stylesList = []; this.shapeModifiers = []; this.itemsData = []; this.processedElements = []; this.animatedContents = []; this.initElement(data, globalData, comp); this.prevViewData = []; } extendPrototype([ BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement ], SVGShapeElement); SVGShapeElement.prototype.initSecondaryElement = function() {}; SVGShapeElement.prototype.identityMatrix = new Matrix(); SVGShapeElement.prototype.buildExpressionInterface = function() {}; SVGShapeElement.prototype.createContent = function() { this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); this.filterUniqueShapes(); }; SVGShapeElement.prototype.filterUniqueShapes = function() { var i; var len = this.shapes.length; var shape; var j; var jLen = this.stylesList.length; var style; var tempShapes = []; var areAnimated = false; for (j = 0; j < jLen; j += 1) { style = this.stylesList[j]; areAnimated = false; tempShapes.length = 0; for (i = 0; i < len; i += 1) { shape = this.shapes[i]; if (shape.styles.indexOf(style) !== -1) { tempShapes.push(shape); areAnimated = shape._isAnimated || areAnimated; } } if (tempShapes.length > 1 && areAnimated) this.setShapesAsAnimated(tempShapes); } }; SVGShapeElement.prototype.setShapesAsAnimated = function(shapes) { var i; var len = shapes.length; for (i = 0; i < len; i += 1) shapes[i].setAsAnimated(); }; SVGShapeElement.prototype.createStyleElement = function(data, level) { var elementData; var styleOb = new SVGStyleData(data, level); var pathElement = styleOb.pElem; if (data.ty === "st") elementData = new SVGStrokeStyleData(this, data, styleOb); else if (data.ty === "fl") elementData = new SVGFillStyleData(this, data, styleOb); else if (data.ty === "gf" || data.ty === "gs") { elementData = new (data.ty === "gf" ? SVGGradientFillStyleData : SVGGradientStrokeStyleData)(this, data, styleOb); this.globalData.defs.appendChild(elementData.gf); if (elementData.maskId) { this.globalData.defs.appendChild(elementData.ms); this.globalData.defs.appendChild(elementData.of); pathElement.setAttribute("mask", "url(" + getLocationHref() + "#" + elementData.maskId + ")"); } } else if (data.ty === "no") elementData = new SVGNoStyleData(this, data, styleOb); if (data.ty === "st" || data.ty === "gs") { pathElement.setAttribute("stroke-linecap", lineCapEnum[data.lc || 2]); pathElement.setAttribute("stroke-linejoin", lineJoinEnum[data.lj || 2]); pathElement.setAttribute("fill-opacity", "0"); if (data.lj === 1) pathElement.setAttribute("stroke-miterlimit", data.ml); } if (data.r === 2) pathElement.setAttribute("fill-rule", "evenodd"); if (data.ln) pathElement.setAttribute("id", data.ln); if (data.cl) pathElement.setAttribute("class", data.cl); if (data.bm) pathElement.style["mix-blend-mode"] = getBlendMode(data.bm); this.stylesList.push(styleOb); this.addToAnimatedContents(data, elementData); return elementData; }; SVGShapeElement.prototype.createGroupElement = function(data) { var elementData = new ShapeGroupData(); if (data.ln) elementData.gr.setAttribute("id", data.ln); if (data.cl) elementData.gr.setAttribute("class", data.cl); if (data.bm) elementData.gr.style["mix-blend-mode"] = getBlendMode(data.bm); return elementData; }; SVGShapeElement.prototype.createTransformElement = function(data, container) { var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this); var elementData = new SVGTransformData(transformProperty, transformProperty.o, container); this.addToAnimatedContents(data, elementData); return elementData; }; SVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) { var ty = 4; if (data.ty === "rc") ty = 5; else if (data.ty === "el") ty = 6; else if (data.ty === "sr") ty = 7; var elementData = new SVGShapeData(ownTransformers, level, ShapePropertyFactory.getShapeProp(this, data, ty, this)); this.shapes.push(elementData); this.addShapeToModifiers(elementData); this.addToAnimatedContents(data, elementData); return elementData; }; SVGShapeElement.prototype.addToAnimatedContents = function(data, element) { var i = 0; var len = this.animatedContents.length; while (i < len) { if (this.animatedContents[i].element === element) return; i += 1; } this.animatedContents.push({ fn: SVGElementsRenderer.createRenderFunction(data), element, data }); }; SVGShapeElement.prototype.setElementStyles = function(elementData) { var arr = elementData.styles; var j; var jLen = this.stylesList.length; for (j = 0; j < jLen; j += 1) if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) arr.push(this.stylesList[j]); }; SVGShapeElement.prototype.reloadShapes = function() { this._isFirstFrame = true; var i; var len = this.itemsData.length; for (i = 0; i < len; i += 1) this.prevViewData[i] = this.itemsData[i]; this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); this.filterUniqueShapes(); len = this.dynamicProperties.length; for (i = 0; i < len; i += 1) this.dynamicProperties[i].getValue(); this.renderModifiers(); }; SVGShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, container, level, transformers, render) { var ownTransformers = [].concat(transformers); var i; var len = arr.length - 1; var j; var jLen; var ownStyles = []; var ownModifiers = []; var currentTransform; var modifier; var processedPos; for (i = len; i >= 0; i -= 1) { processedPos = this.searchProcessedElement(arr[i]); if (!processedPos) arr[i]._render = render; else itemsData[i] = prevViewData[processedPos - 1]; if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs" || arr[i].ty === "no") { if (!processedPos) itemsData[i] = this.createStyleElement(arr[i], level); else itemsData[i].style.closed = arr[i].hd; if (arr[i]._render) { if (itemsData[i].style.pElem.parentNode !== container) container.appendChild(itemsData[i].style.pElem); } ownStyles.push(itemsData[i].style); } else if (arr[i].ty === "gr") { if (!processedPos) itemsData[i] = this.createGroupElement(arr[i]); else { jLen = itemsData[i].it.length; for (j = 0; j < jLen; j += 1) itemsData[i].prevViewData[j] = itemsData[i].it[j]; } this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render); if (arr[i]._render) { if (itemsData[i].gr.parentNode !== container) container.appendChild(itemsData[i].gr); } } else if (arr[i].ty === "tr") { if (!processedPos) itemsData[i] = this.createTransformElement(arr[i], container); currentTransform = itemsData[i].transform; ownTransformers.push(currentTransform); } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") { if (!processedPos) itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level); this.setElementStyles(itemsData[i]); } 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") { if (!processedPos) { modifier = ShapeModifiers.getModifier(arr[i].ty); modifier.init(this, arr[i]); itemsData[i] = modifier; this.shapeModifiers.push(modifier); } else { modifier = itemsData[i]; modifier.closed = false; } ownModifiers.push(modifier); } else if (arr[i].ty === "rp") { if (!processedPos) { modifier = ShapeModifiers.getModifier(arr[i].ty); itemsData[i] = modifier; modifier.init(this, arr, i, itemsData); this.shapeModifiers.push(modifier); render = false; } else { modifier = itemsData[i]; modifier.closed = true; } ownModifiers.push(modifier); } this.addProcessedElement(arr[i], i + 1); } len = ownStyles.length; for (i = 0; i < len; i += 1) ownStyles[i].closed = true; len = ownModifiers.length; for (i = 0; i < len; i += 1) ownModifiers[i].closed = true; }; SVGShapeElement.prototype.renderInnerContent = function() { this.renderModifiers(); var i; var len = this.stylesList.length; for (i = 0; i < len; i += 1) this.stylesList[i].reset(); this.renderShape(); for (i = 0; i < len; i += 1) if (this.stylesList[i]._mdf || this._isFirstFrame) { if (this.stylesList[i].msElem) { this.stylesList[i].msElem.setAttribute("d", this.stylesList[i].d); this.stylesList[i].d = "M0 0" + this.stylesList[i].d; } this.stylesList[i].pElem.setAttribute("d", this.stylesList[i].d || "M0 0"); } }; SVGShapeElement.prototype.renderShape = function() { var i; var len = this.animatedContents.length; var animatedContent; for (i = 0; i < len; i += 1) { animatedContent = this.animatedContents[i]; if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame); } }; SVGShapeElement.prototype.destroy = function() { this.destroyBaseElement(); this.shapesData = null; this.itemsData = null; }; function LetterProps(o, sw, sc, fc, m, p) { this.o = o; this.sw = sw; this.sc = sc; this.fc = fc; this.m = m; this.p = p; this._mdf = { o: true, sw: !!sw, sc: !!sc, fc: !!fc, m: true, p: true }; } LetterProps.prototype.update = function(o, sw, sc, fc, m, p) { this._mdf.o = false; this._mdf.sw = false; this._mdf.sc = false; this._mdf.fc = false; this._mdf.m = false; this._mdf.p = false; var updated = false; if (this.o !== o) { this.o = o; this._mdf.o = true; updated = true; } if (this.sw !== sw) { this.sw = sw; this._mdf.sw = true; updated = true; } if (this.sc !== sc) { this.sc = sc; this._mdf.sc = true; updated = true; } if (this.fc !== fc) { this.fc = fc; this._mdf.fc = true; updated = true; } if (this.m !== m) { this.m = m; this._mdf.m = true; updated = true; } 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])) { this.p = p; this._mdf.p = true; updated = true; } return updated; }; function TextProperty(elem, data) { this._frameId = initialDefaultFrame; this.pv = ""; this.v = ""; this.kf = false; this._isFirstFrame = true; this._mdf = false; if (data.d && data.d.sid) data.d = elem.globalData.slotManager.getProp(data.d); this.data = data; this.elem = elem; this.comp = this.elem.comp; this.keysIndex = 0; this.canResize = false; this.minimumFontSize = 1; this.effectsSequence = []; this.currentData = { ascent: 0, boxWidth: this.defaultBoxWidth, f: "", fStyle: "", fWeight: "", fc: "", j: "", justifyOffset: "", l: [], lh: 0, lineWidths: [], ls: "", of: "", s: "", sc: "", sw: 0, t: 0, tr: 0, sz: 0, ps: null, fillColorAnim: false, strokeColorAnim: false, strokeWidthAnim: false, yOffset: 0, finalSize: 0, finalText: [], finalLineHeight: 0, __complete: false }; this.copyData(this.currentData, this.data.d.k[0].s); if (!this.searchProperty()) this.completeTextData(this.currentData); } TextProperty.prototype.defaultBoxWidth = [0, 0]; TextProperty.prototype.copyData = function(obj, data) { for (var s in data) if (Object.prototype.hasOwnProperty.call(data, s)) obj[s] = data[s]; return obj; }; TextProperty.prototype.setCurrentData = function(data) { if (!data.__complete) this.completeTextData(data); this.currentData = data; this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth; this._mdf = true; }; TextProperty.prototype.searchProperty = function() { return this.searchKeyframes(); }; TextProperty.prototype.searchKeyframes = function() { this.kf = this.data.d.k.length > 1; if (this.kf) this.addEffect(this.getKeyframeValue.bind(this)); return this.kf; }; TextProperty.prototype.addEffect = function(effectFunction) { this.effectsSequence.push(effectFunction); this.elem.addDynamicProperty(this); }; TextProperty.prototype.getValue = function(_finalValue) { if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) return; this.currentData.t = this.data.d.k[this.keysIndex].s.t; var currentValue = this.currentData; var currentIndex = this.keysIndex; if (this.lock) { this.setCurrentData(this.currentData); return; } this.lock = true; this._mdf = false; var i; var len = this.effectsSequence.length; var finalValue = _finalValue || this.data.d.k[this.keysIndex].s; for (i = 0; i < len; i += 1) if (currentIndex !== this.keysIndex) finalValue = this.effectsSequence[i](finalValue, finalValue.t); else finalValue = this.effectsSequence[i](this.currentData, finalValue.t); if (currentValue !== finalValue) this.setCurrentData(finalValue); this.v = this.currentData; this.pv = this.v; this.lock = false; this.frameId = this.elem.globalData.frameId; }; TextProperty.prototype.getKeyframeValue = function() { var textKeys = this.data.d.k; var frameNum = this.elem.comp.renderedFrame; var i = 0; var len = textKeys.length; while (i <= len - 1) { if (i === len - 1 || textKeys[i + 1].t > frameNum) break; i += 1; } if (this.keysIndex !== i) this.keysIndex = i; return this.data.d.k[this.keysIndex].s; }; TextProperty.prototype.buildFinalText = function(text) { var charactersArray = []; var i = 0; var len = text.length; var charCode; var secondCharCode; var shouldCombine = false; var shouldCombineNext = false; var currentChars = ""; while (i < len) { shouldCombine = shouldCombineNext; shouldCombineNext = false; charCode = text.charCodeAt(i); currentChars = text.charAt(i); if (FontManager.isCombinedCharacter(charCode)) shouldCombine = true; else if (charCode >= 55296 && charCode <= 56319) if (FontManager.isRegionalFlag(text, i)) currentChars = text.substr(i, 14); else { secondCharCode = text.charCodeAt(i + 1); if (secondCharCode >= 56320 && secondCharCode <= 57343) if (FontManager.isModifier(charCode, secondCharCode)) { currentChars = text.substr(i, 2); shouldCombine = true; } else if (FontManager.isFlagEmoji(text.substr(i, 4))) currentChars = text.substr(i, 4); else currentChars = text.substr(i, 2); } else if (charCode > 56319) { secondCharCode = text.charCodeAt(i + 1); if (FontManager.isVariationSelector(charCode)) shouldCombine = true; } else if (FontManager.isZeroWidthJoiner(charCode)) { shouldCombine = true; shouldCombineNext = true; } if (shouldCombine) { charactersArray[charactersArray.length - 1] += currentChars; shouldCombine = false; } else charactersArray.push(currentChars); i += currentChars.length; } return charactersArray; }; TextProperty.prototype.completeTextData = function(documentData) { documentData.__complete = true; var fontManager = this.elem.globalData.fontManager; var data = this.data; var letters = []; var i; var len; var newLineFlag; var index = 0; var val; var anchorGrouping = data.m.g; var currentSize = 0; var currentPos = 0; var currentLine = 0; var lineWidths = []; var lineWidth = 0; var maxLineWidth = 0; var j; var jLen; var fontData = fontManager.getFontByName(documentData.f); var charData; var cLength = 0; var fontProps = getFontProperties(fontData); documentData.fWeight = fontProps.weight; documentData.fStyle = fontProps.style; documentData.finalSize = documentData.s; documentData.finalText = this.buildFinalText(documentData.t); len = documentData.finalText.length; documentData.finalLineHeight = documentData.lh; var trackingOffset = documentData.tr / 1e3 * documentData.finalSize; var charCode; if (documentData.sz) { var flag = true; var boxWidth = documentData.sz[0]; var boxHeight = documentData.sz[1]; var currentHeight; var finalText; while (flag) { finalText = this.buildFinalText(documentData.t); currentHeight = 0; lineWidth = 0; len = finalText.length; trackingOffset = documentData.tr / 1e3 * documentData.finalSize; var lastSpaceIndex = -1; for (i = 0; i < len; i += 1) { charCode = finalText[i].charCodeAt(0); newLineFlag = false; if (finalText[i] === " ") lastSpaceIndex = i; else if (charCode === 13 || charCode === 3) { lineWidth = 0; newLineFlag = true; currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; } if (fontManager.chars) { charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily); cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100; } else cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize); if (lineWidth + cLength > boxWidth && finalText[i] !== " ") { if (lastSpaceIndex === -1) len += 1; else i = lastSpaceIndex; currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; finalText.splice(i, lastSpaceIndex === i ? 1 : 0, "\r"); lastSpaceIndex = -1; lineWidth = 0; } else { lineWidth += cLength; lineWidth += trackingOffset; } } currentHeight += fontData.ascent * documentData.finalSize / 100; if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) { documentData.finalSize -= 1; documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s; } else { documentData.finalText = finalText; len = documentData.finalText.length; flag = false; } } } lineWidth = -trackingOffset; cLength = 0; var uncollapsedSpaces = 0; var currentChar; for (i = 0; i < len; i += 1) { newLineFlag = false; currentChar = documentData.finalText[i]; charCode = currentChar.charCodeAt(0); if (charCode === 13 || charCode === 3) { uncollapsedSpaces = 0; lineWidths.push(lineWidth); maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; lineWidth = -2 * trackingOffset; val = ""; newLineFlag = true; currentLine += 1; } else val = currentChar; if (fontManager.chars) { charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily); cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100; } else cLength = fontManager.measureText(val, documentData.f, documentData.finalSize); if (currentChar === " ") uncollapsedSpaces += cLength + trackingOffset; else { lineWidth += cLength + trackingOffset + uncollapsedSpaces; uncollapsedSpaces = 0; } letters.push({ l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val, line: currentLine, animatorJustifyOffset: 0 }); if (anchorGrouping == 2) { currentSize += cLength; if (val === "" || val === " " || i === len - 1) { if (val === "" || val === " ") currentSize -= cLength; while (currentPos <= i) { letters[currentPos].an = currentSize; letters[currentPos].ind = index; letters[currentPos].extra = cLength; currentPos += 1; } index += 1; currentSize = 0; } } else if (anchorGrouping == 3) { currentSize += cLength; if (val === "" || i === len - 1) { if (val === "") currentSize -= cLength; while (currentPos <= i) { letters[currentPos].an = currentSize; letters[currentPos].ind = index; letters[currentPos].extra = cLength; currentPos += 1; } currentSize = 0; index += 1; } } else { letters[index].ind = index; letters[index].extra = 0; index += 1; } } documentData.l = letters; maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; lineWidths.push(lineWidth); if (documentData.sz) { documentData.boxWidth = documentData.sz[0]; documentData.justifyOffset = 0; } else { documentData.boxWidth = maxLineWidth; switch (documentData.j) { case 1: documentData.justifyOffset = -documentData.boxWidth; break; case 2: documentData.justifyOffset = -documentData.boxWidth / 2; break; default: documentData.justifyOffset = 0; } } documentData.lineWidths = lineWidths; var animators = data.a; var animatorData; var letterData; jLen = animators.length; var based; var ind; var indexes = []; for (j = 0; j < jLen; j += 1) { animatorData = animators[j]; if (animatorData.a.sc) documentData.strokeColorAnim = true; if (animatorData.a.sw) documentData.strokeWidthAnim = true; if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) documentData.fillColorAnim = true; ind = 0; based = animatorData.s.b; for (i = 0; i < len; i += 1) { letterData = letters[i]; letterData.anIndexes[j] = ind; 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)) { if (animatorData.s.rn === 1) indexes.push(ind); ind += 1; } } data.a[j].s.totalChars = ind; var currentInd = -1; var newInd; if (animatorData.s.rn === 1) for (i = 0; i < len; i += 1) { letterData = letters[i]; if (currentInd != letterData.anIndexes[j]) { currentInd = letterData.anIndexes[j]; newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]; } letterData.anIndexes[j] = newInd; } } documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2; documentData.ls = documentData.ls || 0; documentData.ascent = fontData.ascent * documentData.finalSize / 100; }; TextProperty.prototype.updateDocumentData = function(newData, index) { index = index === void 0 ? this.keysIndex : index; var dData = this.copyData({}, this.data.d.k[index].s); dData = this.copyData(dData, newData); this.data.d.k[index].s = dData; this.recalculate(index); this.setCurrentData(dData); this.elem.addDynamicProperty(this); }; TextProperty.prototype.recalculate = function(index) { var dData = this.data.d.k[index].s; dData.__complete = false; this.keysIndex = 0; this._isFirstFrame = true; this.getValue(dData); }; TextProperty.prototype.canResizeFont = function(_canResize) { this.canResize = _canResize; this.recalculate(this.keysIndex); this.elem.addDynamicProperty(this); }; TextProperty.prototype.setMinimumFontSize = function(_fontValue) { this.minimumFontSize = Math.floor(_fontValue) || 1; this.recalculate(this.keysIndex); this.elem.addDynamicProperty(this); }; var TextSelectorProp = function() { var max = Math.max; var min = Math.min; var floor = Math.floor; function TextSelectorPropFactory(elem, data) { this._currentTextLength = -1; this.k = false; this.data = data; this.elem = elem; this.comp = elem.comp; this.finalS = 0; this.finalE = 0; this.initDynamicPropertyContainer(elem); this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this); if ("e" in data) this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this); else this.e = { v: 100 }; this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this); this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this); this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this); this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this); this.a = PropertyFactory.getProp(elem, data.a, 0, .01, this); if (!this.dynamicProperties.length) this.getValue(); } TextSelectorPropFactory.prototype = { getMult: function getMult(ind) { if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) this.getValue(); var x1 = 0; var y1 = 0; var x2 = 1; var y2 = 1; if (this.ne.v > 0) x1 = this.ne.v / 100; else y1 = -this.ne.v / 100; if (this.xe.v > 0) x2 = 1 - this.xe.v / 100; else y2 = 1 + this.xe.v / 100; var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get; var mult = 0; var s = this.finalS; var e = this.finalE; var type = this.data.sh; if (type === 2) { if (e === s) mult = ind >= e ? 1 : 0; else mult = max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1)); mult = easer(mult); } else if (type === 3) { if (e === s) mult = ind >= e ? 0 : 1; else mult = 1 - max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1)); mult = easer(mult); } else if (type === 4) { if (e === s) mult = 0; else { mult = max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1)); if (mult < .5) mult *= 2; else mult = 1 - 2 * (mult - .5); } mult = easer(mult); } else if (type === 5) { if (e === s) mult = 0; else { var tot = e - s; ind = min(max(0, ind + .5 - s), e - s); var x = -tot / 2 + ind; var a = tot / 2; mult = Math.sqrt(1 - x * x / (a * a)); } mult = easer(mult); } else if (type === 6) { if (e === s) mult = 0; else { ind = min(max(0, ind + .5 - s), e - s); mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; } mult = easer(mult); } else { if (ind >= floor(s)) if (ind - s < 0) mult = max(0, min(min(e, 1) - (s - ind), 1)); else mult = max(0, min(e - ind, 1)); mult = easer(mult); } if (this.sm.v !== 100) { var smoothness = this.sm.v * .01; if (smoothness === 0) smoothness = 1e-8; var threshold = .5 - smoothness * .5; if (mult < threshold) mult = 0; else { mult = (mult - threshold) / smoothness; if (mult > 1) mult = 1; } } return mult * this.a.v; }, getValue: function getValue(newCharsFlag) { this.iterateDynamicProperties(); this._mdf = newCharsFlag || this._mdf; this._currentTextLength = this.elem.textProperty.currentData.l.length || 0; if (newCharsFlag && this.data.r === 2) this.e.v = this._currentTextLength; var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars; var o = this.o.v / divisor; var s = this.s.v / divisor + o; var e = this.e.v / divisor + o; if (s > e) { var _s = s; s = e; e = _s; } this.finalS = s; this.finalE = e; } }; extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory); function getTextSelectorProp(elem, data, arr) { return new TextSelectorPropFactory(elem, data, arr); } return { getTextSelectorProp }; }(); function TextAnimatorDataProperty(elem, animatorProps, container) { var defaultData = { propType: false }; var getProp = PropertyFactory.getProp; var textAnimatorAnimatables = animatorProps.a; this.a = { r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData, rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData, ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData, sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData, sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData, s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, .01, container) : defaultData, a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData, o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, .01, container) : defaultData, p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData, sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData, sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData, fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData, fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData, fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, .01, container) : defaultData, fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, .01, container) : defaultData, t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData }; this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container); this.s.t = animatorProps.s.t; } function TextAnimatorProperty(textData, renderType, elem) { this._isFirstFrame = true; this._hasMaskedPath = false; this._frameId = -1; this._textData = textData; this._renderType = renderType; this._elem = elem; this._animatorsData = createSizedArray(this._textData.a.length); this._pathData = {}; this._moreOptions = { alignment: {} }; this.renderedLetters = []; this.lettersChangedFlag = false; this.initDynamicPropertyContainer(elem); } TextAnimatorProperty.prototype.searchProperties = function() { var i; var len = this._textData.a.length; var animatorProps; var getProp = PropertyFactory.getProp; for (i = 0; i < len; i += 1) { animatorProps = this._textData.a[i]; this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this); } if (this._textData.p && "m" in this._textData.p) { this._pathData = { a: getProp(this._elem, this._textData.p.a, 0, 0, this), f: getProp(this._elem, this._textData.p.f, 0, 0, this), l: getProp(this._elem, this._textData.p.l, 0, 0, this), r: getProp(this._elem, this._textData.p.r, 0, 0, this), p: getProp(this._elem, this._textData.p.p, 0, 0, this), m: this._elem.maskManager.getMaskProperty(this._textData.p.m) }; this._hasMaskedPath = true; } else this._hasMaskedPath = false; this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this); }; TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag) { this.lettersChangedFlag = lettersChangedFlag; if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) return; this._isFirstFrame = false; var alignment = this._moreOptions.alignment.v; var animators = this._animatorsData; var textData = this._textData; var matrixHelper = this.mHelper; var renderType = this._renderType; var renderedLettersCount = this.renderedLetters.length; var xPos; var yPos; var i; var len; var letters = documentData.l; var pathInfo; var currentLength; var currentPoint; var segmentLength; var flag; var pointInd; var segmentInd; var prevPoint; var points; var segments; var partialLength; var totalLength; var perc; var tanAngle; var mask; if (this._hasMaskedPath) { mask = this._pathData.m; if (!this._pathData.n || this._pathData._mdf) { var paths = mask.v; if (this._pathData.r.v) paths = paths.reverse(); pathInfo = { tLength: 0, segments: [] }; len = paths._length - 1; var bezierData; totalLength = 0; for (i = 0; i < len; i += 1) { 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]]); pathInfo.tLength += bezierData.segmentLength; pathInfo.segments.push(bezierData); totalLength += bezierData.segmentLength; } i = len; if (mask.v.c) { 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]]); pathInfo.tLength += bezierData.segmentLength; pathInfo.segments.push(bezierData); totalLength += bezierData.segmentLength; } this._pathData.pi = pathInfo; } pathInfo = this._pathData.pi; currentLength = this._pathData.f.v; segmentInd = 0; pointInd = 1; segmentLength = 0; flag = true; segments = pathInfo.segments; if (currentLength < 0 && mask.v.c) { if (pathInfo.tLength < Math.abs(currentLength)) currentLength = -Math.abs(currentLength) % pathInfo.tLength; segmentInd = segments.length - 1; points = segments[segmentInd].points; pointInd = points.length - 1; while (currentLength < 0) { currentLength += points[pointInd].partialLength; pointInd -= 1; if (pointInd < 0) { segmentInd -= 1; points = segments[segmentInd].points; pointInd = points.length - 1; } } } points = segments[segmentInd].points; prevPoint = points[pointInd - 1]; currentPoint = points[pointInd]; partialLength = currentPoint.partialLength; } len = letters.length; xPos = 0; yPos = 0; var yOff = documentData.finalSize * 1.2 * .714; var firstLine = true; var animatorProps; var animatorSelector; var j; var jLen; var letterValue; jLen = animators.length; var mult; var ind = -1; var offf; var xPathPos; var yPathPos; var initPathPos = currentLength; var initSegmentInd = segmentInd; var initPointInd = pointInd; var currentLine = -1; var elemOpacity; var sc; var sw; var fc; var k; var letterSw; var letterSc; var letterFc; var letterM = ""; var letterP = this.defaultPropsArray; var letterO; if (documentData.j === 2 || documentData.j === 1) { var animatorJustifyOffset = 0; var animatorFirstCharOffset = 0; var justifyOffsetMult = documentData.j === 2 ? -.5 : -1; var lastIndex = 0; var isNewLine = true; for (i = 0; i < len; i += 1) if (letters[i].n) { if (animatorJustifyOffset) animatorJustifyOffset += animatorFirstCharOffset; while (lastIndex < i) { letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; lastIndex += 1; } animatorJustifyOffset = 0; isNewLine = true; } else { for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.t.propType) { if (isNewLine && documentData.j === 2) animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult; animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (mult.length) animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult; else animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult; } } isNewLine = false; } if (animatorJustifyOffset) animatorJustifyOffset += animatorFirstCharOffset; while (lastIndex < i) { letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; lastIndex += 1; } } for (i = 0; i < len; i += 1) { matrixHelper.reset(); elemOpacity = 1; if (letters[i].n) { xPos = 0; yPos += documentData.yOffset; yPos += firstLine ? 1 : 0; currentLength = initPathPos; firstLine = false; if (this._hasMaskedPath) { segmentInd = initSegmentInd; pointInd = initPointInd; points = segments[segmentInd].points; prevPoint = points[pointInd - 1]; currentPoint = points[pointInd]; partialLength = currentPoint.partialLength; segmentLength = 0; } letterM = ""; letterFc = ""; letterSw = ""; letterO = ""; letterP = this.defaultPropsArray; } else { if (this._hasMaskedPath) { if (currentLine !== letters[i].line) { switch (documentData.j) { case 1: currentLength += totalLength - documentData.lineWidths[letters[i].line]; break; case 2: currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2; break; default: break; } currentLine = letters[i].line; } if (ind !== letters[i].ind) { if (letters[ind]) currentLength += letters[ind].extra; currentLength += letters[i].an / 2; ind = letters[i].ind; } currentLength += alignment[0] * letters[i].an * .005; var animatorOffset = 0; for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.p.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (mult.length) animatorOffset += animatorProps.p.v[0] * mult[0]; else animatorOffset += animatorProps.p.v[0] * mult; } if (animatorProps.a.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (mult.length) animatorOffset += animatorProps.a.v[0] * mult[0]; else animatorOffset += animatorProps.a.v[0] * mult; } } flag = true; if (this._pathData.a.v) { currentLength = letters[0].an * .5 + (totalLength - this._pathData.f.v - letters[0].an * .5 - letters[letters.length - 1].an * .5) * ind / (len - 1); currentLength += this._pathData.f.v; } while (flag) if (segmentLength + partialLength >= currentLength + animatorOffset || !points) { perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength; xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc; yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc; matrixHelper.translate(-alignment[0] * letters[i].an * .005, -(alignment[1] * yOff) * .01); flag = false; } else if (points) { segmentLength += currentPoint.partialLength; pointInd += 1; if (pointInd >= points.length) { pointInd = 0; segmentInd += 1; if (!segments[segmentInd]) if (mask.v.c) { pointInd = 0; segmentInd = 0; points = segments[segmentInd].points; } else { segmentLength -= currentPoint.partialLength; points = null; } else points = segments[segmentInd].points; } if (points) { prevPoint = currentPoint; currentPoint = points[pointInd]; partialLength = currentPoint.partialLength; } } offf = letters[i].an / 2 - letters[i].add; matrixHelper.translate(-offf, 0, 0); } else { offf = letters[i].an / 2 - letters[i].add; matrixHelper.translate(-offf, 0, 0); matrixHelper.translate(-alignment[0] * letters[i].an * .005, -alignment[1] * yOff * .01, 0); } for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.t.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (xPos !== 0 || documentData.j !== 0) if (this._hasMaskedPath) if (mult.length) currentLength += animatorProps.t.v * mult[0]; else currentLength += animatorProps.t.v * mult; else if (mult.length) xPos += animatorProps.t.v * mult[0]; else xPos += animatorProps.t.v * mult; } } if (documentData.strokeWidthAnim) sw = documentData.sw || 0; if (documentData.strokeColorAnim) if (documentData.sc) sc = [ documentData.sc[0], documentData.sc[1], documentData.sc[2] ]; else sc = [ 0, 0, 0 ]; if (documentData.fillColorAnim && documentData.fc) fc = [ documentData.fc[0], documentData.fc[1], documentData.fc[2] ]; for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.a.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (mult.length) matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]); else matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult); } } for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.s.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (mult.length) matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1); else matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1); } } for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (animatorProps.sk.propType) if (mult.length) matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]); else matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult); if (animatorProps.r.propType) if (mult.length) matrixHelper.rotateZ(-animatorProps.r.v * mult[2]); else matrixHelper.rotateZ(-animatorProps.r.v * mult); if (animatorProps.ry.propType) if (mult.length) matrixHelper.rotateY(animatorProps.ry.v * mult[1]); else matrixHelper.rotateY(animatorProps.ry.v * mult); if (animatorProps.rx.propType) if (mult.length) matrixHelper.rotateX(animatorProps.rx.v * mult[0]); else matrixHelper.rotateX(animatorProps.rx.v * mult); if (animatorProps.o.propType) if (mult.length) elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0]; else elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult; if (documentData.strokeWidthAnim && animatorProps.sw.propType) if (mult.length) sw += animatorProps.sw.v * mult[0]; else sw += animatorProps.sw.v * mult; if (documentData.strokeColorAnim && animatorProps.sc.propType) for (k = 0; k < 3; k += 1) if (mult.length) sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0]; else sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult; if (documentData.fillColorAnim && documentData.fc) { if (animatorProps.fc.propType) for (k = 0; k < 3; k += 1) if (mult.length) fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0]; else fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult; if (animatorProps.fh.propType) if (mult.length) fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]); else fc = addHueToRGB(fc, animatorProps.fh.v * mult); if (animatorProps.fs.propType) if (mult.length) fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]); else fc = addSaturationToRGB(fc, animatorProps.fs.v * mult); if (animatorProps.fb.propType) if (mult.length) fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]); else fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult); } } for (j = 0; j < jLen; j += 1) { animatorProps = animators[j].a; if (animatorProps.p.propType) { animatorSelector = animators[j].s; mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); if (this._hasMaskedPath) if (mult.length) matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]); else matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); else if (mult.length) matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]); else matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); } } if (documentData.strokeWidthAnim) letterSw = sw < 0 ? 0 : sw; if (documentData.strokeColorAnim) letterSc = "rgb(" + Math.round(sc[0] * 255) + "," + Math.round(sc[1] * 255) + "," + Math.round(sc[2] * 255) + ")"; if (documentData.fillColorAnim && documentData.fc) letterFc = "rgb(" + Math.round(fc[0] * 255) + "," + Math.round(fc[1] * 255) + "," + Math.round(fc[2] * 255) + ")"; if (this._hasMaskedPath) { matrixHelper.translate(0, -documentData.ls); matrixHelper.translate(0, alignment[1] * yOff * .01 + yPos, 0); if (this._pathData.p.v) { tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]); var rot = Math.atan(tanAngle) * 180 / Math.PI; if (currentPoint.point[0] < prevPoint.point[0]) rot += 180; matrixHelper.rotate(-rot * Math.PI / 180); } matrixHelper.translate(xPathPos, yPathPos, 0); currentLength -= alignment[0] * letters[i].an * .005; if (letters[i + 1] && ind !== letters[i + 1].ind) { currentLength += letters[i].an / 2; currentLength += documentData.tr * .001 * documentData.finalSize; } } else { matrixHelper.translate(xPos, yPos, 0); if (documentData.ps) matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); switch (documentData.j) { case 1: matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0); break; case 2: matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0); break; default: break; } matrixHelper.translate(0, -documentData.ls); matrixHelper.translate(offf, 0, 0); matrixHelper.translate(alignment[0] * letters[i].an * .005, alignment[1] * yOff * .01, 0); xPos += letters[i].l + documentData.tr * .001 * documentData.finalSize; } if (renderType === "html") letterM = matrixHelper.toCSS(); else if (renderType === "svg") letterM = matrixHelper.to2dCSS(); else 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] ]; letterO = elemOpacity; } if (renderedLettersCount <= i) { letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP); this.renderedLetters.push(letterValue); renderedLettersCount += 1; this.lettersChangedFlag = true; } else { letterValue = this.renderedLetters[i]; this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag; } } }; TextAnimatorProperty.prototype.getValue = function() { if (this._elem.globalData.frameId === this._frameId) return; this._frameId = this._elem.globalData.frameId; this.iterateDynamicProperties(); }; TextAnimatorProperty.prototype.mHelper = new Matrix(); TextAnimatorProperty.prototype.defaultPropsArray = []; extendPrototype([DynamicPropertyContainer], TextAnimatorProperty); function ITextElement() {} ITextElement.prototype.initElement = function(data, globalData, comp) { this.lettersChangedFlag = true; this.initFrame(); this.initBaseData(data, globalData, comp); this.textProperty = new TextProperty(this, data.t, this.dynamicProperties); this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this); this.initTransform(data, globalData, comp); this.initHierarchy(); this.initRenderable(); this.initRendererElement(); this.createContainerElements(); this.createRenderableComponents(); this.createContent(); this.hide(); this.textAnimator.searchProperties(this.dynamicProperties); }; ITextElement.prototype.prepareFrame = function(num) { this._mdf = false; this.prepareRenderableFrame(num); this.prepareProperties(num, this.isInRange); }; ITextElement.prototype.createPathShape = function(matrixHelper, shapes) { var j; var jLen = shapes.length; var pathNodes; var shapeStr = ""; for (j = 0; j < jLen; j += 1) if (shapes[j].ty === "sh") { pathNodes = shapes[j].ks.k; shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper); } return shapeStr; }; ITextElement.prototype.updateDocumentData = function(newData, index) { this.textProperty.updateDocumentData(newData, index); }; ITextElement.prototype.canResizeFont = function(_canResize) { this.textProperty.canResizeFont(_canResize); }; ITextElement.prototype.setMinimumFontSize = function(_fontSize) { this.textProperty.setMinimumFontSize(_fontSize); }; ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) { if (documentData.ps) matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); matrixHelper.translate(0, -documentData.ls, 0); switch (documentData.j) { case 1: matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0); break; case 2: matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0); break; default: break; } matrixHelper.translate(xPos, yPos, 0); }; ITextElement.prototype.buildColor = function(colorData) { return "rgb(" + Math.round(colorData[0] * 255) + "," + Math.round(colorData[1] * 255) + "," + Math.round(colorData[2] * 255) + ")"; }; ITextElement.prototype.emptyProp = new LetterProps(); ITextElement.prototype.destroy = function() {}; ITextElement.prototype.validateText = function() { if (this.textProperty._mdf || this.textProperty._isFirstFrame) { this.buildNewText(); this.textProperty._isFirstFrame = false; this.textProperty._mdf = false; } }; var emptyShapeData = { shapes: [] }; function SVGTextLottieElement(data, globalData, comp) { this.textSpans = []; this.renderType = "svg"; this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement ], SVGTextLottieElement); SVGTextLottieElement.prototype.createContent = function() { if (this.data.singleShape && !this.globalData.fontManager.chars) this.textContainer = createNS("text"); }; SVGTextLottieElement.prototype.buildTextContents = function(textArray) { var i = 0; var len = textArray.length; var textContents = []; var currentTextContent = ""; while (i < len) { if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) { textContents.push(currentTextContent); currentTextContent = ""; } else currentTextContent += textArray[i]; i += 1; } textContents.push(currentTextContent); return textContents; }; SVGTextLottieElement.prototype.buildShapeData = function(data, scale) { if (data.shapes && data.shapes.length) { var shape = data.shapes[0]; if (shape.it) { var shapeItem = shape.it[shape.it.length - 1]; if (shapeItem.s) { shapeItem.s.k[0] = scale; shapeItem.s.k[1] = scale; } } } return data; }; SVGTextLottieElement.prototype.buildNewText = function() { this.addDynamicProperty(this); var i; var len; var documentData = this.textProperty.currentData; this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0); if (documentData.fc) this.layerElement.setAttribute("fill", this.buildColor(documentData.fc)); else this.layerElement.setAttribute("fill", "rgba(0,0,0,0)"); if (documentData.sc) { this.layerElement.setAttribute("stroke", this.buildColor(documentData.sc)); this.layerElement.setAttribute("stroke-width", documentData.sw); } this.layerElement.setAttribute("font-size", documentData.finalSize); var fontData = this.globalData.fontManager.getFontByName(documentData.f); if (fontData.fClass) this.layerElement.setAttribute("class", fontData.fClass); else { this.layerElement.setAttribute("font-family", fontData.fFamily); var fWeight = documentData.fWeight; var fStyle = documentData.fStyle; this.layerElement.setAttribute("font-style", fStyle); this.layerElement.setAttribute("font-weight", fWeight); } this.layerElement.setAttribute("aria-label", documentData.t); var letters = documentData.l || []; var usesGlyphs = !!this.globalData.fontManager.chars; len = letters.length; var tSpan; var matrixHelper = this.mHelper; var shapeStr = ""; var singleShape = this.data.singleShape; var xPos = 0; var yPos = 0; var firstLine = true; var trackingOffset = documentData.tr * .001 * documentData.finalSize; if (singleShape && !usesGlyphs && !documentData.sz) { var tElement = this.textContainer; var justify = "start"; switch (documentData.j) { case 1: justify = "end"; break; case 2: justify = "middle"; break; default: justify = "start"; break; } tElement.setAttribute("text-anchor", justify); tElement.setAttribute("letter-spacing", trackingOffset); var textContent = this.buildTextContents(documentData.finalText); len = textContent.length; yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0; for (i = 0; i < len; i += 1) { tSpan = this.textSpans[i].span || createNS("tspan"); tSpan.textContent = textContent[i]; tSpan.setAttribute("x", 0); tSpan.setAttribute("y", yPos); tSpan.style.display = "inherit"; tElement.appendChild(tSpan); if (!this.textSpans[i]) this.textSpans[i] = { span: null, glyph: null }; this.textSpans[i].span = tSpan; yPos += documentData.finalLineHeight; } this.layerElement.appendChild(tElement); } else { var cachedSpansLength = this.textSpans.length; var charData; for (i = 0; i < len; i += 1) { if (!this.textSpans[i]) this.textSpans[i] = { span: null, childSpan: null, glyph: null }; if (!usesGlyphs || !singleShape || i === 0) { tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? "g" : "text"); if (cachedSpansLength <= i) { tSpan.setAttribute("stroke-linecap", "butt"); tSpan.setAttribute("stroke-linejoin", "round"); tSpan.setAttribute("stroke-miterlimit", "4"); this.textSpans[i].span = tSpan; if (usesGlyphs) { var childSpan = createNS("g"); tSpan.appendChild(childSpan); this.textSpans[i].childSpan = childSpan; } this.textSpans[i].span = tSpan; this.layerElement.appendChild(tSpan); } tSpan.style.display = "inherit"; } matrixHelper.reset(); if (singleShape) { if (letters[i].n) { xPos = -trackingOffset; yPos += documentData.yOffset; yPos += firstLine ? 1 : 0; firstLine = false; } this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); xPos += letters[i].l || 0; xPos += trackingOffset; } if (usesGlyphs) { charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); var glyphElement; if (charData.t === 1) glyphElement = new SVGCompElement(charData.data, this.globalData, this); else { var data = emptyShapeData; if (charData.data && charData.data.shapes) data = this.buildShapeData(charData.data, documentData.finalSize); glyphElement = new SVGShapeElement(data, this.globalData, this); } if (this.textSpans[i].glyph) { var glyph = this.textSpans[i].glyph; this.textSpans[i].childSpan.removeChild(glyph.layerElement); glyph.destroy(); } this.textSpans[i].glyph = glyphElement; glyphElement._debug = true; glyphElement.prepareFrame(0); glyphElement.renderFrame(); this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); if (charData.t === 1) this.textSpans[i].childSpan.setAttribute("transform", "scale(" + documentData.finalSize / 100 + "," + documentData.finalSize / 100 + ")"); } else { if (singleShape) tSpan.setAttribute("transform", "translate(" + matrixHelper.props[12] + "," + matrixHelper.props[13] + ")"); tSpan.textContent = letters[i].val; tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"); } } if (singleShape && tSpan) tSpan.setAttribute("d", shapeStr); } while (i < this.textSpans.length) { this.textSpans[i].span.style.display = "none"; i += 1; } this._sizeChanged = true; }; SVGTextLottieElement.prototype.sourceRectAtTime = function() { this.prepareFrame(this.comp.renderedFrame - this.data.st); this.renderInnerContent(); if (this._sizeChanged) { this._sizeChanged = false; var textBox = this.layerElement.getBBox(); this.bbox = { top: textBox.y, left: textBox.x, width: textBox.width, height: textBox.height }; } return this.bbox; }; SVGTextLottieElement.prototype.getValue = function() { var i; var len = this.textSpans.length; var glyphElement; this.renderedFrame = this.comp.renderedFrame; for (i = 0; i < len; i += 1) { glyphElement = this.textSpans[i].glyph; if (glyphElement) { glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st); if (glyphElement._mdf) this._mdf = true; } } }; SVGTextLottieElement.prototype.renderInnerContent = function() { this.validateText(); if (!this.data.singleShape || this._mdf) { this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) { this._sizeChanged = true; var i; var len; var renderedLetters = this.textAnimator.renderedLetters; var letters = this.textProperty.currentData.l; len = letters.length; var renderedLetter; var textSpan; var glyphElement; for (i = 0; i < len; i += 1) if (!letters[i].n) { renderedLetter = renderedLetters[i]; textSpan = this.textSpans[i].span; glyphElement = this.textSpans[i].glyph; if (glyphElement) glyphElement.renderFrame(); if (renderedLetter._mdf.m) textSpan.setAttribute("transform", renderedLetter.m); if (renderedLetter._mdf.o) textSpan.setAttribute("opacity", renderedLetter.o); if (renderedLetter._mdf.sw) textSpan.setAttribute("stroke-width", renderedLetter.sw); if (renderedLetter._mdf.sc) textSpan.setAttribute("stroke", renderedLetter.sc); if (renderedLetter._mdf.fc) textSpan.setAttribute("fill", renderedLetter.fc); } } } }; function ISolidElement(data, globalData, comp) { this.initElement(data, globalData, comp); } extendPrototype([IImageElement], ISolidElement); ISolidElement.prototype.createContent = function() { var rect = createNS("rect"); rect.setAttribute("width", this.data.sw); rect.setAttribute("height", this.data.sh); rect.setAttribute("fill", this.data.sc); this.layerElement.appendChild(rect); }; function NullElement(data, globalData, comp) { this.initFrame(); this.initBaseData(data, globalData, comp); this.initFrame(); this.initTransform(data, globalData, comp); this.initHierarchy(); } NullElement.prototype.prepareFrame = function(num) { this.prepareProperties(num, true); }; NullElement.prototype.renderFrame = function() {}; NullElement.prototype.getBaseElement = function() { return null; }; NullElement.prototype.destroy = function() {}; NullElement.prototype.sourceRectAtTime = function() {}; NullElement.prototype.hide = function() {}; extendPrototype([ BaseElement, TransformElement, HierarchyElement, FrameElement ], NullElement); function SVGRendererBase() {} extendPrototype([BaseRenderer], SVGRendererBase); SVGRendererBase.prototype.createNull = function(data) { return new NullElement(data, this.globalData, this); }; SVGRendererBase.prototype.createShape = function(data) { return new SVGShapeElement(data, this.globalData, this); }; SVGRendererBase.prototype.createText = function(data) { return new SVGTextLottieElement(data, this.globalData, this); }; SVGRendererBase.prototype.createImage = function(data) { return new IImageElement(data, this.globalData, this); }; SVGRendererBase.prototype.createSolid = function(data) { return new ISolidElement(data, this.globalData, this); }; SVGRendererBase.prototype.configAnimation = function(animData) { this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg"); this.svgElement.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); if (this.renderConfig.viewBoxSize) this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize); else this.svgElement.setAttribute("viewBox", "0 0 " + animData.w + " " + animData.h); if (!this.renderConfig.viewBoxOnly) { this.svgElement.setAttribute("width", animData.w); this.svgElement.setAttribute("height", animData.h); this.svgElement.style.width = "100%"; this.svgElement.style.height = "100%"; this.svgElement.style.transform = "translate3d(0,0,0)"; this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility; } if (this.renderConfig.width) this.svgElement.setAttribute("width", this.renderConfig.width); if (this.renderConfig.height) this.svgElement.setAttribute("height", this.renderConfig.height); if (this.renderConfig.className) this.svgElement.setAttribute("class", this.renderConfig.className); if (this.renderConfig.id) this.svgElement.setAttribute("id", this.renderConfig.id); if (this.renderConfig.focusable !== void 0) this.svgElement.setAttribute("focusable", this.renderConfig.focusable); this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio); this.animationItem.wrapper.appendChild(this.svgElement); var defs = this.globalData.defs; this.setupGlobalData(animData, defs); this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; this.data = animData; var maskElement = createNS("clipPath"); var rect = createNS("rect"); rect.setAttribute("width", animData.w); rect.setAttribute("height", animData.h); rect.setAttribute("x", 0); rect.setAttribute("y", 0); var maskId = createElementID(); maskElement.setAttribute("id", maskId); maskElement.appendChild(rect); this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + maskId + ")"); defs.appendChild(maskElement); this.layers = animData.layers; this.elements = createSizedArray(animData.layers.length); }; SVGRendererBase.prototype.destroy = function() { if (this.animationItem.wrapper) this.animationItem.wrapper.innerText = ""; this.layerElement = null; this.globalData.defs = null; var i; var len = this.layers ? this.layers.length : 0; for (i = 0; i < len; i += 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy(); this.elements.length = 0; this.destroyed = true; this.animationItem = null; }; SVGRendererBase.prototype.updateContainerSize = function() {}; SVGRendererBase.prototype.findIndexByInd = function(ind) { var i = 0; var len = this.layers.length; for (i = 0; i < len; i += 1) if (this.layers[i].ind === ind) return i; return -1; }; SVGRendererBase.prototype.buildItem = function(pos) { var elements = this.elements; if (elements[pos] || this.layers[pos].ty === 99) return; elements[pos] = true; var element = this.createItem(this.layers[pos]); elements[pos] = element; if (getExpressionsPlugin()) { if (this.layers[pos].ty === 0) this.globalData.projectInterface.registerComposition(element); element.initExpressions(); } this.appendElementInPos(element, pos); if (this.layers[pos].tt) { var elementIndex = "tp" in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1; if (elementIndex === -1) return; if (!this.elements[elementIndex] || this.elements[elementIndex] === true) { this.buildItem(elementIndex); this.addPendingElement(element); } else { var matteMask = elements[elementIndex].getMatte(this.layers[pos].tt); element.setMatte(matteMask); } } }; SVGRendererBase.prototype.checkPendingElements = function() { while (this.pendingElements.length) { var element = this.pendingElements.pop(); element.checkParenting(); if (element.data.tt) { var i = 0; var len = this.elements.length; while (i < len) { if (this.elements[i] === element) { var elementIndex = "tp" in element.data ? this.findIndexByInd(element.data.tp) : i - 1; var matteMask = this.elements[elementIndex].getMatte(this.layers[i].tt); element.setMatte(matteMask); break; } i += 1; } } } }; SVGRendererBase.prototype.renderFrame = function(num) { if (this.renderedFrame === num || this.destroyed) return; if (num === null) num = this.renderedFrame; else this.renderedFrame = num; this.globalData.frameNum = num; this.globalData.frameId += 1; this.globalData.projectInterface.currentFrame = num; this.globalData._mdf = false; var i; var len = this.layers.length; if (!this.completeLayers) this.checkLayers(num); for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].prepareFrame(num - this.layers[i].st); if (this.globalData._mdf) { for (i = 0; i < len; i += 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame(); } }; SVGRendererBase.prototype.appendElementInPos = function(element, pos) { var newElement = element.getBaseElement(); if (!newElement) return; var i = 0; var nextElement; while (i < pos) { if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) nextElement = this.elements[i].getBaseElement(); i += 1; } if (nextElement) this.layerElement.insertBefore(newElement, nextElement); else this.layerElement.appendChild(newElement); }; SVGRendererBase.prototype.hide = function() { this.layerElement.style.display = "none"; }; SVGRendererBase.prototype.show = function() { this.layerElement.style.display = "block"; }; function ICompElement() {} extendPrototype([ BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement ], ICompElement); ICompElement.prototype.initElement = function(data, globalData, comp) { this.initFrame(); this.initBaseData(data, globalData, comp); this.initTransform(data, globalData, comp); this.initRenderable(); this.initHierarchy(); this.initRendererElement(); this.createContainerElements(); this.createRenderableComponents(); if (this.data.xt || !globalData.progressiveLoad) this.buildAllItems(); this.hide(); }; ICompElement.prototype.prepareFrame = function(num) { this._mdf = false; this.prepareRenderableFrame(num); this.prepareProperties(num, this.isInRange); if (!this.isInRange && !this.data.xt) return; if (!this.tm._placeholder) { var timeRemapped = this.tm.v; if (timeRemapped === this.data.op) timeRemapped = this.data.op - 1; this.renderedFrame = timeRemapped; } else this.renderedFrame = num / this.data.sr; var i; var len = this.elements.length; if (!this.completeLayers) this.checkLayers(this.renderedFrame); for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) { this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st); if (this.elements[i]._mdf) this._mdf = true; } }; ICompElement.prototype.renderInnerContent = function() { var i; var len = this.layers.length; for (i = 0; i < len; i += 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame(); }; ICompElement.prototype.setElements = function(elems) { this.elements = elems; }; ICompElement.prototype.getElements = function() { return this.elements; }; ICompElement.prototype.destroyElements = function() { var i; var len = this.layers.length; for (i = 0; i < len; i += 1) if (this.elements[i]) this.elements[i].destroy(); }; ICompElement.prototype.destroy = function() { this.destroyElements(); this.destroyBaseElement(); }; function SVGCompElement(data, globalData, comp) { this.layers = data.layers; this.supports3d = true; this.completeLayers = false; this.pendingElements = []; this.elements = this.layers ? createSizedArray(this.layers.length) : []; this.initElement(data, globalData, comp); this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; } extendPrototype([ SVGRendererBase, ICompElement, SVGBaseElement ], SVGCompElement); SVGCompElement.prototype.createComp = function(data) { return new SVGCompElement(data, this.globalData, this); }; function SVGRenderer(animationItem, config) { this.animationItem = animationItem; this.layers = null; this.renderedFrame = -1; this.svgElement = createNS("svg"); var ariaLabel = ""; if (config && config.title) { var titleElement = createNS("title"); var titleId = createElementID(); titleElement.setAttribute("id", titleId); titleElement.textContent = config.title; this.svgElement.appendChild(titleElement); ariaLabel += titleId; } if (config && config.description) { var descElement = createNS("desc"); var descId = createElementID(); descElement.setAttribute("id", descId); descElement.textContent = config.description; this.svgElement.appendChild(descElement); ariaLabel += " " + descId; } if (ariaLabel) this.svgElement.setAttribute("aria-labelledby", ariaLabel); var defs = createNS("defs"); this.svgElement.appendChild(defs); var maskElement = createNS("g"); this.svgElement.appendChild(maskElement); this.layerElement = maskElement; this.renderConfig = { preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet", imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", contentVisibility: config && config.contentVisibility || "visible", progressiveLoad: config && config.progressiveLoad || false, hideOnTransparent: !(config && config.hideOnTransparent === false), viewBoxOnly: config && config.viewBoxOnly || false, viewBoxSize: config && config.viewBoxSize || false, className: config && config.className || "", id: config && config.id || "", focusable: config && config.focusable, filterSize: { width: config && config.filterSize && config.filterSize.width || "100%", height: config && config.filterSize && config.filterSize.height || "100%", x: config && config.filterSize && config.filterSize.x || "0%", y: config && config.filterSize && config.filterSize.y || "0%" }, width: config && config.width, height: config && config.height, runExpressions: !config || config.runExpressions === void 0 || config.runExpressions }; this.globalData = { _mdf: false, frameNum: -1, defs, renderConfig: this.renderConfig }; this.elements = []; this.pendingElements = []; this.destroyed = false; this.rendererType = "svg"; } extendPrototype([SVGRendererBase], SVGRenderer); SVGRenderer.prototype.createComp = function(data) { return new SVGCompElement(data, this.globalData, this); }; function ShapeTransformManager() { this.sequences = {}; this.sequenceList = []; this.transform_key_count = 0; } ShapeTransformManager.prototype = { addTransformSequence: function addTransformSequence(transforms) { var i; var len = transforms.length; var key = "_"; for (i = 0; i < len; i += 1) key += transforms[i].transform.key + "_"; var sequence = this.sequences[key]; if (!sequence) { sequence = { transforms: [].concat(transforms), finalTransform: new Matrix(), _mdf: false }; this.sequences[key] = sequence; this.sequenceList.push(sequence); } return sequence; }, processSequence: function processSequence(sequence, isFirstFrame) { var i = 0; var len = sequence.transforms.length; var _mdf = isFirstFrame; while (i < len && !isFirstFrame) { if (sequence.transforms[i].transform.mProps._mdf) { _mdf = true; break; } i += 1; } if (_mdf) { sequence.finalTransform.reset(); for (i = len - 1; i >= 0; i -= 1) sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v); } sequence._mdf = _mdf; }, processSequences: function processSequences(isFirstFrame) { var i; var len = this.sequenceList.length; for (i = 0; i < len; i += 1) this.processSequence(this.sequenceList[i], isFirstFrame); }, getNewKey: function getNewKey() { this.transform_key_count += 1; return "_" + this.transform_key_count; } }; var lumaLoader = function lumaLoader() { var id = "__lottie_element_luma_buffer"; var lumaBuffer = null; var lumaBufferCtx = null; var svg = null; function createLumaSvgFilter() { var _svg = createNS("svg"); var fil = createNS("filter"); var matrix = createNS("feColorMatrix"); fil.setAttribute("id", id); matrix.setAttribute("type", "matrix"); matrix.setAttribute("color-interpolation-filters", "sRGB"); 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"); fil.appendChild(matrix); _svg.appendChild(fil); _svg.setAttribute("id", "__lottie_element_luma_buffer_svg"); if (featureSupport.svgLumaHidden) _svg.style.display = "none"; return _svg; } function loadLuma() { if (!lumaBuffer) { svg = createLumaSvgFilter(); document.body.appendChild(svg); lumaBuffer = createTag("canvas"); lumaBufferCtx = lumaBuffer.getContext("2d"); lumaBufferCtx.filter = "url(#__lottie_element_luma_buffer)"; lumaBufferCtx.fillStyle = "rgba(0,0,0,0)"; lumaBufferCtx.fillRect(0, 0, 1, 1); } } function getLuma(canvas) { if (!lumaBuffer) loadLuma(); lumaBuffer.width = canvas.width; lumaBuffer.height = canvas.height; lumaBufferCtx.filter = "url(#__lottie_element_luma_buffer)"; return lumaBuffer; } return { load: loadLuma, get: getLuma }; }; function createCanvas(width, height) { if (featureSupport.offscreenCanvas) return new OffscreenCanvas(width, height); var canvas = createTag("canvas"); canvas.width = width; canvas.height = height; return canvas; } var assetLoader = function() { return { loadLumaCanvas: lumaLoader.load, getLumaCanvas: lumaLoader.get, createCanvas }; }(); var registeredEffects = {}; function CVEffects(elem) { var i; var len = elem.data.ef ? elem.data.ef.length : 0; this.filters = []; var filterManager; for (i = 0; i < len; i += 1) { filterManager = null; var type = elem.data.ef[i].ty; if (registeredEffects[type]) { var Effect = registeredEffects[type].effect; filterManager = new Effect(elem.effectsManager.effectElements[i], elem); } if (filterManager) this.filters.push(filterManager); } if (this.filters.length) elem.addRenderableComponent(this); } CVEffects.prototype.renderFrame = function(_isFirstFrame) { var i; var len = this.filters.length; for (i = 0; i < len; i += 1) this.filters[i].renderFrame(_isFirstFrame); }; CVEffects.prototype.getEffects = function(type) { var i; var len = this.filters.length; var effects = []; for (i = 0; i < len; i += 1) if (this.filters[i].type === type) effects.push(this.filters[i]); return effects; }; function registerEffect(id, effect) { registeredEffects[id] = { effect }; } function CVMaskElement(data, element) { this.data = data; this.element = element; this.masksProperties = this.data.masksProperties || []; this.viewData = createSizedArray(this.masksProperties.length); var i; var len = this.masksProperties.length; var hasMasks = false; for (i = 0; i < len; i += 1) { if (this.masksProperties[i].mode !== "n") hasMasks = true; this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3); } this.hasMasks = hasMasks; if (hasMasks) this.element.addRenderableComponent(this); } CVMaskElement.prototype.renderFrame = function() { if (!this.hasMasks) return; var transform = this.element.finalTransform.mat; var ctx = this.element.canvasContext; var i; var len = this.masksProperties.length; var pt; var pts; var data; ctx.beginPath(); for (i = 0; i < len; i += 1) if (this.masksProperties[i].mode !== "n") { if (this.masksProperties[i].inv) { ctx.moveTo(0, 0); ctx.lineTo(this.element.globalData.compSize.w, 0); ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h); ctx.lineTo(0, this.element.globalData.compSize.h); ctx.lineTo(0, 0); } data = this.viewData[i].v; pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0); ctx.moveTo(pt[0], pt[1]); var j; var jLen = data._length; for (j = 1; j < jLen; j += 1) { pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]); ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); } pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]); ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); } this.element.globalData.renderer.save(true); ctx.clip(); }; CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty; CVMaskElement.prototype.destroy = function() { this.element = null; }; function CVBaseElement() {} var operationsMap = { 1: "source-in", 2: "source-out", 3: "source-in", 4: "source-out" }; CVBaseElement.prototype = { createElements: function createElements() {}, initRendererElement: function initRendererElement() {}, createContainerElements: function createContainerElements() { if (this.data.tt >= 1) { this.buffers = []; var canvasContext = this.globalData.canvasContext; var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height); this.buffers.push(bufferCanvas); var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height); this.buffers.push(bufferCanvas2); if (this.data.tt >= 3 && !document._isProxy) assetLoader.loadLumaCanvas(); } this.canvasContext = this.globalData.canvasContext; this.transformCanvas = this.globalData.transformCanvas; this.renderableEffectsManager = new CVEffects(this); this.searchEffectTransforms(); }, createContent: function createContent() {}, setBlendMode: function setBlendMode() { var globalData = this.globalData; if (globalData.blendMode !== this.data.bm) { globalData.blendMode = this.data.bm; var blendModeValue = getBlendMode(this.data.bm); globalData.canvasContext.globalCompositeOperation = blendModeValue; } }, createRenderableComponents: function createRenderableComponents() { this.maskManager = new CVMaskElement(this.data, this); this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT); }, hideElement: function hideElement() { if (!this.hidden && (!this.isInRange || this.isTransparent)) this.hidden = true; }, showElement: function showElement() { if (this.isInRange && !this.isTransparent) { this.hidden = false; this._isFirstFrame = true; this.maskManager._isFirstFrame = true; } }, clearCanvas: function clearCanvas(canvasContext) { canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy); }, prepareLayer: function prepareLayer() { if (this.data.tt >= 1) { var bufferCtx = this.buffers[0].getContext("2d"); this.clearCanvas(bufferCtx); bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); this.currentTransform = this.canvasContext.getTransform(); this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); this.clearCanvas(this.canvasContext); this.canvasContext.setTransform(this.currentTransform); } }, exitLayer: function exitLayer() { if (this.data.tt >= 1) { var buffer = this.buffers[1]; var bufferCtx = buffer.getContext("2d"); this.clearCanvas(bufferCtx); bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); this.clearCanvas(this.canvasContext); this.canvasContext.setTransform(this.currentTransform); this.comp.getElementById("tp" in this.data ? this.data.tp : this.data.ind - 1).renderFrame(true); this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); if (this.data.tt >= 3 && !document._isProxy) { var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas); lumaBuffer.getContext("2d").drawImage(this.canvasContext.canvas, 0, 0); this.clearCanvas(this.canvasContext); this.canvasContext.drawImage(lumaBuffer, 0, 0); } this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt]; this.canvasContext.drawImage(buffer, 0, 0); this.canvasContext.globalCompositeOperation = "destination-over"; this.canvasContext.drawImage(this.buffers[0], 0, 0); this.canvasContext.setTransform(this.currentTransform); this.canvasContext.globalCompositeOperation = "source-over"; } }, renderFrame: function renderFrame(forceRender) { if (this.hidden || this.data.hd) return; if (this.data.td === 1 && !forceRender) return; this.renderTransform(); this.renderRenderable(); this.renderLocalTransform(); this.setBlendMode(); var forceRealStack = this.data.ty === 0; this.prepareLayer(); this.globalData.renderer.save(forceRealStack); this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props); this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity); this.renderInnerContent(); this.globalData.renderer.restore(forceRealStack); this.exitLayer(); if (this.maskManager.hasMasks) this.globalData.renderer.restore(true); if (this._isFirstFrame) this._isFirstFrame = false; }, destroy: function destroy() { this.canvasContext = null; this.data = null; this.globalData = null; this.maskManager.destroy(); }, mHelper: new Matrix() }; CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement; CVBaseElement.prototype.show = CVBaseElement.prototype.showElement; function CVShapeData(element, data, styles, transformsManager) { this.styledShapes = []; this.tr = [ 0, 0, 0, 0, 0, 0 ]; var ty = 4; if (data.ty === "rc") ty = 5; else if (data.ty === "el") ty = 6; else if (data.ty === "sr") ty = 7; this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element); var i; var len = styles.length; var styledShape; for (i = 0; i < len; i += 1) if (!styles[i].closed) { styledShape = { transforms: transformsManager.addTransformSequence(styles[i].transforms), trNodes: [] }; this.styledShapes.push(styledShape); styles[i].elements.push(styledShape); } } CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated; function CVShapeElement(data, globalData, comp) { this.shapes = []; this.shapesData = data.shapes; this.stylesList = []; this.itemsData = []; this.prevViewData = []; this.shapeModifiers = []; this.processedElements = []; this.transformsManager = new ShapeTransformManager(); this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement ], CVShapeElement); CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement; CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }; CVShapeElement.prototype.dashResetter = []; CVShapeElement.prototype.createContent = function() { this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); }; CVShapeElement.prototype.createStyleElement = function(data, transforms) { var styleElem = { data, type: data.ty, preTransforms: this.transformsManager.addTransformSequence(transforms), transforms: [], elements: [], closed: data.hd === true }; var elementData = {}; if (data.ty === "fl" || data.ty === "st") { elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this); if (!elementData.c.k) styleElem.co = "rgb(" + bmFloor(elementData.c.v[0]) + "," + bmFloor(elementData.c.v[1]) + "," + bmFloor(elementData.c.v[2]) + ")"; } else if (data.ty === "gf" || data.ty === "gs") { elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this); elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this); elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, .01, this); elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this); elementData.g = new GradientProperty(this, data.g, this); } elementData.o = PropertyFactory.getProp(this, data.o, 0, .01, this); if (data.ty === "st" || data.ty === "gs") { styleElem.lc = lineCapEnum[data.lc || 2]; styleElem.lj = lineJoinEnum[data.lj || 2]; if (data.lj == 1) styleElem.ml = data.ml; elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this); if (!elementData.w.k) styleElem.wi = elementData.w.v; if (data.d) { elementData.d = new DashProperty(this, data.d, "canvas", this); if (!elementData.d.k) { styleElem.da = elementData.d.dashArray; styleElem["do"] = elementData.d.dashoffset[0]; } } } else styleElem.r = data.r === 2 ? "evenodd" : "nonzero"; this.stylesList.push(styleElem); elementData.style = styleElem; return elementData; }; CVShapeElement.prototype.createGroupElement = function() { return { it: [], prevViewData: [] }; }; CVShapeElement.prototype.createTransformElement = function(data) { return { transform: { opacity: 1, _opMdf: false, key: this.transformsManager.getNewKey(), op: PropertyFactory.getProp(this, data.o, 0, .01, this), mProps: TransformPropertyFactory.getTransformProperty(this, data, this) } }; }; CVShapeElement.prototype.createShapeElement = function(data) { var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager); this.shapes.push(elementData); this.addShapeToModifiers(elementData); return elementData; }; CVShapeElement.prototype.reloadShapes = function() { this._isFirstFrame = true; var i; var len = this.itemsData.length; for (i = 0; i < len; i += 1) this.prevViewData[i] = this.itemsData[i]; this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); len = this.dynamicProperties.length; for (i = 0; i < len; i += 1) this.dynamicProperties[i].getValue(); this.renderModifiers(); this.transformsManager.processSequences(this._isFirstFrame); }; CVShapeElement.prototype.addTransformToStyleList = function(transform) { var i; var len = this.stylesList.length; for (i = 0; i < len; i += 1) if (!this.stylesList[i].closed) this.stylesList[i].transforms.push(transform); }; CVShapeElement.prototype.removeTransformFromStyleList = function() { var i; var len = this.stylesList.length; for (i = 0; i < len; i += 1) if (!this.stylesList[i].closed) this.stylesList[i].transforms.pop(); }; CVShapeElement.prototype.closeStyles = function(styles) { var i; var len = styles.length; for (i = 0; i < len; i += 1) styles[i].closed = true; }; CVShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, shouldRender, transforms) { var i; var len = arr.length - 1; var j; var jLen; var ownStyles = []; var ownModifiers = []; var processedPos; var modifier; var currentTransform; var ownTransforms = [].concat(transforms); for (i = len; i >= 0; i -= 1) { processedPos = this.searchProcessedElement(arr[i]); if (!processedPos) arr[i]._shouldRender = shouldRender; else itemsData[i] = prevViewData[processedPos - 1]; if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs") { if (!processedPos) itemsData[i] = this.createStyleElement(arr[i], ownTransforms); else itemsData[i].style.closed = false; ownStyles.push(itemsData[i].style); } else if (arr[i].ty === "gr") { if (!processedPos) itemsData[i] = this.createGroupElement(arr[i]); else { jLen = itemsData[i].it.length; for (j = 0; j < jLen; j += 1) itemsData[i].prevViewData[j] = itemsData[i].it[j]; } this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms); } else if (arr[i].ty === "tr") { if (!processedPos) { currentTransform = this.createTransformElement(arr[i]); itemsData[i] = currentTransform; } ownTransforms.push(itemsData[i]); this.addTransformToStyleList(itemsData[i]); } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") { if (!processedPos) itemsData[i] = this.createShapeElement(arr[i]); } else if (arr[i].ty === "tm" || arr[i].ty === "rd" || arr[i].ty === "pb" || arr[i].ty === "zz" || arr[i].ty === "op") { if (!processedPos) { modifier = ShapeModifiers.getModifier(arr[i].ty); modifier.init(this, arr[i]); itemsData[i] = modifier; this.shapeModifiers.push(modifier); } else { modifier = itemsData[i]; modifier.closed = false; } ownModifiers.push(modifier); } else if (arr[i].ty === "rp") { if (!processedPos) { modifier = ShapeModifiers.getModifier(arr[i].ty); itemsData[i] = modifier; modifier.init(this, arr, i, itemsData); this.shapeModifiers.push(modifier); shouldRender = false; } else { modifier = itemsData[i]; modifier.closed = true; } ownModifiers.push(modifier); } this.addProcessedElement(arr[i], i + 1); } this.removeTransformFromStyleList(); this.closeStyles(ownStyles); len = ownModifiers.length; for (i = 0; i < len; i += 1) ownModifiers[i].closed = true; }; CVShapeElement.prototype.renderInnerContent = function() { this.transformHelper.opacity = 1; this.transformHelper._opMdf = false; this.renderModifiers(); this.transformsManager.processSequences(this._isFirstFrame); this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true); }; CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) { if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) { groupTransform.opacity = parentTransform.opacity; groupTransform.opacity *= groupTransform.op.v; groupTransform._opMdf = true; } }; CVShapeElement.prototype.drawLayer = function() { var i; var len = this.stylesList.length; var j; var jLen; var k; var kLen; var elems; var nodes; var renderer = this.globalData.renderer; var ctx = this.globalData.canvasContext; var type; var currentStyle; for (i = 0; i < len; i += 1) { currentStyle = this.stylesList[i]; type = currentStyle.type; if (!((type === "st" || type === "gs") && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) { renderer.save(); elems = currentStyle.elements; if (type === "st" || type === "gs") { renderer.ctxStrokeStyle(type === "st" ? currentStyle.co : currentStyle.grd); renderer.ctxLineWidth(currentStyle.wi); renderer.ctxLineCap(currentStyle.lc); renderer.ctxLineJoin(currentStyle.lj); renderer.ctxMiterLimit(currentStyle.ml || 0); } else renderer.ctxFillStyle(type === "fl" ? currentStyle.co : currentStyle.grd); renderer.ctxOpacity(currentStyle.coOp); if (type !== "st" && type !== "gs") ctx.beginPath(); renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props); jLen = elems.length; for (j = 0; j < jLen; j += 1) { if (type === "st" || type === "gs") { ctx.beginPath(); if (currentStyle.da) { ctx.setLineDash(currentStyle.da); ctx.lineDashOffset = currentStyle["do"]; } } nodes = elems[j].trNodes; kLen = nodes.length; for (k = 0; k < kLen; k += 1) if (nodes[k].t === "m") ctx.moveTo(nodes[k].p[0], nodes[k].p[1]); else if (nodes[k].t === "c") 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]); else ctx.closePath(); if (type === "st" || type === "gs") { renderer.ctxStroke(); if (currentStyle.da) ctx.setLineDash(this.dashResetter); } } if (type !== "st" && type !== "gs") this.globalData.renderer.ctxFill(currentStyle.r); renderer.restore(); } } }; CVShapeElement.prototype.renderShape = function(parentTransform, items, data, isMain) { var i; var len = items.length - 1; var groupTransform = parentTransform; for (i = len; i >= 0; i -= 1) if (items[i].ty === "tr") { groupTransform = data[i].transform; this.renderShapeTransform(parentTransform, groupTransform); } else if (items[i].ty === "sh" || items[i].ty === "el" || items[i].ty === "rc" || items[i].ty === "sr") this.renderPath(items[i], data[i]); else if (items[i].ty === "fl") this.renderFill(items[i], data[i], groupTransform); else if (items[i].ty === "st") this.renderStroke(items[i], data[i], groupTransform); else if (items[i].ty === "gf" || items[i].ty === "gs") this.renderGradientFill(items[i], data[i], groupTransform); else if (items[i].ty === "gr") this.renderShape(groupTransform, items[i].it, data[i].it); else if (items[i].ty === "tm") {} if (isMain) this.drawLayer(); }; CVShapeElement.prototype.renderStyledShape = function(styledShape, shape) { if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) { var shapeNodes = styledShape.trNodes; var paths = shape.paths; var i; var len; var j; var jLen = paths._length; shapeNodes.length = 0; var groupTransformMat = styledShape.transforms.finalTransform; for (j = 0; j < jLen; j += 1) { var pathNodes = paths.shapes[j]; if (pathNodes && pathNodes.v) { len = pathNodes._length; for (i = 1; i < len; i += 1) { if (i === 1) shapeNodes.push({ t: "m", p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0) }); shapeNodes.push({ t: "c", pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]) }); } if (len === 1) shapeNodes.push({ t: "m", p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0) }); if (pathNodes.c && len) { shapeNodes.push({ t: "c", pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]) }); shapeNodes.push({ t: "z" }); } } } styledShape.trNodes = shapeNodes; } }; CVShapeElement.prototype.renderPath = function(pathData, itemData) { if (pathData.hd !== true && pathData._shouldRender) { var i; var len = itemData.styledShapes.length; for (i = 0; i < len; i += 1) this.renderStyledShape(itemData.styledShapes[i], itemData.sh); } }; CVShapeElement.prototype.renderFill = function(styleData, itemData, groupTransform) { var styleElem = itemData.style; if (itemData.c._mdf || this._isFirstFrame) styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"; if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) styleElem.coOp = itemData.o.v * groupTransform.opacity; }; CVShapeElement.prototype.renderGradientFill = function(styleData, itemData, groupTransform) { var styleElem = itemData.style; var grd; if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) { var ctx = this.globalData.canvasContext; var pt1 = itemData.s.v; var pt2 = itemData.e.v; if (styleData.t === 1) grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]); else { var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); var percent = itemData.h.v; if (percent >= 1) percent = .99; else if (percent <= -1) percent = -.99; var dist = rad * percent; var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad); } var i; var len = styleData.g.p; var cValues = itemData.g.c; var opacity = 1; for (i = 0; i < len; i += 1) { if (itemData.g._hasOpacity && itemData.g._collapsable) opacity = itemData.g.o[i * 2 + 1]; grd.addColorStop(cValues[i * 4] / 100, "rgba(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + "," + opacity + ")"); } styleElem.grd = grd; } styleElem.coOp = itemData.o.v * groupTransform.opacity; }; CVShapeElement.prototype.renderStroke = function(styleData, itemData, groupTransform) { var styleElem = itemData.style; var d = itemData.d; if (d && (d._mdf || this._isFirstFrame)) { styleElem.da = d.dashArray; styleElem["do"] = d.dashoffset[0]; } if (itemData.c._mdf || this._isFirstFrame) styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"; if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) styleElem.coOp = itemData.o.v * groupTransform.opacity; if (itemData.w._mdf || this._isFirstFrame) styleElem.wi = itemData.w.v; }; CVShapeElement.prototype.destroy = function() { this.shapesData = null; this.globalData = null; this.canvasContext = null; this.stylesList.length = 0; this.itemsData.length = 0; }; function CVTextElement(data, globalData, comp) { this.textSpans = []; this.yOffset = 0; this.fillColorAnim = false; this.strokeColorAnim = false; this.strokeWidthAnim = false; this.stroke = false; this.fill = false; this.justifyOffset = 0; this.currentRender = null; this.renderType = "canvas"; this.values = { fill: "rgba(0,0,0,0)", stroke: "rgba(0,0,0,0)", sWidth: 0, fValue: "" }; this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement ], CVTextElement); CVTextElement.prototype.tHelper = createTag("canvas").getContext("2d"); CVTextElement.prototype.buildNewText = function() { var documentData = this.textProperty.currentData; this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0); var hasFill = false; if (documentData.fc) { hasFill = true; this.values.fill = this.buildColor(documentData.fc); } else this.values.fill = "rgba(0,0,0,0)"; this.fill = hasFill; var hasStroke = false; if (documentData.sc) { hasStroke = true; this.values.stroke = this.buildColor(documentData.sc); this.values.sWidth = documentData.sw; } var fontData = this.globalData.fontManager.getFontByName(documentData.f); var i; var len; var letters = documentData.l; var matrixHelper = this.mHelper; this.stroke = hasStroke; this.values.fValue = documentData.finalSize + "px " + this.globalData.fontManager.getFontByName(documentData.f).fFamily; len = documentData.finalText.length; var charData; var shapeData; var k; var kLen; var shapes; var j; var jLen; var pathNodes; var commands; var pathArr; var singleShape = this.data.singleShape; var trackingOffset = documentData.tr * .001 * documentData.finalSize; var xPos = 0; var yPos = 0; var firstLine = true; var cnt = 0; for (i = 0; i < len; i += 1) { charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); shapeData = charData && charData.data || {}; matrixHelper.reset(); if (singleShape && letters[i].n) { xPos = -trackingOffset; yPos += documentData.yOffset; yPos += firstLine ? 1 : 0; firstLine = false; } shapes = shapeData.shapes ? shapeData.shapes[0].it : []; jLen = shapes.length; matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100); if (singleShape) this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); commands = createSizedArray(jLen - 1); var commandsCounter = 0; for (j = 0; j < jLen; j += 1) if (shapes[j].ty === "sh") { kLen = shapes[j].ks.k.i.length; pathNodes = shapes[j].ks.k; pathArr = []; for (k = 1; k < kLen; k += 1) { if (k === 1) pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); 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)); } 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)); commands[commandsCounter] = pathArr; commandsCounter += 1; } if (singleShape) { xPos += letters[i].l; xPos += trackingOffset; } if (this.textSpans[cnt]) this.textSpans[cnt].elem = commands; else this.textSpans[cnt] = { elem: commands }; cnt += 1; } }; CVTextElement.prototype.renderInnerContent = function() { this.validateText(); var ctx = this.canvasContext; ctx.font = this.values.fValue; this.globalData.renderer.ctxLineCap("butt"); this.globalData.renderer.ctxLineJoin("miter"); this.globalData.renderer.ctxMiterLimit(4); if (!this.data.singleShape) this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); var i; var len; var j; var jLen; var k; var kLen; var renderedLetters = this.textAnimator.renderedLetters; var letters = this.textProperty.currentData.l; len = letters.length; var renderedLetter; var lastFill = null; var lastStroke = null; var lastStrokeW = null; var commands; var pathArr; var renderer = this.globalData.renderer; for (i = 0; i < len; i += 1) if (!letters[i].n) { renderedLetter = renderedLetters[i]; if (renderedLetter) { renderer.save(); renderer.ctxTransform(renderedLetter.p); renderer.ctxOpacity(renderedLetter.o); } if (this.fill) { if (renderedLetter && renderedLetter.fc) { if (lastFill !== renderedLetter.fc) { renderer.ctxFillStyle(renderedLetter.fc); lastFill = renderedLetter.fc; } } else if (lastFill !== this.values.fill) { lastFill = this.values.fill; renderer.ctxFillStyle(this.values.fill); } commands = this.textSpans[i].elem; jLen = commands.length; this.globalData.canvasContext.beginPath(); for (j = 0; j < jLen; j += 1) { pathArr = commands[j]; kLen = pathArr.length; this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); for (k = 2; k < kLen; k += 6) this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); } this.globalData.canvasContext.closePath(); renderer.ctxFill(); } if (this.stroke) { if (renderedLetter && renderedLetter.sw) { if (lastStrokeW !== renderedLetter.sw) { lastStrokeW = renderedLetter.sw; renderer.ctxLineWidth(renderedLetter.sw); } } else if (lastStrokeW !== this.values.sWidth) { lastStrokeW = this.values.sWidth; renderer.ctxLineWidth(this.values.sWidth); } if (renderedLetter && renderedLetter.sc) { if (lastStroke !== renderedLetter.sc) { lastStroke = renderedLetter.sc; renderer.ctxStrokeStyle(renderedLetter.sc); } } else if (lastStroke !== this.values.stroke) { lastStroke = this.values.stroke; renderer.ctxStrokeStyle(this.values.stroke); } commands = this.textSpans[i].elem; jLen = commands.length; this.globalData.canvasContext.beginPath(); for (j = 0; j < jLen; j += 1) { pathArr = commands[j]; kLen = pathArr.length; this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); for (k = 2; k < kLen; k += 6) this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); } this.globalData.canvasContext.closePath(); renderer.ctxStroke(); } if (renderedLetter) this.globalData.renderer.restore(); } }; function CVImageElement(data, globalData, comp) { this.assetData = globalData.getAssetData(data.refId); this.img = globalData.imageLoader.getAsset(this.assetData); this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement ], CVImageElement); CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement; CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; CVImageElement.prototype.createContent = function() { if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) { var canvas = createTag("canvas"); canvas.width = this.assetData.w; canvas.height = this.assetData.h; var ctx = canvas.getContext("2d"); var imgW = this.img.width; var imgH = this.img.height; var imgRel = imgW / imgH; var canvasRel = this.assetData.w / this.assetData.h; var widthCrop; var heightCrop; var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio; if (imgRel > canvasRel && par === "xMidYMid slice" || imgRel < canvasRel && par !== "xMidYMid slice") { heightCrop = imgH; widthCrop = heightCrop * canvasRel; } else { widthCrop = imgW; heightCrop = widthCrop / canvasRel; } ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h); this.img = canvas; } }; CVImageElement.prototype.renderInnerContent = function() { this.canvasContext.drawImage(this.img, 0, 0); }; CVImageElement.prototype.destroy = function() { this.img = null; }; function CVSolidElement(data, globalData, comp) { this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement ], CVSolidElement); CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement; CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; CVSolidElement.prototype.renderInnerContent = function() { this.globalData.renderer.ctxFillStyle(this.data.sc); this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); }; function CanvasRendererBase() {} extendPrototype([BaseRenderer], CanvasRendererBase); CanvasRendererBase.prototype.createShape = function(data) { return new CVShapeElement(data, this.globalData, this); }; CanvasRendererBase.prototype.createText = function(data) { return new CVTextElement(data, this.globalData, this); }; CanvasRendererBase.prototype.createImage = function(data) { return new CVImageElement(data, this.globalData, this); }; CanvasRendererBase.prototype.createSolid = function(data) { return new CVSolidElement(data, this.globalData, this); }; CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull; CanvasRendererBase.prototype.ctxTransform = function(props) { if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) return; this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]); }; CanvasRendererBase.prototype.ctxOpacity = function(op) { this.canvasContext.globalAlpha *= op < 0 ? 0 : op; }; CanvasRendererBase.prototype.ctxFillStyle = function(value) { this.canvasContext.fillStyle = value; }; CanvasRendererBase.prototype.ctxStrokeStyle = function(value) { this.canvasContext.strokeStyle = value; }; CanvasRendererBase.prototype.ctxLineWidth = function(value) { this.canvasContext.lineWidth = value; }; CanvasRendererBase.prototype.ctxLineCap = function(value) { this.canvasContext.lineCap = value; }; CanvasRendererBase.prototype.ctxLineJoin = function(value) { this.canvasContext.lineJoin = value; }; CanvasRendererBase.prototype.ctxMiterLimit = function(value) { this.canvasContext.miterLimit = value; }; CanvasRendererBase.prototype.ctxFill = function(rule) { this.canvasContext.fill(rule); }; CanvasRendererBase.prototype.ctxFillRect = function(x, y, w, h) { this.canvasContext.fillRect(x, y, w, h); }; CanvasRendererBase.prototype.ctxStroke = function() { this.canvasContext.stroke(); }; CanvasRendererBase.prototype.reset = function() { if (!this.renderConfig.clearCanvas) { this.canvasContext.restore(); return; } this.contextData.reset(); }; CanvasRendererBase.prototype.save = function() { this.canvasContext.save(); }; CanvasRendererBase.prototype.restore = function(actionFlag) { if (!this.renderConfig.clearCanvas) { this.canvasContext.restore(); return; } if (actionFlag) this.globalData.blendMode = "source-over"; this.contextData.restore(actionFlag); }; CanvasRendererBase.prototype.configAnimation = function(animData) { if (this.animationItem.wrapper) { this.animationItem.container = createTag("canvas"); var containerStyle = this.animationItem.container.style; containerStyle.width = "100%"; containerStyle.height = "100%"; var origin = "0px 0px 0px"; containerStyle.transformOrigin = origin; containerStyle.mozTransformOrigin = origin; containerStyle.webkitTransformOrigin = origin; containerStyle["-webkit-transform"] = origin; containerStyle.contentVisibility = this.renderConfig.contentVisibility; this.animationItem.wrapper.appendChild(this.animationItem.container); this.canvasContext = this.animationItem.container.getContext("2d"); if (this.renderConfig.className) this.animationItem.container.setAttribute("class", this.renderConfig.className); if (this.renderConfig.id) this.animationItem.container.setAttribute("id", this.renderConfig.id); } else this.canvasContext = this.renderConfig.context; this.contextData.setContext(this.canvasContext); this.data = animData; this.layers = animData.layers; this.transformCanvas = { w: animData.w, h: animData.h, sx: 0, sy: 0, tx: 0, ty: 0 }; this.setupGlobalData(animData, document.body); this.globalData.canvasContext = this.canvasContext; this.globalData.renderer = this; this.globalData.isDashed = false; this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; this.globalData.transformCanvas = this.transformCanvas; this.elements = createSizedArray(animData.layers.length); this.updateContainerSize(); }; CanvasRendererBase.prototype.updateContainerSize = function(width, height) { this.reset(); var elementWidth; var elementHeight; if (width) { elementWidth = width; elementHeight = height; this.canvasContext.canvas.width = elementWidth; this.canvasContext.canvas.height = elementHeight; } else { if (this.animationItem.wrapper && this.animationItem.container) { elementWidth = this.animationItem.wrapper.offsetWidth; elementHeight = this.animationItem.wrapper.offsetHeight; } else { elementWidth = this.canvasContext.canvas.width; elementHeight = this.canvasContext.canvas.height; } this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr; this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr; } var elementRel; var animationRel; if (this.renderConfig.preserveAspectRatio.indexOf("meet") !== -1 || this.renderConfig.preserveAspectRatio.indexOf("slice") !== -1) { var par = this.renderConfig.preserveAspectRatio.split(" "); var fillType = par[1] || "meet"; var pos = par[0] || "xMidYMid"; var xPos = pos.substr(0, 4); var yPos = pos.substr(4); elementRel = elementWidth / elementHeight; animationRel = this.transformCanvas.w / this.transformCanvas.h; if (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice") { this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); } else { this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); } if (xPos === "xMid" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr; else if (xPos === "xMax" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr; else this.transformCanvas.tx = 0; if (yPos === "YMid" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr; else if (yPos === "YMax" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr; else this.transformCanvas.ty = 0; } else if (this.renderConfig.preserveAspectRatio === "none") { this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); this.transformCanvas.tx = 0; this.transformCanvas.ty = 0; } else { this.transformCanvas.sx = this.renderConfig.dpr; this.transformCanvas.sy = this.renderConfig.dpr; this.transformCanvas.tx = 0; this.transformCanvas.ty = 0; } 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 ]; this.ctxTransform(this.transformCanvas.props); this.canvasContext.beginPath(); this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h); this.canvasContext.closePath(); this.canvasContext.clip(); this.renderFrame(this.renderedFrame, true); }; CanvasRendererBase.prototype.destroy = function() { if (this.renderConfig.clearCanvas && this.animationItem.wrapper) this.animationItem.wrapper.innerText = ""; var i; for (i = (this.layers ? this.layers.length : 0) - 1; i >= 0; i -= 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy(); this.elements.length = 0; this.globalData.canvasContext = null; this.animationItem.container = null; this.destroyed = true; }; CanvasRendererBase.prototype.renderFrame = function(num, forceRender) { if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) return; this.renderedFrame = num; this.globalData.frameNum = num - this.animationItem._isFirstFrame; this.globalData.frameId += 1; this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender; this.globalData.projectInterface.currentFrame = num; var i; var len = this.layers.length; if (!this.completeLayers) this.checkLayers(num); for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].prepareFrame(num - this.layers[i].st); if (this.globalData._mdf) { if (this.renderConfig.clearCanvas === true) this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h); else this.save(); for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame(); if (this.renderConfig.clearCanvas !== true) this.restore(); } }; CanvasRendererBase.prototype.buildItem = function(pos) { var elements = this.elements; if (elements[pos] || this.layers[pos].ty === 99) return; var element = this.createItem(this.layers[pos], this, this.globalData); elements[pos] = element; element.initExpressions(); }; CanvasRendererBase.prototype.checkPendingElements = function() { while (this.pendingElements.length) this.pendingElements.pop().checkParenting(); }; CanvasRendererBase.prototype.hide = function() { this.animationItem.container.style.display = "none"; }; CanvasRendererBase.prototype.show = function() { this.animationItem.container.style.display = "block"; }; function CanvasContext() { this.opacity = -1; this.transform = createTypedArray("float32", 16); this.fillStyle = ""; this.strokeStyle = ""; this.lineWidth = ""; this.lineCap = ""; this.lineJoin = ""; this.miterLimit = ""; this.id = Math.random(); } function CVContextData() { this.stack = []; this.cArrPos = 0; this.cTr = new Matrix(); var i; var len = 15; for (i = 0; i < len; i += 1) { var canvasContext = new CanvasContext(); this.stack[i] = canvasContext; } this._length = len; this.nativeContext = null; this.transformMat = new Matrix(); this.currentOpacity = 1; this.currentFillStyle = ""; this.appliedFillStyle = ""; this.currentStrokeStyle = ""; this.appliedStrokeStyle = ""; this.currentLineWidth = ""; this.appliedLineWidth = ""; this.currentLineCap = ""; this.appliedLineCap = ""; this.currentLineJoin = ""; this.appliedLineJoin = ""; this.appliedMiterLimit = ""; this.currentMiterLimit = ""; } CVContextData.prototype.duplicate = function() { var newLength = this._length * 2; var i = 0; for (i = this._length; i < newLength; i += 1) this.stack[i] = new CanvasContext(); this._length = newLength; }; CVContextData.prototype.reset = function() { this.cArrPos = 0; this.cTr.reset(); this.stack[this.cArrPos].opacity = 1; }; CVContextData.prototype.restore = function(forceRestore) { this.cArrPos -= 1; var currentContext = this.stack[this.cArrPos]; var transform = currentContext.transform; var i; var arr = this.cTr.props; for (i = 0; i < 16; i += 1) arr[i] = transform[i]; if (forceRestore) { this.nativeContext.restore(); var prevStack = this.stack[this.cArrPos + 1]; this.appliedFillStyle = prevStack.fillStyle; this.appliedStrokeStyle = prevStack.strokeStyle; this.appliedLineWidth = prevStack.lineWidth; this.appliedLineCap = prevStack.lineCap; this.appliedLineJoin = prevStack.lineJoin; this.appliedMiterLimit = prevStack.miterLimit; } this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]); if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) { this.nativeContext.globalAlpha = currentContext.opacity; this.currentOpacity = currentContext.opacity; } this.currentFillStyle = currentContext.fillStyle; this.currentStrokeStyle = currentContext.strokeStyle; this.currentLineWidth = currentContext.lineWidth; this.currentLineCap = currentContext.lineCap; this.currentLineJoin = currentContext.lineJoin; this.currentMiterLimit = currentContext.miterLimit; }; CVContextData.prototype.save = function(saveOnNativeFlag) { if (saveOnNativeFlag) this.nativeContext.save(); var props = this.cTr.props; if (this._length <= this.cArrPos) this.duplicate(); var currentStack = this.stack[this.cArrPos]; var i; for (i = 0; i < 16; i += 1) currentStack.transform[i] = props[i]; this.cArrPos += 1; var newStack = this.stack[this.cArrPos]; newStack.opacity = currentStack.opacity; newStack.fillStyle = currentStack.fillStyle; newStack.strokeStyle = currentStack.strokeStyle; newStack.lineWidth = currentStack.lineWidth; newStack.lineCap = currentStack.lineCap; newStack.lineJoin = currentStack.lineJoin; newStack.miterLimit = currentStack.miterLimit; }; CVContextData.prototype.setOpacity = function(value) { this.stack[this.cArrPos].opacity = value; }; CVContextData.prototype.setContext = function(value) { this.nativeContext = value; }; CVContextData.prototype.fillStyle = function(value) { if (this.stack[this.cArrPos].fillStyle !== value) { this.currentFillStyle = value; this.stack[this.cArrPos].fillStyle = value; } }; CVContextData.prototype.strokeStyle = function(value) { if (this.stack[this.cArrPos].strokeStyle !== value) { this.currentStrokeStyle = value; this.stack[this.cArrPos].strokeStyle = value; } }; CVContextData.prototype.lineWidth = function(value) { if (this.stack[this.cArrPos].lineWidth !== value) { this.currentLineWidth = value; this.stack[this.cArrPos].lineWidth = value; } }; CVContextData.prototype.lineCap = function(value) { if (this.stack[this.cArrPos].lineCap !== value) { this.currentLineCap = value; this.stack[this.cArrPos].lineCap = value; } }; CVContextData.prototype.lineJoin = function(value) { if (this.stack[this.cArrPos].lineJoin !== value) { this.currentLineJoin = value; this.stack[this.cArrPos].lineJoin = value; } }; CVContextData.prototype.miterLimit = function(value) { if (this.stack[this.cArrPos].miterLimit !== value) { this.currentMiterLimit = value; this.stack[this.cArrPos].miterLimit = value; } }; CVContextData.prototype.transform = function(props) { this.transformMat.cloneFromProps(props); var currentTransform = this.cTr; this.transformMat.multiply(currentTransform); currentTransform.cloneFromProps(this.transformMat.props); var trProps = currentTransform.props; this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]); }; CVContextData.prototype.opacity = function(op) { var currentOpacity = this.stack[this.cArrPos].opacity; currentOpacity *= op < 0 ? 0 : op; if (this.stack[this.cArrPos].opacity !== currentOpacity) { if (this.currentOpacity !== op) { this.nativeContext.globalAlpha = op; this.currentOpacity = op; } this.stack[this.cArrPos].opacity = currentOpacity; } }; CVContextData.prototype.fill = function(rule) { if (this.appliedFillStyle !== this.currentFillStyle) { this.appliedFillStyle = this.currentFillStyle; this.nativeContext.fillStyle = this.appliedFillStyle; } this.nativeContext.fill(rule); }; CVContextData.prototype.fillRect = function(x, y, w, h) { if (this.appliedFillStyle !== this.currentFillStyle) { this.appliedFillStyle = this.currentFillStyle; this.nativeContext.fillStyle = this.appliedFillStyle; } this.nativeContext.fillRect(x, y, w, h); }; CVContextData.prototype.stroke = function() { if (this.appliedStrokeStyle !== this.currentStrokeStyle) { this.appliedStrokeStyle = this.currentStrokeStyle; this.nativeContext.strokeStyle = this.appliedStrokeStyle; } if (this.appliedLineWidth !== this.currentLineWidth) { this.appliedLineWidth = this.currentLineWidth; this.nativeContext.lineWidth = this.appliedLineWidth; } if (this.appliedLineCap !== this.currentLineCap) { this.appliedLineCap = this.currentLineCap; this.nativeContext.lineCap = this.appliedLineCap; } if (this.appliedLineJoin !== this.currentLineJoin) { this.appliedLineJoin = this.currentLineJoin; this.nativeContext.lineJoin = this.appliedLineJoin; } if (this.appliedMiterLimit !== this.currentMiterLimit) { this.appliedMiterLimit = this.currentMiterLimit; this.nativeContext.miterLimit = this.appliedMiterLimit; } this.nativeContext.stroke(); }; function CVCompElement(data, globalData, comp) { this.completeLayers = false; this.layers = data.layers; this.pendingElements = []; this.elements = createSizedArray(this.layers.length); this.initElement(data, globalData, comp); this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; } extendPrototype([ CanvasRendererBase, ICompElement, CVBaseElement ], CVCompElement); CVCompElement.prototype.renderInnerContent = function() { var ctx = this.canvasContext; ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(this.data.w, 0); ctx.lineTo(this.data.w, this.data.h); ctx.lineTo(0, this.data.h); ctx.lineTo(0, 0); ctx.clip(); var i; for (i = this.layers.length - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame(); }; CVCompElement.prototype.destroy = function() { var i; for (i = this.layers.length - 1; i >= 0; i -= 1) if (this.elements[i]) this.elements[i].destroy(); this.layers = null; this.elements = null; }; CVCompElement.prototype.createComp = function(data) { return new CVCompElement(data, this.globalData, this); }; function CanvasRenderer(animationItem, config) { this.animationItem = animationItem; this.renderConfig = { clearCanvas: config && config.clearCanvas !== void 0 ? config.clearCanvas : true, context: config && config.context || null, progressiveLoad: config && config.progressiveLoad || false, preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet", imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", contentVisibility: config && config.contentVisibility || "visible", className: config && config.className || "", id: config && config.id || "", runExpressions: !config || config.runExpressions === void 0 || config.runExpressions }; this.renderConfig.dpr = config && config.dpr || 1; if (this.animationItem.wrapper) this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1; this.renderedFrame = -1; this.globalData = { frameNum: -1, _mdf: false, renderConfig: this.renderConfig, currentGlobalAlpha: -1 }; this.contextData = new CVContextData(); this.elements = []; this.pendingElements = []; this.transformMat = new Matrix(); this.completeLayers = false; this.rendererType = "canvas"; if (this.renderConfig.clearCanvas) { this.ctxTransform = this.contextData.transform.bind(this.contextData); this.ctxOpacity = this.contextData.opacity.bind(this.contextData); this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData); this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData); this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData); this.ctxLineCap = this.contextData.lineCap.bind(this.contextData); this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData); this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData); this.ctxFill = this.contextData.fill.bind(this.contextData); this.ctxFillRect = this.contextData.fillRect.bind(this.contextData); this.ctxStroke = this.contextData.stroke.bind(this.contextData); this.save = this.contextData.save.bind(this.contextData); } } extendPrototype([CanvasRendererBase], CanvasRenderer); CanvasRenderer.prototype.createComp = function(data) { return new CVCompElement(data, this.globalData, this); }; function HBaseElement() {} HBaseElement.prototype = { checkBlendMode: function checkBlendMode() {}, initRendererElement: function initRendererElement() { this.baseElement = createTag(this.data.tg || "div"); if (this.data.hasMask) { this.svgElement = createNS("svg"); this.layerElement = createNS("g"); this.maskedElement = this.layerElement; this.svgElement.appendChild(this.layerElement); this.baseElement.appendChild(this.svgElement); } else this.layerElement = this.baseElement; styleDiv(this.baseElement); }, createContainerElements: function createContainerElements() { this.renderableEffectsManager = new CVEffects(this); this.transformedElement = this.baseElement; this.maskedElement = this.layerElement; if (this.data.ln) this.layerElement.setAttribute("id", this.data.ln); if (this.data.cl) this.layerElement.setAttribute("class", this.data.cl); if (this.data.bm !== 0) this.setBlendMode(); }, renderElement: function renderElement() { var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {}; if (this.finalTransform._matMdf) { var matrixValue = this.finalTransform.mat.toCSS(); transformedElementStyle.transform = matrixValue; transformedElementStyle.webkitTransform = matrixValue; } if (this.finalTransform._opMdf) transformedElementStyle.opacity = this.finalTransform.mProp.o.v; }, renderFrame: function renderFrame() { if (this.data.hd || this.hidden) return; this.renderTransform(); this.renderRenderable(); this.renderElement(); this.renderInnerContent(); if (this._isFirstFrame) this._isFirstFrame = false; }, destroy: function destroy() { this.layerElement = null; this.transformedElement = null; if (this.matteElement) this.matteElement = null; if (this.maskManager) { this.maskManager.destroy(); this.maskManager = null; } }, createRenderableComponents: function createRenderableComponents() { this.maskManager = new MaskElement(this.data, this, this.globalData); }, addEffects: function addEffects() {}, setMatte: function setMatte() {} }; HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement; HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy; HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting; function HSolidElement(data, globalData, comp) { this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement ], HSolidElement); HSolidElement.prototype.createContent = function() { var rect; if (this.data.hasMask) { rect = createNS("rect"); rect.setAttribute("width", this.data.sw); rect.setAttribute("height", this.data.sh); rect.setAttribute("fill", this.data.sc); this.svgElement.setAttribute("width", this.data.sw); this.svgElement.setAttribute("height", this.data.sh); } else { rect = createTag("div"); rect.style.width = this.data.sw + "px"; rect.style.height = this.data.sh + "px"; rect.style.backgroundColor = this.data.sc; } this.layerElement.appendChild(rect); }; function HShapeElement(data, globalData, comp) { this.shapes = []; this.shapesData = data.shapes; this.stylesList = []; this.shapeModifiers = []; this.itemsData = []; this.processedElements = []; this.animatedContents = []; this.shapesContainer = createNS("g"); this.initElement(data, globalData, comp); this.prevViewData = []; this.currentBBox = { x: 999999, y: -999999, h: 0, w: 0 }; } extendPrototype([ BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement ], HShapeElement); HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent; HShapeElement.prototype.createContent = function() { var cont; this.baseElement.style.fontSize = 0; if (this.data.hasMask) { this.layerElement.appendChild(this.shapesContainer); cont = this.svgElement; } else { cont = createNS("svg"); var size = this.comp.data ? this.comp.data : this.globalData.compSize; cont.setAttribute("width", size.w); cont.setAttribute("height", size.h); cont.appendChild(this.shapesContainer); this.layerElement.appendChild(cont); } this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true); this.filterUniqueShapes(); this.shapeCont = cont; }; HShapeElement.prototype.getTransformedPoint = function(transformers, point) { var i; var len = transformers.length; for (i = 0; i < len; i += 1) point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0); return point; }; HShapeElement.prototype.calculateShapeBoundingBox = function(item, boundingBox) { var shape = item.sh.v; var transformers = item.transformers; var i; var len = shape._length; var vPoint; var oPoint; var nextIPoint; var nextVPoint; if (len <= 1) return; for (i = 0; i < len - 1; i += 1) { vPoint = this.getTransformedPoint(transformers, shape.v[i]); oPoint = this.getTransformedPoint(transformers, shape.o[i]); nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]); nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]); this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox); } if (shape.c) { vPoint = this.getTransformedPoint(transformers, shape.v[i]); oPoint = this.getTransformedPoint(transformers, shape.o[i]); nextIPoint = this.getTransformedPoint(transformers, shape.i[0]); nextVPoint = this.getTransformedPoint(transformers, shape.v[0]); this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox); } }; HShapeElement.prototype.checkBounds = function(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) { this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint); var bounds = this.shapeBoundingBox; boundingBox.x = bmMin(bounds.left, boundingBox.x); boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax); boundingBox.y = bmMin(bounds.top, boundingBox.y); boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax); }; HShapeElement.prototype.shapeBoundingBox = { left: 0, right: 0, top: 0, bottom: 0 }; HShapeElement.prototype.tempBoundingBox = { x: 0, xMax: 0, y: 0, yMax: 0, width: 0, height: 0 }; HShapeElement.prototype.getBoundsOfCurve = function(p0, p1, p2, p3) { var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]]; for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; c = 3 * p1[i] - 3 * p0[i]; b |= 0; a |= 0; c |= 0; if (a === 0 && b === 0) {} else if (a === 0) { t = -c / b; if (t > 0 && t < 1) bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i)); } else { b2ac = b * b - 4 * c * a; if (b2ac >= 0) { t1 = (-b + bmSqrt(b2ac)) / (2 * a); if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i)); t2 = (-b - bmSqrt(b2ac)) / (2 * a); if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i)); } } } this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]); this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]); this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]); this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]); }; HShapeElement.prototype.calculateF = function(t, p0, p1, p2, p3, i) { 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]; }; HShapeElement.prototype.calculateBoundingBox = function(itemsData, boundingBox) { var i; var len = itemsData.length; for (i = 0; i < len; i += 1) if (itemsData[i] && itemsData[i].sh) this.calculateShapeBoundingBox(itemsData[i], boundingBox); else if (itemsData[i] && itemsData[i].it) this.calculateBoundingBox(itemsData[i].it, boundingBox); else if (itemsData[i] && itemsData[i].style && itemsData[i].w) this.expandStrokeBoundingBox(itemsData[i].w, boundingBox); }; HShapeElement.prototype.expandStrokeBoundingBox = function(widthProperty, boundingBox) { var width = 0; if (widthProperty.keyframes) { for (var i = 0; i < widthProperty.keyframes.length; i += 1) { var kfw = widthProperty.keyframes[i].s; if (kfw > width) width = kfw; } width *= widthProperty.mult; } else width = widthProperty.v * widthProperty.mult; boundingBox.x -= width; boundingBox.xMax += width; boundingBox.y -= width; boundingBox.yMax += width; }; HShapeElement.prototype.currentBoxContains = function(box) { 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; }; HShapeElement.prototype.renderInnerContent = function() { this._renderShapeFrame(); if (!this.hidden && (this._isFirstFrame || this._mdf)) { var tempBoundingBox = this.tempBoundingBox; var max = 999999; tempBoundingBox.x = max; tempBoundingBox.xMax = -max; tempBoundingBox.y = max; tempBoundingBox.yMax = -max; this.calculateBoundingBox(this.itemsData, tempBoundingBox); tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x; tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; if (this.currentBoxContains(tempBoundingBox)) return; var changed = false; if (this.currentBBox.w !== tempBoundingBox.width) { this.currentBBox.w = tempBoundingBox.width; this.shapeCont.setAttribute("width", tempBoundingBox.width); changed = true; } if (this.currentBBox.h !== tempBoundingBox.height) { this.currentBBox.h = tempBoundingBox.height; this.shapeCont.setAttribute("height", tempBoundingBox.height); changed = true; } if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) { this.currentBBox.w = tempBoundingBox.width; this.currentBBox.h = tempBoundingBox.height; this.currentBBox.x = tempBoundingBox.x; this.currentBBox.y = tempBoundingBox.y; this.shapeCont.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h); var shapeStyle = this.shapeCont.style; var shapeTransform = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)"; shapeStyle.transform = shapeTransform; shapeStyle.webkitTransform = shapeTransform; } } }; function HTextElement(data, globalData, comp) { this.textSpans = []; this.textPaths = []; this.currentBBox = { x: 999999, y: -999999, h: 0, w: 0 }; this.renderType = "svg"; this.isMasked = false; this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement ], HTextElement); HTextElement.prototype.createContent = function() { this.isMasked = this.checkMasks(); if (this.isMasked) { this.renderType = "svg"; this.compW = this.comp.data.w; this.compH = this.comp.data.h; this.svgElement.setAttribute("width", this.compW); this.svgElement.setAttribute("height", this.compH); var g = createNS("g"); this.maskedElement.appendChild(g); this.innerElem = g; } else { this.renderType = "html"; this.innerElem = this.layerElement; } this.checkParenting(); }; HTextElement.prototype.buildNewText = function() { var documentData = this.textProperty.currentData; this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0); var innerElemStyle = this.innerElem.style; var textColor = documentData.fc ? this.buildColor(documentData.fc) : "rgba(0,0,0,0)"; innerElemStyle.fill = textColor; innerElemStyle.color = textColor; if (documentData.sc) { innerElemStyle.stroke = this.buildColor(documentData.sc); innerElemStyle.strokeWidth = documentData.sw + "px"; } var fontData = this.globalData.fontManager.getFontByName(documentData.f); if (!this.globalData.fontManager.chars) { innerElemStyle.fontSize = documentData.finalSize + "px"; innerElemStyle.lineHeight = documentData.finalSize + "px"; if (fontData.fClass) this.innerElem.className = fontData.fClass; else { innerElemStyle.fontFamily = fontData.fFamily; var fWeight = documentData.fWeight; innerElemStyle.fontStyle = documentData.fStyle; innerElemStyle.fontWeight = fWeight; } } var i; var len; var letters = documentData.l; len = letters.length; var tSpan; var tParent; var tCont; var matrixHelper = this.mHelper; var shapes; var shapeStr = ""; var cnt = 0; for (i = 0; i < len; i += 1) { if (this.globalData.fontManager.chars) { if (!this.textPaths[cnt]) { tSpan = createNS("path"); tSpan.setAttribute("stroke-linecap", lineCapEnum[1]); tSpan.setAttribute("stroke-linejoin", lineJoinEnum[2]); tSpan.setAttribute("stroke-miterlimit", "4"); } else tSpan = this.textPaths[cnt]; if (!this.isMasked) if (this.textSpans[cnt]) { tParent = this.textSpans[cnt]; tCont = tParent.children[0]; } else { tParent = createTag("div"); tParent.style.lineHeight = 0; tCont = createNS("svg"); tCont.appendChild(tSpan); styleDiv(tParent); } } else if (!this.isMasked) if (this.textSpans[cnt]) { tParent = this.textSpans[cnt]; tSpan = this.textPaths[cnt]; } else { tParent = createTag("span"); styleDiv(tParent); tSpan = createTag("span"); styleDiv(tSpan); tParent.appendChild(tSpan); } else tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS("text"); if (this.globalData.fontManager.chars) { var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); var shapeData; if (charData) shapeData = charData.data; else shapeData = null; matrixHelper.reset(); if (shapeData && shapeData.shapes && shapeData.shapes.length) { shapes = shapeData.shapes[0].it; matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100); shapeStr = this.createPathShape(matrixHelper, shapes); tSpan.setAttribute("d", shapeStr); } if (!this.isMasked) { this.innerElem.appendChild(tParent); if (shapeData && shapeData.shapes) { document.body.appendChild(tCont); var boundingBox = tCont.getBBox(); tCont.setAttribute("width", boundingBox.width + 2); tCont.setAttribute("height", boundingBox.height + 2); tCont.setAttribute("viewBox", boundingBox.x - 1 + " " + (boundingBox.y - 1) + " " + (boundingBox.width + 2) + " " + (boundingBox.height + 2)); var tContStyle = tCont.style; var tContTranslation = "translate(" + (boundingBox.x - 1) + "px," + (boundingBox.y - 1) + "px)"; tContStyle.transform = tContTranslation; tContStyle.webkitTransform = tContTranslation; letters[i].yOffset = boundingBox.y - 1; } else { tCont.setAttribute("width", 1); tCont.setAttribute("height", 1); } tParent.appendChild(tCont); } else this.innerElem.appendChild(tSpan); } else { tSpan.textContent = letters[i].val; tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"); if (!this.isMasked) { this.innerElem.appendChild(tParent); var tStyle = tSpan.style; var tSpanTranslation = "translate3d(0," + -documentData.finalSize / 1.2 + "px,0)"; tStyle.transform = tSpanTranslation; tStyle.webkitTransform = tSpanTranslation; } else this.innerElem.appendChild(tSpan); } if (!this.isMasked) this.textSpans[cnt] = tParent; else this.textSpans[cnt] = tSpan; this.textSpans[cnt].style.display = "block"; this.textPaths[cnt] = tSpan; cnt += 1; } while (cnt < this.textSpans.length) { this.textSpans[cnt].style.display = "none"; cnt += 1; } }; HTextElement.prototype.renderInnerContent = function() { this.validateText(); var svgStyle; if (this.data.singleShape) { if (!this._isFirstFrame && !this.lettersChangedFlag) return; if (this.isMasked && this.finalTransform._matMdf) { this.svgElement.setAttribute("viewBox", -this.finalTransform.mProp.p.v[0] + " " + -this.finalTransform.mProp.p.v[1] + " " + this.compW + " " + this.compH); svgStyle = this.svgElement.style; var translation = "translate(" + -this.finalTransform.mProp.p.v[0] + "px," + -this.finalTransform.mProp.p.v[1] + "px)"; svgStyle.transform = translation; svgStyle.webkitTransform = translation; } } this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) return; var i; var len; var count = 0; var renderedLetters = this.textAnimator.renderedLetters; var letters = this.textProperty.currentData.l; len = letters.length; var renderedLetter; var textSpan; var textPath; for (i = 0; i < len; i += 1) if (letters[i].n) count += 1; else { textSpan = this.textSpans[i]; textPath = this.textPaths[i]; renderedLetter = renderedLetters[count]; count += 1; if (renderedLetter._mdf.m) if (!this.isMasked) { textSpan.style.webkitTransform = renderedLetter.m; textSpan.style.transform = renderedLetter.m; } else textSpan.setAttribute("transform", renderedLetter.m); textSpan.style.opacity = renderedLetter.o; if (renderedLetter.sw && renderedLetter._mdf.sw) textPath.setAttribute("stroke-width", renderedLetter.sw); if (renderedLetter.sc && renderedLetter._mdf.sc) textPath.setAttribute("stroke", renderedLetter.sc); if (renderedLetter.fc && renderedLetter._mdf.fc) { textPath.setAttribute("fill", renderedLetter.fc); textPath.style.color = renderedLetter.fc; } } if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) { var boundingBox = this.innerElem.getBBox(); if (this.currentBBox.w !== boundingBox.width) { this.currentBBox.w = boundingBox.width; this.svgElement.setAttribute("width", boundingBox.width); } if (this.currentBBox.h !== boundingBox.height) { this.currentBBox.h = boundingBox.height; this.svgElement.setAttribute("height", boundingBox.height); } var margin = 1; 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) { 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; this.svgElement.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h); svgStyle = this.svgElement.style; var svgTransform = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)"; svgStyle.transform = svgTransform; svgStyle.webkitTransform = svgTransform; } } }; function HCameraElement(data, globalData, comp) { this.initFrame(); this.initBaseData(data, globalData, comp); this.initHierarchy(); var getProp = PropertyFactory.getProp; this.pe = getProp(this, data.pe, 0, 0, this); if (data.ks.p.s) { this.px = getProp(this, data.ks.p.x, 1, 0, this); this.py = getProp(this, data.ks.p.y, 1, 0, this); this.pz = getProp(this, data.ks.p.z, 1, 0, this); } else this.p = getProp(this, data.ks.p, 1, 0, this); if (data.ks.a) this.a = getProp(this, data.ks.a, 1, 0, this); if (data.ks.or.k.length && data.ks.or.k[0].to) { var i; var len = data.ks.or.k.length; for (i = 0; i < len; i += 1) { data.ks.or.k[i].to = null; data.ks.or.k[i].ti = null; } } this.or = getProp(this, data.ks.or, 1, degToRads, this); this.or.sh = true; this.rx = getProp(this, data.ks.rx, 0, degToRads, this); this.ry = getProp(this, data.ks.ry, 0, degToRads, this); this.rz = getProp(this, data.ks.rz, 0, degToRads, this); this.mat = new Matrix(); this._prevMat = new Matrix(); this._isFirstFrame = true; this.finalTransform = { mProp: this }; } extendPrototype([ BaseElement, FrameElement, HierarchyElement ], HCameraElement); HCameraElement.prototype.setup = function() { var i; var len = this.comp.threeDElements.length; var comp; var perspectiveStyle; var containerStyle; for (i = 0; i < len; i += 1) { comp = this.comp.threeDElements[i]; if (comp.type === "3d") { perspectiveStyle = comp.perspectiveElem.style; containerStyle = comp.container.style; var perspective = this.pe.v + "px"; var origin = "0px 0px 0px"; var matrix = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)"; perspectiveStyle.perspective = perspective; perspectiveStyle.webkitPerspective = perspective; containerStyle.transformOrigin = origin; containerStyle.mozTransformOrigin = origin; containerStyle.webkitTransformOrigin = origin; perspectiveStyle.transform = matrix; perspectiveStyle.webkitTransform = matrix; } } }; HCameraElement.prototype.createElements = function() {}; HCameraElement.prototype.hide = function() {}; HCameraElement.prototype.renderFrame = function() { var _mdf = this._isFirstFrame; var i; var len; if (this.hierarchy) { len = this.hierarchy.length; for (i = 0; i < len; i += 1) _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf; } 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) { this.mat.reset(); if (this.hierarchy) { len = this.hierarchy.length - 1; for (i = len; i >= 0; i -= 1) { var mTransf = this.hierarchy[i].finalTransform.mProp; this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]); this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]); this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v); this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]); this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]); } } if (this.p) this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]); else this.mat.translate(-this.px.v, -this.py.v, this.pz.v); if (this.a) { var diffVector; if (this.p) 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] ]; else diffVector = [ this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2] ]; var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); var lookDir = [ diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag ]; var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]); var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ); var mRotationY = Math.atan2(lookDir[0], -lookDir[2]); this.mat.rotateY(mRotationY).rotateX(-mRotationX); } this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v); this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]); this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0); this.mat.translate(0, 0, this.pe.v); var hasMatrixChanged = !this._prevMat.equals(this.mat); if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) { len = this.comp.threeDElements.length; var comp; var perspectiveStyle; var containerStyle; for (i = 0; i < len; i += 1) { comp = this.comp.threeDElements[i]; if (comp.type === "3d") { if (hasMatrixChanged) { var matValue = this.mat.toCSS(); containerStyle = comp.container.style; containerStyle.transform = matValue; containerStyle.webkitTransform = matValue; } if (this.pe._mdf) { perspectiveStyle = comp.perspectiveElem.style; perspectiveStyle.perspective = this.pe.v + "px"; perspectiveStyle.webkitPerspective = this.pe.v + "px"; } } } this.mat.clone(this._prevMat); } } this._isFirstFrame = false; }; HCameraElement.prototype.prepareFrame = function(num) { this.prepareProperties(num, true); }; HCameraElement.prototype.destroy = function() {}; HCameraElement.prototype.getBaseElement = function() { return null; }; function HImageElement(data, globalData, comp) { this.assetData = globalData.getAssetData(data.refId); this.initElement(data, globalData, comp); } extendPrototype([ BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement ], HImageElement); HImageElement.prototype.createContent = function() { var assetPath = this.globalData.getAssetsPath(this.assetData); var img = new Image(); if (this.data.hasMask) { this.imageElem = createNS("image"); this.imageElem.setAttribute("width", this.assetData.w + "px"); this.imageElem.setAttribute("height", this.assetData.h + "px"); this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", assetPath); this.layerElement.appendChild(this.imageElem); this.baseElement.setAttribute("width", this.assetData.w); this.baseElement.setAttribute("height", this.assetData.h); } else this.layerElement.appendChild(img); img.crossOrigin = "anonymous"; img.src = assetPath; if (this.data.ln) this.baseElement.setAttribute("id", this.data.ln); }; function HybridRendererBase(animationItem, config) { this.animationItem = animationItem; this.layers = null; this.renderedFrame = -1; this.renderConfig = { className: config && config.className || "", imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", hideOnTransparent: !(config && config.hideOnTransparent === false), filterSize: { width: config && config.filterSize && config.filterSize.width || "400%", height: config && config.filterSize && config.filterSize.height || "400%", x: config && config.filterSize && config.filterSize.x || "-100%", y: config && config.filterSize && config.filterSize.y || "-100%" } }; this.globalData = { _mdf: false, frameNum: -1, renderConfig: this.renderConfig }; this.pendingElements = []; this.elements = []; this.threeDElements = []; this.destroyed = false; this.camera = null; this.supports3d = true; this.rendererType = "html"; } extendPrototype([BaseRenderer], HybridRendererBase); HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem; HybridRendererBase.prototype.checkPendingElements = function() { while (this.pendingElements.length) this.pendingElements.pop().checkParenting(); }; HybridRendererBase.prototype.appendElementInPos = function(element, pos) { var newDOMElement = element.getBaseElement(); if (!newDOMElement) return; var layer = this.layers[pos]; if (!layer.ddd || !this.supports3d) if (this.threeDElements) this.addTo3dContainer(newDOMElement, pos); else { var i = 0; var nextDOMElement; var nextLayer; var tmpDOMElement; while (i < pos) { if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) { nextLayer = this.elements[i]; tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement(); nextDOMElement = tmpDOMElement || nextDOMElement; } i += 1; } if (nextDOMElement) { if (!layer.ddd || !this.supports3d) this.layerElement.insertBefore(newDOMElement, nextDOMElement); } else if (!layer.ddd || !this.supports3d) this.layerElement.appendChild(newDOMElement); } else this.addTo3dContainer(newDOMElement, pos); }; HybridRendererBase.prototype.createShape = function(data) { if (!this.supports3d) return new SVGShapeElement(data, this.globalData, this); return new HShapeElement(data, this.globalData, this); }; HybridRendererBase.prototype.createText = function(data) { if (!this.supports3d) return new SVGTextLottieElement(data, this.globalData, this); return new HTextElement(data, this.globalData, this); }; HybridRendererBase.prototype.createCamera = function(data) { this.camera = new HCameraElement(data, this.globalData, this); return this.camera; }; HybridRendererBase.prototype.createImage = function(data) { if (!this.supports3d) return new IImageElement(data, this.globalData, this); return new HImageElement(data, this.globalData, this); }; HybridRendererBase.prototype.createSolid = function(data) { if (!this.supports3d) return new ISolidElement(data, this.globalData, this); return new HSolidElement(data, this.globalData, this); }; HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull; HybridRendererBase.prototype.getThreeDContainerByPos = function(pos) { var i = 0; var len = this.threeDElements.length; while (i < len) { if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) return this.threeDElements[i].perspectiveElem; i += 1; } return null; }; HybridRendererBase.prototype.createThreeDContainer = function(pos, type) { var perspectiveElem = createTag("div"); var style; var containerStyle; styleDiv(perspectiveElem); var container = createTag("div"); styleDiv(container); if (type === "3d") { style = perspectiveElem.style; style.width = this.globalData.compSize.w + "px"; style.height = this.globalData.compSize.h + "px"; var center = "50% 50%"; style.webkitTransformOrigin = center; style.mozTransformOrigin = center; style.transformOrigin = center; containerStyle = container.style; var matrix = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)"; containerStyle.transform = matrix; containerStyle.webkitTransform = matrix; } perspectiveElem.appendChild(container); var threeDContainerData = { container, perspectiveElem, startPos: pos, endPos: pos, type }; this.threeDElements.push(threeDContainerData); return threeDContainerData; }; HybridRendererBase.prototype.build3dContainers = function() { var i; var len = this.layers.length; var lastThreeDContainerData; var currentContainer = ""; for (i = 0; i < len; i += 1) if (this.layers[i].ddd && this.layers[i].ty !== 3) { if (currentContainer !== "3d") { currentContainer = "3d"; lastThreeDContainerData = this.createThreeDContainer(i, "3d"); } lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i); } else { if (currentContainer !== "2d") { currentContainer = "2d"; lastThreeDContainerData = this.createThreeDContainer(i, "2d"); } lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i); } len = this.threeDElements.length; for (i = len - 1; i >= 0; i -= 1) this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem); }; HybridRendererBase.prototype.addTo3dContainer = function(elem, pos) { var i = 0; var len = this.threeDElements.length; while (i < len) { if (pos <= this.threeDElements[i].endPos) { var j = this.threeDElements[i].startPos; var nextElement; while (j < pos) { if (this.elements[j] && this.elements[j].getBaseElement) nextElement = this.elements[j].getBaseElement(); j += 1; } if (nextElement) this.threeDElements[i].container.insertBefore(elem, nextElement); else this.threeDElements[i].container.appendChild(elem); break; } i += 1; } }; HybridRendererBase.prototype.configAnimation = function(animData) { var resizerElem = createTag("div"); var wrapper = this.animationItem.wrapper; var style = resizerElem.style; style.width = animData.w + "px"; style.height = animData.h + "px"; this.resizerElem = resizerElem; styleDiv(resizerElem); style.transformStyle = "flat"; style.mozTransformStyle = "flat"; style.webkitTransformStyle = "flat"; if (this.renderConfig.className) resizerElem.setAttribute("class", this.renderConfig.className); wrapper.appendChild(resizerElem); style.overflow = "hidden"; var svg = createNS("svg"); svg.setAttribute("width", "1"); svg.setAttribute("height", "1"); styleDiv(svg); this.resizerElem.appendChild(svg); var defs = createNS("defs"); svg.appendChild(defs); this.data = animData; this.setupGlobalData(animData, svg); this.globalData.defs = defs; this.layers = animData.layers; this.layerElement = this.resizerElem; this.build3dContainers(); this.updateContainerSize(); }; HybridRendererBase.prototype.destroy = function() { if (this.animationItem.wrapper) this.animationItem.wrapper.innerText = ""; this.animationItem.container = null; this.globalData.defs = null; var i; var len = this.layers ? this.layers.length : 0; for (i = 0; i < len; i += 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy(); this.elements.length = 0; this.destroyed = true; this.animationItem = null; }; HybridRendererBase.prototype.updateContainerSize = function() { var elementWidth = this.animationItem.wrapper.offsetWidth; var elementHeight = this.animationItem.wrapper.offsetHeight; var elementRel = elementWidth / elementHeight; var animationRel = this.globalData.compSize.w / this.globalData.compSize.h; var sx; var sy; var tx; var ty; if (animationRel > elementRel) { sx = elementWidth / this.globalData.compSize.w; sy = elementWidth / this.globalData.compSize.w; tx = 0; ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2; } else { sx = elementHeight / this.globalData.compSize.h; sy = elementHeight / this.globalData.compSize.h; tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2; ty = 0; } var style = this.resizerElem.style; style.webkitTransform = "matrix3d(" + sx + ",0,0,0,0," + sy + ",0,0,0,0,1,0," + tx + "," + ty + ",0,1)"; style.transform = style.webkitTransform; }; HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame; HybridRendererBase.prototype.hide = function() { this.resizerElem.style.display = "none"; }; HybridRendererBase.prototype.show = function() { this.resizerElem.style.display = "block"; }; HybridRendererBase.prototype.initItems = function() { this.buildAllItems(); if (this.camera) this.camera.setup(); else { var cWidth = this.globalData.compSize.w; var cHeight = this.globalData.compSize.h; var i; var len = this.threeDElements.length; for (i = 0; i < len; i += 1) { var style = this.threeDElements[i].perspectiveElem.style; style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + "px"; style.perspective = style.webkitPerspective; } } }; HybridRendererBase.prototype.searchExtraCompositions = function(assets) { var i; var len = assets.length; var floatingContainer = createTag("div"); for (i = 0; i < len; i += 1) if (assets[i].xt) { var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null); comp.initExpressions(); this.globalData.projectInterface.registerComposition(comp); } }; function HCompElement(data, globalData, comp) { this.layers = data.layers; this.supports3d = !data.hasMask; this.completeLayers = false; this.pendingElements = []; this.elements = this.layers ? createSizedArray(this.layers.length) : []; this.initElement(data, globalData, comp); this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; } extendPrototype([ HybridRendererBase, ICompElement, HBaseElement ], HCompElement); HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements; HCompElement.prototype.createContainerElements = function() { this._createBaseContainerElements(); if (this.data.hasMask) { this.svgElement.setAttribute("width", this.data.w); this.svgElement.setAttribute("height", this.data.h); this.transformedElement = this.baseElement; } else this.transformedElement = this.layerElement; }; HCompElement.prototype.addTo3dContainer = function(elem, pos) { var j = 0; var nextElement; while (j < pos) { if (this.elements[j] && this.elements[j].getBaseElement) nextElement = this.elements[j].getBaseElement(); j += 1; } if (nextElement) this.layerElement.insertBefore(elem, nextElement); else this.layerElement.appendChild(elem); }; HCompElement.prototype.createComp = function(data) { if (!this.supports3d) return new SVGCompElement(data, this.globalData, this); return new HCompElement(data, this.globalData, this); }; function HybridRenderer(animationItem, config) { this.animationItem = animationItem; this.layers = null; this.renderedFrame = -1; this.renderConfig = { className: config && config.className || "", imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", hideOnTransparent: !(config && config.hideOnTransparent === false), filterSize: { width: config && config.filterSize && config.filterSize.width || "400%", height: config && config.filterSize && config.filterSize.height || "400%", x: config && config.filterSize && config.filterSize.x || "-100%", y: config && config.filterSize && config.filterSize.y || "-100%" }, runExpressions: !config || config.runExpressions === void 0 || config.runExpressions }; this.globalData = { _mdf: false, frameNum: -1, renderConfig: this.renderConfig }; this.pendingElements = []; this.elements = []; this.threeDElements = []; this.destroyed = false; this.camera = null; this.supports3d = true; this.rendererType = "html"; } extendPrototype([HybridRendererBase], HybridRenderer); HybridRenderer.prototype.createComp = function(data) { if (!this.supports3d) return new SVGCompElement(data, this.globalData, this); return new HCompElement(data, this.globalData, this); }; var CompExpressionInterface = function() { return function(comp) { function _thisLayerFunction(name) { var i = 0; var len = comp.layers.length; while (i < len) { if (comp.layers[i].nm === name || comp.layers[i].ind === name) return comp.elements[i].layerInterface; i += 1; } return null; } Object.defineProperty(_thisLayerFunction, "_name", { value: comp.data.nm }); _thisLayerFunction.layer = _thisLayerFunction; _thisLayerFunction.pixelAspect = 1; _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h; _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w; _thisLayerFunction.pixelAspect = 1; _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate; _thisLayerFunction.displayStartTime = 0; _thisLayerFunction.numLayers = comp.layers.length; return _thisLayerFunction; }; }(); function _typeof$2(o) { "@babel/helpers - typeof"; return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$2(o); } function seedRandom(pool, math) { var global = this; var width = 256; var chunks = 6; var digits = 52; var rngname = "random"; var startdenom = math.pow(width, chunks); var significance = math.pow(2, digits); var overflow = significance * 2; var mask = width - 1; var nodecrypto; function seedrandom(seed, options, callback) { var key = []; options = options === true ? { entropy: true } : options || {}; var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); var arc4 = new ARC4(key); var prng = function prng() { var n = arc4.g(chunks); var d = startdenom; var x = 0; while (n < significance) { n = (n + x) * width; d *= width; x = arc4.g(1); } while (n >= overflow) { n /= 2; d /= 2; x >>>= 1; } return (n + x) / d; }; prng.int32 = function() { return arc4.g(4) | 0; }; prng.quick = function() { return arc4.g(4) / 4294967296; }; prng["double"] = prng; mixkey(tostring(arc4.S), pool); return (options.pass || callback || function(prng, seed, is_math_call, state) { if (state) { if (state.S) copy(state, arc4); prng.state = function() { return copy(arc4, {}); }; } if (is_math_call) { math[rngname] = prng; return seed; } else return prng; })(prng, shortseed, "global" in options ? options.global : this == math, options.state); } math["seed" + rngname] = seedrandom; function ARC4(key) { var t; var keylen = key.length; var me = this; var i = 0; var j = me.i = me.j = 0; var s = me.S = []; if (!keylen) key = [keylen++]; while (i < width) s[i] = i++; for (i = 0; i < width; i++) { s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; s[j] = t; } me.g = function(count) { var t; var r = 0; var i = me.i; var j = me.j; var s = me.S; while (count--) { t = s[i = mask & i + 1]; r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)]; } me.i = i; me.j = j; return r; }; } function copy(f, t) { t.i = f.i; t.j = f.j; t.S = f.S.slice(); return t; } function flatten(obj, depth) { var result = []; var typ = _typeof$2(obj); var prop; if (depth && typ == "object") for (prop in obj) try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} return result.length ? result : typ == "string" ? obj : obj + "\0"; } function mixkey(seed, key) { var stringseed = seed + ""; var smear; var j = 0; while (j < stringseed.length) key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); return tostring(key); } function autoseed() { try { if (nodecrypto) return tostring(nodecrypto.randomBytes(width)); var out = new Uint8Array(width); (global.crypto || global.msCrypto).getRandomValues(out); return tostring(out); } catch (e) { var browser = global.navigator; var plugins = browser && browser.plugins; return [ +/* @__PURE__ */ new Date(), global, plugins, global.screen, tostring(pool) ]; } } function tostring(a) { return String.fromCharCode.apply(0, a); } mixkey(math.random(), pool); } function initialize$2(BMMath) { seedRandom([], BMMath); } var propTypes = { SHAPE: "shape" }; function _typeof$1(o) { "@babel/helpers - typeof"; return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$1(o); } var ExpressionManager = function() { "use strict"; var ob = {}; var Math = BMMath; var window = null; var document = null; var XMLHttpRequest = null; var fetch = null; var frames = null; var _lottieGlobal = {}; initialize$2(BMMath); function resetFrame() { _lottieGlobal = {}; } function $bm_isInstanceOfArray(arr) { return arr.constructor === Array || arr.constructor === Float32Array; } function isNumerable(tOfV, v) { return tOfV === "number" || v instanceof Number || tOfV === "boolean" || tOfV === "string"; } function $bm_neg(a) { var tOfA = _typeof$1(a); if (tOfA === "number" || a instanceof Number || tOfA === "boolean") return -a; if ($bm_isInstanceOfArray(a)) { var i; var lenA = a.length; var retArr = []; for (i = 0; i < lenA; i += 1) retArr[i] = -a[i]; return retArr; } if (a.propType) return a.v; return -a; } var easeInBez = BezierFactory.getBezierEasing(.333, 0, .833, .833, "easeIn").get; var easeOutBez = BezierFactory.getBezierEasing(.167, .167, .667, 1, "easeOut").get; var easeInOutBez = BezierFactory.getBezierEasing(.33, 0, .667, 1, "easeInOut").get; function sum(a, b) { var tOfA = _typeof$1(a); var tOfB = _typeof$1(b); if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === "string" || tOfB === "string") return a + b; if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { a = a.slice(0); a[0] += b; return a; } if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { b = b.slice(0); b[0] = a + b[0]; return b; } if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { var i = 0; var lenA = a.length; var lenB = b.length; var retArr = []; while (i < lenA || i < lenB) { if ((typeof a[i] === "number" || a[i] instanceof Number) && (typeof b[i] === "number" || b[i] instanceof Number)) retArr[i] = a[i] + b[i]; else retArr[i] = b[i] === void 0 ? a[i] : a[i] || b[i]; i += 1; } return retArr; } return 0; } var add = sum; function sub(a, b) { var tOfA = _typeof$1(a); var tOfB = _typeof$1(b); if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { if (tOfA === "string") a = parseInt(a, 10); if (tOfB === "string") b = parseInt(b, 10); return a - b; } if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { a = a.slice(0); a[0] -= b; return a; } if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { b = b.slice(0); b[0] = a - b[0]; return b; } if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { var i = 0; var lenA = a.length; var lenB = b.length; var retArr = []; while (i < lenA || i < lenB) { if ((typeof a[i] === "number" || a[i] instanceof Number) && (typeof b[i] === "number" || b[i] instanceof Number)) retArr[i] = a[i] - b[i]; else retArr[i] = b[i] === void 0 ? a[i] : a[i] || b[i]; i += 1; } return retArr; } return 0; } function mul(a, b) { var tOfA = _typeof$1(a); var tOfB = _typeof$1(b); var arr; if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) return a * b; var i; var len; if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { len = a.length; arr = createTypedArray("float32", len); for (i = 0; i < len; i += 1) arr[i] = a[i] * b; return arr; } if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { len = b.length; arr = createTypedArray("float32", len); for (i = 0; i < len; i += 1) arr[i] = a * b[i]; return arr; } return 0; } function div(a, b) { var tOfA = _typeof$1(a); var tOfB = _typeof$1(b); var arr; if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) return a / b; var i; var len; if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { len = a.length; arr = createTypedArray("float32", len); for (i = 0; i < len; i += 1) arr[i] = a[i] / b; return arr; } if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { len = b.length; arr = createTypedArray("float32", len); for (i = 0; i < len; i += 1) arr[i] = a / b[i]; return arr; } return 0; } function mod(a, b) { if (typeof a === "string") a = parseInt(a, 10); if (typeof b === "string") b = parseInt(b, 10); return a % b; } var $bm_sum = sum; var $bm_sub = sub; var $bm_mul = mul; var $bm_div = div; var $bm_mod = mod; function clamp(num, min, max) { if (min > max) { var mm = max; max = min; min = mm; } return Math.min(Math.max(num, min), max); } function radiansToDegrees(val) { return val / degToRads; } var radians_to_degrees = radiansToDegrees; function degreesToRadians(val) { return val * degToRads; } var degrees_to_radians = radiansToDegrees; var helperLengthArray = [ 0, 0, 0, 0, 0, 0 ]; function length(arr1, arr2) { if (typeof arr1 === "number" || arr1 instanceof Number) { arr2 = arr2 || 0; return Math.abs(arr1 - arr2); } if (!arr2) arr2 = helperLengthArray; var i; var len = Math.min(arr1.length, arr2.length); var addedLength = 0; for (i = 0; i < len; i += 1) addedLength += Math.pow(arr2[i] - arr1[i], 2); return Math.sqrt(addedLength); } function normalize(vec) { return div(vec, length(vec)); } function rgbToHsl(val) { var r = val[0]; var g = val[1]; var b = val[2]; var max = Math.max(r, g, b); var min = Math.min(r, g, b); var h; var s; var l = (max + min) / 2; if (max === min) { h = 0; s = 0; } else { var d = max - min; s = l > .5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; default: break; } h /= 6; } return [ h, s, l, val[3] ]; } function hue2rgb(p, q, t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; } function hslToRgb(val) { var h = val[0]; var s = val[1]; var l = val[2]; var r; var g; var b; if (s === 0) { r = l; b = l; g = l; } else { var q = l < .5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return [ r, g, b, val[3] ]; } function linear(t, tMin, tMax, value1, value2) { if (value1 === void 0 || value2 === void 0) { value1 = tMin; value2 = tMax; tMin = 0; tMax = 1; } if (tMax < tMin) { var _tMin = tMax; tMax = tMin; tMin = _tMin; } if (t <= tMin) return value1; if (t >= tMax) return value2; var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin); if (!value1.length) return value1 + (value2 - value1) * perc; var i; var len = value1.length; var arr = createTypedArray("float32", len); for (i = 0; i < len; i += 1) arr[i] = value1[i] + (value2[i] - value1[i]) * perc; return arr; } function random(min, max) { if (max === void 0) if (min === void 0) { min = 0; max = 1; } else { max = min; min = void 0; } if (max.length) { var i; var len = max.length; if (!min) min = createTypedArray("float32", len); var arr = createTypedArray("float32", len); var rnd = BMMath.random(); for (i = 0; i < len; i += 1) arr[i] = min[i] + rnd * (max[i] - min[i]); return arr; } if (min === void 0) min = 0; var rndm = BMMath.random(); return min + rndm * (max - min); } function createPath(points, inTangents, outTangents, closed) { var i; var len = points.length; var path = shapePool.newElement(); path.setPathData(!!closed, len); var arrPlaceholder = [0, 0]; var inVertexPoint; var outVertexPoint; for (i = 0; i < len; i += 1) { inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder; outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder; 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); } return path; } function initiateExpression(elem, data, property) { function noOp(_value) { return _value; } if (!elem.globalData.renderConfig.runExpressions) return noOp; var val = data.x; var needsVelocity = /velocity(?![\w\d])/.test(val); var _needsRandom = val.indexOf("random") !== -1; var elemType = elem.data.ty; var transform; var $bm_transform; var content; var effect; var thisProperty = property; thisProperty._name = elem.data.nm; thisProperty.valueAtTime = thisProperty.getValueAtTime; Object.defineProperty(thisProperty, "value", { get: function get() { return thisProperty.v; } }); elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate; elem.comp.displayStartTime = 0; var inPoint = elem.data.ip / elem.comp.globalData.frameRate; var outPoint = elem.data.op / elem.comp.globalData.frameRate; var width = elem.data.sw ? elem.data.sw : 0; var height = elem.data.sh ? elem.data.sh : 0; var name = elem.data.nm; var loopIn; var loop_in; var loopOut; var loop_out; var smooth; var toWorld; var fromWorld; var fromComp; var toComp; var fromCompToSurface; var position; var rotation; var anchorPoint; var scale; var thisLayer; var thisComp; var mask; var valueAtTime; var velocityAtTime; var scoped_bm_rt; var expression_function = eval("[function _expression_function(){" + val + ";scoped_bm_rt=$bm_rt}]")[0]; var numKeys = property.kf ? data.k.length : 0; var active = !this.data || this.data.hd !== true; var wiggle = function wiggle(freq, amp) { var iWiggle; var j; var lenWiggle = this.pv.length ? this.pv.length : 1; var addedAmps = createTypedArray("float32", lenWiggle); freq = 5; var iterations = Math.floor(time * freq); iWiggle = 0; j = 0; while (iWiggle < iterations) { for (j = 0; j < lenWiggle; j += 1) addedAmps[j] += -amp + amp * 2 * BMMath.random(); iWiggle += 1; } var periods = time * freq; var perc = periods - Math.floor(periods); var arr = createTypedArray("float32", lenWiggle); if (lenWiggle > 1) { for (j = 0; j < lenWiggle; j += 1) arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; return arr; } return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc; }.bind(this); if (thisProperty.loopIn) { loopIn = thisProperty.loopIn.bind(thisProperty); loop_in = loopIn; } if (thisProperty.loopOut) { loopOut = thisProperty.loopOut.bind(thisProperty); loop_out = loopOut; } if (thisProperty.smooth) smooth = thisProperty.smooth.bind(thisProperty); function loopInDuration(type, duration) { return loopIn(type, duration, true); } function loopOutDuration(type, duration) { return loopOut(type, duration, true); } if (this.getValueAtTime) valueAtTime = this.getValueAtTime.bind(this); if (this.getVelocityAtTime) velocityAtTime = this.getVelocityAtTime.bind(this); var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface); function lookAt(elem1, elem2) { var fVec = [ elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2] ]; var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads; return [ -Math.atan2(fVec[1], fVec[2]) / degToRads, pitch, 0 ]; } function easeOut(t, tMin, tMax, val1, val2) { return applyEase(easeOutBez, t, tMin, tMax, val1, val2); } function easeIn(t, tMin, tMax, val1, val2) { return applyEase(easeInBez, t, tMin, tMax, val1, val2); } function ease(t, tMin, tMax, val1, val2) { return applyEase(easeInOutBez, t, tMin, tMax, val1, val2); } function applyEase(fn, t, tMin, tMax, val1, val2) { if (val1 === void 0) { val1 = tMin; val2 = tMax; } else t = (t - tMin) / (tMax - tMin); if (t > 1) t = 1; else if (t < 0) t = 0; var mult = fn(t); if ($bm_isInstanceOfArray(val1)) { var iKey; var lenKey = val1.length; var arr = createTypedArray("float32", lenKey); for (iKey = 0; iKey < lenKey; iKey += 1) arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]; return arr; } return (val2 - val1) * mult + val1; } function nearestKey(time) { var iKey; var lenKey = data.k.length; var index; var keyTime; if (!data.k.length || typeof data.k[0] === "number") { index = 0; keyTime = 0; } else { index = -1; time *= elem.comp.globalData.frameRate; if (time < data.k[0].t) { index = 1; keyTime = data.k[0].t; } else { for (iKey = 0; iKey < lenKey - 1; iKey += 1) if (time === data.k[iKey].t) { index = iKey + 1; keyTime = data.k[iKey].t; break; } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) { if (time - data.k[iKey].t > data.k[iKey + 1].t - time) { index = iKey + 2; keyTime = data.k[iKey + 1].t; } else { index = iKey + 1; keyTime = data.k[iKey].t; } break; } if (index === -1) { index = iKey + 1; keyTime = data.k[iKey].t; } } } var obKey = {}; obKey.index = index; obKey.time = keyTime / elem.comp.globalData.frameRate; return obKey; } function key(ind) { var obKey; var iKey; var lenKey; if (!data.k.length || typeof data.k[0] === "number") throw new Error("The property has no keyframe at index " + ind); ind -= 1; obKey = { time: data.k[ind].t / elem.comp.globalData.frameRate, value: [] }; var arr = Object.prototype.hasOwnProperty.call(data.k[ind], "s") ? data.k[ind].s : data.k[ind - 1].e; lenKey = arr.length; for (iKey = 0; iKey < lenKey; iKey += 1) { obKey[iKey] = arr[iKey]; obKey.value[iKey] = arr[iKey]; } return obKey; } function framesToTime(fr, fps) { if (!fps) fps = elem.comp.globalData.frameRate; return fr / fps; } function timeToFrames(t, fps) { if (!t && t !== 0) t = time; if (!fps) fps = elem.comp.globalData.frameRate; return t * fps; } function seedRandom(seed) { BMMath.seedrandom(randSeed + seed); } function sourceRectAtTime() { return elem.sourceRectAtTime(); } function substring(init, end) { if (typeof value === "string") { if (end === void 0) return value.substring(init); return value.substring(init, end); } return ""; } function substr(init, end) { if (typeof value === "string") { if (end === void 0) return value.substr(init); return value.substr(init, end); } return ""; } function posterizeTime(framesPerSecond) { time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond; value = valueAtTime(time); } var time; var velocity; var value; var text; var textIndex; var textTotal; var selectorValue; var index = elem.data.ind; var hasParent = !!(elem.hierarchy && elem.hierarchy.length); var parent; var randSeed = Math.floor(Math.random() * 1e6); var globalData = elem.globalData; function executeExpression(_value) { value = _value; if (this.frameExpressionId === elem.globalData.frameId && this.propType !== "textSelector") return value; if (this.propType === "textSelector") { textIndex = this.textIndex; textTotal = this.textTotal; selectorValue = this.selectorValue; } if (!thisLayer) { text = elem.layerInterface.text; thisLayer = elem.layerInterface; thisComp = elem.comp.compInterface; toWorld = thisLayer.toWorld.bind(thisLayer); fromWorld = thisLayer.fromWorld.bind(thisLayer); fromComp = thisLayer.fromComp.bind(thisLayer); toComp = thisLayer.toComp.bind(thisLayer); mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null; fromCompToSurface = fromComp; } if (!transform) { transform = elem.layerInterface("ADBE Transform Group"); $bm_transform = transform; if (transform) anchorPoint = transform.anchorPoint; } if (elemType === 4 && !content) content = thisLayer("ADBE Root Vectors Group"); if (!effect) effect = thisLayer(4); hasParent = !!(elem.hierarchy && elem.hierarchy.length); if (hasParent && !parent) parent = elem.hierarchy[0].layerInterface; time = this.comp.renderedFrame / this.comp.globalData.frameRate; if (_needsRandom) seedRandom(randSeed + time); if (needsVelocity) velocity = velocityAtTime(time); expression_function(); this.frameExpressionId = elem.globalData.frameId; scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt; return scoped_bm_rt; } 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 ]; return executeExpression; } ob.initiateExpression = initiateExpression; 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 ]; ob.resetFrame = resetFrame; return ob; }(); var Expressions = function() { var ob = {}; ob.initExpressions = initExpressions; ob.resetFrame = ExpressionManager.resetFrame; function initExpressions(animation) { var stackCount = 0; var registers = []; function pushExpression() { stackCount += 1; } function popExpression() { stackCount -= 1; if (stackCount === 0) releaseInstances(); } function registerExpressionProperty(expression) { if (registers.indexOf(expression) === -1) registers.push(expression); } function releaseInstances() { var i; var len = registers.length; for (i = 0; i < len; i += 1) registers[i].release(); registers.length = 0; } animation.renderer.compInterface = CompExpressionInterface(animation.renderer); animation.renderer.globalData.projectInterface.registerComposition(animation.renderer); animation.renderer.globalData.pushExpression = pushExpression; animation.renderer.globalData.popExpression = popExpression; animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty; } return ob; }(); var MaskManagerInterface = function() { function MaskInterface(mask, data) { this._mask = mask; this._data = data; } Object.defineProperty(MaskInterface.prototype, "maskPath", { get: function get() { if (this._mask.prop.k) this._mask.prop.getValue(); return this._mask.prop; } }); Object.defineProperty(MaskInterface.prototype, "maskOpacity", { get: function get() { if (this._mask.op.k) this._mask.op.getValue(); return this._mask.op.v * 100; } }); return function MaskManager(maskManager) { var _masksInterfaces = createSizedArray(maskManager.viewData.length); var i; var len = maskManager.viewData.length; for (i = 0; i < len; i += 1) _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]); return function maskFunction(name) { i = 0; while (i < len) { if (maskManager.masksProperties[i].nm === name) return _masksInterfaces[i]; i += 1; } return null; }; }; }(); var ExpressionPropertyInterface = function() { var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }; var defaultMultidimensionalValue = { pv: [ 0, 0, 0 ], v: [ 0, 0, 0 ], mult: 1 }; function completeProperty(expressionValue, property, type) { Object.defineProperty(expressionValue, "velocity", { get: function get() { return property.getVelocityAtTime(property.comp.currentFrame); } }); expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0; expressionValue.key = function(pos) { if (!expressionValue.numKeys) return 0; var value = ""; if ("s" in property.keyframes[pos - 1]) value = property.keyframes[pos - 1].s; else if ("e" in property.keyframes[pos - 2]) value = property.keyframes[pos - 2].e; else value = property.keyframes[pos - 2].s; var valueProp = type === "unidimensional" ? new Number(value) : Object.assign({}, value); valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate; valueProp.value = type === "unidimensional" ? value[0] : value; return valueProp; }; expressionValue.valueAtTime = property.getValueAtTime; expressionValue.speedAtTime = property.getSpeedAtTime; expressionValue.velocityAtTime = property.getVelocityAtTime; expressionValue.propertyGroup = property.propertyGroup; } function UnidimensionalPropertyInterface(property) { if (!property || !("pv" in property)) property = defaultUnidimensionalValue; var mult = 1 / property.mult; var val = property.pv * mult; var expressionValue = new Number(val); expressionValue.value = val; completeProperty(expressionValue, property, "unidimensional"); return function() { if (property.k) property.getValue(); val = property.v * mult; if (expressionValue.value !== val) { expressionValue = new Number(val); expressionValue.value = val; expressionValue[0] = val; completeProperty(expressionValue, property, "unidimensional"); } return expressionValue; }; } function MultidimensionalPropertyInterface(property) { if (!property || !("pv" in property)) property = defaultMultidimensionalValue; var mult = 1 / property.mult; var len = property.data && property.data.l || property.pv.length; var expressionValue = createTypedArray("float32", len); var arrValue = createTypedArray("float32", len); expressionValue.value = arrValue; completeProperty(expressionValue, property, "multidimensional"); return function() { if (property.k) property.getValue(); for (var i = 0; i < len; i += 1) { arrValue[i] = property.v[i] * mult; expressionValue[i] = arrValue[i]; } return expressionValue; }; } function defaultGetter() { return defaultUnidimensionalValue; } return function(property) { if (!property) return defaultGetter; if (property.propType === "unidimensional") return UnidimensionalPropertyInterface(property); return MultidimensionalPropertyInterface(property); }; }(); var TransformExpressionInterface = function() { return function(transform) { function _thisFunction(name) { switch (name) { case "scale": case "Scale": case "ADBE Scale": case 6: return _thisFunction.scale; case "rotation": case "Rotation": case "ADBE Rotation": case "ADBE Rotate Z": case 10: return _thisFunction.rotation; case "ADBE Rotate X": return _thisFunction.xRotation; case "ADBE Rotate Y": return _thisFunction.yRotation; case "position": case "Position": case "ADBE Position": case 2: return _thisFunction.position; case "ADBE Position_0": return _thisFunction.xPosition; case "ADBE Position_1": return _thisFunction.yPosition; case "ADBE Position_2": return _thisFunction.zPosition; case "anchorPoint": case "AnchorPoint": case "Anchor Point": case "ADBE AnchorPoint": case 1: return _thisFunction.anchorPoint; case "opacity": case "Opacity": case 11: return _thisFunction.opacity; default: return null; } } Object.defineProperty(_thisFunction, "rotation", { get: ExpressionPropertyInterface(transform.r || transform.rz) }); Object.defineProperty(_thisFunction, "zRotation", { get: ExpressionPropertyInterface(transform.rz || transform.r) }); Object.defineProperty(_thisFunction, "xRotation", { get: ExpressionPropertyInterface(transform.rx) }); Object.defineProperty(_thisFunction, "yRotation", { get: ExpressionPropertyInterface(transform.ry) }); Object.defineProperty(_thisFunction, "scale", { get: ExpressionPropertyInterface(transform.s) }); var _px; var _py; var _pz; var _transformFactory; if (transform.p) _transformFactory = ExpressionPropertyInterface(transform.p); else { _px = ExpressionPropertyInterface(transform.px); _py = ExpressionPropertyInterface(transform.py); if (transform.pz) _pz = ExpressionPropertyInterface(transform.pz); } Object.defineProperty(_thisFunction, "position", { get: function get() { if (transform.p) return _transformFactory(); return [ _px(), _py(), _pz ? _pz() : 0 ]; } }); Object.defineProperty(_thisFunction, "xPosition", { get: ExpressionPropertyInterface(transform.px) }); Object.defineProperty(_thisFunction, "yPosition", { get: ExpressionPropertyInterface(transform.py) }); Object.defineProperty(_thisFunction, "zPosition", { get: ExpressionPropertyInterface(transform.pz) }); Object.defineProperty(_thisFunction, "anchorPoint", { get: ExpressionPropertyInterface(transform.a) }); Object.defineProperty(_thisFunction, "opacity", { get: ExpressionPropertyInterface(transform.o) }); Object.defineProperty(_thisFunction, "skew", { get: ExpressionPropertyInterface(transform.sk) }); Object.defineProperty(_thisFunction, "skewAxis", { get: ExpressionPropertyInterface(transform.sa) }); Object.defineProperty(_thisFunction, "orientation", { get: ExpressionPropertyInterface(transform.or) }); return _thisFunction; }; }(); var LayerExpressionInterface = function() { function getMatrix(time) { var toWorldMat = new Matrix(); if (time !== void 0) this._elem.finalTransform.mProp.getValueAtTime(time).clone(toWorldMat); else this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); return toWorldMat; } function toWorldVec(arr, time) { var toWorldMat = this.getMatrix(time); toWorldMat.props[12] = 0; toWorldMat.props[13] = 0; toWorldMat.props[14] = 0; return this.applyPoint(toWorldMat, arr); } function toWorld(arr, time) { var toWorldMat = this.getMatrix(time); return this.applyPoint(toWorldMat, arr); } function fromWorldVec(arr, time) { var toWorldMat = this.getMatrix(time); toWorldMat.props[12] = 0; toWorldMat.props[13] = 0; toWorldMat.props[14] = 0; return this.invertPoint(toWorldMat, arr); } function fromWorld(arr, time) { var toWorldMat = this.getMatrix(time); return this.invertPoint(toWorldMat, arr); } function applyPoint(matrix, arr) { if (this._elem.hierarchy && this._elem.hierarchy.length) { var i; var len = this._elem.hierarchy.length; for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); } return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0); } function invertPoint(matrix, arr) { if (this._elem.hierarchy && this._elem.hierarchy.length) { var i; var len = this._elem.hierarchy.length; for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); } return matrix.inversePoint(arr); } function fromComp(arr) { var toWorldMat = new Matrix(); toWorldMat.reset(); this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); if (this._elem.hierarchy && this._elem.hierarchy.length) { var i; var len = this._elem.hierarchy.length; for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); return toWorldMat.inversePoint(arr); } return toWorldMat.inversePoint(arr); } function sampleImage() { return [ 1, 1, 1, 1 ]; } return function(elem) { var transformInterface; function _registerMaskInterface(maskManager) { _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem); } function _registerEffectsInterface(effects) { _thisLayerFunction.effect = effects; } function _thisLayerFunction(name) { switch (name) { case "ADBE Root Vectors Group": case "Contents": case 2: return _thisLayerFunction.shapeInterface; case 1: case 6: case "Transform": case "transform": case "ADBE Transform Group": return transformInterface; case 4: case "ADBE Effect Parade": case "effects": case "Effects": return _thisLayerFunction.effect; case "ADBE Text Properties": return _thisLayerFunction.textInterface; default: return null; } } _thisLayerFunction.getMatrix = getMatrix; _thisLayerFunction.invertPoint = invertPoint; _thisLayerFunction.applyPoint = applyPoint; _thisLayerFunction.toWorld = toWorld; _thisLayerFunction.toWorldVec = toWorldVec; _thisLayerFunction.fromWorld = fromWorld; _thisLayerFunction.fromWorldVec = fromWorldVec; _thisLayerFunction.toComp = toWorld; _thisLayerFunction.fromComp = fromComp; _thisLayerFunction.sampleImage = sampleImage; _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem); _thisLayerFunction._elem = elem; transformInterface = TransformExpressionInterface(elem.finalTransform.mProp); var anchorPointDescriptor = getDescriptor(transformInterface, "anchorPoint"); Object.defineProperties(_thisLayerFunction, { hasParent: { get: function get() { return elem.hierarchy.length; } }, parent: { get: function get() { return elem.hierarchy[0].layerInterface; } }, rotation: getDescriptor(transformInterface, "rotation"), scale: getDescriptor(transformInterface, "scale"), position: getDescriptor(transformInterface, "position"), opacity: getDescriptor(transformInterface, "opacity"), anchorPoint: anchorPointDescriptor, anchor_point: anchorPointDescriptor, transform: { get: function get() { return transformInterface; } }, active: { get: function get() { return elem.isInRange; } } }); _thisLayerFunction.startTime = elem.data.st; _thisLayerFunction.index = elem.data.ind; _thisLayerFunction.source = elem.data.refId; _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100; _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100; _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate; _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate; _thisLayerFunction._name = elem.data.nm; _thisLayerFunction.registerMaskInterface = _registerMaskInterface; _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface; return _thisLayerFunction; }; }(); var propertyGroupFactory = function() { return function(interfaceFunction, parentPropertyGroup) { return function(val) { val = val === void 0 ? 1 : val; if (val <= 0) return interfaceFunction; return parentPropertyGroup(val - 1); }; }; }(); var PropertyInterface = function() { return function(propertyName, propertyGroup) { var interfaceFunction = { _name: propertyName }; function _propertyGroup(val) { val = val === void 0 ? 1 : val; if (val <= 0) return interfaceFunction; return propertyGroup(val - 1); } return _propertyGroup; }; }(); var EffectsExpressionInterface = function() { var ob = { createEffectsInterface }; function createEffectsInterface(elem, propertyGroup) { if (elem.effectsManager) { var effectElements = []; var effectsData = elem.data.ef; var i; var len = elem.effectsManager.effectElements.length; for (i = 0; i < len; i += 1) effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem)); var effects = elem.data.ef || []; var groupInterface = function groupInterface(name) { i = 0; len = effects.length; while (i < len) { if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) return effectElements[i]; i += 1; } return null; }; Object.defineProperty(groupInterface, "numProperties", { get: function get() { return effects.length; } }); return groupInterface; } return null; } function createGroupInterface(data, elements, propertyGroup, elem) { function groupInterface(name) { var effects = data.ef; var i = 0; var len = effects.length; while (i < len) { if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) { if (effects[i].ty === 5) return effectElements[i]; return effectElements[i](); } i += 1; } throw new Error(); } var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup); var effectElements = []; var i; var len = data.ef.length; for (i = 0; i < len; i += 1) if (data.ef[i].ty === 5) effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem)); else effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup)); if (data.mn === "ADBE Color Control") Object.defineProperty(groupInterface, "color", { get: function get() { return effectElements[0](); } }); Object.defineProperties(groupInterface, { numProperties: { get: function get() { return data.np; } }, _name: { value: data.nm }, propertyGroup: { value: _propertyGroup } }); groupInterface.enabled = data.en !== 0; groupInterface.active = groupInterface.enabled; return groupInterface; } function createValueInterface(element, type, elem, propertyGroup) { var expressionProperty = ExpressionPropertyInterface(element.p); function interfaceFunction() { if (type === 10) return elem.comp.compInterface(element.p.v); return expressionProperty(); } if (element.p.setGroupProperty) element.p.setGroupProperty(PropertyInterface("", propertyGroup)); return interfaceFunction; } return ob; }(); var ShapePathInterface = function() { return function pathInterfaceFactory(shape, view, propertyGroup) { var prop = view.sh; function interfaceFunction(val) { if (val === "Shape" || val === "shape" || val === "Path" || val === "path" || val === "ADBE Vector Shape" || val === 2) return interfaceFunction.path; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); prop.setGroupProperty(PropertyInterface("Path", _propertyGroup)); Object.defineProperties(interfaceFunction, { path: { get: function get() { if (prop.k) prop.getValue(); return prop; } }, shape: { get: function get() { if (prop.k) prop.getValue(); return prop; } }, _name: { value: shape.nm }, ix: { value: shape.ix }, propertyIndex: { value: shape.ix }, mn: { value: shape.mn }, propertyGroup: { value: propertyGroup } }); return interfaceFunction; }; }(); var ShapeExpressionInterface = function() { function iterateElements(shapes, view, propertyGroup) { var arr = []; var i; var len = shapes ? shapes.length : 0; for (i = 0; i < len; i += 1) if (shapes[i].ty === "gr") arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "fl") arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "st") arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "tm") arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "tr") {} else if (shapes[i].ty === "el") arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "sr") arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "sh") arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "rc") arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "rd") arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "rp") arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup)); else if (shapes[i].ty === "gf") arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup)); else arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup)); return arr; } function contentsInterfaceFactory(shape, view, propertyGroup) { var interfaces; var interfaceFunction = function _interfaceFunction(value) { var i = 0; var len = interfaces.length; while (i < len) { if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) return interfaces[i]; i += 1; } if (typeof value === "number") return interfaces[value - 1]; return null; }; interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup); interfaceFunction.numProperties = interfaces.length; interfaceFunction.transform = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); interfaceFunction.propertyIndex = shape.cix; interfaceFunction._name = shape.nm; return interfaceFunction; } function groupInterfaceFactory(shape, view, propertyGroup) { var interfaceFunction = function _interfaceFunction(value) { switch (value) { case "ADBE Vectors Group": case "Contents": case 2: return interfaceFunction.content; default: return interfaceFunction.transform; } }; interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup); var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); interfaceFunction.content = content; interfaceFunction.transform = transformInterface; Object.defineProperty(interfaceFunction, "_name", { get: function get() { return shape.nm; } }); interfaceFunction.numProperties = shape.np; interfaceFunction.propertyIndex = shape.ix; interfaceFunction.nm = shape.nm; interfaceFunction.mn = shape.mn; return interfaceFunction; } function fillInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(val) { if (val === "Color" || val === "color") return interfaceFunction.color; if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity; return null; } Object.defineProperties(interfaceFunction, { color: { get: ExpressionPropertyInterface(view.c) }, opacity: { get: ExpressionPropertyInterface(view.o) }, _name: { value: shape.nm }, mn: { value: shape.mn } }); view.c.setGroupProperty(PropertyInterface("Color", propertyGroup)); view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup)); return interfaceFunction; } function gradientFillInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(val) { if (val === "Start Point" || val === "start point") return interfaceFunction.startPoint; if (val === "End Point" || val === "end point") return interfaceFunction.endPoint; if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity; return null; } Object.defineProperties(interfaceFunction, { startPoint: { get: ExpressionPropertyInterface(view.s) }, endPoint: { get: ExpressionPropertyInterface(view.e) }, opacity: { get: ExpressionPropertyInterface(view.o) }, type: { get: function get() { return "a"; } }, _name: { value: shape.nm }, mn: { value: shape.mn } }); view.s.setGroupProperty(PropertyInterface("Start Point", propertyGroup)); view.e.setGroupProperty(PropertyInterface("End Point", propertyGroup)); view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup)); return interfaceFunction; } function defaultInterfaceFactory() { function interfaceFunction() { return null; } return interfaceFunction; } function strokeInterfaceFactory(shape, view, propertyGroup) { var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup); function addPropertyToDashOb(i) { Object.defineProperty(dashOb, shape.d[i].nm, { get: ExpressionPropertyInterface(view.d.dataProps[i].p) }); } var i; var len = shape.d ? shape.d.length : 0; var dashOb = {}; for (i = 0; i < len; i += 1) { addPropertyToDashOb(i); view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup); } function interfaceFunction(val) { if (val === "Color" || val === "color") return interfaceFunction.color; if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity; if (val === "Stroke Width" || val === "stroke width") return interfaceFunction.strokeWidth; return null; } Object.defineProperties(interfaceFunction, { color: { get: ExpressionPropertyInterface(view.c) }, opacity: { get: ExpressionPropertyInterface(view.o) }, strokeWidth: { get: ExpressionPropertyInterface(view.w) }, dash: { get: function get() { return dashOb; } }, _name: { value: shape.nm }, mn: { value: shape.mn } }); view.c.setGroupProperty(PropertyInterface("Color", _propertyGroup)); view.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); view.w.setGroupProperty(PropertyInterface("Stroke Width", _propertyGroup)); return interfaceFunction; } function trimInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(val) { if (val === shape.e.ix || val === "End" || val === "end") return interfaceFunction.end; if (val === shape.s.ix) return interfaceFunction.start; if (val === shape.o.ix) return interfaceFunction.offset; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); interfaceFunction.propertyIndex = shape.ix; view.s.setGroupProperty(PropertyInterface("Start", _propertyGroup)); view.e.setGroupProperty(PropertyInterface("End", _propertyGroup)); view.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup)); interfaceFunction.propertyIndex = shape.ix; interfaceFunction.propertyGroup = propertyGroup; Object.defineProperties(interfaceFunction, { start: { get: ExpressionPropertyInterface(view.s) }, end: { get: ExpressionPropertyInterface(view.e) }, offset: { get: ExpressionPropertyInterface(view.o) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } function transformInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.a.ix === value || value === "Anchor Point") return interfaceFunction.anchorPoint; if (shape.o.ix === value || value === "Opacity") return interfaceFunction.opacity; if (shape.p.ix === value || value === "Position") return interfaceFunction.position; if (shape.r.ix === value || value === "Rotation" || value === "ADBE Vector Rotation") return interfaceFunction.rotation; if (shape.s.ix === value || value === "Scale") return interfaceFunction.scale; if (shape.sk && shape.sk.ix === value || value === "Skew") return interfaceFunction.skew; if (shape.sa && shape.sa.ix === value || value === "Skew Axis") return interfaceFunction.skewAxis; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); view.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); view.transform.mProps.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); view.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point", _propertyGroup)); view.transform.mProps.s.setGroupProperty(PropertyInterface("Scale", _propertyGroup)); view.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); if (view.transform.mProps.sk) { view.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew", _propertyGroup)); view.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle", _propertyGroup)); } view.transform.op.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); Object.defineProperties(interfaceFunction, { opacity: { get: ExpressionPropertyInterface(view.transform.mProps.o) }, position: { get: ExpressionPropertyInterface(view.transform.mProps.p) }, anchorPoint: { get: ExpressionPropertyInterface(view.transform.mProps.a) }, scale: { get: ExpressionPropertyInterface(view.transform.mProps.s) }, rotation: { get: ExpressionPropertyInterface(view.transform.mProps.r) }, skew: { get: ExpressionPropertyInterface(view.transform.mProps.sk) }, skewAxis: { get: ExpressionPropertyInterface(view.transform.mProps.sa) }, _name: { value: shape.nm } }); interfaceFunction.ty = "tr"; interfaceFunction.mn = shape.mn; interfaceFunction.propertyGroup = propertyGroup; return interfaceFunction; } function ellipseInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.p.ix === value) return interfaceFunction.position; if (shape.s.ix === value) return interfaceFunction.size; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); interfaceFunction.propertyIndex = shape.ix; var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup)); prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); Object.defineProperties(interfaceFunction, { size: { get: ExpressionPropertyInterface(prop.s) }, position: { get: ExpressionPropertyInterface(prop.p) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } function starInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.p.ix === value) return interfaceFunction.position; if (shape.r.ix === value) return interfaceFunction.rotation; if (shape.pt.ix === value) return interfaceFunction.points; if (shape.or.ix === value || value === "ADBE Vector Star Outer Radius") return interfaceFunction.outerRadius; if (shape.os.ix === value) return interfaceFunction.outerRoundness; if (shape.ir && (shape.ir.ix === value || value === "ADBE Vector Star Inner Radius")) return interfaceFunction.innerRadius; if (shape.is && shape.is.ix === value) return interfaceFunction.innerRoundness; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; interfaceFunction.propertyIndex = shape.ix; prop.or.setGroupProperty(PropertyInterface("Outer Radius", _propertyGroup)); prop.os.setGroupProperty(PropertyInterface("Outer Roundness", _propertyGroup)); prop.pt.setGroupProperty(PropertyInterface("Points", _propertyGroup)); prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); if (shape.ir) { prop.ir.setGroupProperty(PropertyInterface("Inner Radius", _propertyGroup)); prop.is.setGroupProperty(PropertyInterface("Inner Roundness", _propertyGroup)); } Object.defineProperties(interfaceFunction, { position: { get: ExpressionPropertyInterface(prop.p) }, rotation: { get: ExpressionPropertyInterface(prop.r) }, points: { get: ExpressionPropertyInterface(prop.pt) }, outerRadius: { get: ExpressionPropertyInterface(prop.or) }, outerRoundness: { get: ExpressionPropertyInterface(prop.os) }, innerRadius: { get: ExpressionPropertyInterface(prop.ir) }, innerRoundness: { get: ExpressionPropertyInterface(prop.is) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } function rectInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.p.ix === value) return interfaceFunction.position; if (shape.r.ix === value) return interfaceFunction.roundness; if (shape.s.ix === value || value === "Size" || value === "ADBE Vector Rect Size") return interfaceFunction.size; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; interfaceFunction.propertyIndex = shape.ix; prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup)); prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); Object.defineProperties(interfaceFunction, { position: { get: ExpressionPropertyInterface(prop.p) }, roundness: { get: ExpressionPropertyInterface(prop.r) }, size: { get: ExpressionPropertyInterface(prop.s) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } function roundedInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.r.ix === value || value === "Round Corners 1") return interfaceFunction.radius; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var prop = view; interfaceFunction.propertyIndex = shape.ix; prop.rd.setGroupProperty(PropertyInterface("Radius", _propertyGroup)); Object.defineProperties(interfaceFunction, { radius: { get: ExpressionPropertyInterface(prop.rd) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } function repeaterInterfaceFactory(shape, view, propertyGroup) { function interfaceFunction(value) { if (shape.c.ix === value || value === "Copies") return interfaceFunction.copies; if (shape.o.ix === value || value === "Offset") return interfaceFunction.offset; return null; } var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); var prop = view; interfaceFunction.propertyIndex = shape.ix; prop.c.setGroupProperty(PropertyInterface("Copies", _propertyGroup)); prop.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup)); Object.defineProperties(interfaceFunction, { copies: { get: ExpressionPropertyInterface(prop.c) }, offset: { get: ExpressionPropertyInterface(prop.o) }, _name: { value: shape.nm } }); interfaceFunction.mn = shape.mn; return interfaceFunction; } return function(shapes, view, propertyGroup) { var interfaces; function _interfaceFunction(value) { if (typeof value === "number") { value = value === void 0 ? 1 : value; if (value === 0) return propertyGroup; return interfaces[value - 1]; } var i = 0; var len = interfaces.length; while (i < len) { if (interfaces[i]._name === value) return interfaces[i]; i += 1; } return null; } function parentGroupWrapper() { return propertyGroup; } _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper); interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup); _interfaceFunction.numProperties = interfaces.length; _interfaceFunction._name = "Contents"; return _interfaceFunction; }; }(); var TextExpressionInterface = function() { return function(elem) { var _sourceText; function _thisLayerFunction(name) { switch (name) { case "ADBE Text Document": return _thisLayerFunction.sourceText; default: return null; } } Object.defineProperty(_thisLayerFunction, "sourceText", { get: function get() { elem.textProperty.getValue(); var stringValue = elem.textProperty.currentData.t; if (!_sourceText || stringValue !== _sourceText.value) { _sourceText = new String(stringValue); _sourceText.value = stringValue || new String(stringValue); Object.defineProperty(_sourceText, "style", { get: function get() { return { fillColor: elem.textProperty.currentData.fc }; } }); } return _sourceText; } }); return _thisLayerFunction; }; }(); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var FootageInterface = function() { var outlineInterfaceFactory = function outlineInterfaceFactory(elem) { var currentPropertyName = ""; var currentProperty = elem.getFootageData(); function init() { currentPropertyName = ""; currentProperty = elem.getFootageData(); return searchProperty; } function searchProperty(value) { if (currentProperty[value]) { currentPropertyName = value; currentProperty = currentProperty[value]; if (_typeof(currentProperty) === "object") return searchProperty; return currentProperty; } var propertyNameIndex = value.indexOf(currentPropertyName); if (propertyNameIndex !== -1) { var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10); currentProperty = currentProperty[index]; if (_typeof(currentProperty) === "object") return searchProperty; return currentProperty; } return ""; } return init; }; var dataInterfaceFactory = function dataInterfaceFactory(elem) { function interfaceFunction(value) { if (value === "Outline") return interfaceFunction.outlineInterface(); return null; } interfaceFunction._name = "Outline"; interfaceFunction.outlineInterface = outlineInterfaceFactory(elem); return interfaceFunction; }; return function(elem) { function _interfaceFunction(value) { if (value === "Data") return _interfaceFunction.dataInterface; return null; } _interfaceFunction._name = "Data"; _interfaceFunction.dataInterface = dataInterfaceFactory(elem); return _interfaceFunction; }; }(); var interfaces = { layer: LayerExpressionInterface, effects: EffectsExpressionInterface, comp: CompExpressionInterface, shape: ShapeExpressionInterface, text: TextExpressionInterface, footage: FootageInterface }; function getInterface(type) { return interfaces[type] || null; } var expressionHelpers = function() { function searchExpressions(elem, data, prop) { if (data.x) { prop.k = true; prop.x = true; prop.initiateExpression = ExpressionManager.initiateExpression; prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop)); } } function getValueAtTime(frameNum) { frameNum *= this.elem.globalData.frameRate; frameNum -= this.offsetTime; if (frameNum !== this._cachingAtTime.lastFrame) { this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0; this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime); this._cachingAtTime.lastFrame = frameNum; } return this._cachingAtTime.value; } function getSpeedAtTime(frameNum) { var delta = -.01; var v1 = this.getValueAtTime(frameNum); var v2 = this.getValueAtTime(frameNum + delta); var speed = 0; if (v1.length) { var i; for (i = 0; i < v1.length; i += 1) speed += Math.pow(v2[i] - v1[i], 2); speed = Math.sqrt(speed) * 100; } else speed = 0; return speed; } function getVelocityAtTime(frameNum) { if (this.vel !== void 0) return this.vel; var delta = -.001; var v1 = this.getValueAtTime(frameNum); var v2 = this.getValueAtTime(frameNum + delta); var velocity; if (v1.length) { velocity = createTypedArray("float32", v1.length); var i; for (i = 0; i < v1.length; i += 1) velocity[i] = (v2[i] - v1[i]) / delta; } else velocity = (v2 - v1) / delta; return velocity; } function getStaticValueAtTime() { return this.pv; } function setGroupProperty(propertyGroup) { this.propertyGroup = propertyGroup; } return { searchExpressions, getSpeedAtTime, getVelocityAtTime, getValueAtTime, getStaticValueAtTime, setGroupProperty }; }(); function addPropertyDecorator() { function loopOut(type, duration, durationFlag) { if (!this.k || !this.keyframes) return this.pv; type = type ? type.toLowerCase() : ""; var currentFrame = this.comp.renderedFrame; var keyframes = this.keyframes; var lastKeyFrame = keyframes[keyframes.length - 1].t; if (currentFrame <= lastKeyFrame) return this.pv; var cycleDuration; var firstKeyFrame; if (!durationFlag) { if (!duration || duration > keyframes.length - 1) duration = keyframes.length - 1; firstKeyFrame = keyframes[keyframes.length - 1 - duration].t; cycleDuration = lastKeyFrame - firstKeyFrame; } else { if (!duration) cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip); else cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration); firstKeyFrame = lastKeyFrame - cycleDuration; } var i; var len; var ret; if (type === "pingpong") { if (Math.floor((currentFrame - firstKeyFrame) / cycleDuration) % 2 !== 0) return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); } else if (type === "offset") { var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); if (this.pv.length) { ret = new Array(initV.length); len = ret.length; for (i = 0; i < len; i += 1) ret[i] = (endV[i] - initV[i]) * repeats + current[i]; return ret; } return (endV - initV) * repeats + current; } else if (type === "continue") { var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); var nextLastValue = this.getValueAtTime((lastKeyFrame - .001) / this.comp.globalData.frameRate, 0); if (this.pv.length) { ret = new Array(lastValue.length); len = ret.length; for (i = 0; i < len; i += 1) ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 5e-4; return ret; } return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / .001); } return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); } function loopIn(type, duration, durationFlag) { if (!this.k) return this.pv; type = type ? type.toLowerCase() : ""; var currentFrame = this.comp.renderedFrame; var keyframes = this.keyframes; var firstKeyFrame = keyframes[0].t; if (currentFrame >= firstKeyFrame) return this.pv; var cycleDuration; var lastKeyFrame; if (!durationFlag) { if (!duration || duration > keyframes.length - 1) duration = keyframes.length - 1; lastKeyFrame = keyframes[duration].t; cycleDuration = lastKeyFrame - firstKeyFrame; } else { if (!duration) cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame); else cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration); lastKeyFrame = firstKeyFrame + cycleDuration; } var i; var len; var ret; if (type === "pingpong") { if (Math.floor((firstKeyFrame - currentFrame) / cycleDuration) % 2 === 0) return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); } else if (type === "offset") { var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1; if (this.pv.length) { ret = new Array(initV.length); len = ret.length; for (i = 0; i < len; i += 1) ret[i] = current[i] - (endV[i] - initV[i]) * repeats; return ret; } return current - (endV - initV) * repeats; } else if (type === "continue") { var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); var nextFirstValue = this.getValueAtTime((firstKeyFrame + .001) / this.comp.globalData.frameRate, 0); if (this.pv.length) { ret = new Array(firstValue.length); len = ret.length; for (i = 0; i < len; i += 1) ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / .001; return ret; } return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / .001; } return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); } function smooth(width, samples) { if (!this.k) return this.pv; width = (width || .4) * .5; samples = Math.floor(samples || 5); if (samples <= 1) return this.pv; var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate; var initFrame = currentTime - width; var endFrame = currentTime + width; var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1; var i = 0; var j = 0; var value; if (this.pv.length) value = createTypedArray("float32", this.pv.length); else value = 0; var sampleValue; while (i < samples) { sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency); if (this.pv.length) for (j = 0; j < this.pv.length; j += 1) value[j] += sampleValue[j]; else value += sampleValue; i += 1; } if (this.pv.length) for (j = 0; j < this.pv.length; j += 1) value[j] /= samples; else value /= samples; return value; } function getTransformValueAtTime(time) { if (!this._transformCachingAtTime) this._transformCachingAtTime = { v: new Matrix() }; var matrix = this._transformCachingAtTime.v; matrix.cloneFromProps(this.pre.props); if (this.appliedTransformations < 1) { var anchor = this.a.getValueAtTime(time); matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult); } if (this.appliedTransformations < 2) { var scale = this.s.getValueAtTime(time); matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult); } if (this.sk && this.appliedTransformations < 3) { var skew = this.sk.getValueAtTime(time); var skewAxis = this.sa.getValueAtTime(time); matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult); } if (this.r && this.appliedTransformations < 4) { var rotation = this.r.getValueAtTime(time); matrix.rotate(-rotation * this.r.mult); } else if (!this.r && this.appliedTransformations < 4) { var rotationZ = this.rz.getValueAtTime(time); var rotationY = this.ry.getValueAtTime(time); var rotationX = this.rx.getValueAtTime(time); var orientation = this.or.getValueAtTime(time); 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); } if (this.data.p && this.data.p.s) { var positionX = this.px.getValueAtTime(time); var positionY = this.py.getValueAtTime(time); if (this.data.p.z) { var positionZ = this.pz.getValueAtTime(time); matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult); } else matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0); } else { var position = this.p.getValueAtTime(time); matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult); } return matrix; } function getTransformStaticValueAtTime() { return this.v.clone(new Matrix()); } var getTransformProperty = TransformPropertyFactory.getTransformProperty; TransformPropertyFactory.getTransformProperty = function(elem, data, container) { var prop = getTransformProperty(elem, data, container); if (prop.dynamicProperties.length) prop.getValueAtTime = getTransformValueAtTime.bind(prop); else prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop); prop.setGroupProperty = expressionHelpers.setGroupProperty; return prop; }; var propertyGetProp = PropertyFactory.getProp; PropertyFactory.getProp = function(elem, data, type, mult, container) { var prop = propertyGetProp(elem, data, type, mult, container); if (prop.kf) prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop); else prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop); prop.setGroupProperty = expressionHelpers.setGroupProperty; prop.loopOut = loopOut; prop.loopIn = loopIn; prop.smooth = smooth; prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop); prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop); prop.numKeys = data.a === 1 ? data.k.length : 0; prop.propertyIndex = data.ix; var value = 0; if (type !== 0) value = createTypedArray("float32", data.a === 1 ? data.k[0].s.length : data.k.length); prop._cachingAtTime = { lastFrame: initialDefaultFrame, lastIndex: 0, value }; expressionHelpers.searchExpressions(elem, data, prop); if (prop.k) container.addDynamicProperty(prop); return prop; }; function getShapeValueAtTime(frameNum) { if (!this._cachingAtTime) this._cachingAtTime = { shapeValue: shapePool.clone(this.pv), lastIndex: 0, lastTime: initialDefaultFrame }; frameNum *= this.elem.globalData.frameRate; frameNum -= this.offsetTime; if (frameNum !== this._cachingAtTime.lastTime) { this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0; this._cachingAtTime.lastTime = frameNum; this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime); } return this._cachingAtTime.shapeValue; } var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction(); var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction(); function ShapeExpressions() {} ShapeExpressions.prototype = { vertices: function vertices(prop, time) { if (this.k) this.getValue(); var shapePath = this.v; if (time !== void 0) shapePath = this.getValueAtTime(time, 0); var i; var len = shapePath._length; var vertices = shapePath[prop]; var points = shapePath.v; var arr = createSizedArray(len); for (i = 0; i < len; i += 1) if (prop === "i" || prop === "o") arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]; else arr[i] = [vertices[i][0], vertices[i][1]]; return arr; }, points: function points(time) { return this.vertices("v", time); }, inTangents: function inTangents(time) { return this.vertices("i", time); }, outTangents: function outTangents(time) { return this.vertices("o", time); }, isClosed: function isClosed() { return this.v.c; }, pointOnPath: function pointOnPath(perc, time) { var shapePath = this.v; if (time !== void 0) shapePath = this.getValueAtTime(time, 0); if (!this._segmentsLength) this._segmentsLength = bez.getSegmentsLength(shapePath); var segmentsLength = this._segmentsLength; var lengths = segmentsLength.lengths; var lengthPos = segmentsLength.totalLength * perc; var i = 0; var len = lengths.length; var accumulatedLength = 0; var pt; while (i < len) { if (accumulatedLength + lengths[i].addedLength > lengthPos) { var initIndex = i; var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1; var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength; pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]); break; } else accumulatedLength += lengths[i].addedLength; i += 1; } if (!pt) pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]; return pt; }, vectorOnPath: function vectorOnPath(perc, time, vectorType) { if (perc == 1) perc = this.v.c; else if (perc == 0) perc = .999; var pt1 = this.pointOnPath(perc, time); var pt2 = this.pointOnPath(perc + .001, time); var xLength = pt2[0] - pt1[0]; var yLength = pt2[1] - pt1[1]; var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2)); if (magnitude === 0) return [0, 0]; return vectorType === "tangent" ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude]; }, tangentOnPath: function tangentOnPath(perc, time) { return this.vectorOnPath(perc, time, "tangent"); }, normalOnPath: function normalOnPath(perc, time) { return this.vectorOnPath(perc, time, "normal"); }, setGroupProperty: expressionHelpers.setGroupProperty, getValueAtTime: expressionHelpers.getStaticValueAtTime }; extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction); extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction); KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime; KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression; var propertyGetShapeProp = ShapePropertyFactory.getShapeProp; ShapePropertyFactory.getShapeProp = function(elem, data, type, arr, trims) { var prop = propertyGetShapeProp(elem, data, type, arr, trims); prop.propertyIndex = data.ix; prop.lock = false; if (type === 3) expressionHelpers.searchExpressions(elem, data.pt, prop); else if (type === 4) expressionHelpers.searchExpressions(elem, data.ks, prop); if (prop.k) elem.addDynamicProperty(prop); return prop; }; } function initialize$1() { addPropertyDecorator(); } function addDecorator() { function searchExpressions() { if (this.data.d.x) { this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this); this.addEffect(this.getExpressionValue.bind(this)); return true; } return null; } TextProperty.prototype.getExpressionValue = function(currentValue, text) { var newValue = this.calculateExpression(text); if (currentValue.t !== newValue) { var newData = {}; this.copyData(newData, currentValue); newData.t = newValue.toString(); newData.__complete = false; return newData; } return currentValue; }; TextProperty.prototype.searchProperty = function() { var isKeyframed = this.searchKeyframes(); var hasExpressions = this.searchExpressions(); this.kf = isKeyframed || hasExpressions; return this.kf; }; TextProperty.prototype.searchExpressions = searchExpressions; } function initialize() { addDecorator(); } function SVGComposableEffect() {} SVGComposableEffect.prototype = { createMergeNode: function createMergeNode(resultId, ins) { var feMerge = createNS("feMerge"); feMerge.setAttribute("result", resultId); var feMergeNode; var i; for (i = 0; i < ins.length; i += 1) { feMergeNode = createNS("feMergeNode"); feMergeNode.setAttribute("in", ins[i]); feMerge.appendChild(feMergeNode); feMerge.appendChild(feMergeNode); } return feMerge; } }; 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"; function SVGTintFilter(filter, filterManager, elem, id, source) { this.filterManager = filterManager; var feColorMatrix = createNS("feColorMatrix"); feColorMatrix.setAttribute("type", "matrix"); feColorMatrix.setAttribute("color-interpolation-filters", "linearRGB"); feColorMatrix.setAttribute("values", linearFilterValue + " 1 0"); this.linearFilter = feColorMatrix; feColorMatrix.setAttribute("result", id + "_tint_1"); filter.appendChild(feColorMatrix); feColorMatrix = createNS("feColorMatrix"); feColorMatrix.setAttribute("type", "matrix"); feColorMatrix.setAttribute("color-interpolation-filters", "sRGB"); feColorMatrix.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"); feColorMatrix.setAttribute("result", id + "_tint_2"); filter.appendChild(feColorMatrix); this.matrixFilter = feColorMatrix; var feMerge = this.createMergeNode(id, [ source, id + "_tint_1", id + "_tint_2" ]); filter.appendChild(feMerge); } extendPrototype([SVGComposableEffect], SVGTintFilter); SVGTintFilter.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { var colorBlack = this.filterManager.effectElements[0].p.v; var colorWhite = this.filterManager.effectElements[1].p.v; var opacity = this.filterManager.effectElements[2].p.v / 100; this.linearFilter.setAttribute("values", linearFilterValue + " " + opacity + " 0"); 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"); } }; function SVGFillFilter(filter, filterManager, elem, id) { this.filterManager = filterManager; var feColorMatrix = createNS("feColorMatrix"); feColorMatrix.setAttribute("type", "matrix"); feColorMatrix.setAttribute("color-interpolation-filters", "sRGB"); feColorMatrix.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"); feColorMatrix.setAttribute("result", id); filter.appendChild(feColorMatrix); this.matrixFilter = feColorMatrix; } SVGFillFilter.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { var color = this.filterManager.effectElements[2].p.v; var opacity = this.filterManager.effectElements[6].p.v; 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"); } }; function SVGStrokeEffect(fil, filterManager, elem) { this.initialized = false; this.filterManager = filterManager; this.elem = elem; this.paths = []; } SVGStrokeEffect.prototype.initialize = function() { var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes; var path; var groupPath; var i; var len; if (this.filterManager.effectElements[1].p.v === 1) { len = this.elem.maskManager.masksProperties.length; i = 0; } else { i = this.filterManager.effectElements[0].p.v - 1; len = i + 1; } groupPath = createNS("g"); groupPath.setAttribute("fill", "none"); groupPath.setAttribute("stroke-linecap", "round"); groupPath.setAttribute("stroke-dashoffset", 1); for (; i < len; i += 1) { path = createNS("path"); groupPath.appendChild(path); this.paths.push({ p: path, m: i }); } if (this.filterManager.effectElements[10].p.v === 3) { var mask = createNS("mask"); var id = createElementID(); mask.setAttribute("id", id); mask.setAttribute("mask-type", "alpha"); mask.appendChild(groupPath); this.elem.globalData.defs.appendChild(mask); var g = createNS("g"); g.setAttribute("mask", "url(" + getLocationHref() + "#" + id + ")"); while (elemChildren[0]) g.appendChild(elemChildren[0]); this.elem.layerElement.appendChild(g); this.masker = mask; groupPath.setAttribute("stroke", "#fff"); } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) { if (this.filterManager.effectElements[10].p.v === 2) { elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes; while (elemChildren.length) this.elem.layerElement.removeChild(elemChildren[0]); } this.elem.layerElement.appendChild(groupPath); this.elem.layerElement.removeAttribute("mask"); groupPath.setAttribute("stroke", "#fff"); } this.initialized = true; this.pathMasker = groupPath; }; SVGStrokeEffect.prototype.renderFrame = function(forceRender) { if (!this.initialized) this.initialize(); var i; var len = this.paths.length; var mask; var path; for (i = 0; i < len; i += 1) if (this.paths[i].m !== -1) { mask = this.elem.maskManager.viewData[this.paths[i].m]; path = this.paths[i].p; if (forceRender || this.filterManager._mdf || mask.prop._mdf) path.setAttribute("d", mask.lastPath); 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) { var dasharrayValue; if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) { var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01; var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01; var l = path.getTotalLength(); dasharrayValue = "0 0 0 " + l * s + " "; var lineLength = l * (e - s); var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01; var units = Math.floor(lineLength / segment); var j; for (j = 0; j < units; j += 1) dasharrayValue += "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01 + " "; dasharrayValue += "0 " + l * 10 + " 0 0"; } else dasharrayValue = "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01; path.setAttribute("stroke-dasharray", dasharrayValue); } } if (forceRender || this.filterManager.effectElements[4].p._mdf) this.pathMasker.setAttribute("stroke-width", this.filterManager.effectElements[4].p.v * 2); if (forceRender || this.filterManager.effectElements[6].p._mdf) this.pathMasker.setAttribute("opacity", this.filterManager.effectElements[6].p.v); if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) { if (forceRender || this.filterManager.effectElements[3].p._mdf) { var color = this.filterManager.effectElements[3].p.v; this.pathMasker.setAttribute("stroke", "rgb(" + bmFloor(color[0] * 255) + "," + bmFloor(color[1] * 255) + "," + bmFloor(color[2] * 255) + ")"); } } }; function SVGTritoneFilter(filter, filterManager, elem, id) { this.filterManager = filterManager; var feColorMatrix = createNS("feColorMatrix"); feColorMatrix.setAttribute("type", "matrix"); feColorMatrix.setAttribute("color-interpolation-filters", "linearRGB"); 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"); filter.appendChild(feColorMatrix); var feComponentTransfer = createNS("feComponentTransfer"); feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB"); feComponentTransfer.setAttribute("result", id); this.matrixFilter = feComponentTransfer; var feFuncR = createNS("feFuncR"); feFuncR.setAttribute("type", "table"); feComponentTransfer.appendChild(feFuncR); this.feFuncR = feFuncR; var feFuncG = createNS("feFuncG"); feFuncG.setAttribute("type", "table"); feComponentTransfer.appendChild(feFuncG); this.feFuncG = feFuncG; var feFuncB = createNS("feFuncB"); feFuncB.setAttribute("type", "table"); feComponentTransfer.appendChild(feFuncB); this.feFuncB = feFuncB; filter.appendChild(feComponentTransfer); } SVGTritoneFilter.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { var color1 = this.filterManager.effectElements[0].p.v; var color2 = this.filterManager.effectElements[1].p.v; var color3 = this.filterManager.effectElements[2].p.v; var tableR = color3[0] + " " + color2[0] + " " + color1[0]; var tableG = color3[1] + " " + color2[1] + " " + color1[1]; var tableB = color3[2] + " " + color2[2] + " " + color1[2]; this.feFuncR.setAttribute("tableValues", tableR); this.feFuncG.setAttribute("tableValues", tableG); this.feFuncB.setAttribute("tableValues", tableB); } }; function SVGProLevelsFilter(filter, filterManager, elem, id) { this.filterManager = filterManager; var effectElements = this.filterManager.effectElements; var feComponentTransfer = createNS("feComponentTransfer"); 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) this.feFuncR = this.createFeFunc("feFuncR", feComponentTransfer); 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) this.feFuncG = this.createFeFunc("feFuncG", feComponentTransfer); 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) this.feFuncB = this.createFeFunc("feFuncB", feComponentTransfer); 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) this.feFuncA = this.createFeFunc("feFuncA", feComponentTransfer); if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) { feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB"); filter.appendChild(feComponentTransfer); } 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) { feComponentTransfer = createNS("feComponentTransfer"); feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB"); feComponentTransfer.setAttribute("result", id); filter.appendChild(feComponentTransfer); this.feFuncRComposed = this.createFeFunc("feFuncR", feComponentTransfer); this.feFuncGComposed = this.createFeFunc("feFuncG", feComponentTransfer); this.feFuncBComposed = this.createFeFunc("feFuncB", feComponentTransfer); } } SVGProLevelsFilter.prototype.createFeFunc = function(type, feComponentTransfer) { var feFunc = createNS(type); feFunc.setAttribute("type", "table"); feComponentTransfer.appendChild(feFunc); return feFunc; }; SVGProLevelsFilter.prototype.getTableValue = function(inputBlack, inputWhite, gamma, outputBlack, outputWhite) { var cnt = 0; var segments = 256; var perc; var min = Math.min(inputBlack, inputWhite); var max = Math.max(inputBlack, inputWhite); var table = Array.call(null, { length: segments }); var colorValue; var pos = 0; var outputDelta = outputWhite - outputBlack; var inputDelta = inputWhite - inputBlack; while (cnt <= 256) { perc = cnt / 256; if (perc <= min) colorValue = inputDelta < 0 ? outputWhite : outputBlack; else if (perc >= max) colorValue = inputDelta < 0 ? outputBlack : outputWhite; else colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma); table[pos] = colorValue; pos += 1; cnt += 256 / (segments - 1); } return table.join(" "); }; SVGProLevelsFilter.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { var val; var effectElements = this.filterManager.effectElements; if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) { val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v); this.feFuncRComposed.setAttribute("tableValues", val); this.feFuncGComposed.setAttribute("tableValues", val); this.feFuncBComposed.setAttribute("tableValues", val); } if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) { val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v); this.feFuncR.setAttribute("tableValues", val); } if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) { val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v); this.feFuncG.setAttribute("tableValues", val); } if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) { val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v); this.feFuncB.setAttribute("tableValues", val); } if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) { val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v); this.feFuncA.setAttribute("tableValues", val); } } }; function SVGDropShadowEffect(filter, filterManager, elem, id, source) { var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize; var filterSize = filterManager.data.fs || globalFilterSize; filter.setAttribute("x", filterSize.x || globalFilterSize.x); filter.setAttribute("y", filterSize.y || globalFilterSize.y); filter.setAttribute("width", filterSize.width || globalFilterSize.width); filter.setAttribute("height", filterSize.height || globalFilterSize.height); this.filterManager = filterManager; var feGaussianBlur = createNS("feGaussianBlur"); feGaussianBlur.setAttribute("in", "SourceAlpha"); feGaussianBlur.setAttribute("result", id + "_drop_shadow_1"); feGaussianBlur.setAttribute("stdDeviation", "0"); this.feGaussianBlur = feGaussianBlur; filter.appendChild(feGaussianBlur); var feOffset = createNS("feOffset"); feOffset.setAttribute("dx", "25"); feOffset.setAttribute("dy", "0"); feOffset.setAttribute("in", id + "_drop_shadow_1"); feOffset.setAttribute("result", id + "_drop_shadow_2"); this.feOffset = feOffset; filter.appendChild(feOffset); var feFlood = createNS("feFlood"); feFlood.setAttribute("flood-color", "#00ff00"); feFlood.setAttribute("flood-opacity", "1"); feFlood.setAttribute("result", id + "_drop_shadow_3"); this.feFlood = feFlood; filter.appendChild(feFlood); var feComposite = createNS("feComposite"); feComposite.setAttribute("in", id + "_drop_shadow_3"); feComposite.setAttribute("in2", id + "_drop_shadow_2"); feComposite.setAttribute("operator", "in"); feComposite.setAttribute("result", id + "_drop_shadow_4"); filter.appendChild(feComposite); var feMerge = this.createMergeNode(id, [id + "_drop_shadow_4", source]); filter.appendChild(feMerge); } extendPrototype([SVGComposableEffect], SVGDropShadowEffect); SVGDropShadowEffect.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { if (forceRender || this.filterManager.effectElements[4].p._mdf) this.feGaussianBlur.setAttribute("stdDeviation", this.filterManager.effectElements[4].p.v / 4); if (forceRender || this.filterManager.effectElements[0].p._mdf) { var col = this.filterManager.effectElements[0].p.v; this.feFlood.setAttribute("flood-color", rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255))); } if (forceRender || this.filterManager.effectElements[1].p._mdf) this.feFlood.setAttribute("flood-opacity", this.filterManager.effectElements[1].p.v / 255); if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) { var distance = this.filterManager.effectElements[3].p.v; var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads; var x = distance * Math.cos(angle); var y = distance * Math.sin(angle); this.feOffset.setAttribute("dx", x); this.feOffset.setAttribute("dy", y); } } }; var _svgMatteSymbols = []; function SVGMatte3Effect(filterElem, filterManager, elem) { this.initialized = false; this.filterManager = filterManager; this.filterElem = filterElem; this.elem = elem; elem.matteElement = createNS("g"); elem.matteElement.appendChild(elem.layerElement); elem.matteElement.appendChild(elem.transformedElement); elem.baseElement = elem.matteElement; } SVGMatte3Effect.prototype.findSymbol = function(mask) { var i = 0; var len = _svgMatteSymbols.length; while (i < len) { if (_svgMatteSymbols[i] === mask) return _svgMatteSymbols[i]; i += 1; } return null; }; SVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) { var parentNode = mask.layerElement.parentNode; if (!parentNode) return; var children = parentNode.children; var i = 0; var len = children.length; while (i < len) { if (children[i] === mask.layerElement) break; i += 1; } var nextChild; if (i <= len - 2) nextChild = children[i + 1]; var useElem = createNS("use"); useElem.setAttribute("href", "#" + symbolId); if (nextChild) parentNode.insertBefore(useElem, nextChild); else parentNode.appendChild(useElem); }; SVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) { if (!this.findSymbol(mask)) { var symbolId = createElementID(); var masker = createNS("mask"); masker.setAttribute("id", mask.layerId); masker.setAttribute("mask-type", "alpha"); _svgMatteSymbols.push(mask); var defs = elem.globalData.defs; defs.appendChild(masker); var symbol = createNS("symbol"); symbol.setAttribute("id", symbolId); this.replaceInParent(mask, symbolId); symbol.appendChild(mask.layerElement); defs.appendChild(symbol); var useElem = createNS("use"); useElem.setAttribute("href", "#" + symbolId); masker.appendChild(useElem); mask.data.hd = false; mask.show(); } elem.setMatte(mask.layerId); }; SVGMatte3Effect.prototype.initialize = function() { var ind = this.filterManager.effectElements[0].p.v; var elements = this.elem.comp.elements; var i = 0; var len = elements.length; while (i < len) { if (elements[i] && elements[i].data.ind === ind) this.setElementAsMask(this.elem, elements[i]); i += 1; } this.initialized = true; }; SVGMatte3Effect.prototype.renderFrame = function() { if (!this.initialized) this.initialize(); }; function SVGGaussianBlurEffect(filter, filterManager, elem, id) { filter.setAttribute("x", "-100%"); filter.setAttribute("y", "-100%"); filter.setAttribute("width", "300%"); filter.setAttribute("height", "300%"); this.filterManager = filterManager; var feGaussianBlur = createNS("feGaussianBlur"); feGaussianBlur.setAttribute("result", id); filter.appendChild(feGaussianBlur); this.feGaussianBlur = feGaussianBlur; } SVGGaussianBlurEffect.prototype.renderFrame = function(forceRender) { if (forceRender || this.filterManager._mdf) { var sigma = this.filterManager.effectElements[0].p.v * .3; var dimensions = this.filterManager.effectElements[1].p.v; var sigmaX = dimensions == 3 ? 0 : sigma; var sigmaY = dimensions == 2 ? 0 : sigma; this.feGaussianBlur.setAttribute("stdDeviation", sigmaX + " " + sigmaY); var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? "wrap" : "duplicate"; this.feGaussianBlur.setAttribute("edgeMode", edgeMode); } }; function TransformEffect() {} TransformEffect.prototype.init = function(effectsManager) { this.effectsManager = effectsManager; this.type = effectTypes.TRANSFORM_EFFECT; this.matrix = new Matrix(); this.opacity = -1; this._mdf = false; this._opMdf = false; }; TransformEffect.prototype.renderFrame = function(forceFrame) { this._opMdf = false; this._mdf = false; if (forceFrame || this.effectsManager._mdf) { var effectElements = this.effectsManager.effectElements; var anchor = effectElements[0].p.v; var position = effectElements[1].p.v; var isUniformScale = effectElements[2].p.v === 1; var scaleHeight = effectElements[3].p.v; var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v; var skew = effectElements[5].p.v; var skewAxis = effectElements[6].p.v; var rotation = effectElements[7].p.v; this.matrix.reset(); this.matrix.translate(-anchor[0], -anchor[1], anchor[2]); this.matrix.scale(scaleWidth * .01, scaleHeight * .01, 1); this.matrix.rotate(-rotation * degToRads); this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads); this.matrix.translate(position[0], position[1], 0); this._mdf = true; if (this.opacity !== effectElements[8].p.v) { this.opacity = effectElements[8].p.v; this._opMdf = true; } } }; function SVGTransformEffect(_, filterManager) { this.init(filterManager); } extendPrototype([TransformEffect], SVGTransformEffect); function CVTransformEffect(effectsManager) { this.init(effectsManager); } extendPrototype([TransformEffect], CVTransformEffect); registerRenderer("canvas", CanvasRenderer); registerRenderer("html", HybridRenderer); registerRenderer("svg", SVGRenderer); ShapeModifiers.registerModifier("tm", TrimModifier); ShapeModifiers.registerModifier("pb", PuckerAndBloatModifier); ShapeModifiers.registerModifier("rp", RepeaterModifier); ShapeModifiers.registerModifier("rd", RoundCornersModifier); ShapeModifiers.registerModifier("zz", ZigZagModifier); ShapeModifiers.registerModifier("op", OffsetPathModifier); setExpressionsPlugin(Expressions); setExpressionInterfaces(getInterface); initialize$1(); initialize(); registerEffect$1(20, SVGTintFilter, true); registerEffect$1(21, SVGFillFilter, true); registerEffect$1(22, SVGStrokeEffect, false); registerEffect$1(23, SVGTritoneFilter, true); registerEffect$1(24, SVGProLevelsFilter, true); registerEffect$1(25, SVGDropShadowEffect, true); registerEffect$1(28, SVGMatte3Effect, false); registerEffect$1(29, SVGGaussianBlurEffect, true); registerEffect$1(35, SVGTransformEffect, false); registerEffect(35, CVTransformEffect); return lottie; })); })); //#endregion //#region node_modules/lottie-react/build/index.umd.js var require_index_umd = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function(global, factory) { typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require_lottie(), (globalThis.React)) : typeof define === "function" && define.amd ? define([ "exports", "lottie-web", "react" ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["lottie-react"] = {}, global.Lottie, global.React)); })(exports, (function(exports$1, lottie, React) { "use strict"; function _interopDefaultLegacy(e) { return e && typeof e === "object" && "default" in e ? e : { "default": e }; } var lottie__default = /*#__PURE__*/ _interopDefaultLegacy(lottie); var React__default = /*#__PURE__*/ _interopDefaultLegacy(React); function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e; var n; var i; var u; var a = []; var f = !0; var o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function(r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function(r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o; var r; var i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } var _excluded$1 = [ "animationData", "loop", "autoplay", "initialSegment", "onComplete", "onLoopComplete", "onEnterFrame", "onSegmentStart", "onConfigReady", "onDataReady", "onDataFailed", "onLoadedImages", "onDOMLoaded", "onDestroy", "lottieRef", "renderer", "name", "assetsPath", "rendererSettings" ]; var useLottie = function useLottie(props, style) { var animationData = props.animationData; var loop = props.loop; var autoplay = props.autoplay; var initialSegment = props.initialSegment; var onComplete = props.onComplete; var onLoopComplete = props.onLoopComplete; var onEnterFrame = props.onEnterFrame; var onSegmentStart = props.onSegmentStart; var onConfigReady = props.onConfigReady; var onDataReady = props.onDataReady; var onDataFailed = props.onDataFailed; var onLoadedImages = props.onLoadedImages; var onDOMLoaded = props.onDOMLoaded; var onDestroy = props.onDestroy; props.lottieRef; props.renderer; props.name; props.assetsPath; props.rendererSettings; var rest = _objectWithoutProperties(props, _excluded$1); var _useState2 = _slicedToArray(React.useState(false), 2); var animationLoaded = _useState2[0]; var setAnimationLoaded = _useState2[1]; var animationInstanceRef = React.useRef(); var animationContainer = React.useRef(null); /** * Play */ var play = function play() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.play(); }; /** * Stop */ var stop = function stop() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.stop(); }; /** * Pause */ var pause = function pause() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.pause(); }; /** * Set animation speed * @param speed */ var setSpeed = function setSpeed(speed) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setSpeed(speed); }; /** * Got to frame and play * @param value * @param isFrame */ var goToAndPlay = function goToAndPlay(value, isFrame) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.goToAndPlay(value, isFrame); }; /** * Got to frame and stop * @param value * @param isFrame */ var goToAndStop = function goToAndStop(value, isFrame) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.goToAndStop(value, isFrame); }; /** * Set animation direction * @param direction */ var setDirection = function setDirection(direction) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setDirection(direction); }; /** * Play animation segments * @param segments * @param forceFlag */ var playSegments = function playSegments(segments, forceFlag) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.playSegments(segments, forceFlag); }; /** * Set sub frames * @param useSubFrames */ var setSubframe = function setSubframe(useSubFrames) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setSubframe(useSubFrames); }; /** * Get animation duration * @param inFrames */ var getDuration = function getDuration(inFrames) { var _a; return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames); }; /** * Destroy animation */ var destroy = function destroy() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy(); animationInstanceRef.current = void 0; }; /** * Load a new animation, and if it's the case, destroy the previous one * @param {Object} forcedConfigs */ var loadAnimation = function loadAnimation() { var forcedConfigs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var _a; if (!animationContainer.current) return; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy(); var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, { container: animationContainer.current }); animationInstanceRef.current = lottie__default["default"].loadAnimation(config); setAnimationLoaded(!!animationInstanceRef.current); return function() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy(); animationInstanceRef.current = void 0; }; }; /** * (Re)Initialize when animation data changed */ React.useEffect(function() { var onUnmount = loadAnimation(); return function() { return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount(); }; }, [animationData, loop]); React.useEffect(function() { if (!animationInstanceRef.current) return; animationInstanceRef.current.autoplay = !!autoplay; }, [autoplay]); React.useEffect(function() { if (!animationInstanceRef.current) return; if (!initialSegment) { animationInstanceRef.current.resetSegments(true); return; } if (!Array.isArray(initialSegment) || !initialSegment.length) return; if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) animationInstanceRef.current.currentRawFrame = initialSegment[0]; animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]); }, [initialSegment]); /** * Reinitialize listener on change */ React.useEffect(function() { var listeners = [ { name: "complete", handler: onComplete }, { name: "loopComplete", handler: onLoopComplete }, { name: "enterFrame", handler: onEnterFrame }, { name: "segmentStart", handler: onSegmentStart }, { name: "config_ready", handler: onConfigReady }, { name: "data_ready", handler: onDataReady }, { name: "data_failed", handler: onDataFailed }, { name: "loaded_images", handler: onLoadedImages }, { name: "DOMLoaded", handler: onDOMLoaded }, { name: "destroy", handler: onDestroy } ].filter(function(listener) { return listener.handler != null; }); if (!listeners.length) return; var deregisterList = listeners.map( /** * Handle the process of adding an event listener * @param {Listener} listener * @return {Function} Function that deregister the listener */ function(listener) { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.addEventListener(listener.name, listener.handler); return function() { var _a; (_a = animationInstanceRef.current) === null || _a === void 0 || _a.removeEventListener(listener.name, listener.handler); }; } ); return function() { deregisterList.forEach(function(deregister) { return deregister(); }); }; }, [ onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy ]); return { View: /* @__PURE__ */ React__default["default"].createElement("div", _objectSpread2({ style, ref: animationContainer }, rest)), play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef: animationContainer, animationLoaded, animationItem: animationInstanceRef.current }; }; function getContainerVisibility(container) { var _container$getBoundin = container.getBoundingClientRect(); var top = _container$getBoundin.top; var height = _container$getBoundin.height; return (window.innerHeight - top) / (window.innerHeight + height); } function getContainerCursorPosition(container, cursorX, cursorY) { var _container$getBoundin2 = container.getBoundingClientRect(); var top = _container$getBoundin2.top; var left = _container$getBoundin2.left; var width = _container$getBoundin2.width; var height = _container$getBoundin2.height; return { x: (cursorX - left) / width, y: (cursorY - top) / height }; } var useInitInteractivity = function useInitInteractivity(_ref) { var wrapperRef = _ref.wrapperRef; var animationItem = _ref.animationItem; var mode = _ref.mode; var actions = _ref.actions; React.useEffect(function() { var wrapper = wrapperRef.current; if (!wrapper || !animationItem || !actions.length) return; animationItem.stop(); var scrollModeHandler = function scrollModeHandler() { var assignedSegment = null; var scrollHandler = function scrollHandler() { var currentPercent = getContainerVisibility(wrapper); var action = actions.find(function(_ref2) { var visibility = _ref2.visibility; return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1]; }); if (!action) return; if (action.type === "seek" && action.visibility && action.frames.length === 2) { var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]); //! goToAndStop must be relative to the start of the current segment animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true); } if (action.type === "loop") { if (assignedSegment === null) { animationItem.playSegments(action.frames, true); assignedSegment = action.frames; } else if (assignedSegment !== action.frames) { animationItem.playSegments(action.frames, true); assignedSegment = action.frames; } else if (animationItem.isPaused) { animationItem.playSegments(action.frames, true); assignedSegment = action.frames; } } if (action.type === "play" && animationItem.isPaused) { animationItem.resetSegments(true); animationItem.play(); } if (action.type === "stop") animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true); }; document.addEventListener("scroll", scrollHandler); return function() { document.removeEventListener("scroll", scrollHandler); }; }; var cursorModeHandler = function cursorModeHandler() { var handleCursor = function handleCursor(_x, _y) { var x = _x; var y = _y; if (x !== -1 && y !== -1) { var pos = getContainerCursorPosition(wrapper, x, y); x = pos.x; y = pos.y; } var action = actions.find(function(_ref3) { var position = _ref3.position; if (position && Array.isArray(position.x) && Array.isArray(position.y)) return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1]; if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) return x === position.x && y === position.y; return false; }); if (!action) return; if (action.type === "seek" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) { var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]); var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]); animationItem.playSegments(action.frames, true); animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true); } if (action.type === "loop") animationItem.playSegments(action.frames, true); if (action.type === "play") { if (animationItem.isPaused) animationItem.resetSegments(false); animationItem.playSegments(action.frames); } if (action.type === "stop") animationItem.goToAndStop(action.frames[0], true); }; var mouseMoveHandler = function mouseMoveHandler(ev) { handleCursor(ev.clientX, ev.clientY); }; var mouseOutHandler = function mouseOutHandler() { handleCursor(-1, -1); }; wrapper.addEventListener("mousemove", mouseMoveHandler); wrapper.addEventListener("mouseout", mouseOutHandler); return function() { wrapper.removeEventListener("mousemove", mouseMoveHandler); wrapper.removeEventListener("mouseout", mouseOutHandler); }; }; switch (mode) { case "scroll": return scrollModeHandler(); case "cursor": return cursorModeHandler(); } }, [mode, animationItem]); }; var useLottieInteractivity = function useLottieInteractivity(_ref4) { var actions = _ref4.actions; var mode = _ref4.mode; var lottieObj = _ref4.lottieObj; var animationItem = lottieObj.animationItem; var View = lottieObj.View; var animationContainerRef = lottieObj.animationContainerRef; useInitInteractivity({ actions, animationItem, mode, wrapperRef: animationContainerRef }); return View; }; var _excluded = ["style", "interactivity"]; var Lottie = function Lottie(props) { var _a; var _b; var _c; var style = props.style; var interactivity = props.interactivity; /** * Initialize the 'useLottie' hook */ var _useLottie = useLottie(_objectWithoutProperties(props, _excluded), style); var View = _useLottie.View; var play = _useLottie.play; var stop = _useLottie.stop; var pause = _useLottie.pause; var setSpeed = _useLottie.setSpeed; var goToAndStop = _useLottie.goToAndStop; var goToAndPlay = _useLottie.goToAndPlay; var setDirection = _useLottie.setDirection; var playSegments = _useLottie.playSegments; var setSubframe = _useLottie.setSubframe; var getDuration = _useLottie.getDuration; var destroy = _useLottie.destroy; var animationContainerRef = _useLottie.animationContainerRef; var animationLoaded = _useLottie.animationLoaded; var animationItem = _useLottie.animationItem; /** * Make the hook variables/methods available through the provided 'lottieRef' */ React.useEffect(function() { if (props.lottieRef) props.lottieRef.current = { play, stop, pause, setSpeed, goToAndPlay, goToAndStop, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem }; }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]); return useLottieInteractivity({ lottieObj: { View, play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem }, actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [], mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : "scroll" }); }; Object.defineProperty(exports$1, "LottiePlayer", { enumerable: true, get: function() { return lottie__default["default"]; } }); exports$1["default"] = Lottie; exports$1.useLottie = useLottie; exports$1.useLottieInteractivity = useLottieInteractivity; Object.defineProperty(exports$1, "__esModule", { value: true }); })); })); //#endregion //#region modules/promotions/assets/js/react/assets/atomic-form-animation.json var import_index_umd = /* @__PURE__ */ __toESM(require_index_umd()); var atomic_form_animation_exports = /* @__PURE__ */ __exportAll({ assets: () => assets, ddd: () => 0, default: () => atomic_form_animation_default, fr: () => 100, h: () => 148, ip: () => 0, layers: () => layers, op: () => 876, v: () => v, w: () => 296 }); var v = "5.7.5"; var fr = 100; var ip = 0; var op = 876; var w = 296; var h = 148; var ddd = 0; var assets = [ { "id": "0", "layers": [{ "ddd": 0, "refId": "g", "w": 1184, "h": 592, "ind": 1, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [113, 57], "ix": 2 }, "a": { "a": 0, "k": [592, 296], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 868, "s": [100], "i": { "x": [.667], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 884, "s": [0] }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }] }, { "id": "g", "layers": [ { "ddd": 0, "ind": 29, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [454.77, 347.63], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 668, "s": [74, 74], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 676, "s": [81, 81] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "h", "w": 80, "h": 78, "ind": 30, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-19, -14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 29 }, { "ddd": 0, "ind": 31, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [454.77, 347.63], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 0, "k": [76, 76], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "i", "w": 346, "h": 58, "ind": 32, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-2, -2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 31 }, { "ddd": 0, "refId": "j", "w": 626, "h": 239, "ind": 33, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [279, 120], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 34, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.58, 3.18], [9.58, -3.25], [10.46, -3.25], [10.46, 3.18], [9.58, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.38, -3.25], [8.36, -3.25], [8.36, -2.16], [7.38, -2.16], [7.38, -3.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.44, 3.18], [7.44, -1.35], [8.31, -1.35], [8.31, 3.18], [7.44, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [4.05, 2.56], [5.36, 1.19], [5.36, 1.11], [4.19, 1.11], [3.21, 1.87], [4.05, 2.56] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [3.88, 3.25], [2.33, 1.89], [4.1, .44], [5.05, .44], [5.36, .2], [4.26, -.72], [3.15, .13], [2.33, .13], [4.29, -1.43], [6.22, .26], [6.22, 3.18], [5.36, 3.18], [5.36, 2.43], [3.88, 3.25] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-5.41, 3.18], [-5.41, -1.35], [-4.54, -1.35], [-4.54, -.55], [-3.18, -1.43], [-1.73, -.49], [-.26, -1.43], [1.34, .3], [1.34, 3.18], [.47, 3.18], [.47, .54], [-.5, -.66], [-1.6, .71], [-1.6, 3.18], [-2.48, 3.18], [-2.48, .54], [-3.43, -.66], [-4.54, .71], [-4.54, 3.18], [-5.41, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-10.46, 3.18], [-10.46, -3.12], [-6.41, -3.12], [-6.41, -2.29], [-9.52, -2.29], [-9.52, -.48], [-7.01, -.48], [-7.01, .35], [-9.52, .35], [-9.52, 2.35], [-6.32, 2.35], [-6.32, 3.18], [-10.46, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [682, 120.32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .82, 1, .71 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 1, "k": [ { "t": 540, "s": [592, 296], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 584, "s": [592, 396], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 600, "s": [592, 396], "h": 1 }, { "t": 620, "s": [592, 347], "h": 1 } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 1, "k": [ { "t": 540, "s": [399, 399], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 560, "s": [373, 373], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 584, "s": [399, 399] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 35, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [15.39, 3.54], [13.71, 1.89], [13.71, -.67], [12.68, -.67], [12.68, -1.5], [13.71, -1.5], [13.71, -3.08], [14.68, -3.08], [14.68, -1.5], [16.17, -1.5], [16.17, -.67], [14.68, -.67], [14.68, 1.85], [15.46, 2.69], [16.17, 2.69], [16.17, 3.54], [15.39, 3.54] ], "i": [ [0, 0], [0, 1.03], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.48, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-1.02, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, .54], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.84, -3.62], [11.92, -3.62], [11.92, -2.4], [10.84, -2.4], [10.84, -3.62] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.9, 3.54], [10.9, -1.5], [11.87, -1.5], [11.87, 3.54], [10.9, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [2.05, 3.54], [2.05, -1.5], [3.02, -1.5], [3.02, -.61], [4.53, -1.58], [6.14, -.55], [7.78, -1.58], [9.55, .34], [9.55, 3.54], [8.58, 3.54], [8.58, .6], [7.51, -.73], [6.28, .79], [6.28, 3.54], [5.31, 3.54], [5.31, .6], [4.25, -.73], [3.02, .79], [3.02, 3.54], [2.05, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.75, 0], [-.2, -.66], [-.73, 0], [0, -1.17], [0, 0], [0, 0], [0, 0], [.67, 0], [0, -.8], [0, 0], [0, 0], [0, 0], [.66, 0], [0, -.8], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.21, -.57], [.77, 0], [.21, -.6], [1.09, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.58, 2.77], [-.04, 1.01], [-1.58, -.73], [-3.13, 1.01], [-1.58, 2.77] ], "i": [ [0, 0], [0, 1.05], [.93, 0], [0, -1.05], [-.93, 0] ], "o": [ [.93, 0], [0, -1.05], [-.93, 0], [0, 1.05], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.43, 3.62], [-3.06, 2.79], [-3.06, 3.54], [-4.03, 3.54], [-4.03, -3.62], [-3.06, -3.62], [-3.06, -.77], [-1.45, -1.58], [.94, 1.01], [-1.43, 3.62] ], "i": [ [0, 0], [.3, .5], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.67, 0], [0, -1.49], [1.51, 0] ], "o": [ [-.68, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.31, -.5], [1.52, 0], [0, 1.49], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-8.04, 3.62], [-9.91, 1.59], [-9.91, -1.5], [-8.95, -1.5], [-8.95, 1.41], [-7.76, 2.75], [-6.4, 1.23], [-6.4, -1.5], [-5.43, -1.5], [-5.43, 3.54], [-6.4, 3.54], [-6.4, 2.65], [-8.04, 3.62] ], "i": [ [0, 0], [0, 1.2], [0, 0], [0, 0], [0, 0], [-.71, 0], [0, .88], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.75, 0] ], "o": [ [-1.14, 0], [0, 0], [0, 0], [0, 0], [0, .8], [.79, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.27, .63], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-13.48, 3.62], [-16.17, 1.22], [-15.16, 1.22], [-13.48, 2.69], [-11.98, 1.59], [-15.96, -1.64], [-13.56, -3.54], [-11.06, -1.44], [-12.07, -1.44], [-13.56, -2.63], [-14.91, -1.65], [-10.92, 1.58], [-13.48, 3.62] ], "i": [ [0, 0], [.08, 1.45], [0, 0], [-1.07, 0], [0, .76], [0, 2.63], [-1.41, 0], [-.09, -1.28], [0, 0], [.86, 0], [0, -.6], [0, -2.74], [1.5, 0] ], "o": [ [-1.66, 0], [0, 0], [.08, .9], [.88, 0], [0, -1.75], [0, -1.14], [1.43, 0], [0, 0], [-.07, -.72], [-.84, 0], [0, 1.76], [0, 1.28], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [734.38, 174.97], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-26.5, -10.5], [26.5, -10.5], [28.5, -8.5], [28.5, 8.5], [26.5, 10.5], [-26.5, 10.5], [-28.5, 8.5], [-28.5, -8.5], [-26.5, -10.5] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .012, .18, .193 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [734.32, 175], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [592, 296], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 0, "k": [399, 399], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "k", "ind": 36, "ty": 2, "sr": 1, "ks": { "p": { "a": 0, "k": [592, 296], "ix": 2 }, "a": { "a": 0, "k": [448, 224], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 } ] }, { "id": "l", "layers": [{ "ddd": 0, "refId": "m", "w": 344, "h": 54, "ind": 37, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 38, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [80, 78], "ix": 2 }, "p": { "a": 0, "k": [21, 25], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "h", "layers": [{ "ddd": 0, "ind": 39, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [60.87, -13.86], [-18.99, -13.86], [-18.99, 63.49], [60.87, 63.49], [60.87, -13.86] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "l", "w": 80, "h": 78, "ind": 30, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [21, 25], "ix": 2 }, "a": { "a": 0, "k": [21, 25], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 1 }] }, { "id": "m", "layers": [ { "ddd": 0, "ind": 40, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 41, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 42, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 43, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "n", "layers": [{ "ddd": 0, "refId": "o", "w": 344, "h": 54, "ind": 44, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 45, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [64, 60], "ix": 2 }, "p": { "a": 0, "k": [29, 27], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "i", "layers": [{ "ddd": 0, "ind": 46, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [60.87, -13.86], [-18.99, -13.86], [-18.99, 63.49], [60.87, 63.49], [60.87, -13.86] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "n", "w": 346, "h": 58, "ind": 32, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [171, 27], "ix": 2 }, "a": { "a": 0, "k": [171, 27], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 2 }] }, { "id": "o", "layers": [ { "ddd": 0, "ind": 47, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 48, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 49, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 50, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 644, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "j", "layers": [ { "ddd": 0, "ind": 33, "ty": 3, "sr": 1, "ks": { "p": { "a": 1, "k": [ { "t": 540, "s": [313, 176], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 584, "s": [313, 76], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 600, "s": [313, 76], "h": 1 }, { "t": 620, "s": [313, 27], "h": 1 } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 1, "k": [ { "t": 540, "s": [399, 399], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 560, "s": [446, 446], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 584, "s": [399, 399] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 51, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [683.15, 145.39], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 33 }, { "ddd": 0, "refId": "p", "w": 24, "h": 8, "ind": 52, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-12, -4], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 51 }, { "ddd": 0, "ind": 53, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 33, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .82, 1, .71 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 145.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "p", "layers": [{ "ddd": 0, "ind": 54, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [12, 4], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [8.13, .33], [10.69, .33], [9.43, -.79], [8.13, .33] ], "i": [ [0, 0], [0, 0], [.747, 0], [.135, -.738] ], "o": [ [0, 0], [-.054, -.693], [-.702, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.51, 3.19], [7.24, .82], [9.43, -1.49], [11.57, .66], [11.55, 1.01], [8.1, 1.01], [9.51, 2.44], [10.74, 1.64], [11.61, 1.64], [9.51, 3.19] ], "i": [ [0, 0], [0, 1.26], [-1.395, 0], [0, -1.152], [.009, -.081], [0, 0], [-.783, 0], [-.126, .513], [0, 0], [1.125, 0] ], "o": [ [-1.404, 0], [0, -1.269], [1.395, 0], [0, .117], [0, 0], [.072, .846], [.666, 0], [0, 0], [-.153, .936], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-.41, 3.11], [-.41, -1.42], [.46, -1.42], [.46, -.62], [1.82, -1.49], [3.27, -.56], [4.74, -1.49], [6.34, .23], [6.34, 3.11], [5.46, 3.11], [5.46, .48], [4.5, -.73], [3.39, .64], [3.39, 3.11], [2.52, 3.11], [2.52, .48], [1.57, -.73], [.46, .64], [.46, 3.11], [-.41, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.8, 2.49], [-2.49, 1.13], [-2.49, 1.04], [-3.66, 1.04], [-4.64, 1.8], [-3.8, 2.49] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.97, 3.19], [-5.52, 1.82], [-3.75, .37], [-2.8, .37], [-2.49, .14], [-3.59, -.79], [-4.71, .06], [-5.52, .06], [-3.56, -1.49], [-1.63, .19], [-1.63, 3.11], [-2.49, 3.11], [-2.49, 2.37], [-3.97, 3.19] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-11.61, 3.11], [-11.61, -3.19], [-10.56, -3.19], [-7.53, 1.67], [-7.53, -3.19], [-6.6, -3.19], [-6.6, 3.11], [-7.63, 3.11], [-10.67, -1.73], [-10.67, 3.11], [-11.61, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "k", "u": "", "p": "data:image/png;base64,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", "w": 896, "h": 448, "e": 1 }, { "id": "1", "layers": [ { "ddd": 0, "ind": 55, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [454.77, 347.63], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 0, "k": [76, 76], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "q", "w": 346, "h": 58, "ind": 56, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-2, -2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 55 }, { "ddd": 0, "ind": 57, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [454.77, 347.63], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 536, "s": [74, 74], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 544, "s": [81, 81] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "r", "w": 80, "h": 78, "ind": 58, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-19, -14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 57 }, { "ddd": 0, "refId": "s", "w": 626, "h": 239, "ind": 59, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [279, 120], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }, { "t": 820, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 60, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }, { "t": 820, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.58, 3.18], [9.58, -3.25], [10.46, -3.25], [10.46, 3.18], [9.58, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.38, -3.25], [8.36, -3.25], [8.36, -2.16], [7.38, -2.16], [7.38, -3.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.44, 3.18], [7.44, -1.35], [8.31, -1.35], [8.31, 3.18], [7.44, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [4.05, 2.56], [5.36, 1.19], [5.36, 1.11], [4.19, 1.11], [3.21, 1.87], [4.05, 2.56] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [3.88, 3.25], [2.33, 1.89], [4.1, .44], [5.05, .44], [5.36, .2], [4.26, -.72], [3.15, .13], [2.33, .13], [4.29, -1.43], [6.22, .26], [6.22, 3.18], [5.36, 3.18], [5.36, 2.43], [3.88, 3.25] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-5.41, 3.18], [-5.41, -1.35], [-4.54, -1.35], [-4.54, -.55], [-3.18, -1.43], [-1.73, -.49], [-.26, -1.43], [1.34, .3], [1.34, 3.18], [.47, 3.18], [.47, .54], [-.5, -.66], [-1.6, .71], [-1.6, 3.18], [-2.48, 3.18], [-2.48, .54], [-3.43, -.66], [-4.54, .71], [-4.54, 3.18], [-5.41, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-10.46, 3.18], [-10.46, -3.12], [-6.41, -3.12], [-6.41, -2.29], [-9.52, -2.29], [-9.52, -.48], [-7.01, -.48], [-7.01, .35], [-9.52, .35], [-9.52, 2.35], [-6.32, 2.35], [-6.32, 3.18], [-10.46, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [682, 120.32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .8, .86, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 1, "k": [ { "t": 424, "s": [592, 296], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 468, "s": [592, 396], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 484, "s": [592, 396], "h": 1 }, { "t": 504, "s": [592, 347], "h": 1 } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 1, "k": [ { "t": 424, "s": [399, 399], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 444, "s": [373, 373], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 468, "s": [399, 399] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 61, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }, { "t": 820, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [15.39, 3.54], [13.71, 1.89], [13.71, -.67], [12.68, -.67], [12.68, -1.5], [13.71, -1.5], [13.71, -3.08], [14.68, -3.08], [14.68, -1.5], [16.17, -1.5], [16.17, -.67], [14.68, -.67], [14.68, 1.85], [15.46, 2.69], [16.17, 2.69], [16.17, 3.54], [15.39, 3.54] ], "i": [ [0, 0], [0, 1.03], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.48, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-1.02, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, .54], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.84, -3.62], [11.92, -3.62], [11.92, -2.4], [10.84, -2.4], [10.84, -3.62] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.9, 3.54], [10.9, -1.5], [11.87, -1.5], [11.87, 3.54], [10.9, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [2.05, 3.54], [2.05, -1.5], [3.02, -1.5], [3.02, -.61], [4.53, -1.58], [6.14, -.55], [7.78, -1.58], [9.55, .34], [9.55, 3.54], [8.58, 3.54], [8.58, .6], [7.51, -.73], [6.28, .79], [6.28, 3.54], [5.31, 3.54], [5.31, .6], [4.25, -.73], [3.02, .79], [3.02, 3.54], [2.05, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.75, 0], [-.2, -.66], [-.73, 0], [0, -1.17], [0, 0], [0, 0], [0, 0], [.67, 0], [0, -.8], [0, 0], [0, 0], [0, 0], [.66, 0], [0, -.8], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.21, -.57], [.77, 0], [.21, -.6], [1.09, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.58, 2.77], [-.04, 1.01], [-1.58, -.73], [-3.13, 1.01], [-1.58, 2.77] ], "i": [ [0, 0], [0, 1.05], [.93, 0], [0, -1.05], [-.93, 0] ], "o": [ [.93, 0], [0, -1.05], [-.93, 0], [0, 1.05], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.43, 3.62], [-3.06, 2.79], [-3.06, 3.54], [-4.03, 3.54], [-4.03, -3.62], [-3.06, -3.62], [-3.06, -.77], [-1.45, -1.58], [.94, 1.01], [-1.43, 3.62] ], "i": [ [0, 0], [.3, .5], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.67, 0], [0, -1.49], [1.51, 0] ], "o": [ [-.68, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.31, -.5], [1.52, 0], [0, 1.49], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-8.04, 3.62], [-9.91, 1.59], [-9.91, -1.5], [-8.95, -1.5], [-8.95, 1.41], [-7.76, 2.75], [-6.4, 1.23], [-6.4, -1.5], [-5.43, -1.5], [-5.43, 3.54], [-6.4, 3.54], [-6.4, 2.65], [-8.04, 3.62] ], "i": [ [0, 0], [0, 1.2], [0, 0], [0, 0], [0, 0], [-.71, 0], [0, .88], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.75, 0] ], "o": [ [-1.14, 0], [0, 0], [0, 0], [0, 0], [0, .8], [.79, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.27, .63], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-13.48, 3.62], [-16.17, 1.22], [-15.16, 1.22], [-13.48, 2.69], [-11.98, 1.59], [-15.96, -1.64], [-13.56, -3.54], [-11.06, -1.44], [-12.07, -1.44], [-13.56, -2.63], [-14.91, -1.65], [-10.92, 1.58], [-13.48, 3.62] ], "i": [ [0, 0], [.08, 1.45], [0, 0], [-1.07, 0], [0, .76], [0, 2.63], [-1.41, 0], [-.09, -1.28], [0, 0], [.86, 0], [0, -.6], [0, -2.74], [1.5, 0] ], "o": [ [-1.66, 0], [0, 0], [.08, .9], [.88, 0], [0, -1.75], [0, -1.14], [1.43, 0], [0, 0], [-.07, -.72], [-.84, 0], [0, 1.76], [0, 1.28], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [734.38, 174.97], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-26.5, -10.5], [26.5, -10.5], [28.5, -8.5], [28.5, 8.5], [26.5, 10.5], [-26.5, 10.5], [-28.5, 8.5], [-28.5, -8.5], [-26.5, -10.5] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .01, .004, .232 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [734.32, 175], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [592, 296], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 0, "k": [399, 399], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "t", "ind": 62, "ty": 2, "sr": 1, "ks": { "p": { "a": 0, "k": [592, 296], "ix": 2 }, "a": { "a": 0, "k": [448, 224], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }, { "t": 820, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 } ] }, { "id": "u", "layers": [{ "ddd": 0, "refId": "v", "w": 344, "h": 54, "ind": 63, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 64, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [64, 60], "ix": 2 }, "p": { "a": 0, "k": [29, 27], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "q", "layers": [{ "ddd": 0, "ind": 65, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [60.87, -13.86], [-18.99, -13.86], [-18.99, 63.49], [60.87, 63.49], [60.87, -13.86] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "u", "w": 346, "h": 58, "ind": 56, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [171, 27], "ix": 2 }, "a": { "a": 0, "k": [171, 27], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 2 }] }, { "id": "v", "layers": [ { "ddd": 0, "ind": 66, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 67, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 68, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 69, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "w", "layers": [{ "ddd": 0, "refId": "x", "w": 344, "h": 54, "ind": 70, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 71, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [80, 78], "ix": 2 }, "p": { "a": 0, "k": [21, 25], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "r", "layers": [{ "ddd": 0, "ind": 72, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [19, 14], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [60.87, -13.86], [-18.99, -13.86], [-18.99, 63.49], [60.87, 63.49], [60.87, -13.86] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "w", "w": 80, "h": 78, "ind": 58, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [21, 25], "ix": 2 }, "a": { "a": 0, "k": [21, 25], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 1 }] }, { "id": "x", "layers": [ { "ddd": 0, "ind": 73, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 74, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 75, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 76, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "s", "layers": [ { "ddd": 0, "ind": 59, "ty": 3, "sr": 1, "ks": { "p": { "a": 1, "k": [ { "t": 424, "s": [313, 176], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 468, "s": [313, 76], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 484, "s": [313, 76], "h": 1 }, { "t": 504, "s": [313, 27], "h": 1 } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 1, "k": [ { "t": 424, "s": [399, 399], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 444, "s": [446, 446], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 468, "s": [399, 399] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 77, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [683.15, 145.39], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 59 }, { "ddd": 0, "refId": "y", "w": 24, "h": 8, "ind": 78, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-12, -4], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 77 }, { "ddd": 0, "ind": 79, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 59, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ .8, .86, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 145.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "y", "layers": [{ "ddd": 0, "ind": 80, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [12, 4], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [8.13, .33], [10.69, .33], [9.43, -.79], [8.13, .33] ], "i": [ [0, 0], [0, 0], [.747, 0], [.135, -.738] ], "o": [ [0, 0], [-.054, -.693], [-.702, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.51, 3.19], [7.24, .82], [9.43, -1.49], [11.57, .66], [11.55, 1.01], [8.1, 1.01], [9.51, 2.44], [10.74, 1.64], [11.61, 1.64], [9.51, 3.19] ], "i": [ [0, 0], [0, 1.26], [-1.395, 0], [0, -1.152], [.009, -.081], [0, 0], [-.783, 0], [-.126, .513], [0, 0], [1.125, 0] ], "o": [ [-1.404, 0], [0, -1.269], [1.395, 0], [0, .117], [0, 0], [.072, .846], [.666, 0], [0, 0], [-.153, .936], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-.41, 3.11], [-.41, -1.42], [.46, -1.42], [.46, -.62], [1.82, -1.49], [3.27, -.56], [4.74, -1.49], [6.34, .23], [6.34, 3.11], [5.46, 3.11], [5.46, .48], [4.5, -.73], [3.39, .64], [3.39, 3.11], [2.52, 3.11], [2.52, .48], [1.57, -.73], [.46, .64], [.46, 3.11], [-.41, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.8, 2.49], [-2.49, 1.13], [-2.49, 1.04], [-3.66, 1.04], [-4.64, 1.8], [-3.8, 2.49] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.97, 3.19], [-5.52, 1.82], [-3.75, .37], [-2.8, .37], [-2.49, .14], [-3.59, -.79], [-4.71, .06], [-5.52, .06], [-3.56, -1.49], [-1.63, .19], [-1.63, 3.11], [-2.49, 3.11], [-2.49, 2.37], [-3.97, 3.19] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-11.61, 3.11], [-11.61, -3.19], [-10.56, -3.19], [-7.53, 1.67], [-7.53, -3.19], [-6.6, -3.19], [-6.6, 3.11], [-7.63, 3.11], [-10.67, -1.73], [-10.67, 3.11], [-11.61, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "t", "u": "", "p": "data:image/png;base64,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", "w": 896, "h": 448, "e": 1 }, { "id": "2", "layers": [{ "ddd": 0, "refId": "z", "ind": 3, "ty": 2, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "a": { "a": 0, "k": [653.5, 533.5], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 716, "s": [0], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 764, "s": [100], "i": { "x": [.667], "y": [1] }, "o": { "x": [.167], "y": [0] } }, { "t": 868, "s": [100], "i": { "x": [.667], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 884, "s": [0] } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }] }, { "id": "z", "u": "", "p": "data:image/png;base64,UklGRroNAQBXRUJQVlA4WAoAAAAwAAAA/wMAQgMASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZBTFBIgscAAAEhhm3bRoLiJP33H7j33wIR/Z8AYOxc1AV3YEg6SneDMU4ys2ztzMvBaNJRNQMzG0dmVsBqD0lARBSgllU2TUWw55ww55R08G8Sw0hSIg3CgPmn7L0ZRMQEoOBDkFMAVSA7gogoUMmqi12VF107yKNuKuFRq5LdV9Pt2XOYM33WtJdrZp3pr7z18+VbkiRLkiTbqvz/j05IdxVmYhb1SIvqS0RMAEVJkmS3zRggwQMPOccuHiDJH2AhkiRBkqR9/qBfOsPdzGv+AUSEb0eSLEmybUuAGZjqMFMnU4uoqnn9AOratqdtJIEdnjIMLu/+3/M/DmYcnimHbEmXvvf9NNj4WnchIiDathUk0nKUlG7vDLcH2A9YciNJkCSpc///54KbqYqqR/Z25eQpIiRIkiS3DS8LELCoQTWGS9r+gG9JkixJkmwrvP7/l7scVISYRNQya8LmLSIsSrYttK3ESzQBI+hz7r4IyfZ8gAS3jSRJ2vr/owddU5VxZtoRM7MRERIlWa1biYVYN/LjSELHIDv7AZbcSBIkSers/795Em4mKmaRM1iE7ykiJEq2FbbNi6saGaHz7MMTdpwf8C1JkiVJkm2Zef3/J5cbiDARq9WluyP6KSIsSrYVtrWkF+tGGKHFaLGFHHk+wEIkSYIkSdXHn/NJZphZ5Nw/gIiw4DaSIEmSAxcHz42MZLlVVc/Mzn7gn//48f+/H//jx//4US3Gf7mOKl8/VHZW/ZGy0+oPlJ1Xf95Y5YeXmVDrz8EWt/Q7v/AUj7S1MZWQNLVxtSLRwjSzE6HtTA+7kdEPRpSBU1vVtmI4pNKYLJM6foEQnOSloS5/VEmN9iE5ZF69gLE8kVaaj2wuSyIVVaWnkGTEkY2Gmi0h+FLrkY0qjqatZrdlkYsOT6vJpL/I5hp+XKhz1IWGSO7IcZXutLDSaVcaQ1kjhfb1/ylAVLGRYo077JuEJXtySwxWfwZJQEF9bj8c+tGreRPbN7uIgbqjNt/7SbsYNo2Xjok3ltGezXPtidDYKcF9OwxuToTBV2l7a3vdXKpfUSWi+zBB4h6HN6WUMgPBMr290Pm03Y0bT/WygcvU96EHNxaJvEpn2tFKPqRyTu04y0coB9848YIXe4RmIL1kbvAyteD06kQLG2gj8M3tm40Ru71tPhx0RqZxAJaCzcJO13uWo9tOudaQQDbSNnk0+SHJORmBWnnyWKF2bGFRSDwFnYlujKjDQHXJVW5dqF/IVRdvEKFR0ga2//SfmlmM1HRgtbXI2t60m9bgm3yziUEUw04Oh27CNy7QgphIi9PQfAciidm1KSzPch+zl85y3hAJAJpT2+wpRGI7SPEMGiLlpoflhY45ziDVTbZ0hvGLrb4JoA8t1+ShICOZ+O/at7bNFqH2re2nqRkmm/hrNevWkOWdpSmsoXFZwgLv8c1Vv4uENV5SlnA7aU7fdXWLsY2jKWyq4wKfTWu7DNJ93qVjysvFql7D7+x04E2X1i5z0+XfjZ/tbAQtyhoXVier3Fbb/e2lY6vwd37UnMT71G1gWNPaPzq2WlZR3XbaRiSu2dpVQAK3XP6Nub2Sa7RDbFYyu7XXn4mIaljs2FAJwr2lhjKCrFrdNcuZapil70DJdChJpU9WAtvJjiO30RKFO0rzMGUvYQ6z9B0omQ4lKfQ5NswCNo0CrJIMKMXKjW/rsa/hRxy/rfQdKJkOBdc5ZjiM87FCS0SIAjaNHUduwxFe2uZnQ/1t5fZrUP9a52PHFoAQBWwauWMnF1qeMArKIk1himptBN7hUaGjkFUv3AjW1bq0nR3CMpyyrwYlwZUK3lTwvFyvWJ54J6uCzT4OKZYYQhS29LcOp+yrQTVwAa9oQqHjk/ai7+wallHICmS5dM0x2UIUpfS3jhAFssgduH7BblJHMqnxEhHmWB1wJYim8NbLtpZvHGbXCFEhnxVAW649THNYU+iSyZNDZaLVz/2ssbu4wx3DKENUyGf555Zv7J8z3HvNEzHIUBhyQwerR1Cl/QqYEu4YRVSYjkm/VpI7GlAUQmnpCqJ8C2juQSEq4YLMbeK47A7jEjepqus53CScwpITVJiLKVitQN/Sc4kaLxalq987bkOkOdv64eo7DM+xSiuINGdbSlbe4E0FN0+v5kUqaJ/ETnoJQrsLKeN8c39UVnLuuBqRl4BVd/+HtbzIyiJ2ikTUSlzZQIKdAqn6bd+LAIhGJSKDKyHCZCsF+pbtKNUltrFAo6WvUY6YIDpq7eyl3byxj/kNINgdHNEghC1St2wOtXgYtyeQFbRKYonIILSBcwKoyvJv/aFCM3yFaGbNCho/IPWzPJFwF+gkpg1S6XBBJqEDNcFhlFymUg1WXe8BQhJECom/lkmC+n7+ccPrxK/6s8qyBRCNciLBMU5JDpAUAfKjVlRVNcPk2oaacN3XEMptOFScJCL4aTFas+t2GuaPX/DlKxhkFqSiaB2O0MiUWlmEDtSKqLFyq7QFi1d2bUfAAMJxeWhOB+FL+034bnzKt33tiA204pTIKsGkWUGAEir7Ne0Qo+W8sAt0CVSuEvJBRaCQn7YAGA1N7vmZWPM7CCUQLkmkwtzl6xM60v1Gy7cOs6gAQxTvMIhgN5AEilQCKizAi8UJfoRghsx8YoI5iLKDUALhoiqoUcJOwhrUK2+qOyvVMIjYFhIR5jAXE5jMMIcifDW/7f/uqOxKtgIlUC5mgRgo4GyKaJcsAduEK7iGUALpQhhpCVEmp5XLTT+sDMEU1moNwQQhSvtr6Fo9/J6ippqcsypcxjWEcmOOENRQKj+TK+X4sVOfRkxKfN5Bqkd48elXxa+SEUfXzRX2zg96hSYiAKkhhEa5UlWKgmnAlEg5kw5VOwmpIYRGWlqozIkz7lSFrRjDVAoMpxMRcsh1nogIIEWFFJoEEvqShY7qEEXnJDDkqFVdQwiNtBDAsDFuKPiYbyT/poZQAuVSlhYqzSIU6HpkoxyRQpTjPFQDIBqViFKBAAARQ0a4IFWMYFvL3h8hIt0PEGWSQ1wN9Q09zM7IlJcp1TCBAEQib8sTQXZXFl0iVnfvPteLsbAPIUqIYKsfARAqEalcaihalW/sOwkhR63wGsKvcIoaNiUSDixCiclkCQrUsPSrqd48QBQGYRsA5Zy8q0QVlKlkXumwUI1/QxQGcSsaLfRQQABTVKHFaWAORbDCH+pDaJhFUcgDTAnAAlmaJK1N1hyfVS/VuJfbMBwk4kWtxGSFwlJ6uX/g5SILXc8FzulQuhXRgNFkI1QhSndEx5aIEIUJBACIcpeHDxdN6USBymCR6g64Xam27BEPiLxwcCh3Id+gXuoON8BR4yrGeoOxeRQThKhhI0j/AEkSnYyVpVY/VWmPmmAFFziepwCByAMr9MSmX0nYnkA6DKluyMsUiPzCBCHK2wCs4LKwWtodRDr/V6uWWRBDL26w8kPUEAWOAq8DH5Zv7HGoJl2HYpGHqxdABACoay4C8wCZtilBgNDd/o5QVpRQ4B0W7Y8EHF7UyXql6nbQq0ZRXOosu2SdCg20IIG3OY3lFLQWEuZuiqcL2yh93hKDhItcAZHFI6fLPgDXYlepCvzQzg8gdCNeAEvHQuigBQm8zWkoB2Qm7LkaiVkxfPmTTYBzXSMKctDFHa18L/LWlFe2hzX55rymENOxuRXJpVtboHSFD4hwOI3ghKhmLkjAOJXKZRhzRAEQY0Crm6GsaMCAy/IwKndMAamE0Mf+Y1KHI3ZsySpHFC8yGoexdnckn0+eH6yQLCZrgOrQMLqnGsRA6zmkeBHmMNQgteBJDT7j2ZJHVsldzJIh4Ao+IUKkbO5I1ulsNAUnTdLyrkSgiy6OkVai5g3mOIUxoAXOUFbkjmR1zkbhqT+uyb2AoBgh9UKDYUTVdM98IJIgMPQclEI+gs/sOoMQJfO16YysUKKrNQ29dVJNgmACRPEipxEchPLQEGUcrDitShtxEnzEBaclVRFa5eNIBkFRDuigTIZt9gFUlXTFZPHkzlSPTsiIY46xOZLiIIF/AHikkGgQDbxNEJXnA35IYm3lXDBahwahNEjgRe5I1sJQhtuBhSldd8ktYGUjCoCY+8EjOU2Pa+1GI4s027tyYe0TSGn0DAOaZbQZ5CnvyKcmEbsj2ftFqCICo04HKIuunyyl6OcH+QNRPM1wDEXZE1RR5HJRBbvo5ILa2hDF1phfc/jpINm3BMAdydzPke5BoIyHCAmiUivvfzGDjjkZAixuQHJHMhZL05TEPCgBohUOoFaIaGUluFpCFLMkCKVBAm9zR4L3S2iRKDsSfgBTRoLxzVAem3CjZXjhEoB/gHGk836UhGgDXROB3A0nG/lM84PqWt1uJ1IcJPA2oxmWmmgT4atQq5koCq9PEPoRiVNoAxN4keGkNiECOihKE2O2YJMwEkkRXkVkA5GOSr5CBUC6hMWIzJEMqIRgqbAjqRKFApc+jhpaqgkRY1lziHAMDTsSgnkU4xYSYChc1icolwHRgfQExV1GwiwJAq1WANH3G7aCKBBv5eIxiUBQbDtU+6bcGARetfMBBgh4jApSpUhLEXhQcoQvjW6McKTlp0UrRM6zpCK1Q+QdJ4pZjMuIOtwawhyJlY1YBP9WuXyKEM87QgRe4wPmHQhxOh0vRJ00k0uIUAW97JmwGBfKV+MQeY5BGcvpQiCMauURpSuqxoqFUMZpkH9XJqg5zJESkUAFzhAV1sLY32lmCmGSbfHM4hB0bQoAEOn7DRsVJag3D6ESJhcl5ZJ1ZQTdEGVxAu8wCElQggHxjskwmGFJRG9CgKJiw/MIVdCrzifo/Fg660uWLEOdDodAFuSSNonSZOPvZpaULq2wPF3y+YF3AIVf0l7kXaeuhsA2QDiVMoc8rdr7CE7wrKDokpqosxgx6nQMhKHkIooKkYCaJyoDQBhB9HKt73sNOeZ4hyQoAQG4GBaEyHkYpXhUk2eY435I6XOFttIgmECgsNXcLxAB7ssxeMChSMYlpQHCV8g/gK64bJU4cunuA5ahDUwgHsAtcnOkRARw6veAT/NAAt5ljvR575ZRVa5sSGwVOpHgKMo4knWlPEORv3cQtEmRtMYaG5nRooja4pILdWoy9xt1zPEOJkCUcSR9v4KI3I9CJNUbTRoBgryauGHoEBhHzw0U679AkiMzjqSnAKA8D6MokgmqWVmLRwGBHmrJxaMc/1ySmOMdTIAo40jkftOFLC8bQr152gFgnm+yShG0/+u/6tux/jVvDcP3UaarUu4b140EjnTyiO1zXPk+LL5RqtOfIQ7CHCSQQ4jjR4H10eDiR4T+wncXm6jndMJQWzedtQbxM/VVKuU45ZmPYxIEFw4lonUEKtGKS86E0E4OaAiP3NQfdGt1hU0UQZAAXKhKSCGEIqJlH6JUwxjQWTrmQDFhQ7QiYS7STyawbclTVx/1iM4t1riXtfwd/fAoaQR6XHybRgHtKwB1EtdHhHxjRcRfZzfcftj3JmCzsAEJYCFKOaTTss+UznWxCLehzteNcx35GybC9+Gnd5zTvKcQXpFiESs+T0T/Pqz7AwdyLPmCD5F5mtr6WOz0RBEEBVie4vwVghwHY16sAxHZbqxyP4FUbG4snuxzU2i4nh/m9oR/msMnI0k400i8n61VFzirFIPcMGRdaXMfsHbHgJw7sW2Y+ckBrbpmw//4oyOBO4QDGhRNPHLQOnQoo+erQ9LtnqO3TZK8kDg1QwWDPly+33/vuOEc76NTfpL5sdcJBlEFIL5uaZlQbMN9DPsDxMQpVLIA7hiFAcIGJCSEHHKboDmRuKQTcL6InFJXh2rwHI+pdc/k7arl8Ag+fCnv9f4FU6EHLC18OciyoVhE+wg27dNOm8NRqGCf8QkAhSJRcpxHItYNqLRsDqCcd2z10Pe/o8WJcI37kHYXsITCjSH8LdMzXaPCHRaawjFx8So3A/zb19EJKS6oqHOYEHA+CfJi92fgu4MEAGggQISTnUQ0ZBLRug20CkcCIJiTFaMgDjNW435aPI+EGmm6SrvM+v9s4ut5G8Q9TXEMoLlCchqyEOADitehSwggQg19eSeBmW489K32TxR3bAIXCWeiICTWIWmzAcpPMeZiF5r/N/1cEecsLpc3tTgxeEVoehdDoBwHLH+DYoG45GzEI803ATE4y0d8GkS8r2wicpQINopyc6Zzj/+q2KtckdO0ZWnkH9JfRFrj3rzdKJFxBUGCTABk20AJDa1zRTMlYoF9vG7q1AhD0b3oHrmOXfJkwD8ZEwGHKOkojmEmmHNONApkHSj6e5BBmrMzCEbUJPIcPMfd5fHL+kLii53eSRzgD2vU5G9DJDXKn4AAggABY5mmEBoJYmzEajE9uKAt72f/3UECAJSjGdZp2eeOTdCIVEwcxiK7a4A/2/nmDvKdeMnyTuIA34oVUANL4RAq9yunNRPHBbsj3N6JUfjd1+vArYprWvoFAZrhFgXBFOMpahORoQTMGf8oWA5YIf+mUKtcHvB+EqKYRXGfjklerUza4Awc4arJvBC91yXKFAY4GFtUVK5PCOeQiCIu6Tzfm4BIAAC7e1GkSHjOIQYIBo4oY7S1X29fxAaiy5uRy4jurIPmfvUM4xcm0P3y3ydWnxuVZvzFUxAGACEGxEQjGzj6wI4IBWiaMOWQAEnNx9TQ/ySXNP5DNkE6CvGZgiiIgk5DLiFlxdREVEaEATQqvWiSFAo0NhlxO74R6gnGheTrRvbQuQGCHF8Rk2BGOW3qBKh5Usn473RtomyCiVKdeJ+JHmd1EFRQJHTbb6S7+Ph4TAPwf8h0eh7bSxAJlQmUNeAZf6v/mVMiLj+BKhcJ4XmLNgHq3IEc6DQ7hIAssIU19/GOvgoAYJ0EEetYoxAAEKoUbMCD2BVE8y9GosFziw1CCUJU2BPfw2cVcLFw0Zpypok0YSSWJYBxNYMTOYg9LxQb3LetQ8Kwj4ZHDhWZ6oN2lGfh4+9rE0yU6pT7hELr0qHrAEDS0gAiyayx/CiCIhkqii7SZ2ZQNQyPPAne5Cf58iLZgDLHMxDP4HyqNIm4k5oJ1URdnXBz1MmAYxqzqEY5g8MFpKBgC8r7P3PYsAkAYJ1yn1ActYkypXOECT8/EY3OQSAMYg23BFG0fnkKe7a1bHiKTyNoOxMnE9yzPoTzWRhYEALVHDNUUgopNkIQKkWTYNjnnGk0OCOKuGIi/uTCAWCdcp9QjuAOEgDii4hQMNtca8x6jt9cFMJ5TlAoFub9mZ2aZPv736A2LltNLCCW0HAZU6izEu8si+OtI4StCyHuI83AUY2KQCP4AtxZJIIgwUSpTrlPKLQuHbqOQFWBhuiKooF2LLK57Vj8r6RrIfqAc+rHsaWg5UA1NqRIie9YPV2XM80R6iCAw6DIIfTbR7uTUhQiIhAQenYw1DQ0bt0u19L1NeMOEjgF/jD4gkBHQkAkqC+ih1JLBCHGYjjU/joziYJpn7MlnfqFqOd2wlv/eucZF4980uJ3tr7HNqRuAyE5iPMQxkFrrFtEzRAL2JBDQ0nHMC490GDC7+v8RCmHdFr2IeEYZPmIoJOQ41lgrLK2y8kfvmdIRImwKXoKR9gUh+k8CT5ffc7VZfIV158FW1jNnQ7BjgN8RijFRcpxBwi0QSsu3P03AQCqkyB4H3LCIQAysci0UDVYh6HWIkIi2sSqbhy6jMtW37fiHki4pdF3bmVgU0iacGboFebMEjhJqjhPIYakbC5BjAKkOYemVMOCqZn6+85uLgxlIGEBWKfcN1E2QVXEAZGjxBIz7f0Wvd2KNmEbL0nspYlBmvY2FwSPZ/YnlKqbqIuPQTWRUqjeD5QAABdaEw45MABFyzE2lwZnoaJ5UOX4qyw+Lw4QEk2CzIbwEIAszSkRgdz6KtLgJlGDAcR4+5hHoiVMTzY/ETXtf9+4oCMXn771f4BjQAmHxVm32YgE8W/ikD0NhFxo/9wxcVoDECXSCOP4jF+zTrlvopwgAEQRjogmx3Gguq8LGtvbfW0KllkW4bttERlE5TTiCYVfQUqmLLyfQWmoAq6iMDGDISnNe5NxgyVDYARCQ5SSnAHKh1g4qBr2SSe6idY32tOwWQg1CcohnZZ9iBILANrGkHAUqjkg6pZuMlKYR3sOXm2EPQu7GwRPiQBpc1TDvEi5aqig2sljAj5/jnjCVFg9UuNE688SaowWIcc0AAmAaTaUdyLRFD3PYMDr4zBRSDBR5PaLMiHAQSJBAaQMLkwKIeLb0IEBoI6Uguq0dTspm//962bUI/vQ7uWt73Yu31QcKQfOASrZJo4HFJRohLeJahzIYM1AoQmKcIX1l3J/FwkSSACA6pQIsyAINSdaAO0oA7gCwhXBOiDZ2t4+rA2u6y0XvjbzvXyGgbU5Qh5EzVdXgBI1+BQ2ETaZRDIzwTM6HJUgIoPAjMOHBhtJFoYqP+iF709lEEbMSiiJO3hfcBwSIqL08yf67jiRdEIrz37dU02Hr+36vb4QGYTan9InMO9QokcaHdubody9jWMLtbSVL0iOiOD5XyBUQIfLLAPYPKhylpO0ZeashJKAIzWGIkisC94kKGJTDVaurMSRl8J+0rCKxf5//wtz6hnFzmuGzP66JE5sr02lQU0jJRcRgiBH0lYbO/mCrRM7DMQ0m4DY5gmJkqP6G0pxGAYIG0hQkGZYp9yHkHCYaEkBNhMnKTlNNvRcR8LAYdDUqIBx8buKcL5rXQocLp7aP0jWc1Acj/qdJvIu8zPtFIEtIwiqBQ4rTKTPKzgBAiyCE66dEKDaqdqKQQIJAFCdEmEWNpAGRCMCPcp5KEe8GXJtbCckgjJMHKmRq1xe8h6WyfP5/IOjRkjCkITMqrZbtmPblNXEPLQ40gJqs+XzVe28QfTm5aLikIg4or6m2LjH194ER2oM9TiMIkErAMGdzmEcrkoMV5NtnR4CNdIS9kyMP+u0Gnhe8qmd5yjunByEHXAGouq0WFbX6FCRoGwsnkWgDOBSbNVEIcFESceG4H3IAcsziOYsk6tES0VDXfV1m6G/dHZ4R/OZlw+eCRpUaOlt8uC/Chc48BFvR3OkhMhWEK2gaqSp6uco0ReAgRALhxiyjxUwcVl83QjcH9jx9XtgChIAwDrlPqEQ6khgCQk/BxS6pNoEn8gEmvnJdw+H04DocB/pdupPseZM+PL28YbnFzqkAGt3/SHsaHEkwxmIVlDGNjhMwQyGNcAUgyc0C4KGK6rsau4H/OIP1Yn3megIiOLnAGHD0IkQ7Mh5VkvjSNXcRQ8fumq8xde9om4K2RDMUYFQRnSJa5LvvbfBY0vZBpyZgByLekC+IwsCOBuF7BwcnaihCT/gq9dN4Nf+BUEOEAjnGQaUV9VJOTlTGx0ZFKNEv24CJ6C4DbVueYeCP5nfvDoJmUgSFE0kK+J4FnZAQG1mbzUKRtq1qpNZ1ESGOi+jCtAzEQgz7QWq/rqxlW7T72PVsAEJ/YKxU6xLx+1DDCgOxoiyNLg5hRIBV4zCnISjsTUKDDWL5j84CMb2l/y+ZxR2pJP3LK5F4JK+zNJbzo63ItUgmqHq+WfR5kCEHRBlqBleQASoQdWzvwFCIhD4D29DHIEdRZkQ6Rg4U1WdOuhn7XdOEEfK9o+cHYqQ/VNl3CoaD+RKu2J6FS4R8/kXfOBZkYxegsN0fQKxURhiKIYMYQhx6O68g4WwNMMdANoscv9iIRQ4BEWiRBFn0hzEBXwZJegj+drU9hG17DQd/KviST2gCtpoPCOXKO8J5UwkbAEFoMG1i9hxEADBOuIhxvY1AEEEIvxRs2+bAABjp1iHDlonKEdgZQwSSCe4k7qjvEtRU4r58Edl25s0z5I9HTBxDA7bJ30/U1dLjGz+eXOXFEJGYmuGshigBKxxElI4XxBtQI4ZBJX7ELV0gqkTgR/uhdVkCjakZIAwqkAEuUyUBxFVVgtKK9Jg8LlfhgPbYy0sSEZJ9suB8g6DeKthe96gAZ2xcAJ+0SMJtPR65zJQbK04FjIEztTqr3mrDBVWPAkaMnp4c4qLZgYoHGUCEJB+2PUucceGAMdRXAAVoZ1jlEkEV3AAfaRZ8Ie6nkx5bFkIVRYaamj73NQj4WUKMhGlssINoOBa4Wxao+WDQCl4yHINSCdoJwIQBNLq1vIaIGxoywBZ9oUKEhRDvU6MQk6hJgFrcphcG5pvnNJYE+bgzQ3fXAbI9nz+yUHuwhx9vyGsWTPbDdQE0/u7xfVq4sR6VlrF1L+wwhBqolQnxQwiUAyUGtQ6diDwTV56mjWFCOTXVr/AZR+iwPI4BksLMI3yKnH8Ypa+kwoAHisrfh/YAo8ThJ4fDE/SLoxKxrvV0Ad0/ez2lZPeCq9morPFSDzuRFvFqBWBtjxdi0AyEJZ9spuirb7N/Z66gwQA+NYp1qGjKYAAGFXBMcokOBVwcqYyAIEIiggiUBtOyT/05fUjuOatwZwQdSP6ssTBT4Gwp8jYFoTOkozSeDWhUu4iQhRlyojwAt/o9soYICT6Gt4HjFh3AOMcgjopjUxamYJDwjUOxORAgbcj8qIkDWi2akD/EvGhu3HYVRNY20A9O9Mg6cQSREIgTI0wvxEJ2QIGziL6J4fCCfA6QaVGO00AEiSVNi3/8mUQBAn6BekBziFERDQRgIscrBGJCH6fIAnFb35o4TmSjcN2AGRtETnz1Z+swg1jZTV10Hd3UCCyCwJAQ/aLCCp8c3opvPdXK4vIFxR8d8q6omyBU1uOE8cFNbJUBR85jSILUXhdoXiUOdDhmuQg7w01/U4+/YLkWwCcQyABaWBsBeCKMXSaKkdcbqrVWB4JQRlTwwUC4ez+CtEvwY7wRoV7x7AF8Xe9LO/QipIHsjYfhp7d/XC3BANKEFir2AwHQYVoJCDEAc9dVAcFFwkJZQQVAUF9tOHmJsjwBSBIcgRxHHeQ7SFcJAKiEGdDXfLPC/RUjxSIbrUjFnP9qWFY2LB5PJRLeQ/x0741Nl0YCRGoAhVGzIQfAQWgEsIA2jvhUMG6x5kPyQp2INBeoCZYjDKY7dI6U4Yp+gXVSTWxjkHgIMrTuKg01Ik5g60ZQcihOCdgX6GYBkFgh5OtvWl6YYwRRQnOGEIvjvPjR15jc97viEMwaSdnb5pj3FyZhGoOwEysQZBQAAFUKMQXpD4NPHeUToRwhsIRhUgFEPi44PbwzZhykHZIGnA4UWZVCHFMHCHERWC/7ioM6G5Sut92pKgzXTeJtBLzL1hJ6Ma+U+Ndf2LBUAGt6SGarZt4aRwSJN+XDtTFEUTkSo7kjHRF2h9BkyimGMuPK7Mhhw7LXF7k537xmNO9E6o4vO8EoWtbVmBgWltIJIKx8v+7Q+YFneXiKSlOZKGpDTFXEQ6v6c4hOjhrbepYn8dRtmhj/t6stvwi5igazCOAt5IlbS4RU4owih5nPdFTaUzAuU5/GOW4K8DUL0AT6cpUlkC1gy1UUadPFb2Ahlpr2I+KavIiQio4rGlEKtU/cgUyZDEIRfGCv/3fOiAhUao5xupRnd2sLNqhmjrNSRIU1IT8SaLEKryBEIYgEL8IpCnVJIl1oJjW1biW+/AC3+3ec8AAYUNT9AW8L9YR4yjkeRXTjEMuEgz/2mhREHIs7ATRYAqs7wMHbbjtvUC/mEICiv1KLYtwdfmxwG3HENR4lS5dut3Xl0INl4300bqQONJqWkE73zQmQSP0147HYLSIBgvpRCAj2Sgp2hBewCd68+4kyH2ucdGhJsFzMC04a0Wd4rPXPUDuuz+KTg5ijY+y1kcyjqQFqhTgeUCkEH8YuqS2kYLSCOV/RP+3gZgDOvj4p4tEVARuo55wBcUBEJyxFRbVtEig+lxAHKGkhUR/EoWoR9zQAAGAdWrNGRKEkAAQpTQMIspzbYg2pIAU9fh0Nddquxh4pDFZKdkMyWGK+5CIXigVYatMIg8nfMfEZIQdrGjqOiSKh62IYe4HVyZrJwCOMURNCVVpv1QV7CSq1iwAp3AnhTgFN8Xg8CQHNM/QsFi3AJonoHSciCvRxLoBVbK8bZBxsTGphi+6Cc3xiusPwTRIMcgOddZ51F5YXskrFLIa0COK+QA2jkbxeOplYoCsB4KIDKrYtsRnu8FLHKzwDyLqFADAtIcYjCHxTcs5MBlBIEdSw9J+8+GGSZCOQkwUgmRFmkKxYxBwdZ+EMkv/c68aiq5md73J4hpR5Ngqa0OhLaMOSho385Xms/uQB8mNeaKgGZSBDMDqvWePFCy1TaiqKEkTQ8x/dnysW9cYmEBhWJGklAgGNTGKhVP7BDE0uzf+5n5JkN+JLwgSFAIM7DgLV4MFurU6OZcC1IJOdhRwgh8BCCNRxxEocn967UU4BYPxMrAOqWpa1DsUqtJIFQ9iq9GLYjbFrhXXp/gVYgkDB5CcQUEkmnTr/UqXxEojZIfiCAFKgiC4YgV2WiTGOY0KaB9NzDhMoEvUsgHCBhJUJ97XpFhHnJN8CFEEodXvU0U/Cj3OXmdPvf8HwD57y9PSnl3jgeadYtqfmZ63hfHO+zkEIehWh5T3+NTXT4pGEB6JDuZmpu7EQj9c6EacJ4lOh6C/9w4iHIakWhigEQRxBCVDEi5ZPl3KvTPA7QuBFt4nFHL08+Y8moG0MhH//xoQTUF+lJtqrfXj2GsoQgPUnKXs3oFyFVcC3hOGKgeb7gs+BVXhKPEkKUHkPded4rDLiA86FSnqI4mtHC7Cz6Ni2oAIs2iFMkHi6U+BAEHxOJnD9K8YcJ2CIAEArBPvI81ZALA6bqxbFyfdcRmzoEJThh/ViJOPvcbypMh2UDQLol0HYAPWb3pWyzimVEFAeaN6BgiIGQq/d51rOYk0GDNwlZreToZQwrAQyUKY/CVMFXD6IKWA5+3SmCAy3oZ3mKlfvm4C28cxgKcZWb2JTNdlijCjaNRVBMy4ViRFDEZsh42AcFb5i7LmQbscHMF8AWOgXaJ+uK43kWKZhBxXUVhWYQO7QsWRpMDCi8lhvT3gYoy1+Hk0LQmJ4OoprJKQpig6DTs/n903yE1yOtioce4QBACsE+9DDliKAxjKm4S/UNDRwS4kC+qrj/M19SceDGkyFDjSKTSPVOxoCQQEhXVCjYOxHqP0BniS3Kr/0H4uDdcrbmtb5WPrCETUx4UOLdsWgB2GRAEabBk8CRhIRFHBFgKZBjv121dP7hOKCABwsMD0C5KQo1i+bZAPO21dXEAIQwEsjRKNiaZ+05IOlL2wgTLl+GaQBHqrNj4+kC8XiOiecFmUyMAqrnXJAxf7ITrHaSi6Q29H4m+dNmp4AyyPzUNpdzKKVoaAF6gFAeACxnBxQS+vuEtZwJEaQwGHYBuCquVPGl66szZqHIkyhZZ8TEAbhBSIXAtH69HLB+bJ5wIV6ALNFNUSfgJP2o8HCNcoEQQwxOfRBgRcrFZSljoUSEAQAih4EoGjEaYADXQqAWOcAgJjyKxQE1X3rrkmBSHLvoMVCiyCQAfmzobjsWCp62ibUHLOPoisy8sgARjEARXaJ6bRg3+qeu6KIyAKeYAoiCWCWQK2CnYcaTePHrZFVVLimRsSfRISdQyB6ooEzRDU85QDRXVKDjsexCeujtEi3SxAueu2OwRBEBANiOqUnBhLfJMsAneXFqLv30+omGkTKKQiEE2IcuGK7XkkoB4fhYsZFIqrZFMAPoQ+U6FVKEOTQIAlgsyiLlLTqFUtQ7mkB+IsI60CTxGmAGBxpBCwIY1PxDZIPbfKCXhsW0cEmZYI1T038vVVNjg8+75YdwBS8HPvtP5+YyDTlYMnQTCo6LiCo+IGKBIQcxQAKn1eN+em+w9NJC1Myy3qUpwP8BBGE11yoE9I7krZElAD4jukN05Q+/EDBnnej/+8wfm5YzvkrYNv4H/4DAaLw4rAOfBcHF8ECiEKaxqoEM34XaE7ANAv4H1CIQEDWkQc+N8bXP5c4eGPIUAYjhkhoMVrHYkcgIJRRzKPqGQYVERGoca8CrW6tUy0gJV4ADr6ADJcBPTBPavbU1NqrvJI5lqluEad57HQOTHIKtbqEzrll68RLpoqE43PPwkcggqUo9IYdwgiKa1Y9oUg130JaDD6EJIgxYGwwGkRhQAljoQvICG6mO2N2IpOT7Zjsfrpo6sqTsWPXVqZkIS85FJTZoOgZDKWot5eWppF00UO5eUJUrhLGJ8XkFrDXwagitBVhynpcIqkLACZ0gMadbsifj88dwgiKU2qTiEaCMAowxGYk9WbBDt+q6CsGEjt29P3FxD+WmMDNYgIkd6vG74SdZOemChWzr3fz2uYRED5YYYUkTkyLjyPeMFKsAXTnxcYQf1TkpoCw1sM7AbGoPlXnUpAhzumV6wgAT8XigiYQq7RITH3cgnYGxfccgeJiiOihrTBOcu1foAVve8C/Cu+jycNhYTkdckmakKahRS2GAtxxMAs81+tW08PXfKRGEfLePpNlyRr5HI52biYNSAtyHMdRyHFxpGU5qhQV+L5W/cPFY+CGrCWaam6Exn6gBocCoZ0SwSecPIMO/0xJAh/QXUiQe47AQAKBkLslBU+tcvXA/axC8WXRQvGt8B6+/A87mcEkgpzdd39AyQphEb6Cx7EXCZ7BbUW437UoCzzInEYKO0TlJTTAiwJIGPghyY73Y+CHf1HUlVjBgFLmtOIPwoR0ADravutsaEtAMl9SNB1jejnSODH8T+MAgw53EWgFs3kSsQ+eoOaEk5xGaqP1CgZgWrBgFqPyN0frS3jKM0SZes3D+TxRQvVKdWlBybRBEfAB9HJ0kWECDglZcGhgEhZNU2mBX8cAagqIKAYQqgjLJIOj4UcF98gEnjAfXz+DwBYJ95HggB0nggMySDBOz47h8buCJbs4qSvYTG/dKnoPE/E1G1HoV3D87pBc/dvxmV9FSrc5qJvPl1wVFq7vNQw5mDQfY4joJWQq+FnXENEVMeeJ+hHnRUA5QnygPn5/OpYEXUarsZOw3MS+D5RTgBYmPrxh4eEhICoOpGI1gGlXEeQyht1d9ZHREIE4B8DOe+cQB+5Xx+JJyAkJTkeU5ebtmr8wczDcZb9axcgGoChGNFH+J0kLZ3Bv4iCjvGJyPUMXAUlINiPInveeaQlCAmI7/0nVBAa5RUI6JjpsLPz4TVvFw1X8yR+P6TNQgIAFCM7iQVQjQBOOgyBOXNcOxY/sMGBoIq6ggA19AqcfcDMlNzqggzMYjSWQ9TL9oauhDin4NPqLEEXybu+XDoMfiRBdUpS+dBr76oDh0BIgmh566ATO0ggCK2q02aBFwACDg6p0fhQfbo1qtMcEujz0lAnzMzjGoIxEHUwkMaTcohN+zajOfk8ELTfcNx0dEhvaPRI/Z1tHSIdSV2yoirTn1W/IVOBwLxWl0VqNCh8HvY7qFC3h4ITmbu6DzSOFNUUQBdMCs4KkcSvoQnUKdclIJ+fZani+SfRCUABHNxnjjRHXU59bSH8rmO2LLe6XC9D/HkTyqCiH6OcsPIY7CvEBTz+BmMIfaTebohGiU96zUUoqHkzHHMDwxFdwiAYCthd70tSCVV6p/71qUw3ag6z2l0ZJw0rRWIOajOLphGfC90J+nHMbiPM1D8EEkVVmGZgQDBRlPNPECLgfaBsInCHw++Mt5YUd5CoOCfQAGPKnQC7JTDEqgrALRMHQRQ1JiIKCm/zoumjC61aN1wAZSUAj1ORRhDcdlUDy0c1GYGRyPFgaEI21yF6gPLk9H3jYW7GfzXdhmqPbIdqkVxabh8iUvQzDIK9Wh13ds1pvgcIGvGu43+S6vQirk6jmFYRza9+VfHL7oC0j4A2EHEICSEgCsF+2WZFLRpqlAHViJWRzyuXyYYK4QRM1U++sxJlJFXVLoR+Fuy1VVD4RrFMwwy7LksAVNJwFHmCWWePA4IwonkOVfwIUyVphK6z2AfIY+FalsGxJ55j3gtKwpj4pjHhTmQ6Uoigogw01vgSQ5Q9L7o8Ei4a26hD2XT/WEbjwV1PlD0tvekMdNFmAyQcsWzCUmJLznqA6R8cweDPt4YlYoSXR0Ol6Bf5pE6HIkgbQDRUJOjnQmkNz4tEqk+noznbf/OEBLJPOj0OAIID66Qywe/7uXu6nZyCfTQMIlBhicfDSF4uQSKhnqeExnlDtRm7wwnxganS0hhUhqQn27hkowRbPJbTJSPz7DXuMNwAl7WDa/qIhPj6gyI7MRVhqRBDW/CoZ4Bzr1Ht+pCQTrEuUCD4EurU4RAH0KWJsSQQEtdNoYycAxobnTJjHNPY3zhSSKIfcER7bi5A/X2TU1/dTm6upI/gi8VKkwLE6rq9SDa5yW8U7RPUkgfa9BFbExpyGsC+ZEd+FvoMRv+h0r+oIFzqID+CVRR67oF1qPAB2AcwfV25zqlOso8S6zj9/FFKoLkzOfvuP1M0ldaQIAIAqOAECnKxsMs0REeaMwY6e3kzOeaWzxkWwCEsplWqBLmGVzGX+NieXU+gKGxysphIn0f6si42ZoWWnPPjXlC/lbTVZ1S/b53+kJJEDuAAASghqdPnHCQ0Gl2zt0NWcTcEwYYlJysUWJrTqU5ZoStnPglJgaw8silRyNR96YItIdhvlx/yNnncNn682KggT3AWqG3JCYosf0JfLGZTLduqBbuOKGGoPHhg2jROnicud4i7svJb4ULAY+x3npfn+E87TgEElzwIa4jikiKYBAy8rlCukE7SWgByPwOkQSjhKw7IJHiQiSDVf+sWs5NDBmu+/osHJs2+NoySWEvBRzs/LCQcyLb7+bxN09uaFCuPCOK/J/4Q/9VRUJwvJSR4zk0m52qC7Srvx2VLBOWyYsAvpCKdwPW0nX7BD6NpyY+Ane4FH2J3ICCCJG0X/BgAg8NCln5BBZ//PoGy1B3RKQX1VJ7i5S1FCU/QIG33lNIHrqi815gl3SZhS8/AQ8HlRcREcs4+mmFTUCgn2aTKXKImOh0OQKZcgeO2u4kmBR6C17pogBy3mwC/DPmkTohqayDGijpxxAGuNKgm3Rbvhj4mNYp5OZMgsCJGv+AN08UP5wR6Mdxnw4gBkOsac6pEogg0RwlH8kBDCd73/juAJ+1xoDIpu33w6fm4NkBVoC4YHQ6zz1QMJ4hIqEjqkCBsKsZ+dZkYCH7Wnh7jmf6RgF/wAIkgwQ8j65qg1dqpDDkv3ledtEWErPFSCCIphKpOJCIIOrlq1nW6z9TdJNH1Ax5PSgIegC5WuMRTiCQkMh8XIwLI1HAlhGS63MiRNugcbXT/mcw0AlDCuwE78fV0eDy2nxkZ5a4dp6yx5Izy5BqX/H3UDwMopyCHaAbCCcQBGIAggfaNI9lQ7V3/Gq8WkvtQlPtCQ4AtYPHc+WRdZhgGcTgJug+QhcNMSptMtYvO1V3W5RAcFnH7aaI1efVSYFNtxvkwnndGOyTTO/GNpX8EEQlBQDbB+d5PM6/IZkGgDiBapUW7MZD1gv786URx6z7mh1lTqDy2Mw7NrcGG4QUZJRQJUpwUGOQBJDOcK6iK6HESEjXoYsFZhiqMFs3JBcd7qgQ+77BcIs0ZtbAE6TDGSTA1EkG4Ql7t44N5kqfFY1RE0CWGYZgvcaGJYASrdc9NuKE8E8AwmLpy/KWkgBQhKx3/cLAaXlCdmCDrCnCoIWdZbvoBCvQGc59QwPGYrTxGdfIqE+OLSFiXoJUqoO599CVHnlzbNz017bqaBFd9x4sWm9XLygbFE8FNeXQaPqrvIcCn+1IKdh/hCBticnxCgBGCA73Jg1aF/c5jTAgTnG9FquSff/8p3e8FjUsBdQLNT2GqPFiu06qnlwMeECwYDoPwgpWA2/ldE1GqU+4zCgckDTkGdYLq/vf2Hv59rhjCXMX7ypNoCIYPaQjY+CeCpi06EnSUKGByBHRUDgKoUN3UQNV4fZ/hfeyaYDEKli0OcSQGYkzHPJv+4M1R1t2fQarl9wnf/6eQTyR4Jwu8ADi/IwOAPN/y1viQ1VsIuT1IMbKTWM4BkRf08+o0BCm+llAsPoAKSgCRkKRr9BzZc41Ga2bOeP9asmFwqkovtA+uA2EKPranWxPNpLA+U9hNmq/kBEfi84rjScpAKSEk25oLkJhhgpzBFcjAz1ZgZRTqlOeUnOhPs335n2VCMMFzxxd7LwIj4j47/NEFwqIcaXFiDSYJLIHZxU1flRBHQjOOopkbI1BKlNqm1uffzD66KYhkC1LVhGOIzEHkSC8HfYvCHMC1wwgpaciEiueAohfEJ/GY8TCEYEVLyrOEaERRRzpD1NeN+iVRnT6mFGDYUP3fJY6B/KL79pMsughBMtgD0vWfkBRAUYkYJNcBXHX/tEwRM4crgpwKuH8ESHgLC+UeEMEaqUmHKGZDAyJBme40HmoCco26xibEWpscFRbk+s+EGc5vRmrAgOckQp20BDx+KTqPJBq6G7+L2gSyTzoBhw0FIg7KkhPRX+tgcd+aZzMAmbqgiFW7m0vKAgVe3gk89Fx0apBAwDvdpGl1UK5gEASVsxBt0TI8vFbjlEgsGG9zWI4k8I16YILtq4vUD02aULIEcIoygIrrqgLQEQijnRrwIZNyEq6NQniCcc/ZESioDHafTGzGcq+rMKRLacetFOEBxEhjRTrmhyLlbAM7ig4EmjmgS50WNfVBiVppcYndXHxrdNgTikYGOqSRhgVBT0Z4yIhHxgQs/q+hHp98qLIuFxIKR1X9cm3JHwi9gBRFEM2dAAOd3r5TfI0Iwtj+YgJIeB8JKuzATlr9/u8O+Ls4Z4eygiex2AmjSXo1S/A8r7uGPvQqhK6Ug5pApSg5Wd2OFJaAwM7Aw+/EqE9dnffVBwYNQrDIt18HaENaIh2s425ILe3NWjFbxG9/wSDHmiZJv+Ao9HmihRCAeAEg/jVGECSIkSzrDiAKKhG0g83fFwQA2NFXmwRa18/b8SjM6X3EyIMqOO6z5EBSRNCyliRPUGBZAnAcY+tTmKgrJvbLvkXLk9Ac1cLS7VU1J/CBrxNZsS4SQoI86Anyg4Y/coN935IoPytG7fRJhP7dXASDIQQy2jAkVHRyupRRmqM+olC2YJOxEXatY6eIrXsaEUEn3pe+uyGWvjLu9an1234yG0LS5NH2wPMXv7rXvWt2UYeEfjkXl2XPiXuwYCKWIVUlEgUK4IhAcD8NykayLzZSD9tmFhqs4zP0pBb7ZET/WOrXMwRgIAHShojnua8ZvE4hZA9319lwWXWPI+IR7L8j9yxtu+dFaASsi2AoOIlJqK5oJiZBdhokHmAYMHaAU7N3U1DfDWrT6e3LGBmBOeWB2sc63sfQYEJUjTNLLDqFJAXIiUoyH6s6JkxkPsuLeA/NCJRg6idSYmGkIBP7NM/BikVAFIkD5JFmTMBuTNdZnSZEPw9EGQ7FDq4qMREHpmjq7xpSFIaxyRn7LmdqvQK05yk5GI3ptufzlUb605I4QaGHorAig3ACqfWmA31WPwWV+6opiO2RDNoyGZGQ2yo2GMyBJiUOEIDyv7TZCYIKLwBMGwiRindowaTlC6IlgGiF6JREqAauTPm7KkEAgB19r0h4FEGA6veCk8zVJOfursGgQ4RcLRLC+5LA56lECLEsUmeWJGTjziN6kxKyQLFBabjU4+ACYShAkLMNKK/P5HnfKIYaJGs6OgudhopEVgUJXkHa1ffDT/eC9XGJH481WM0GuHKGwI/kHxBSRDZKvAAriHBQUyPGYRAIGNKgS3nBh/+ixMKGOWCqTiXxzLhQh7EWLSmKGgIGKkuiNuEJ5iOvOtEYMObsTr5AVU1WVSpVUKy0m5QPFDsvGwdLJceJwyIkRGC/IU3b11eQHuqFzYr4RKzXtqSAfh/4mZUQ7qdSiCEmIpfcjETNI2mAUxR/YbqdfgHvo3UBa0E5GnSdcl8A0gL5HNfdtoZVIiStikGOJey2HIugriI9NHnsel1lZlRLu2/5pmR7Lalr+9xGc4RDsFTE5zCehHOCYT+vQ20nLMsyJdWoJEs1ydkvjnTebwwnTUasa8B973Nfe0IChHfKZqBgqZZOxKihtUYUUSJEJxfG/q5HECRIhyCQAJZ+XpYiEOYxuup/0HmfH+DkkpCr9811oUJzjpSfKJomCbKUYWgsJIrqf02SHBVpsKGFtqESyNsr6/VpPV1rAQIoNfYY/TrBFInNS8nzbajyKijeE0pChPrtsat73pJWwGdWwPgSEzThHALgdQohW7n+4V0kUsTjMUUGGL8X1L4lS2xnOJjPUgOJ+2yTxEpoBIL65hCvO1ui5wLKtgGc3XS5FP/B/W+iZ7qABghQdz1HTN4hPnMzeVhzoBicasHYEcBY5eCRaREEcdDvhiVwLkGAL2ICotSpGZIAVZ5RGFGfF8r3tvbBFADoFwjiEUhAAAhJe98cTC4jfFlHU7zZR1B01TV1JJWwm2MzyzM0WwnHuB8JPMtk8nuTXIWU+qk0l6YoSMwc8qoHmAwg0ZqFDMZx3M2tu6pZU3lmXGFijiRQlvzDQyOf1UkFAWnGh9RwzjZFHelEqIKa1ra/DTeElmnfmicSClchIpRq3fccX2c9+8pQnhAsc83tS9fm5ckN2SIQxqFoSSpoCdrqpuCP53mRFwCp/VoeQEhEJ+ixOrOYyjvWgoBHyX6ggOgjhYRxhcl1DYlPYESVlDbUupulV9VpeIGtk/cbdVUV3hh8vCy5x+rE+z6so+rHWPsl4r9vGE5vInvYx+uxgmmEJUYQyc/nO6Gk80JAk4YwLglTr0SQ6qxLRjKK4W7T/vpY5iKvp7oVmSUIjg5eHXqtY8F4DP8YDEchHCxz8YnB2k4EFJfodL8QIQzpTghCzU+xVtCJaGVggUKYhlnE3jeJUp14H3LAAhWZ4lOrSoWGjiv2ub6H+uP7AwQubZx6Z1ks6bLfeYLKbXRocyMiK6lgo5ByWftH9gUEuxS5gIFWtdGMeVmlbKBUDvYTDSUt6m5M1kuVzRLPT2GEHxF0vxOIpHPryCHpTm2AkEDdz8f+FQkeQZDDw50qgqrf7VpaMa+575IKEyYrDmITUuviELZowIGTkLC5fWiJ9f4m4JScIqyUKbi7YCLR4lWXG2yWYfW//wFNWg5IjihoWg7C/yA5U2lei5YFiU4ImxKHI0fCWmjKV4qQtK8p4QEC5wmW6p1NISX60+xf9sBNap6oQKVIS5uaUi6MQtrqBnLFekBp2AlhiRPmL6JsngCowJRIexhXkGmgui3TQEjjkmxVVBAPP4gok63KINm19UxABgOZ2E0gTdFKdnmxGzGYCTlHbGlC/0zqBfAJnWpfnaAwDyHV5oh9CdkiFCLcXO9c4Zo0yPndNAlAVIhH2RBWOas1tdA8VTwgGCmCx7uUDIqW6Tqci4a3wBBEoV2mUezZz0qzIvMSEy1EVT8TlSSpIdIYygE0DgzCiYIyQyIGI8iSgmnkvaBVyTk1iqiShDQq0vsgQuFOjSjUnluHqDcmF7x7ZWNvqpfb+RiCMAA7ebXmrDpJHf+OV1JiXbpBMve5KJv5HR0cG+qE8QTI9jH6iJhIa5GCtCyr9y3vuVRYGomJEtsLcnByYbkhIo90RD6Z9EhV0T4CfJ6UN5gwFRaOSoziP/gZkkrvW9KdiMLJSSDqY9QgXxyF+JBDVCfNgOq60+G+iygLKcOp0gMeJGlYhvluuusFKJs9dD0aNQ2MuKFqQ3imvUwAP5UNbSRdAlHLQCi40OnlfskDYnop8aLA3BXMas40kCtEEGJitAUa/t6h/+SxGfWzvEgHSQQYIRqqN68GiMVJ55GMyIx7N+xe8P6qE+8jDVmkkk6KuolMho+JPWAiQ510u40wSH6MAMk4AuHRkZn6LL3JFoE5LOex3spSIY6gEbu5sF4fy4FqHIUCDFuvZj0SlYvt9BGS2ibGHjUUWnVWmKxo00Su4p9IMcJhmtKDBFLOPpAh6Pwf8tLoFhLJVuTF+T1Kp8dZY4IlP09MRFH8amVAK4PE84A86SIWAj9q5IdRveP4TcEEodpdo78OUYU1uF7MNl4/I1YMjSRVf06fNu6YRCAQotqXZwRvD/sdIrIRmehcDEmyuHSl2xkXhW4aguLbO/WkfiD96yiEMspwgPoVgSKP2ZKkSKecA5/8p5hiSjVCz/cnhFCuk1QzwpmxJpTJqQuKuY8jdGnfOsCTie78nHBssXYS+1GR3akU67vZJDSiRChQa7woHQuds1o9OHofQd2CpbHpIMgAI5EnmLIC2u1Yez1DUvMEAQiJTg8sxIC0InMvwE+PclJDAnhOnBoRZNRMlVUIFj+tqcv9nlMsFYosHl7VwwobES/jdDxdY16bMiZv6jL7Yt+eKsViAGBLD6DN2hpOrbRfrjknPkM8ofGwe88DFmG9E0QYYo0nSO0QoQbc3tuY4ZMnCE99wEADP2+YGPCCsxDhPh+ODHGO5rBgesF1MkQDDNIMFYmgEtMFyb1VJ0NAGICdoHJKrKuYcNJfV3RBmAf4dxc5rCRge6DizUbhrtJ+UGiwNzsU2SK5mYUo1jrYDk/bSYlQpkJ8IjMKtjQKJF0CBsSzpFFKsDb9iFFkIyMi82jYdX1zukW1B0cKRsya/jEQIQ25j17wJXkgOhUKaCDloIBlNg6FIlSDDSbAy8ycA/PWNeI6LUHUfW55dK2SYNzrGuQiOIZNoMdG9RcuWg0pu+EjsDTaF6V6qRyK5ZOgaJuqj+jZ/SBMxuWGDWLctygPLQGYso2xCZk1YjJI/dqHniDotLrzx4aGUWwVDrKsFRDq2IR4FoirlIXgxraqf6Q2AIaht1lQDs8TWJZYzmBSsZQfoG4sMU1aQyRHCpQ1/RjGhhIWz2uxaXN70FJlJdBhkuzB1exR0ru5CwF7rpRGMnukU95IzOXetk+5v1YihthQotwuYZTRRQmgt/NNBl3l4QntoEfDjmswQqHXEKtfVDiyIhBC6ujAgMHTZcg6+wBOkDzKlQw0RSg2ku4n2x0ALU+ydFqqXOfUVkCtcRIDK4kM9v1ffPcyDEnvBQJCvPNHoYQlprcLotaSMCDggGaqDDIf7JdxdYlAKqyQhvKVT2Jl+Y23GfFxox97cBLiKzPn83iXxdw0sAy+zrKc4DBKIg3XBcKCoV4MnesOkJS1Uxto3ZaDoVush7/9gf385APE7RaFVBPi93mEl7rDOZVrE8hIQQ53WabONl4tzlmNhcAVcdSTYtYFR9bISNym4kUALlA4bKvqNpI5FIuMstzNlRI6l8qGYAzFpyNtp9vuCjj1CWVH5bWWjDipGUnIBxABwEi2aoccrFQdHMliOSplH6DReJNRN6HMtSYDzzMAgFCSQlEnzATzUL+H2lIiBye14CCyo2ozTQiPQ7s8DEI8L6kqr48VhVAnSMIRBOKzwx+NUY7sD/2BZ4looGwkxWODvl5YPHFfKJzjnX4iFVEKJ1wbEB48I6OqamOtKNOBKamKT4wAUQWpoiO64AEFROx4gymBA1QIi2nxJZ9Qmo2k+5nAEUURwZAIp+Ka+cx1G4JmiQXUVEtTAkVsl/0Kxm8SrAeDH3/00ExmPM8wwRnGkB6Ws5lf9Pzuf8LqdmyDF1h3vfEoEeTNdxd1JiD4NCqMx7lVMr0qXeQxj5QfQ0wzxd1XkARQJPtCmI4QRqlO/vzW4YjU/WYzR091fxs9/7lvQH6ANFLczhHXSSsQ1V8VzsyAWqF4jgonLbr4IXDhhaZgzAmh1vYmuKJQOiTxHcvjGAgf3d4UrIVAMKBQEOU24vGrCkpryAQPKN3pIDsYpBgi29hCAxbjenrF1azt2hMx1tAmw/uoEjAUX2LuypPEyPQ6q/LQKcoIgBinwddLFK4zGO+6MdGUkm2I+m5Q+kucjkgH3YXpF/yD4ElH4ClDGALfvhmKlnj47XlVVlQmpcidCkSHJ3XZGmRa8WZ6bV9w39GPG4pXUmrSlgbCWu6e2M2VWm0Iy3CCg/lEBK3uAEIRgLJ53e1IgBg4KQwLYSoICwT4vxMNyWNGp7eOODwQhRoVZKXMB998RIyGgkzyfrSOLFy1aKk4c5LSyILA+zAyyVytSODEWfR6/eoXz+tLDAuDIul6KcIJvIDkADbWZtRlD97H5eX1zBRE/dp619dXsDCZEIXQ7zRstUEKhXqSHB8FAI68Ih4AT1Df6pq+G1nl7jMhX8MhiPFciZBwJ3H48I1mCq76QOLsVkFM2QRC+SX/tAGA6ShxHMbEGvvudwIGe55leCOQ3W7Pzv41R+8xyNh9FGFlNCop6RAXTGNxQpsO907egbBsJaAD+HbuMtOWiuOs2b7Oj/xTiUFQpxvyUW9o7kM3hlCU0KBm6LUgoUR9SnieLBjFjUOHgR5AFrwbIM4FIkoCWgbkIOXFK+t0fxncOqZz1j7pEF6CcjYhYXc4+XFDbC+EMVLSjMvAtb/+jBcgcMOASIux1sLVAHdSEs9jRwZqteHX/4O2g54HwHIrOK/idLeAwmyF103zR1Yb5EoEkB663SyTIuNIrNfqNI1L/tEI9I7vk5b1YKN+ZnMfMMgBnLL8Yg6bzITZ3ry23L0JP2IiRj5AgHgEEiTgZBIXBKNzk9jqOKqMMAG/FYii0Q3ZZ29bMe6jr8fbrEAxbheYMvoRRXvpamvLJg507K5+gOZCnIougxvhHMd+LDLJkhzf7aRaAK16UVcMNbQCtftEGcHOKIW8vs9FUVQjEoAiOrI8PxHvM0eaLXMTXo4A0QDofhlBAJfq5BWm5l9FhxFvRSZ/jRng7q2NLAmxH1GHNibKOYYbMzcrhv1Et7qExWMV81quNXyJ25KpI09LIQiCA3ATPZocIzmGT53NamOUxeqrI2Wh7EQ+2tta+WlXWcAKBfQrIe7Ti5l9PilegITaVxQAtIUAjzVmWddPjnh93CtjRAAAup8gMMj+PCtB0Asmi4lGt/sk3KcHkLCepO776EcN/CyIVdAkuvO8MWfpkHsNnCBuaoZ7kSGaBPbzzFLPw9puhCl6bOZd8M1GUldsTbYDHE+bQFRBqVYsMWxqJEfqvZxhW6KqZ3ZIuUiHxCs6cN/t90k1DJx0CAaEBgqLUJYkKs7c+/qE7crUaWUOIiZgQq74xY7ARuL9kFOKMBSDOnHevsrtZkVp/MxG93HfdlLNNIYHPDlSbyeojDd5X7zZ0LEaL0Uszd+CwJYgYRyCNUUML+fbjLdNGoVedWqonH9wHMOF2aQoqgFoOsF3UZAA8gRypG6DtqKvqqOIGletdRKJkGAwBM6JFZ7b97GSCcPCfRMF44TbErgjEL0uHSfQ6q3jKKVHhOq8DhW/AEpWpLRpowuxURDnjM90tTkKwfIeZJoUUgUZVsn8UpUa+m4n2xoBFesQpQ01qjaXotxlrRnnCTgChmQG1RQP0+3SpMZTX0D0+lDbhyW6WGNfaYZreBRV7xMd1WlJCZawIVaIC8NGmuKIorxo9TW1Yp86UmKYztGOFI9EBqQVi7nufwaF2OJ5g2SsQiC1RtZGBejl5YaUKIRMTqJYjmUULwurLNgPCpJOqw0Sja83K/DoMcRZ4o+/Ie4T5Dtk+b1jnXRhfdLs8woNObrPXQcJ1On2oQQQALD5wYFWiF4cMzcQNlKzHwkYgJ1I0Ib4/H0TY51073NkGZL2CbNI5MMGGTh7xGJlNIPKZjzxRzh5B8K6wMDz8gQCEkXK70b9dEBQ/CQkmql4He3rSXJQ/BMiC0iVG6FoBJ5AoJRhfTeohDiSbK/Fsr4UJRKhTKFAXDsAYkYeq/dVsoohAIEswvEumRcsRmnFNRpRGMnS6w6yVvX3RCf0OaMuP+CLB3wtibFMUjOyz9ORVqmCd/dnutpMigFFuuKknB0H7G3IAeYRQcVrSPDEEJBMQspx6wQYCS0wNMUvZteFj9VVcfm8s593pfN9ZNmH+esHXq+kHhAFI7E2r9XrDgKdlukXoCzfY4Z769eIwW06RdgPAoCDTElSrLNMHC5Elqv3XcKDpItzfsh2zW4PNDoacanBl7bHa5SNndxsRGFDSRAdy80MI26UsVAqElLIygdQqrjF7xqiAhXFkNx3r0ETLuo+tXEC4N427zC4SVfuPncSNIOIs4aCiNhXR0dKSYgA4yHEOXjf6KNoaLPhYqXuQAHCWIBD99sFDyGGF6hoXV0KT8pVEZXG+0wIDmT2beDwhCsR2C8ghZiGANeZ3eVmHCruqvAqQuCNEJNoDBeuY0ver//3VfkEGSB2ve9nSGJOLnoNjHgdFKhA+U1EEPzu2UFhnpSqNBGHMPIYeXdXsEpm7Rqbrqs7KksQ6PzBIMmfRPVOBB4EGLEbJQpjeeTWVa87CyQZFbiSAKxhCKSuCUZMBEfkCXKoS3ERdb2+3N6BdC0pMkPgxBECyLw4WMh5KT9s7K4WrMTcHLK2KC3Vjwg5LmiwBvGZIxTJtkn61HsH6ZpjirQCBDlcC0HMXKW1KAXB6XUdFJUG1n0LEOC+9z6Aqfsb2YRTBkhSKu/4iufs63qIiLaNwJNIi1H2gKTieERw6sdyjnQzKeyaomdRhVTjY4j96khY2w3yG/kgUQmSFLe3bIaIWXLq5RNkCoxaQ5f1oejH40D3+LnI6kwiRRLUqKYNvZDHAhO8kkF2a8jPSiHUCWJTqKlgSDurQT7aZoT+Co4tpQAXMaDqdc4k46u19sFmiTvOr08ALhENieamLvdbXlzlgnJuNzZjU5hhrAQgtfCwq1K9Ka/k+whW0GKoNSdykbJkULogK4w6lkYTJNcgjUC6ZmIqnpE2xYoDB4L5wpHHyO1X5a4IvV7bKkenFwihTlrldOg57ePhMYBqb/uvHQQIIvADxJEgACgHM0rRiPDc5DInAHo9ieV1d0GINPXXwPm8lgiiCfMApA/RxfZPvd/YzZFGTW6Fix2EPIGwxPo2vgYtYowvk45OYySICnfSK62aHFlbYoWRdWgxqzZPBWodi2Z9YfElGdEFvsV3ggSuWGnGSYJwNQlgBGPeEB2meabbi9eOwEbSm67bnlen3gcYvBSGESfNfbFOZwkrOSFQQtmj15+7pmb1qIl/8CX2wy9DzXBJE+06JSewtRZuR30GcWEDhXgDYiMJwGFiTovnzCSoTi8y8pNGdUooVtJ50imIE7jItieBCY/H7JIwqyDD6KqTxKCkoB1+8FgHiiGqsYUu492mpWkJ2GhE11V1UUYZOncKrDuOri9BQQiMuuJxSUX09/7iWoW3Mcl1JWnBwYDQtxubs5ggtwvbcBAmQipbh+AiwtQNEa49JDuvcwkrHYWTby2qny82DoKck2jNgn5BlBmBdtGHoUCremhGLCXEA3ZCMEygdE5a6uLoKFN1nezESAHR6KhorelzL35amo5AOTqIc3DqeVCg6nWVGQNS8toAZ9YSVjqaUYRGSGsFIZZEiWeR/c9XGCCYYtp/9PN52A98QySNmBfzQ4WZQ2kMwqS5PLhSlWTaI0YDgisR4iTWptqsr4MkoEos8R3u/uZ2nsC+1+1O+4oRChjyNeDVCbJU1YkJsm65ncMgW5lsM0tvQKAmFVlCPAIA+gVtI8Z9Es55LRnxJAqC4H2XIcn99X9D9CcOmgEElz6SLlx7Jv0rHu5CBtdhTFHFY64dVBYwHekt/f5hVqrCgnVNWJeW8LiEruHW00WIsOcHk63qJCEq5JHawwUNIEOdH9CCUOB6SXySEEtI8DHZSSC8wK2i9i9mjghgEh0GKfF8ynE6T8T5ssiYMcET6+26zNDKBVblRVVaw1FM3SvI2OBzVxFHCtinCFD4P7m7lNQwnGAYZ0qmE7yo30JOvkSZXs0AASppcFusHzVmbQFBzqXNvNIidH8f4tNBiu+lOlUzgqyVhK53DA0L/KSoIch5JBH00r5GjIzw00Hkui3WyZPJKbjBMK4D6zr7mtEu6+4ZyU27aRTLRbvPXQyuKLyoFENL2Ag+cSuSHOxXR8q1kEwBflH7OgJrJJPieF9f/O2imAOEcprDnRYI8oMG59slqEeK7ycWQE5gmxaHYgfU2bcySIDiABaGOXhA0NzzJoCjFcOMRglFLfWcu7nfOG6iEBRHYhYkPAp5DuJVd7ovAnJyVPta4anjA1KC6GNdDAcmkNGbSxEWAxGXkc/38/kmw1ve1xgdwcHOqjazZx7uOQav6KsvUup+lyxby7OI1KffYM1ZXozzazPjupQxFKwZdbJUEAzSv3E0b/KlAiFA1IbI17RVcXQ4PgQ4Gfr+Ggcf7v5hAgQA2EgVxAkCAAiLCAIQhfkQcSofABDuWzp6TCiiQEBKUO+3aec0KnWfQQ7R52ozIj8FS2vvGkx5HmD9vN5vqig48BA7it/L/uILEIYjxDMYw+oivTgIstoABXgApX+apAbOOVdBUwdyaYbK0IQG/FPz8EktiQeA2QUHukT0mUqVBNbkKCTIcQzSzJXvRIziAGxU1xngpTplRQ6LTpoOD0jKeJYHhMyG1hc22xt/MxJxJSGdXcWV5iD6BCIZpAWb8dc30gLg83I7IeeOGLpEOA5xwqrTym8r7MMFgzTIcsab5tB3kS88fSTWGMUt74qoa4L8yvFR3E9PdJKA4DWrFcIoRYki4JBvrazzD+AXxObnFsFAdCSxkOBVojkLVOJCWMqJBhYoUlhyu7XsmYeSVkVcpLuvLXUrMYrO7rtJoT4rLQi1NiCSVZbNVHoPFxnM2Ve3FnwpqkLp+vamfmw4MTopfE/zrepQFgGCJZ9r9o42CLKPaRalFFyPwA+o+9yNoE/cnuy0EOKaeEK2Tztca22n0/i5ZCF9aaTe964UNafQ59Tp3XwQbhCR3AgqkDTovrNPXSvkZ46ZgoIIG5xzJDpoKIu1Ma8mdXMBh+4Rrd9JcLq8AOFIZYiijDLOo3SZacwDaEP1v2AEhYNwUgAIXUi6xR+sMqqfVSL0g+WJsX4OJsUSwJp1e/5bXRO6NsUF9L4PFb8AAMYYpjQcJO7+qwesiuuFiCMNP0Uh2uBSYNdBxV7nAaqFUJLAg16ibHsJ4Ni2NG4n+rpSwgFVl5bYHkYcT8T2biWa19vtSFm5nuAILl+CIVsq8ShxUMCxh8A+XpDAPl1MDiFIpK8n0JxetZKk3K583TSbLlFWlCoYtc6LkmstQdTz2BeiQVA6U7k3BDfzRIXxc48R3KWRgoDrMiL6EVgTlx5xheBYoqgACnX3RRcosIDhCXxIV8GucqcQIcRYq97EWfyCMsF5KaKnviSn6e2CDEQ/ln1XP6FDS9CvMjpBNlXoIURPqawygoDvQwKoNBtTCKLlk8CaUJoUx0fOCh47bo/7BPM/r0T7hhArGH4N6z6qHkIc9QIHHEH2uYaRYXaUKH5qHOBClrjfXaiu6+ftGCvHNfOY3zGMAifFSlQwouN1cUcmmm24MNMIEajSpoOywcirzarHixkzfO1U1MW1gmXBUbUMo70BvI0vNqYGI0BNXojVEV5WQKhyM1hfckgREjBl3Tw9GzAtXAuCQfhGpyQITyuta+EBU0pTko7PhWjjAU6GCT/bG3/ckCjoANUtIJanacLQicJ5QHAJV3ErGXRU1QPOLxNMRyGIski/objN/9BClcQJeGuiBIqFkMU2I9daNFV/Pw0vGowv/CBOABXBQmCtU2qiuJz9AtT9rLTwOAE54z2Yehc96KpZPur+5+sLx7XXfB4KM10KPL5yiAAZ5AACRzTR9NIgDGXzc0b5afYLga2ruOAZIjOI2WeBgyuR7htO2OKdQIVtH5JMgC6Wv2DyfcRibMb+HogPxDlu8orgisMb8NgPlhK9nJ8xfEVVDAUhjJhywZ/4ot64T32rxvRFA6Na1prV7Fy1pmvH86w/8i8UCS4yLvQvBRc6qBMfN+fAmkQsFFO5wn6TvQLJHB2BcgiCHGcBAHUyxP1rnVEptCpFEp0eEOWTWmgLHfm8ZBzD1P58k3AyiLcPzdIe1pUkTzBp9uOIylCKOBpRNDPS8UjeCbhO4coO4AQa0Jd9TKTCPBFOkAolAo9LCE+M7JNHao1vZhWAF5ZYANATcq0FeD1aSTBlUOAv+6h6CHEABiCf9sk+ioYujLW6uSP5iQcwnYU4CAkCwM+rE1d5O73vIbTbNUECKo4ojsogCBwWcmsZOm8gduicoNphJvQCXelQF0k6zpjvJwgBRe7LWAm4FgQ1AvHI4ZDanuXylEtmnMO9OqdHC+MBAHpkBQpXsK0KVFjj/Om6pKmOiwHGoo9ERV35b3/LCzCMslx1Aiy+mpBwp0Lw+X0kNy9BeAGe4/IvBAgiAADDyE5iEUA9Bwfkty4G0vVVXVFIGFQ55lcL+BIwaREaQS/aefKmA4ICAoITlFT539VgfH4O1W9NWBuO5CewGuJI4nnqD9hiNJW5LJWSNM3Zou3VPuHNLxxEdUG/RGkKChJlpstNZ/a7ZwRtkQW1UoKZsFlwkkqd6gDWeutcQFchoU6JECHndjtWWICIBCs0jcT7TAAIqlgw2ah0Ei2+j6ojH8KigExI4CiiDOs0pS8iWP8UT7VoNVzsVF+g0sR7ELXFRXCuriibqheZ0Cr4nx6JsmxCtvP1mziYCELifkiWIVGGiECSWmlsJ9g6mgIAYSi6Eafw/bIDYAyE9r0UIOSAIEAKieo7qqZVRHOOWxmR4uZWCE8ABoRWMY+b2R7bFB5wEH2SMOpK4Ccw0lXfx3+yWx9qA9FtCQOfFyAyj5XUAhidhMbXfNhWvb3EUPGLQyJo5LjczeUyzH7bXmo/WuEHDSHN0HGaMMJ58dJUtecShZbEf9A1v6yTroGdrb3GSXgtGyXOaQKhAKj2JYIoboKH5boPnbjIUfdIAqFUJ69++gly9+VJCK8hV0PA2t1vfYuCfxTUS++nS3FoyKuCKPJIaER3aiL4kVaXLakmtwM4D/zI2KB4+C3CBdAsqVfBsGu/Cgte5H/6uKhCzTI8lh8yxLuR3yWORQCNSM95hAMh5zsd7/b7ryH1byLPdUJgyyLonFSvZal6nR8cxwIconjB5rPbEVOhIIIfIBLlzQYlHSTI6gSE6Dgk1XLSXvh2gGJG2Sw8r0so0/oVzUXnWiFhhLQ6kGj2hDcSg4RXpr7KpOIUMl68FHI7exYavOSSWMSLcogi9BVJ92L331u1qVaJQjD5CiIt03kUbN/98xKVTpUnBJgg6f/6E1MG0VIbhCtfCSDQyKlzH2ng0mZDVWu3RztIikgRJu+1ERQGdCciZPhmvqWupCDXwJPWD7k95AXAOc0EgA1c5CswYB5FGHEvMrWx5Iad/K1UGvVSGPY76P0V6IhAxxaYo1DBzHllQRNRC5ln0+Q4dSUQuLSQetMEPm2ConGWaX8GSZYYj3WkvFU+xrzbQAVBnVcY4hV85YEmuuqkkALIXNqBINVQ0VnQ6v737igiS18k7wPGPS9IOEBxiPfXOEJbcou1QoMB3TDuC0qFBoGHiRpURvY0DlxS8P2cawe6Jhp2bdFVuXER41nxcmy/WsN+iiJiaBsXJmYKwEkNHKBBjR4lARD0rw4A0naEIUJ0qP6dcthLHMmbcQX+rw+u4Tq6iOj1Yqr2bkEchcL7elL2AXQVVyOZ+YlQTAO32ghad5q0vIoxj5CdYiB3JNlx7cCGFCdB+EaIJSqRbkOxab+1pC29/ctQW29UUZcWYvJ4k34oMusY1uhM4sBiZLVBRNVaNhwnIGyPPrDYiAtiiUIt51cD3faDz4vFAdjPrzOnUuFVDD7ga+5zsaItvC5RNpcXRPQPhsTkx2tpOoJ8gFMB6hlIk44SJeXHKMSSHMaCMiEQddJFPBB+cr90COko7vt+nqt/sD1BsZ0fMSy0YmrXXHyUahhyDuiZJKAORhoOvF4Nr2ChLf7IRxDDhw3HDtWFfMXy9BnIE3ilIsjSYxnBU/m615FE1Qs4ok4fSzqRZ3CwRbROdjEf7vxRCpAAoSgEVRzeZwJAPINSqkTACsJLed8lOE3K27FYtoFfB9x7cyrI7dpV6+yuAsdmOUewwi0gLFgMA4nzTHrGCIwzcOpN1hQS1I5xqhDEKlFwHd4uiKiuTyAW1IyAN4HvluNXkOUxIU4aRK23a0M5+likKcJhRAEMvq63AzTw5BT7/HPfhgo+sAcO8Z0hBVmR7KGY43/ClYY8qVbsK4MQ97cAoYihtg8g6GENsXzGdko2Uz+2xzW5XRof9xuACBHVBcME5xGKd3F9ebVhw2tpVBZNF5ca+YHCUcOcAUx+DkFnhicgR/pet6cKNQmDbayItQooSs911zygqgX3viZcpwYUBeP7YD4QwLu78DCZgwj8AKY4CQkC8FSI0kpj3Usc7DNqLTC4JjRLAEIBolgNSLaGMAFNnVo1P86B1p13Ib0Gcdiv5k/5fv+/785gzgPdatfb0sRtU9HrCdwZS83SF4F7nGiBpELWmIZa4ElOdV2JgLprewBVsK5MffIakDjSMl7m8g60tjqWjgAAqpMgVNDroCoEE8P1qbvvPsBrcDS5QkUnkHKEwZc2rNsr2QtdN2L6TPGQPbS5nYqqZzc56j5k1mwIb+Xvfbu2FMr6WTKC3CutHImLDSUpFAAM0wnxUA+i8I/cKNv2IIXssEPCB5jA10PR2t1M4TlYVISdCIEEcNhvOAQR5ANUp9wX64jhz19Fiogt9k08NARGhiEoPwkYPZB2gkaVd1ga253YNjiLqOuGdEebFl4hmRfHvRlkFO6uOFIB38h/4MQzk+VZ4E6AiEZvMIOlpR0xab5K4qpFWRI+X9qhy9CBXqwBAOxFUlZK+CLe6j2HI+6AI+g+EEDK8qNkT4kiHqCurxBsANOP047rBNWdx+1uTfdUcu0KnRTXEyWCXJOup2rXxdyOgDSOMO0ROuTEtg3DWi4d47ogJSJrWSbgHdyJkKFwnch2kr+R1uAIg8Vi82h+/2CxxNy8KWFg5pJRrSxQCKsJ8vMG/jsH+sBwFYGasWSJ8NbVsf3UNA1D9JW5qTabzf5cnIvrgsOdgkM0SAASVdQJad10OCMWES4QrLgcufBLBIKDFKxPtHzRt91CL5hDw1qyGoRwpeIDQh3pXGXsLPXFrKnsucZSXsqNhkvx9a7qaGoalPyZonBqSpSWMKNLULWShguMHqmHG0UizcVbpFP5WDUnSDuOJPbzcoufgrVADcShPBQI6LQUE+QostOf/+cbUThiBiKwTrxP1/XzV5HgjTW6im/GhLySAAUgBV00MsBFmrutXbnJWZOVTZ52azsI49ei4LkiYt7NfyOnMUbOZsl+twGj//TXf29kA2IPRzKIRPpFufHQVFGyxsXiz/3qWPmut4Q2kClI4wlZHPccCMwpVI3D95WgFTu/HzESBQBIysL7QgDrspo+6vdvcdLE1WsD8IC5L38NlOJczpGk40SQhuUQpHNzZ9pWJ5CuJCiZAuLxSrNdye21xv0O6qVcaXKaJgkRC4uoICmEjg0SjES5WIX0Ubm1YN+NqDnWMA9wAuE05b7t9V8bnje5cUE4BqxrrV12knOWAQS0r4ZDY7r18pM5AgQRlEM68b4QwDqqKvnFfYaj7qwULLWa6gFsbIxzEfJI4irbtrXIoMisTfSG3HuM7exb1gJCXYLqsLoSqnoLMg//r/03ONU7Ju68eI4c0g6gFEJk1aSVkP05XJBEedlPsO9dc1gyEVyCweniDvt00rrSPoKHmutEePswhErHaaQTXJYZ64/79l2rO8gSDKNQxbkjQpe5oY7GjCzta4lsb8bioms9iG56J48zeSJkYxqo7s2YbK4rPAsrOfUvX2vjSKPq0cuIzfbE14+eyOYLSmMUE46oLjEc9m9JVJdqPZpoy+7kfr29H1vBE2CzPy3qxtSFfaU4CHUvCKbgadPBnSaGMGjF/jVRMAMRtCNfgLc7CLgKyD3hcCKy6e7q/LTaJOTLmxiUXGC7a6cPTTt6O2KMXrQG8CRFl9hGYc41WOld9sV068cX8x7ElAOJGQxQCDLyo8R4jQFJjXQApN4Mn01sYs5OV2dLXkXkJRKQIEVHDKoQ17AAumsEnTVFm2BA5LhojyZkN46fAqS7uSPWocgsUPVgFFp3gZmTau2T2MVvWkCVzyDEBY4mqRTr17+4h0BrcD+E3qSjFNJUAcmRdEULiHJkjQyt9yDmkKAuFTqMw0VxgBTAEhdwi437NQODyI8I7WOqzFcT9BmbAYukabA0HZUEIghgZPEEheKQQhFrwna8Q6CFwXo+OQ0EKVO9Y98pYcYq4h7LAIT3O3THIZICjFJkwDIZaBjnAS4hzjqgABQh6keiYAyXkFouR2HxHzBhKsE8aMyvRiv2M+q2Rq3n/XwEyQbdqoA4ygEYhepSi41TikAHQa9F9puCgpOLlMyCet7NrPtY8tqQ26sKrqUIBJYn2kKILNZE4CheHIPQfmmkeADdPtbIaw5xdsaBBoYgwWjEg5EAAOUAp94W5z5enw5TCwdZ7igLh2wHJhPQlIsROO9CrR3z9Wb4jhLdJaBqLoE2pjfqDp1ub7Z2w3LxMv51oUONAYWGwCg8LYLXiAZPKAKGIsluavEtyqLoiorqz5olOirAAktwjkhq8cr+gUT2ExHDnXBfHwDkZieE9ytUmVF2w13a51+FD29ZhiR4Sv+eYx1DzgGA5wDC72McFxCRQWHBWLx+CyEhhm1KFhJlcPks2l6RSz6puh9B9XgKShp1hmp6frfh1E2hlNWFPjPfjg5lVasHzdXhTGpbWRRD4rowfJkJBqAQoXlH72SqH5Ync+4zAmphDRAk4NCDwDVTKu4j4NgvelXYWKMjr3cAK5/3s1ODZsKfEUzlvQaIsQxJ6BeUiEChsHXg6U4XjWOJYgjQDOulZAkBcFpDikpx3/GqVZ4baeb2iQ5c871rCjooK+Kq2JvioW8f8SRmEXQZ3foRYEIMwhDAdEAEjaw2/WZ0XsKQEcOiR9r0psrCdc1cjdBaD3pc04WLIuxiv0qVJEgE6jV2/WlcYzPiBn9Bdcp9LDkHAF6FFOSB+6qbufgkvTsMwkk9QODElpQGXo1DxGxxjLBk2YlLQGGiWX48MnO/j3ZgNeor4jdCBg7yA6gQEs1ssF61TwZAEB4ASIBlpcEgLz9lmuOE0AJw0RHAE4NaysFa3POTiexqRZdl69oReS3G4YUuQrGfnxo4R3y60luM1f6GRGoOAMrRjETgPrRB1Tfg7jrUndUnEYUH4D6PrjyfbCeflyxactl2kmXL87tSoQLR4ZyrKkk0MY1BdkWjtoN+PL/w5woIyHsiYhKsK/ULeaGsIEogEnuWIYz2S5LY3zFFkd+njJJkDXUTUAh9ibLPrMdnCOnHAPUZhKl4pLkPOlLYz86k+8s3Mkt6XZoAsgFBjHcwQUHAwZhw2LpX0f/e0e0WAfbJMKslpxtEnnRgeSRQeyj3DfVoiQE1hPXEYZGKwyJpOFJRtUYYpdpDMAVVPIGxfudvKvR8uN2KX2m25BUYXzK6eOVPIg4kPtkJ2pmwcEzn2IePAKLwUKSMa+cRRwpQPo8MigCLamHA1agLScXQfpkjjBSMUsRN9/StkQQlKAg4UoH7HgNF8TwycUWdeaF7rRnoXqLJ7Q93sQvc3IQGIZ7HcuRIqRMjqmbtUIoiPRP0d/4bs24Y3SJmi5YmAiFNDXIokzGcCDqDnFcK9SOJdx2JSgCgJdIHSFliOwUB7CJTVRypOFyC4n4NB505sLEQ4IYssTHQ66tuOIU2bIJ0COIcKOh1bz7qIFCsfK9QpEFmlFMmHSEgYe1l3TWYVoOid4ypCFvWtRrMZnK7mxoiCnnEmqCJ2c27DxronEQyKsubCcGQAxzfSqBIy6T4QdNszUAzPjLj5QSHYbzUXBYdiBbIY9QWhQVBNQlRTlebUEMYBa13BDyPhSU6PSSk5JbbiKJQiAFAMaTTERAFz09A2em60oAFigHYQgVLD6CKLnqwlrqqY26NvdbE2NMXsZCkCKlx1MlaI1CJBIuVZNFjBGAdKVbvGg7gwuWpFl/VBQUpwYs8Z1Eo8MwQCtFRjRu+i6dLPufipNwgHEo/igXbkxLIWKPAHIyKEIhBI0E4KaZgq9EzfMcVQLSBCXhfUUgAIlB1DaJGRssguHqac91djGnr9ATABa8L3DWUv5iGPC7XWYXUIIhpUME2CcuAa2hgm1q4fIW78aydhYjc5CQBuRylo8yyz5ESIRWQiwho8ndMTCL+EqGzObVhi4BfNIEYVFIjVM0b1wzR/FkQUGgkhYCTgrpc82wvr/mJdxgECQBQnSbEOUBQw8E+dXyvCCSEIOaR9vS27QHPSkQOhReY/akTiEaCmCcAAagsVDwhMQgQmyKFvgxCUa+mID6KKeHIEHgUzeFvDVMtk1ADLDA+4YzfuZlqh+R+hQztgQsngGkjQnVdczpSMFiqEjuITJBt3vuL3mEQJABAMaQT73uAUNil3FlpZGd9gBAxoBgsPWJLsqk2g9A3mN0LAUWAncDvD7VjAJNWa902w5Mc0pQ0z0r+vI3fMOjw3HrAHZkZTgUnYiLw9Y6tWFX7CVkwUrmuO5QViJa19vawBIECiuRGJ4g/8QPIONLwacS0CEW4hZHIHNyS0Dsv70UKINrABE1pqhOHABMLuxNSdV8adNKxgDOsIFgQQxiY6DuBuUyNyy7gQBWN4Sy9H/3c7s8LChdqwJVaKRFF4d/H3xKuoFTHonRD5q41ACBMkQMj99vrL8gEIoOG0X/yEPjPohNHnNsnFSUV4FDheShL+URF5ZJXWS9wESAdgDAKAtRbvOP34jfu8Q4lYk11yn1CIchZexzuVgdqdWU9Bh8KsE4zxpYfyNC1zlni/U5UMHQUYzAL9JimUlsSZgKE9HlRv2wo2zGPWUSjvh3OG3IklSZ4FCpSCN40Yje72hOoMHuT5pyVaGocOfG8rGAmZqOoPOIKIw1r0hRZUC/xrfK5RiJKECRIxxcEOWYcTCi643DH6xc1JwWHswxJjn9SiKHlrrV8ldH7T38xqhOwbq0RDdiOZ2GhXc8w7c6b+Yd4WTniB5kkCuhYWZAKAtVIjRoITVByB2yo9MdWlrLuR/zq+dkHn0ftSE8eKdk4QbQERypGguJ5ZQlOEAaM2BlKUdp6awLlaG415R0IcwwCNETpF1in3EeAmLOvq7tpugMLCR0DZykO951B/x/MXv76ihQcABbAVvUJmC2jH6G06TMWjVIGftNS8Cp2CHpEbZG3jQehaN8gEHwI7FKDfEHSuEQeLDkEodn52tSHVWu0hOMyXgSWrFrDdjwPxVmmY+3ja4eNTyG8sACApcHpaEUVl9hdv/pbIjII0kwC3jdBkIDD+nRSda67jjAs6kIiZIw4MGOvdt9aRtlyAogDfNjDACy90ROjUJ+SLgF8q6MhInoBx2OQo6O86pUL1tNbhMYi7CjqB7k1Z9FGBgPHtM9ITlnV5PWUJ6ZNgZyTQCyWxapzMIrA0BXFcQCkgkRxtUfE2fwG9zjFAkAU7ysKCc5clO2ejFzOzAVADDUkhVn28uYHDmzRVwcWKFcwqyxNIbW+tJ3uhmo/zDBmoNgv4TiyA8dEdbmAI80AwAIrvMcXC3UAWtIVRu9vIkHIRWaYVkAVnQji7k3pkBY+rzDakqRQk9UdRbRTmyztoSJUjgj7heBeEBAH/dk1d8Qcg2ADCarTvq+n4w95dxqdH3BmuQMOQSdZn3P7I691kbbGEJuRxMKCquooftv3kgU2bFlBncCrfS1788aYR2bbPIz+Kvx5ggmBzIUKBxIC/Kl4gxRhcs8fb0kcSXqRcjYg4QcT1z0eyR4PQ3RZ+vTLiaD2qtYHNy/7n/LDb8ziHSQSzrKvQEQ4QdSH915HdyjdAUQATqJu1h1w18RM19QZlBElNZtl5QmUlhwyHCJRqgIgmAf980r2/dOM0ksSD4DSGIV9U+y35oqXvJGRVlGY18GEEwArREn69XFPQHcdiapsKYT0ks9rXYq6UK13118BNY6A02hAbikBMa4dkqP+zOIdSGJOdeJ9AnoTw9RmnwwxxEJMhMLRFsgLUkAVMagfaCOyka8GmY9he+mHJnzNMbCYYmKiGuUZ9r18B9Ljws5Fa8QiANi1XTg21UjUYrLCSOlUjETDKm6S+Vl0Rij4hdlNLzJ3Q+FdcNIk2Vij0qAAwytpzvPpM488refmC5Egijkp2RA1nInCcfgkInKA2AfMn8d6ouQoSNf3IFiJENqRgsATTBWORUfv4gVsGO5pjSdYTzfQ56nxgqCzZMEogrYibREmahx3YrbszJH1MoAWofqI4BDmys5+zjFhGwyRBiFADITozj+5yy7zXtf3mhAFIIIAgHWaEDGP2cfBBGHrkNis2If7ILIyLAv+oeyXc72RO8wMYNRWFIUUemyw9w7Usl4McURt/9zPL3401CskZG0FmrwtbCi0u1gmocNgd+Mk2uHW1zxWLXgnijUciTWQ/BmapHYpOtaYvWxHP09FR6lrxySoQphhT2s1UgfwzufCm40hCkCU0RyAVCfcB7d8xl/vJUQhjlDq7gphFIW0GIGKsLZj3bpOmSwRGSydRuOjhkQcRrerVbt+g3+6YIYAJ3o7hXhZkAzKWO7Lscbxim8snmAz13gc+gU093cKcaeiU+npBE3kOFIJPDqp0IKE6M+DJ9yTs0o1TtqE7m9/rrzaCFEAogwk9AtKIZ1uJBzL3FddCB6mt3ycBVtxxmtMt2q5qxYkz60SDJ+Elg8lwdcUez2ZaraOZDNe0D7TFEy+xsgQiGztoVLLQ8FsX1cDFakq3JF5tnRC+7uQq9jM6Sm806yWEhBoDiomFztBgJEe6qSKczN5c4tZ2YkC0BeEdeJ9OKmZVk9OlLUbG0/6d+47nEU8lrFvT0WKpdMQ34nOf2XqM5pdgVfU7MEyPgONCfQr+6/xFSWDbF/aBNVINPkR8HRcixb3T45k+7cAl6/bVWI+esiw32e+rQDH1vx1jYhSAhnq4pNWoxDH/2EufgtAXxBlcQfsm0995YLujpRTpUAcQMAhBYjh0PMxbGuu2tdvMlfP8do+NrjSssSckrZJQLllocjzkSdo6W//hoJq8gHOqzpSmKUYKDcLdpdAU/E9VFNSJMokmjGJbfYHhf25bBas0pbaj2qRwWKdMsqxDMEMy1AQlsSGCpTH3H6Zl5rX06Sri5O+gnBtaWia82y37OMlhDFqw+GKisKiI+J3Qtrqujn89gL18FLd2/vROvwK/qWa8ASpSrNogD9z3OgL3CokK5zAjCvMZyfoLqMmTJXmEEWyH1YcGN69tLhLYAiaDuAAydNFs7liW3qVvbsJMcsXRFIEEYOokfR42JWgZmfO7/vXKGMBcdes+BFT+/8dkC11JC0eBnRj6EmhWRel0bqxKyqb2Aj8K/m84YqIxVk+DgD9w6Mjvi02NFGKWAQPeE3gT7JHD7kZRS0nmONURUWpQHpwgmA1ashc7kdHC4ZUszVCgeKIKxD+dc887r+M6Pw5cACRxQh0khBFOu5r8DAtD2aZyuooLX7mmPYe/bwdHeR8XjXIIB9KkkDpMKogDQFVnyLe0ycRul/A8IhOVDwEIUcjEKQ9M5XNbtA2ir38nb8Ty92cGoIy1NEVx5G4PTDkCZSG5ljVAKwbuzwdQQURaLqvLD7gwi4TpUVVk4OGPwIDKsaB2IL16kIrDUE+FHM3tp04jiynsKBbL1rPGij2RlkdB8s26e2stCORaRHHK/tA0iYakAvBOAZTsGIVYTAK+ZmdWr3+iwtQMCZhUAZCFZEACkZnaARwSh96F0YKpd7U/cws446NqGP7SJFvwvqCfFcgC1yvzieV6FscCNFDTcxfMhOHHLdO0H2YyqnqFnI+r3smwPb9sdGm6jITAwmYxNQdD680mUKQIlAYG6n21yUiG1/EJ4KYYfruZ/FQH4QkCG3o1Q77Gar56//ecibSsU0UQXwTzE8URZKCGN0gSrDM9Y+jmBqzYNVZ8CHCUCVyIYbmlmQqERwvXkkD0Sp4YRcZtjdi0fGAwNu1AJQ50OCrV4TGEVJ95QdDAv148SpUL0XpYRlRxRidVJXkWBadylogna8AgflDf9/2me2elyIV2mYRxCZYJjXTooDdJiIq7ksRkHPbh+VUyVoXvQH5o/kuRiNaVajpTkPgUDS14SLF3XEU/fEW3KXjg4qC5YWOhQgaNMlJjXmuJkEaVegIEl7Eft3ptPNPHGGxwqg80CgxCvCqjyNq8eagxp+xSXnpTI2hEnGgfFWennt+dTe3Kd2MFgO7CxtcKO8qDgZ16HfKVuOQLzEVLy5+/DAneKqn0GI92YxK+H1LtqWYCg58g7TysREBocAChPuyvKEkolDInTcEQws1WwJugMX+TiQwUri82izn0ZgT5GnRoOl57giEifzTkwTgSE6Qk8og72k2d70tmbs2iyAWzc2iTpLBojFER5AoJmxab5zxRUUdZeHp8pWB25Nw01gUUGuw1QkQpVXl0h/lrKNCSS1pi4LgP4krib2TiBcTg1WT9stNjmtN/UIq3mDgwyi4c7ntkTVmcKwoApjCdnPluGwr/8+xmP3IXd8p9F34MNw3BBO9WgkYwxP6jM3VBaOfd15jXHOY1J6naiizhpPqdDb3ojlA648fJaslNxF6G1cbkWS6shVLQkCx4ThWX0UQYiYEwYYcyLPRs25Bbq804a39Wh8vW4nAmhwpbS3RV9ehd1YOFRay2WX1si99xKUAWySmgBN8HeGa0Sa6kKlZoTIOCjqai6Z0rmq/3t4hi/ySHNut0ohRo1PbR2IFXQB+bsl9bh4DAcv7OdoNj+Sw4MGLvzSMRWQQga0eqQLGtT58IwrrRn+KeuaaydqmThWkMbv2sYfZajrpcPYrIbf95ks6AXHHiogI5gd2ImaYzzNmt0/+dhhOAKcmxEUkiVEmS1a/t2qui8uiB6APaK/phR2vUGpzO4WdOMAAWNTlAzZNCeUJwoCU2v9wtND+zeg+UpexmTviPyRpmKJQkKx1zlYNnh0NwesN0r6oVyDKMAVwFlvPcua5wJdJc96PrzeYmyIjlmprQKe4n9cAS4qcQK9aJKzaAHidIObEMhov6GKz1t03H6AWqQsh8ioHspoS7KwaNTxJQTxG8dOoF00S/Yokqj3qPo8d1mNQn/oORAGmDFP/ybdSUbJbHA+2BmSgUJbVt7lw1EtMi7DUhYLY2H7RRH1tYja5PfJU9CnHjRh6ks97Hf84Ii6upqbNHLNEpdRn3qBaEIg+4BKDKhKclUgi9/5IpdGwPYX8KHLXCFStEQt99OPjPiWApsTMp95ph5P9cL/5R0Tnv19VE4UENf4MJbLRbKnoDpZfqs7z0ica2lhXZ6qPNPYgsgZfFaTwjw9taXWU268l5IEau00q1lZhaem7OcdocT1Is3taAzKrmoE6AWvFVDIA1zSYsCug4g+VJulm/ny8AV3rQy38PHvvlaGuif8Vj4+oT5Y/vLjIu7uZ/GO4FqWptPgOs/O+30+ZBb8uObDT61FczU79WzH2y85sWIfy+/8AYmvkSk3ZtWpxQqUaSA86MyG0JEOy/SCq1XHcF3OpzUPKBBBHemZC/hVXkn/kY6KQ4E/of0r/JnXVjQuQ/JcJyu2oJNnYr/mLLzX4gcxET3bpelc/fnwhVbZ7nYUFlA539Ni84Axu+SYDryhjaLscj8qKny5ezuAIUKMC6/fQSomb7IFUpLOP7T9suK8qd8CtPEWh+65rj6YZBfhcD1DE0OJljsncIVx2rIFugbHvW7oz3Y6h4s/TE4wXdZWaP6SxcK78vgjQgybg/hH+gNjrO+kBqimJXcRiRi27oi5CyiKAJ6NXn5Pf5jDbZX7i/tcf2yVmqlA+irLfOgRAojKSTURsEKJRQ4HOjhcTtuOhXj0hknNa1+I6/a0JjXmxMRI4Uq/q4iUHN9E9hZKr3o61U81m/kyJsVr+qrlzU8XU94s8pjv9Ez/eLUqaYf/pZXYBXuUAkotQJrDLklKswHCBWApJM/DNAOrstzny52YeyWvSe7nfqDHk7TwRaQgAQCOKxItJShecgVqvfJLr8ZT6TcL3ke54K4YW/YlOV6Vkot/lR7uR9/g8cH09/A+mP2SoM8acddyqgi6maoMAhJuGtd1THY1BN04rVvkYMVLSTao4KF1lMNCdlMC/G4pyET5tUhHxSIscIo+Tw8yVvag0/rIpx576I7nwje+ku+jd5w0hd5eh/Kd+AvkjEf5j/Q/PCNhc1/xvHQS7YcSoPDFOkbJKmn2peIo0iiUDPvtU2t63YL+5yGpIdLHtcx/ewZ9O9Z94Mxqpah+vvZSLrheGkapUJp2NpJUYBV+qPHpyqxKbJtvJs+sV156ZlA8n55/9VxEfhv7lOv7+Znyi/smd8dE0MYwg1COzVlcIyaCUVq9meWFSuwabeluhO3+Gad+0d/X9hiAM3qcZAgOR+4Xk6OKv+ZjV15JzkcSgZmVAtOtSrA1T4I9dYumE/pOj+2Xydif/o1P95a1QA8JhWRP7MQEnV4YODcTyMpZFjNEGORFFqO1ZRIbiOl2j7GVdhSQJNhElDoXZ/3ekTvgCwiwx2MDh1YFA+S1ornE70QLf9mN2YO10Z2iVdsyDXa449B/Y9/fZdIlkE6y290xiaJblxZE+eo0gIQz5uWEw6SqHwKBfVBIFREfiSBehWZDe2xXovIJljcsGQSTQ8aiNLSS+A3lxIIMCB7GhqeQjFSeXDyQcFcQaUnY7F2eBFfPgML/Q7v/pF+7+Hsg34joS/Ll0pMirLgdea37Ozw3wGlePs1szC6JublTYstSLf1mH3tdFZqUllip75QBEoAfmRJehETdARNVIDGhuN/8PapFfa0CFcSSrG734b9x6/csfH/KFuvn+EMS8a/6Dl9Px+dpForafHzr0zxDjupElJCIB36EOSTMvWpR3LP5EXG6uxzQkGyL/yl3oICLR1MuZBhskKXDpEqF64kIQR9op/Wp5qptvq3fHuek3v8Xm30mVRYQiFlPbgxoCMLBVYXd1wabXi9gu+UQdmxGu5Cr/PNqPpWsNbMNKLf06pMfHiIJ1BkZI6sDzK5iiBKMuK0FEE6doHJYy+mXoaFISwE1XuLbI2/N9viH6DYf56nj+QE/gE3DFf4BbamdHFJUjPo+hOifgQ1W3K1bfYXgd7U0TigCT10a7ImYtr/HzhpLD+noqxMXGoER5MmCDhii2H4vAwavHNDdhP5uen31/4O8vfoz/za/XH3NFNkNRSZOLRsYwnDn4RYhodrznjNd1S1OMqyEzM0boTV1jnoIh2SLD0cG/PZD6JFfT78gPesaoaceIIxn6HGmSPNA6v1Nuyuo4g1Db/1t/DYnRPya0puhE+nUAgoq21WUKNYIazz5S1622riMNiV60T9iSEvRPFKc3b+4W45YM/GoYJSODJfE7RJg16yipfU966QcQaaJXkK34b7f/t3r8fyDPl/VrVjVcW7qky64VkjOMMkO4AQe32PGf//hhmKoNQyuihpf5j+PxhrJffDFj4e4IQ1GQSRrS5JZTlWkUbBGq7Kh+1xGu/YV/f6/H/1L3xy+bnvocssW4VYgWWeztyOQTtWbuFvY4QafuKkFvbp9iOsrpEgS1Cokgw3RpODAiEzFGGyIDv1Mpp1hbSkOCHf5XJOsyrL/Z4y8mvfy+7H/xwqS6GVBJ7O0kCMVqdzuTmORjWPxHWLkfCcqb+9L1R9JdTzvSEqoyGBRquPuJ/TkIwGCEoE8I9gvmZvLMk+Y0ZKMZ70XLMaDuv/Yb/urjNf3x7be8iIt6hghmlGq7vYPITGq9Log8oqSozKuLjJ5r49UryCZX7/AsItAQKNKftMidUvnMlXzpE/6b+Wln1qBZndKk5OkE9bzLqfYL7//xFv6E9p+hIvXlqGWSOkvJRTxjO8P5UGwy10Vgqq0BGb/Cjyl6cCCoW6eY3phwpP4DsMkEQgEPIx02AvwJgsOSwPnnY58E5UjVrxGE56RCCs1dUQPigw6mfeY6owKhTUoBc1KZg6F/EZhIxZb9/lYLlLUN9kC0xNrr50/AkT15hXl1F5pCcSmRJ5gw0BIacDS4E40KRkpo5XDdD7R9XGyFLROXusbILfZ9UVcVAulKt5EsFmqpsXYoAZBbQ2inRrdkf/4E24BRHELUiY9gnj5sf/QyzE1ccY81CODaGoia1SNFq5lyjUFO+tRcohtaBwFshSDb6LfVSMYR4GNEnOYBcWI/RmobbJsjBRFboLDF5UBdUCaqMFhOAaJmfzaFc4V5E0Erb0iPzPIsDC5B1YssH9M1o/cHVjODoJebvf1LkL8hTlmnmNyekcZtttKwKxl++OTl7PHgSGrKRJIXkmBMAgKAKAgClOnIJmnyONX9jLR5y/Bm/iwtyYiBRE04gTNCWR3BCUylGqnfczbQYeh+8f6TsLYIIVaNlBDIiy2ZForeWCASQECvW9plXnUXYm+9v1ttR/cL2EAhVOCO68w6DgChIvAUY06OeQVC0wTpm/pz294kURnncPoxvkVMjYzCiIDBOjNp18fNOdZx0u+ArJ43Y4/qDL4r1jgVSgWh9oUgRYI3QLItEZPvM3nW4E0bxgWIVqmUZHD386vvFrzQOxNJQn/lwoZBiVg+5khxXMMfimyFS1mnFMrgcot+2YruxRs4Qa54qQj8DyNNrsQJtLAkZmtIF+Nak3noVSlApE7Nz0Lw3uOf5uK9vFZFeiviFqhLeoWxkcDbYDgBWsUlpukQhRRoiRn9orUob88zvfpEQLToPgENDWlG15CZKxFFrmKQkeKVj5auLhTD2c5+MhEAIx0sJBwPZWaRZGI9eiI+r+8fj7x3j/wKQTQZZQCMM7Vdg1PkCLOSg6xC0Vh1HPtl60WuN7tZ2yOUFAAdaZKFI30GPr8agWkyM1eowUEskbk4n0wDum7vrV/vDyVTFCoDsRIqP3Xi/qIiRWCMV6nGBDVbzIJEh0xbPtNE635sEVMti/2HG62J+ihQ5tzhIjApgJtFqAwzzm5hCwrPdYPAetJ118T4iUcLIHh/euy0J+k3elspLRnCJutNrSzmVWMkrF+UQEKuRst+2Zqfg3Ur/xl75wbGx43j5s1EjRKKiiXiaFGP3iYM4fwzxjOS7AdWbgk1vVPVdAFRKP6M2EifP3IZfQUvPDulD1kIKMGyIKFhQZH2sdVsoGoe4SanU4Dvj51AW4vnke6VaM5AQIhKwZMQxHE+AgZNAqSDBzM44i2IZmoE/5G5R122YYFoUzASZMgTAEH86CsJUYUvr0aFYu9IwBiYgf03MOM4bZk8FrdSeRotDPMerpyCHqkQwhS2kssM86ISPN2vQRKH4Moc+ShbUqyS9UybLYeU+OCzNlKDxAgZumV9XSeKRgaiaAKy6CykBgRfjZRbb93Bj6lgLlU/bI9eKlNAAcYuNeBpCupVjGZdJ4ETACHV/cWk+RsuJESlJG0KqAr1MX+SM3wjTawwgGJaqYdoAQrHLVqGxj+SV1VPMRNGrqinuSYAU6vAqJksJANXPkwQnRpGR2oc1eXj+gEJ9L+ZMY/u9mteQ9BZBbAhwsP9+7i0JVn0EwnJ1vtBkWhFMeiFkRyChNJ67pTa1Qje8jhoQcPAkhSQTWtLYwRNU4mWYCRYkPwr880nmip+45uI3HHMbJsxqPfoaStUj7SnrZF60iRhGDiIM3wZJejIBzxiVL86gRIcJCb7Sj9ofPuj7FKJqJbwuS3BIFyNOfwLMlKlgcUBmJ89icPcmjv8q4ap3aJx9JaPcL2uHDBwnECIVEEYJGxxnUqgBgnUail9I2WrYbzu+fcLO6fplD33oDlNQAygVCsIwAPJ0rF0DphEC6bEMZ5k286uBUSmERmYSS/hxeVPj1zHWnHPOwol2hWXxIBasARotIIIShErWJqGbOwn9NJ69gSRGpDcxMx1oDlASLRmEGmkhLlj4SETUSohOVCOMOHJxWXRGr2ZfrbBgDnob/sgOhFsfqsY4qQ+8osogQRNbNEPgAZySCxJT29i8MhnH+iHFiRL9ZItVGv7HD4xDOfzHyiXQ/gmUqWRibvJSHjC3f3M7fjiCLXdsImLgAyy/BxiIBL4pskTJNuBTbRXW229cWPjkGJ6muODtwLSZYzj0BUWNFhvwcPjgBcchpPkhfDvz6y6yjzz+oQ03IC7SgO4X0M8m8jwCDzzdwmyuCQGtoch0e1rKeBLxkzgIy1Pl9eA4jFAGjG2oh9bfk0p28Q0MgGkqSJdyznk+k+/eaoZBTh93EA98nVNFxLVxBUCURAEiRDRvQlhSKVbBUO4QzWCvd4PGqpcPvUgTW+TgmR9URHTgk2oU7XEKJRFcj94qupF8gXFKRyshiQd4EbrLEr7lSQgCLFIAZDBS2B4tfJ8jDHRgoDcVw/f+KM4cfQx8wRBxKqt8ejStJg9pybESE/KTc+IF3QBsjsI30WW5xL35/6hgpRKFOfAKElZlCj5PZT0i64KrbQ+Su0Eb+d+sxWLfHLhMXCkDGhLJLJ3nZpM7xdaVqDDNSdWqKtsD8zvppZND50oN1Pnnk00sNIRACbWxhNmzAlFgC3Hl+qXPCLYB2DBNbAmhdA1gBImRCVFgtEcUk9zx5FSwJZCUDQDBAYNSwJjGnZKOs32m2dnmjkrjH0LcujdCgsbjrZfNnY+BepuUhfGqFCBYxxHLkOYtAIHAXQ1cRAlpyE7J/6GQWtScc9lHkjrwBhL1xKH0gOUQvhiCSoW/hvz5kwWmUL+PGPVfq5bw2JiB1nKQNZvLo2pKy0Q/WmVBjQ4BTRvkEPBrQWuQfbPe/+UIXPQBNOENC6e1hKF9EsL6VS5YKBvv5tAm3mS0wgn6FmyBj6Pwx1q6NKcdzr9LuL2u55hfWhnmiP6uGlzLRIG+0VV92u+ISlnkbuoCJW9TQYWEDL4JaYhQJJAit8Qvywt4yvjzFqmcsws9FUG85LVPLT/474gWXrYZrVxue786CrUwcDGEzR8EJCiWMRIowyVNCOJQzCl0YwG5GYoLc1TT/5B1bB5sHlazKc07LRrVOg35XhyXyruNuTql/LOGKw0ZKoWNaOewVQ83hLEzoK5LJN6eS/xleJH9INM+eelG1xnSYTmPBA/WRIh+2FQwmpKtGo6EqUrOAQElKZBgUxGj5wohoJ0hFlaSr1WqnGxkVsYF5jAkJEcJDN5uQzVPzpqMzVAxBat5ogTBIV/AYkGggStQ0Yt/40nhtGPLs1XJ9tPWyihheo+zGI0omW7B+CspKxW1s8GjyQzhCIA3RKr2jBBSEhsBxK25AQ+Uh/3rj9svAAaHAgtSo4QRLWq2tLrySwrBtokj7L6PJ9FNQ3iSDPHJ43OjDIE8GthWqQaGFzIQawIfX3iXiWUNUW0GfRpoqSidqJZoPZFqVoHI1sFLGlIIpkR6VfMnyGMRxTJflBIyAZaBZV0FFDUejCRRgFmzPhSuZoVZtS3B1fROzKCiTJtRfdGhB+iAerWztPqCqJWkWbyTT+QFh5C2UgBNSMtGlyFSvUkCFqkkUc+hGgmRV4iAGz7PKj6V93BpHgsoAtfBuxVYudahvKpQ5jN/X7tGrrRJ/ZbEDZatBIrSJhAJ8GFBvmVJ3QEJFoYxNmOqnA9yYWF0QCgDWyip1PEr4ZH/dV34Eoj88FYKqOiWG/kZeW46Hl2QP3vxwHOjDvIU3OPVqpbaudg6J48DVBcQbqBiBxITzWCdb80wImEEDJWm10tA1SPlGA2zO+WBZgOPSvKY5ea87j58djhGvR9GTeVTwEdkciiDOf1+/m1K2RMRyEZfyml+pJnRgaXIN3CnxwOECZJ6AEG8IzKpGeL8sLfTj6ZJYPs5wQyHZSSgN00eg+3GKMNpKGKFSTl5i1d/vT0qLNI9q+u2tdO2bVmad4B5HHFCr7Am8ji5zqGaz/CDNPtMARHIHRhSbqfqDQonSuJ4QtGEnzApuSHaXUPsn4BxqmjTWe/1DH0zGtn+UMQg4ZyUgq6X3E99VIZaN2wX/moJMeTVo6UnJqO1CDCjxVPworZkMOQFhHB1HDOwBmYADnJTsGNJFi+ChHAmRNUkuM8Ve7+QlVI2t8JlWpYAKBEGoBJzsc3l+owzARYhTZd92tIZ+r9RWEQgn8lD1pLVMkTTIhtWlSk5IiqtNNqeW0r39uk2V/dSOTzppmx/jfc0wRdtGmF4zCGGWrCYCQ/vGId88K3AAkgaRXKhneDUojTiTdpELegin7DF5BXUj2cKLqWML2TA0J8Pk7fxBXk19B5pG9cWEgm3QvYdhPP/MCgEpetJFpGgIyR8PceAjNGGygIbIVoo7HoZ2DCtoC4i2NnO84WkghJcIwri9z/q8vmbl5U0GNC2MWk1qbpITKC0iBKjGFGzEEL0JpBo7olqytO6RpoziI+51kJKoIRoK3DAoQ+AoGtAgIbT6CeKvlN9E9pwok0pkfq/fRIRXFKEP3qKjpLXdaH6X2kMwX0HynABMoJEtuxn/ieKIBrf9p5EscKXbJN73S7b0A93DPa1SoOSPppNGVEvyBUVvm5lqHpmJMojjYGsJ8JZW5Dc0KcIyHqjhCjrIFLxGGM846CB5E/qMr0jBCxkuQ4X44DoWLXQzHbuYljqk47Au6fcC9lTwgRnjRDKBMgU70pMNFod0Fcjpd7ibaZNZr7IxjKuLzamCCCDUvWXZBGkwxbPwxAmIAb6Vd+LsxrH5MgwQrKCAvWwe/lfvoxagKJPksFxTX7LHJTN0anz44kAaael9vvp9a+EAEf4m9spDnnTkLjeVenzg5Em4xENobfdX2AAguVhi1Hvp0Hf2HYKTGJ5HDL0mQ2e4+2Pk7QsnyecJMVktF0ENsLE8T4QjbiVWggSqqQRoFcPDCXC4AAxgYcgGOkce7d55GPg8H3UmomCrZ6W/0aTI6L3zPnUuPRTBlWvaIy3tf6XOnMn3RzYtjvyNATz/P9ooaz3/ZDBsBqGCZoDXeowjfSkC1lIU+QVhy+SZCDMITKqMvOH+ndtt7TLREGQPctAZ9EWNwtEV2rB4tSEos2emmjCCwl/uJ/VFsozPv2WNX17slVL1u4A2clDOjF06V+eQLcMR3pY0I44OG4kbvTZUOlAUNfU3akpHrkUelsupvd7CerC0rkSJJ3TX1wuXZ0ryIy4iN1BzPl68nkuhdKmVGY6URqqETxV3/MZCfsQtc6TqCMZxT0Xt6BjFJBmL07s0srY339anbbSLJGkrwUNi203M9nQFjmqYaVa34T1S5OeONpOROiYNi0ROGIAipHSo7HntLMEHbxWGBM1LU4NlTYArVHv/akDVYE46HB/h43I3104+QiuWV1JIhH2eOvF2a40YYovJ5+FIEysKMDiC05m1gww44Jdjr7Hi0lxQxDqehnajXNcO8ylhlyoTCo3g9njiKTb0/1MX9NZlW5R3KrY1qkkBCAw5LEUE4SHvbCTnFkgxX0At8wAB91/u+ThAr9B94eN70GBQB0bS1v533GCiVEcpRu1fVE/95wo5MKPZnbqgNHTQ+cPkFDU8Ib34Y4qA3fXYlHAzXQaNjAkIw05kh+8DT2naFEINdwsED8KGl3cPRxtHPBVI7iOJL7xNaR5aE56bDbGyRgI5bIrjBxGYJUXiJh206voVq0ShshNgQvUsLXOGN/X935QiKpuhK/+/VX9t+5dJWkv6CtSmVpseEbIBc7x2ISogtEYVk9AQbAEqxiTXxA+gRfnwTJGXQYVVdYIcDDYCRzTfsQOMM98j0BSVIc+7QOz28c7v08LnAmjz9X8+BWFCD8RpiFrfCYJicOWvJQo3Be4KK0+PQLkNCb+7uobdFoxKmIbgrYcldC5BbN6Nlu3hDKt4C8ThAgc4gTdF5PX9q0NAmSRb1Ve0vku7h5EdqUpH9FFqsfYXLChMNhciHlT76Izn8YJthtlDU+Xl3zINKNqO3ZHTKMDE5k3ZxgwKMcxV7g5hLAeOVBxpdTs37g744lWqPA13F3jdP78f7x11fC8BPSrgrRN6HIhYAHsXSbKqh77pYH/mVNFHGYSTT4oziQASpgL31TSSYNscnssGxC3obCU7iaAAl0M+d5zrX643Pwbm8urV7NQum8pBEFWCG2Z66gQdwvTnB3vYH8HMKE4HaumVoJMiiHggGdsJIAbPrmJADtVf6pzTf0b7o4CECZMpCdXzVuZvuEQDMhaiEJQ1grQIcjWUT1ACZFbTCBQQQUsrbsAPjqwh0FlJjXtWZaB2qxyWA/RBzUlymHQBpe3gf3TU6sV8Vcfv/glm7UZxKlFfrRbKC8VLVFbZD01b7Z+p0xBk1vP89TwdcmW9q4phr4yhJ0/eqEPs5zDIQiuMCJftE1cJri4cs7X5LM0eHfPd38uJViv7hHCCkmra59pz24iBFWCTZUw3Y878gaWQ6ZdKJAfawaksnGjrSvALIwiGB3/ydjwjQYTpJy8JAKIB9icA1q9aJ247MISI8taJkoIDkjJZNHM9xJfMY4WzcHbPQ2WdK5JwBTrwl14O7xEIxkyD0oBTX8R6eXE8NWWVZR1zHON7S7/tmd59MFCJGNzUI6AF/myifBERBBs/UDWZJpEACgrRJZWJukILxbeluCWjRcx/Dvbm5lU4b1U7iULUciI7IEwEwXrMHSXVuSYLmgDgjKjnRzKeEivCbG0ka45+UhSuwmQBIem2tgAxEq6BsCYaCsG1GBEE9Dn3b/+hIkAoHwf7dzgzhpXBjkko8hm1iPUcO1PCRUUohgGD1bDw4OU+h7HDm/iOAe5xplc6xlunzhTxxz94bELIkRaVtZHCFTHu0Z5S2vF2FyReKxaiskjpPs71kANP+7oj4U52dRr4pLcehHkgHlC9ToGBdJjReX1PAs/9cdaXnhXCEGmoEcr0Nm/7Iig6CeYa1gEOT1pZjkVgykCh0JUq9QuA/4729ZEnpO8SJDZnr9BZAF/zn1SyOFY6Z9rmDqWMs3JlFfniCqkoKH0p8I8GYgrxSblUIU2iWCee8DPnnYLcAUiF1zaoE+fGb/E4uA/q4l+uXTE0/UTUYyTnIYIHEBoCDM0GhsGSgA2APsmPG9hd8bCw4WJbYSEDx6PZgN7Dd4tVsL0a5wgNI0YQGZeVh0MocICzc4yxCHd8Uvx98/+8BInyEAcI3RIxljhrzwCoKzAOsAk2+5khDOiekEvVYfNmQ50/VIHGkQGdiTkI1aRkITKOg0G9/Vm4RQJjozKyoO04sCU3jKpCQwDyKwLOjJ5Xz1oBTNSG/W8U2QVwPjRZqh3gK12+SBO+ed/qF+QOf2YAxWxAUeimHXPXUJRZj1RCFIW4BOKAhVCLPVX2QygolY76S+DiZAIIW6ny8fmSBt3z4CoaKPB9STXstKPOGQJ2BZL9+LjyXaIxXgDckiq2aJGn7pe8XwA41kPUKXZplmIDoSfZNQ8HWnYeZCPg8hGUIPJf0NxUDwyKfkgm5qiMYxxmIn+gYFGREfAVCoOGGWII8OYp3AYBgVIhYAUhRYbi2MhK7H59vilgf6ZeCqn+0oPY7hirRTLEhKWyG8el0j8JOIw3SDOPIiRrq+GOz5RKg620hAMGMYKQKYUeF+LAG2CmegythhrTSEo1X2PQnSWScftUVQIk9AgEDFjBGzwr1BeJRN+saMBBhuSesGQcA2HSEK9ufjCWHANYZcksqx9CZbu2BZ+AsRVodJyRT/xfyEFEfq7fENCdNPR+rHgubyAvhoCl71zVklYQriWYGJghEcTgCyZwHLGlcR4ZT29j7jeEtStiv5bn1uL8ZFKI/7RRysiGRFIJ6s9XcD/AEyUhpCCFJ1bkvK6DlyHAkinGR+wIJHTi+N8RfmHen+zorGEYRI20BoSM66pA2FyBZO9dqNhqHYmZZDxfw0DOmKfiaB4MwmBkSECIfDoJrk6iQ71/D7/cEjgDdAJlQ6Pr09Ll+1DO1IQkYZs9pYPbok6kDO9AvH8g4xPcF5tYt0dGF4ZtEAFjBrQhgK05EfBKjCkfsKatNWTXFwQOBzgcI/MySYG21s1KDhAQIXhj7DAA2AAg8tsLUotBTDglp5RGXJjPQMG+nwqDefvixt7Xr+IZBBtqX6HNPjIBSegOuKEofbKSA9Yp4MZKwgmzAVa0IF9RZ4B86JNwUmKQwvTJ7ZcOyWuynofSXIkEYRMLZHpGAphwiOi+JmkPRxA7HI0icbs3gqBTMH+91l5EiBiHfREpGRAE34UOQjiEA8Wqde66NeNg5nN5uyhEPcNQe8h7zew71pQWoK281CyHp5VRTrRw2zx0tDaIWia48dH1n65e/91xsGFhyjTkiUAuBh0d4nYmNjS8n8qIR76CeQWeIasWwIfBpyJ7MkYmg7bxOKtFgDVSUuXMoZLCYIRUdxVyrf1OZzs+FQGe47gApA40relFZ2bQB+Vrlw6gtBwdrUiCO1wRchPsCCZpijF+0fRLDypEHk8BxZLe2t2YbmGovR/iWT6baeEd9sTB8BjIhAYpKIIwA35hkB4THs+CAAQqAcRMLI6uwofW06b2tYQD9SoFPuHdxsqANXAXpkpG0Buh10Dcf52b3CbYkKLR82HmYty+InD1xPNN9I+CajtJmj5HG7Jo2UGgUg64kNQTQStiSS49BpoNWwuq6g8DeyyB41igQh4TnSsZv1CXNaOicNMOp9yPy1kVCiEVcs1z/7uKrbs0geKgeAU2jg3yx7WXLVWgDAU13CsB/fkuABtbHAQLyRJcoIsjwq+DeEwLWvjEiKN28ZwSyVT+kCRdjiCR7EXd2ehJQNLjpNcsiS3DU4UNrcdJfML7BQxcP8ubenUXC7a8xvvqQ9sWsegXS/OQA2EOwK0D4KCBkEw+8cHtwDNklC1zp5ldH+bCOPawKfBLjLKDOLhUq9hzQBUAAFAyygqADh+xiiHqT8iO3lLISsPIwAABwk9mwinYwBnimuMs14BRAs9WoASh8g0AGKK9GtRqnV6tj+UL8hiBNBk+hgSwOQu4jnyrrdY7wYQs7pr2FD5DVye/Mv1EUcQzQoC3aAjEuILD3aQIQauEQALvAhYA51BREiM3GlqZHgWoPewKPNFNgtrDPBMEuxn/9uAddJIdBqvyg0BHakLLLrxH5S+a/6t3uyVU8sxJg4k44gxHMA91djIhB2rH3cWD+BzD91vZj9PrFRIv5cZZiLyUKy4z20+0tDIrONFiO9aqMLDhDiOaVp7VMnFgv2A6wAO4Ca267hpmikM1so9l3O0DfgwHk//6kh9YJUHjkM95A5ouvQTQZ98ZgNSmZkXWNGh1kW1hoIsSxzAA5pBWE6WxRf1Tk0Lr/5v4tnXOlSN18D4i6nYzA1zveedEMtmGcaYJ1fagSBi+zo3JSbo9xeUJsxBpFSXfs6SyFp+2WZOw2AhYscRFkiuSzZhWY43qAZliiQg6LKWCXoDICmPwDY9pFhGOKhWdtAAJdw2+zENM6XwhKQAKKn+QxMZiCl+wtKk63kCItE/V6vxomogkAOrYOSf5bAiKbVC0wzUPIpcTHXhHJM+CuLG7oSgGEAImkgKhTABvGFdO2ZQ5SXrxjnbkNTES6LH/CehuxvHBx3a8FtCeNTHiARWSyezZGBMIgQ9tNGISwA1yJRFOmOJPlEfHp7HynK3SX2t17wS4z6ZgcQKOcwKn8L0V8t3OFN4Q2dU2YAylNLfVcS8gbRvGmWuoh4rncXGCnUqvpghcAvfJsS25KmDwBoSPPfoRUtx+LGLMuP2lGrHOk9LEHlkyYX5SMtgnId2Qa25AVS0IZgzgShftP4Lh1Ywg1x0MiDFxTP5nyMVAYdb9ovc0jKx4RKCZQ0W0LE15+CRQAQkaswNyI1kV+rMY9Ea8y6V7GUMCqpMAcgw7TtpG5VhmDOAKE1BDQACCKMCGoLENxipFvQx8uAC+X987yRObCuCKzXMbGctX6RwvZzHzvNhS715cSjQkkAP4Yw8VkAayEKdl6PGwWYRHdpz19eUF1Tn2uPZUifJvpbDGqlVOUbdyo10BISBXMN/blx9nvxXvhLau3WiePNZAJrhg2XvXexgKCmb5/3DTeWlItXQfEMjx041ecuKalu03kOglM/YhafZXJlUZ6sIu0BgQDG1OdswkYDYWMmCCkun0EKqNqvNTib2dOaocx5yv2qKaltvtkM8yHOARomBSB7ZyVZySoETCXuJEORnIpuUMDqVK4rBj2pbb0fWEjOegEUAuhvDeJgdZIME5BaIJk4DS3Qylm1MGK5CgwLFHQXJPu8MQdIX/tWErdEFgAEgtDtiEDiXyGAesiYdaZBlPisiv2uK1ITOCN1ITBErxPVj+swPajabjau478VarfYGRJKZaxYCiTDlmmSvYzXCTNTIIk29adUUXIJmAZuyoKmiFG9vEpv3lyGDpLRSxyYG4veMr5HMdBIv9Cs5r4pVz5quIKgDyQAAiwXAJiwFSQwKOrqhXOYbO8mOCCHNDUNSYQjXA4yEKrzOWlOzx7MVviaeJOSZKutQ3NbDcZAM8nTVaP77dyipwuRvsHp/7JeaAtfyqnJhXfEXjbWtCWv5dhEoBwkaiDU3WkexkOCpZ/kbBaPhi/r4RNP0fH0JkvIXwFhJO8CIXJfexqS0WncU9ARUwXCmjmqWB8biDKv4H/19oK/EcVgpFkgrLOELgrxnCfVkUzLm8lwOwM4vSJHSmmObv/V3TlHkEqyAbNrJo1YPmRXCHUggTpO6Q+koEgc8GvaqD7oN0/8tA1atQBZzUpYtOYEZdATN1jTmxnFFUglb2gJasBWDfjz5/SLde2c7dSnJaO8BE/UEMxfTWhxJOHAN+KGv6iYJ/vZsgpUHViudekcfzvVT/kBYW5DFDIiEUHoz35cGMw8AUO6usjI8mq+KDddAj9ZqDAtXINZEboAYxtAXX2nIu/mNdSmEBrakYr7FK+rCtPWI2xpg6AV61BGuVaypIArX4RQgqYBACfdULkVW6HPoo9EO7EAHNU7euFogdAngcylpYERTrLNNacz1wcQsyUDfCSX4pBdWLQhU1AbSLOa/s2AcmYL6grh3ScMpCBrO0BUc5dMi+1vH+CwLTeCOEsz3bCphKkmns7/0MQHEL6wkYWE8gEa85gzr0aCdIwa6bYabQp9WS1NSrcIBg1KUC93GaJLQbiwXqMNvihlHbXMZa+WdxckCREYVNOvo7KfVUiwW+FhS4tguGkzsxB82Fh7EpUa0qWshCTJQxQpJeztjGd+aD/KON7pYPEYCr4nkpltHP5ZKH/7WHxPIzdCZNIvMa/rYmMCiaDI00ERizk8PLfVNRIN+Pv8Il3KnUVC2RCti5Dx7WpyMsVrigOQ9hy3wplAoa+irpKk3GWUHALcVwDlrdLSUnGL4USJ/Qlne1n4PJVeVn42LLdML/wUUc/qiNJOcdjBD8oA1ilMeQVo4bohAsfWRYUAwJWkca2qY0UbdyqJlZSw+FkjHyC/AcpY4NZ8hOVZyjAnvruGvK7YVJOSF+VowACgY+aU87SHMkKEIglVeQIirGGpfjkS4SRzEeowDnFZp8LKsXVSY0I2IgSgtceQ+daCnkDgI3nKu6f1zYzri80rW47LG5nWJURCu1aK1AsHmIBzhFbnKi+IA9Cy7WVk3PsfEsRFrmEhEcKzqCScZ7T7Cu7jvCFWgNTSsDbqncEEYirV8mmkwr2zZYJTJwn2MrwgthMMGx6c7vO+5y6OPLnVaChD7K4ZjX5Jx6YrFGmUJURjWRmMrUfbMLu46uNHZEMilZaWhZx0FF8danp3yTzOnmEb3YuIKesYo8We+jf9MBrKdmvZs19/o6wQOmT9WBSaWaRVGJHK1Yw3+tUajQvJVgzRxQPVJFlTkmbmGxVhjtSaEGbeKuvpUe/VWDNn09uK6lpkgrXK+hCtcX64AkAPbJF4bgtr1w42kE7ia7IYQW+bJCy6oKApxUGa0Kmrh99QVoADFqWNv3Dg7x4uUeoZDCg8wPamdTmDrfEMQvFeW4rUYt2b1vyBIshCEzMqN/62cDj3xuEzCNCI6aByWWInq+kJKJDguZgQAFjS5owGHS25bd1QZ3raOFgqxhQCJqDgXStrS+ehMEjeWEKfvKr994tZ998EkV9LADOA9EqRo4fNSFDAB2BcTz693cbdvAUpU/xtZHjZFLJlTfl+Bwi7nv/T941Sa+5H6scRgO4SD3e1Q/VvKqVoLnMEi4pyDkAkdwWMEfHicL7DAcNC0/oCSlx33CdQVesQCjoQPC7pyCgHo2dtVwf8bIDvc32/S4FkwZ3IYWWWgSbo7md49ONTb3ZlXkhEEc2gvc00IcI6D8p9jsmQNZZcXmBAMbAA7UZYRbDAAwjzlLTuKAYpJ13VubMNw6y4fL+7n6cavZBZ029Jhj5bPtDxivkery6ZA8QmzT7hO7wpOUxqIBYAZVpCZ4BSa85jmgoW+UW+PK4A8gSXErMkg6zQTQBye1pUzZYX+ynj+dU+jiBz9gNDHM10+TwKSnNA1ohXF9GLXx4EAzhKB6cwCyn27EMOamA8CEMYesQ8KuEIHH4BVbILNjoUWXaylxN5AtqTnx5BqRIsFQvlEjVf7tujqF+KxFJ2D0zvcr/8SdE2BXr7i7vQHLMX+fK/TLActZMN1eRX1DBB+oEpYjGhYeWCM4CWD3U2kvEVxXDFGiBqq4ZBuwviXW9nGxtG9V+ij5jqUe3cIolz9W/yrQhZP8HRkRAHWNdw0UUDpD3I0JIZtrw/deocsL9GCpoP8SpfJo200JqsupZ3IKlIuibRNrZgXlxQY6sfthvEUr68AZlUeTUU1pPm/R0yelYskH0623AjhmBJS4W3YQEJmOVVfsPksDCNoDw1ZrOqvKCAG2oGKkWaVBxRSOBXQ0zeOFyyK5415FEORahL9O+goCt1dDwRxbe2wLaRB10PVD4cOPwUY4400IVb5Ah3ftx0QFwyUhXHSZGZM+EprmenfigdC4ZWCdvjpV5tymRDP6rRjiISQS53RHzR0XUY2/jqFrvKOypRuj/NhxB4sFhnPs8Tlv+TARBdH6Dg+YSPkYQSEvxXYG8QhXaZiT4ARPrVLHPpaQQc6/cS4AZyQCBKFN0twCSTQPd5Pn8/n7+wzfZTt4QJ4xZTYDMruKzdrrKTvdJgQXP4EY2XLXekmIFbYfG+H0CIjQhAM7mpWj9/HZMNhc22tHmDLeqBtBFN2XepFFLwrHe0eyUdpeJFiP2agvkEhMwCG+nTjO/vP41Zsw2dLqX7tW39/FNQCEK3AIhUyYWGtgVhYPiqv3IqIshCTob0lGL9Rl43W+L04uApdyfMJlH192/f9+uPdKBcjUEH6VosYTtWs0NAIE4V6k7DlguMMaQdAG5RHKfGMrQ3LybNBg2uNijAAcAD50LLNXflFmDAc/pf4ldS1eMdVbMlmqQR1sgCcKTo81d2QLEQqiHoLkl4gsn9AUL2RAKdEzp34bHzXVsCXWWgPUiN1DNCb5KTkOpfaSloLmdL6SGWX0baFIQkCzPle18Mmp1ogOeImnoxSa5KqDUwEXKZuNB/OScKbwViNTtI9S2VC5bdceRpCNFEpqCl4ShZEia1lOnl7seEkXHZ3XhXQ1AnmELcUvnv4lUJkjQbMkQgUzCmJRB97wKa37+96jxLTmj1pxEaKO5k0LKn18YVAmFuUOdd1RwuYsABnkjD8iCsKvIIWKRoNoFo9tstJJBuUfZVCuhf0HItMiM52R209Et5pSUV7FSj5gFECQpk/EabbFMmvTQNxhUdTeVIq/EeyC7t3LiIPPYKyVQQIOqAodkij1TC/UBXE+VqvwpGvEEgezlA2/qFtLlbCYJEzOQMQJAyUw5JnmRRTJwKAFq8kH7wnhNFJhGAORSQn0yNFUhOfcpGqmhiSQOKMzj5XYmsQ9QKliMIJMDcorwyEQHLfnbZEMm7CLPUzv0SlmfOP/drvyBTMsWYoBEc3hs9fbdBZYBXn0iHUdIvEfT2YEJI36+O49Pvrn7U1komCpjSybhunIoT8uiTJ/m2AALtPoIpzGWhjr+BZaOF+6V848VrZArSAPsFK48ZHf4MOd6AqC81EE69Qjy7HL7w6lLSaExiEjQDgX1a1sZ2mEsYC3wKl8EKma9CvB0FChaDAaAuv5GmWJBgYXlg8F5kYUuoF09R728DQDNeZSCmug6fH90uaXowW3n1J9cSBPbsAVa6AgYuQ4BGJKVkk+nFrzlAAquJaKIi2C8ibFD+QLWtlykGc2ZkDEywDnTAgUuhWzqVLAclfftOGc47Cfex+cfIRatfkSQTQKjPtuR60KhFiCVDS2IaGGLxDoQkfLODELR37Q7uzdlnS06Y1FXKEGcN4ZMI/voBYNJSihUtsemTVhX1FN9NfLAIIGhOQiAi6wccKT/jmimWqrERYu1avMZCBMw3RVIeQVlmOUk0tYT1bHm5hw6rWw0JI2B+sURwLY8ihUhgRZ5WqS3DnVFqBQFbpzFf+tZnugimm5CMdz/JB0CNdUgisPGzxWECYpEtTAaAgMc3t1yAxdAC+TtYRqsC4JSZoBHGIIDihnwPHDRO2AIYEeGP9DvB6vGDGYAEXrdkmaDJyZgFeQxyuxwo01Lju0uIhKHPP+vzSCAkGKmCEQT15ke/DDMftxQjI01LqCRogMCQAaUpBgAkQwNfs19ZpgJ/YyTLEqsNsBTOch48kfL8HIII5I0dsjKDAYGMhcAorEDh2slisM2b8gCK7kW03i4U3r+0vPNfRjFNNO4RNQoXBcHIyP1IY55gKHwxSMxlROrK42eCcd87bUmqILAcSSQ+gRlpQXrcLJtbQkONzFTBYyAZaGnu4CRr1iQK0iaxQozYh68ZkCpA815jxX6rEAwCxOgShF18wrCtNqTfaghFxoSqt0SAEa7xDE2H7Ws0d+Dh5w2tWQEALRRZjta97nehcglRyeaEAQRkhiULQCgOgbWkLQ7sSSE7E+aVgNX1YZH5ItvbYCDJ27Y0AK4nmYBlGiVEA1msA4QjhZxGQiNi0mRDThKMa/0P8P7vX/fFRNHXCjLfOMXBcCVivp/nuvn8YQyKpCHloRTsymPQCYyKsOzLfvYZd6zJXkoq0MpRsgJ45gqKyTZV6pr1QmOyj/pQsBFDQP+ZL3lViExha33IW8oTEuQAxFgIxNICLd9+63CxLaTHYNG5vGk0V54AlMJYCC0AFK9YBOdOP5VWJeWtVqaWImoYQE4mYpDltfs3jjiShtmS/YIwELTPKZIvHQiLTyCEKoRZRpqTAPILBgCAa076Hr5rYjHYrXHBPqxxCRdpF7nGldc/JNE8Ii0FAIykwKMKjW14WtIZ6EWLOE99iV5JkCCMc8yU/QkJiFZEEgWG0oWq2Gc5dKE5gCu/E6aoNp9ErKBSfvvhft4qCsU7kxSUGJZ6T4WdSYT223VpiVilMjqATNpuiLkQvf1QsCzI1GsYplj9uA4QiEaQA2/twzcTKoRuDZWFBalg0C9QxueA+Spuzek3RLFBKE2Q7olQd6YBBlAgWiZutBVN755JpQcFppJAvPcV5yIwWobEaVIae3arAJaUWBqVwJedNcyBn3FnaXn6xy9F0NjxriUASD+Y2XkBKAz+lgOoHtdqiVunbygUlvduHF8MEdQbsUpwLEhgwtISBYo8NDBbWmwUeOIIUtJtSmAFpJTLmC7DCtOcC8WBeNaFOARl3/CQLF9NNwNgCr34mM3bFk0Eqqu5xn6sgKyJYcibFVDKIZ1iHlFCBKBeQhyEWEtoVsUgweN2ZYbGVUEBwDXd4XVly0UhMooaDa8DqvdbBKHwgQOlTUEjRYhIEUTv+lGOc0brJge+VBiGBExkEyDr6RVIwNAkRU2dAPnUCYqBbzf6OAZHuo2mx2X80y+9/EUgycEkTdSLR92+up9ga6aEgRi831A5oAocwN/2zjyS4wRSwa0nLJFqyinbTT9fvCJiOyj9ptImKGBal8AK7KGWuN8C1JZOaCubeI7kBDKu682akCWCREMYIxRUZvOyResh7yyhpbx6sKQeQOgbCaPY+ZV3zwoi1hE6kniqFMXx6x+6/bDoSFlO+vg6U68ZS/GOv9XDWgSLVehA0XKIKO85zuyfXjI2REDz2cRYBrOZgVOL0EWMnZyAyMgDlX35SwZSdL9sNXMDACGzupU7Gf1la1jEAdNY/lBTAwm56kSkVm9kNca0BALQBEEtCYJURfaqjcsQRJbYhXmGtEKiPOXyQtvMQrQbOKYGXwf2CEkwrCxnubqIaARlK0qOex0tlpki6xP5MgUlQYWuNFqBBqZ1zvcjU+s1K2YjjGiV2mxJEUOHsA4dlVqrDtOWRE39sEcTF0gwssUVz77S3MqtoUgc+SMEMD20qirqcsIV/FkINwRgIIa2YHHiAOoNxxgjOINouZ6NEYgAk8QDrcwhmhEEJIsD8rNtenkIOzJQl4jnUpVhF3O6EFQAengWRV6pnFZRr+a13+QM5r60Rn+wVXEQ8PEtX2Ew/HnpQLgMBF4AOb1M+ggmkpEgiIwsMRWHRcIcHb+H2CNdye24nw2TeqFoOknQdgHjfkE9deMBelrKOjcbYRIKyhviRUeObY7zCpT2tN/9vZ9dQ6JHCACCWsuq/QICLHQbbsSoYCtH+g/sZTsnjVdD0B0Z94wXj+5gnAveX+PUBbQEhrofDC7IHgmwr9mxCIq/QdxfqxiZBmF5wEQyyKccCs/ig74rDUsN99dIFDF9XP9cTXcBuGRtLDArGKPGDAkPwMK3YxaRlVxYs94CiAEqD/vfZ+grg14MJFFwSi8mDXFSrxFbLFhWHH3++f6pY2XbjFaGrBpl6kC5p9symGPULPrFG1OAI8Ze8otmfQAlTRu9N1++qTRvVikl1DDri0p5rS0N5XqoTmOBK4U9vkUz9seXjYdKV4Xmsv5TSyE47w6S9QoaJjBWwqZZjPtL/Wn73eiA4oYUJGgwEL7iHTnQGx71NbEie6TUcsYm2RIGqlFdi2KT4xEBXKLQrd3WsNrS4XJStPtc65ib4zVHLt/BcVe4H+qlJXdnZigFYmXIiF5sM47EHLSA5/yJKXmlfJWBNisEzFl/mpR0CvlE1E6jz3SyYStA6gT8ubM7L1qiR1Pe1F0lYXCD4Wu4zrLHVMi9PWBLyphwfD5N9Q2UT+R5AF5p323C4A3CZPbLy1EDms/XkGThlvQI7KVHdwYFQBAiyCcNPMV1hfzK2p5tecFqfkY0oqAeGIHxrk9ZM27cg7iBCOm+0dCR1EFlcNRg6t7f6x5bRPMMAoMGIKBYW8hAtkAOP6Eb9jfDnOu93Uiwtq15Nghy4c5hdaNkQYCfu9+xI/GwdchU6JHRkChR3uyOzklQAoCDrFDhQaI4V8YhCKTvJRWHwoh6bVLRAD1SwIGB+69umJ4MkCgqVXPhKXH2ksOrDuuNrWf+Bg1bgUNwcgHC3o007isMG/Ee9SBgSOtyQQpiJv6EKC2NMyIozDBkVDpbBBz/2pFCNEftl3Hu76byrqLMWlOjGr64envq+QVS7cHibV+MPx2AwaV/kQtppPUuH91IPBdPTGJ7TSpm0Gn2CLTdb5kGgnzejS0fqf67wZOxnApWnaIaHzPoPAMjnI0acCwfrR6cZWudal2CxUzNTlBQL1UiGXvmA3ZskOwjR6aAL8gV6iRm3msMjTrw+UYNoDOHcwLx0n7u707bL5bN2grSLf+GaImQnHcKixi3zcytq7qxwoYjBKVx98vkogWOYnmVzSFL0x1hhIgf97qwJGvQ6kBc5MxSFMhlCmbIph6O2q51Yr2tfpHkVT50tHfdamqNcgGJjCFYR5t9sNEcJ/TJInRot1bl/H3DJx4MDKC0Q2/zHIhEBYFjiksNkELyzckvHJsyyBkSHBwESKYq97HF7tctlqL6vOESb9qPVpaWYiQsa6qCgTTBgo6bMUtSJByD+8Wwdi4yyxMEylu9hFQwmAbE4l4IaDIhtFqQa2wJJqQJ10oAjLGm8JPz84ffNV64dJl3vR/1G7WOF7O9oZBxyJmAPTFU16MtB0nI+JWE5SA/DxAAY3ax/yWKs7oD6UeMP8sZNAPilu77yjMIg0Puxz9hIfiN/vCx5rWu/2vuMOu4AoCDJWFIgK1bCMPG/SaRzFo+qnSXWudKT/MER6f8At9pyGBPoohDTiyceMQJP0KBKErSIGMWpYsRHvK3XPw9U5BfbSgKqlvyDVtJmV0XgvyEYQ+AZIrAGg0up+BdkDqfkx9zAwJGemmxfJGwBVmoI8kHhjj1UQJhY1hIkvN+cs4ZdJOL7JVI6HS1Hap8KqFsd8yltyBg3KQ8LPguKxjCAbSw5gBip8DEgM51XGzRem+ueECaIJcaG/L+bSHYcEGEnU2U9yp9+1ND6QoJAiM53O5PL6m/2NO1NrHCScZilKrfawnwXhhJB+CU194c4y27/gX3H2yD6W0O+LW7kb4KRZSVoXiwYqCl/TQJUgDkiQtAogwPhZBvVBApcSlyu3eKt6hXdBbHrldRtZJ9GUDxFhwraxhJDIc9DfoMAGzRenFHyPDWQA8b+oIRj0h8tHQ/j06xHIEIcwCcf1CYZFWgNEDvOtOtS77rAxSEKtw4uLrGwuw/bSdfdpUDxN6Q7DoQK/46DshDnfDtdtnrSZ70mOELW13ExX58kcAg426QX/23AXP+c87jwJ7gtKRzrpZWBmDYtsErEIAF9GG95Z9aAjer1qhHC2F8fuGOOEAMHUmDdANhAGN8QRxKW++P7JAiM3xt3XNYsZ1vCuR5HHVYEB0WLud9tQgCHwJ5ZJgyiA40kgfORYr8IPOCD2/qEWDVtcVTLyImacJw72VtmQByPddtsv1ZHudQM+T+wkVCbTRTQ3KvK2qYFn84vn2b0aNfQcB+2GUI9goQGfbDhVUi5zzo6oHqgQZcIllCdw9J/e93gyrHfmUl/I3gsDhO6pkj6Q6WIN0LsDxAisSBigiwTHC6vbQekgU8xnDX+43aD78w8C/egGyahO2+ZYJsCgwRhiT18KzBQIHJBNuTTuzSf2BgZaB+8XB1XDG1pHr2Gxpe75YmrkLfwYkrX22b65Pz5YO0MJIwvKlyE0fK7TKuHO78XQEshXNiBkyIl5zkWMDzLcuIhsM+zbcDPY5z391HwWI7HUzalAcO6LePNJNdTzeeb3KJ/qI+HWaZK+19EdH0aqHfiwobIH9TcCLAI+Fu44v//fffPizPdL5DnJPNlu6bRwGDerJxAwARKKlKv679rlpaZbG+JCIZkic+Et9K3GQawnuR5FD51lrAAt4TK4xE+LyuR2PMRXBGWe42aq2P9L9///dcuQpsluT8AmDjpOXLzZhx3FQC4v1f4L/YqZAoKRHbs0XldwaStMEYmAudkEAA/wsBfCArclW796Pf2WZyL6jc8HmynVd1DPm3HmvBlvM1PP573YtUAkXnm7vmhKNcIYPT3mx77vTs+3+Am4SUo8wJmKz86PaW/4jw+dz75XVaHkZCrtDBBXEQgjJrdWH2++nsz2xQTqaQrxN2OccrqBEpqCkaS7qSFRAlALcv7yzS8xXGgBRNylnk//53TgXU0m5l3YCKtgia4SjvXe0A+3Qr2IL1hN5bcF3chvsRSSCU2EzESSAD5SBKJgERWQC/gagp/w5UCQ70JED/W+gSbHo2G5MApVQSBXHmNthV9WbpMLNmXGirxBHXWxUuI1OAKYzPsyDWG1grfzgWbGF+MEuGQuRgCIyp1KvIcpQEWViaErSMpljdH+MDQCE5DczeFA6bg8n6b8T9LlsjbeEpKpe6ezkDmiFW6x0Ig0ajQzicEh+LEGaooAeg+rEsigobCQshw06iRDkMH5EWlww50YvioS3/z/4xso1FcrJrZjuzL4Rfkx8OOeKWciVDBAXhuwwSGs5DdMx+JXy4gwSM/f3H88qTiGQtLIRqgtMoESSDByOYpUKo9wNs7wKjVy0rylAto4+0/F+Lh+q1lioD1W0Qcrhc9yA4D3BX2JV/BlEwUv5kRKz9P5H3mByBZGMQPJmX9gjQIlFZR1EnazCRtP5YpWSYbP7J0b8bG6QeHQXDeo6FUwowieP5zDMvRsYlL3Pfaw4AuFBu0IBix0YZA4v3I6mf7YOwkAqyBspAACriziIeaoQ8/V+AKR9NwKi1SBx0k7yvliQlE+ovxv08yZC44/khJCJ/NK6/DJUGTgNOARHmkLk/HpRwzX1I8igfSf5Ifs9kyBegQNsNtvldRQ/PKkSCnqWBJstkfmPef5L1qnv61ClDhAvcwZX15/5NecDZrMlR9tMwgdXwX4mEgRAskQZtQTImgnijJaKipR/HK4EQyAAOZRgZJISQLFxHirIAFkbl9G+gEre3D8Vons6+hqfHm/DB2oqW+YtyLwstfzFMMljossYK9N9RQvcFvcKTXyTPtVdHAWZE/DBeggUKgIeJ4khrKdQBJYyu/BXxv2WT191xqzDBUsbgxPtX5TCWVp6v+ofBsHfDSJsVfEdLoVwCXfMGQTmzNHs55AEIMgw/jRcr4D5FibRApSxEiUjEjoUomiJaCE67UZXyUU85BmBK+OI8UI/rhhLl5wAZLxkGtJq3xQvH4dDGQmEPyo4DXCTJF/4fwAIKIAc3IRUwFu5pZCH6SHRoheQlOJIUA2M4ZFfX75J8UXEIFK+8f12+gYi+GAheMBQKy5OxEozYfgcBowHm7zQY3NsSWWYsgI39+V8+MAogGZiCyPioXK4DloIDSb5RkMkICwJsuzUsNOp19W8Nc//6bKoLH0YCCDIWAmCIvO4ydIY0YyAtxfv8BSLjATzsBMCCggN0fj0SftZAOug60VAyG9bBR4RKtCiUDHHnGPp3PZ4T286S8B162OTbJNlX6xkhbT+Mi6WaodH9x1S5wQONUM//9h/GJMhADfGPljUoIXJdydkFGevRyGA2YDoAIm8BNiS+3VbwLbq3wGhKYx6SJcMl6ZE/lmuEZFjsiMI4uMMbWq7dgx1g3o/P6+DXONqUWTAuIcW3GfCRegPiC1VQIuSUuYgCqY9+DroU24KGwF0q2iH+Rt0xIFiv/MrBM9dMYUD/GUSSH88dzejAuFiI3S/jgy09GTvcTkRmB9dDxAoOkZFJ8MGO+El9pfPgTa/8CqD6lKsfbfPhbrc7CONbuvn36n4fqsZ1rpMeOoCvnUmUjIMdGQDYZdYZL3gi7tIWxw7E5abVtU+gAS+hROWKp3B7dYkBoZQpMXgodeBGIvIEw3yxo5LFnxCe+/froUGgDNL42NvmDJW2dSNP5m/gujnOA3FB/VRs/hUSH6hT34SRIJsQPGzW9AYkJ8OjEiYIBQCDowwMI7j42TddZ6yxUP/ndWyqODnAoMr9y7Up9+PAQDscJjtiMorAYMiMmTJQsIWWMGZIld1INNC2Y5/YI0CiQKwGeggaieFyJcASHivnaXqyBSsIQj0/Q+NB+KbdOSw4UrClYZOtQIWnBJT/wYz5xliqDyRwsxGZoqDjaKlEzQKQYMlkmI8EnXC5SCoKmkSetnp9JLmb4IIIQikfQdd/4+5OC38vdgYK/hxxXxlCrqfLrEcO7kEydQ70TqTBI+1HWo52KHyebiuRsCpLoZoo0kQJ926yiLwVIcABkQxNuUw+EiiSqZEK0lTg9bV7zMjgAMKeq3/GTjKIQwnjaDJFlBkyancHTqpyTIkG9QlECQnttHoUC2CyUBCN2DMJwRuUcLEWwqOHF9WiqTHBo0pK+e9yRxlG8wBl4KgeHk8gUQbKk2HjoYN6RMAR2g+EGRKXm1M3PYt2g5oMoRE2WQiGbFV9pAvCSCZGGgmRRgYFJIMgQd5/lDvgZ+gYLiHYoMkgyvhRSXBmWpJxwjGEsZMnZpBECSSeiSC3oT2I6apX9XnqJg1gElRKAzIQ4UeEkslAeIaBCQkstXXQJQAhBZ/hO/jYkYDx9OSZgqmLrckbDKMvMJZquEL4x3XP8TSenk8CRnJn/nLl/giVo6aOwlOYV2QSSoK4NF3H2kI0JTNGCQ/PKKsGlCyLaoL6v1krwuU0XDwxiDKm+CmEh1nqXX9mQHH8bADpA0hqXZxl07UWn8F2DxsJJSFRGOBAMREyoSOQQCqiJhljkPFZCT94CB0YtIKTqfB5widL7h1XD4TdF8NpxhK2dAOSXXUz4otoptAztmBE6gwogib+JCSiI4DIUUEEs2CzAQYI0G6N328gvUDAnaqHPTpLABZgeCMU/6m+gkC3rp4hsgNK8+lymH25/Ht/cC3NZ+lOEmw8XEQLUw2NWliSN+gIRy4hYaOBz0iXDBqSjDYwjGCsdVgMARENnKOxkFzOR/gYPedjAgOvLSi/7RUWV9l2mPv7vf743J/5wSBD20IDywl3oS9C5+JrtgtICAe5ThkGBT+HX53HNFCSMCRjpesFAHQ9vNiLCpJAMER4L7pqjO1g864pzweQqLBX2lx5r++fTy6raNbnVkUNLNsQ1ZQbHz2Ri8jUWxdAoF4FAonwqyWvqjvGSjwiDrMRE6Y98mLeAopI7l3XnTdguO1FF+Psfr77qRo+WssB8qFbRtztnENTQ7pBX7y6yaGtyYAEeiOb/lmYgAUCSsFyfYVHjNFI6NG94NhT3A2FnkdjQIDk97AP3DfMrwD4ZsRprO0MBLfeojDOV+iCoKmhramet4y2sw1lA9vwwbcJRssKKPgEgDsbIUZHqVeON6zG0EOVkxGjG5b5ldZe9lKU7yV39tsLMMfgXnk17w5TjDFZZ72Fw0grLPS6uTGWGl5uiJsz1hIpHSsTEGaSokMfuQTXey/eIlHnCEuUtQW9aZB72yRkUibtpgij71smIiGElJytpISScDREm5x1xjmTchPkJrwhd8heJM4lC6LeBZcg/QoxxdgmY513laFzEV51WxFHVr/WNxdgSM6f3PjvzMBRoOsw7rYLKbi6qqynPYsSg3F3lxsxt0Wo2YjhpR6VTpaQbwWJLaYaJeCwoGYdYmWd98YZ2YO7wmnzIvXq6Ka++sEj9c35RV2Xk3O00DbYQY1qcydEsnHemsK+Rw6yAZ+IZ+lBXYwUTbAG8W2a1vrKGXKZHF+4q5cBFu5rUUnp3J76pYawCZSJOC6XI5yOltmuVsk6V3nMR+A8ScX5KTpofnLjnUTdKAmpDi5ktCmkNoQYrBsMPBKrPNyoOljINshWX3lt733pPQMTAJyKY/ZNTqd+eYzrtgnR1MNR7Z2XhslW4wy50EasAT2oHFL9iCm07XK1Dta5ga/EPKWksEN7iOzrrL3428xcgz/YmmSQnpsQkae3sVnHejIZ14b+JJeweY0WuglarDjMK0WE2OLOKpKBMcarq7mpqsp7SjO8DKzg+nye7m68Ub19dx+kEXA5bVIMZEMxNMvz+cqNB/WgqtBG60FtX/kHX+LXP3iwzaJzxNg2TSBHbZpmuVqn2WxrUDmXB01gM57us3I9XaaxCYfspBOCiblE79K2oVleXi2jqUbTrcm4rrx75R/rnL/msaIhxpCKOoxp2za0y8uzeRvTYDwd18O6RpKBDEoClat9G17Z3yci0gvhIUh0QUIbmxBCXC+X8+UijPfv7W95l8qLfJFf+wWxygHTgYArhvbkyZPnYTCZjIbImFxV18g2KEx5sIEcKK83FjtyVOiC0HhkSCZZE5vl8tmvPzyp733x4e3JZFDltqt1Xv/FGgkMKYjNcnH68Oc/n2/tTCejUc19JNxhgLmTG5ZVv0Q15fOgI4b1/OKvn7770+wc3zu8fbR/MPIuxusaoVfkPpU38fLR2cM/nz4+ORkjx8D9g4XMCEc3NGv2m1fLoE7944e//fZivjJ2/5P7H92ZVdX1XmK7fv7rb49/WVk7rn2vbjD/4YM9rs9OXzx/+NPDRxfbn335+ed36/o6Vr1uTh5/9dV3v5vpwPf2qcV/8i0/d/Tb5eUfxlXV1v17Dz69c7Q9mo3rUf0e9/ITPup8vbi4PH36yx+//vW4aYK5IVj/K9z9ezc8nO7tb+0dHtza3d6d3hrg/p73w+BoMnR+fnJ5cvri/PTp2cuXJxchvGrE4waxOmurYT0YTQejrbvbx3tb+7ODnRHu9XmrE5Q0zJlCTKvz5tHL05fnT589XS2uVqv1qpVJ0TwccpO6usp5P97dme1Ojkc7w0M727J7Q2NqnhOsUFPLKUQIxpzO0+N4Nl+/mJ8sH79cP8XPhd7N3MZNZU6CG/4sbvo1dotmK+opOiZXq7ygpiW6GEbd9fS//+v//i//+7/87/8y/sv4L+O/jP8y/sv4L+O/jP8y/sv4L+O/jP8y/sv4L+O/jP/y43/8+B8//seP/zH+y/gv47+M/zL+y/gv47+M/zL+y/gv47+M/zL+y/gv47+M/zL+y/gv47+M/zL+y/gv47+M/zL+y/gvo6H8+B8GVlA4IEJEAABQugGdASoABEMDPp1Ook2lpCcmIVRImOATiWdu/8O4VDeDodnhpkXuvDhVj4Ife/6z8sPDbnX1T+P/wP7l/4D3veS++z4x5Q/ufzffyuw3sLzROYP+V/i/y9+fX+7/5vsc/qX+3/5v5//QN+oH+m/xX+O9uH9u/eB+8f4wfA79nv/R/j/eB/4n/a/1nvn/u/7j+4H/Tv95/4exJ/d/2Gf5R/iP/R67P7ff9P5Sf6//x/3G/7nyO/tB/7/977gH/x9QD/6cZl/pfPh875maezh7+I65OfLtn/YPEL9m+oLEMcEYU+FX8p6gfmF4Fn4D1AP55/rPWR/5P2r9GGoX+vnp0f/P27ftz///co/Wb/4hKOZS2yn35n35n35n35n35n35n35n35n35n35n35n35n35n35n35n35n35KbjY4+7CkdyOzNwFO0YlgN2WHQuJaDBITYaqC996S3hS3hS3hS3hS3hS3hS3hS3hS0eEg7N4LILW5HM+rCpvxN3YtFDGNuWjw+pCZ0AiLPeL/mrAaB3CoWferw/kJ5Dkw2agwzX5hVKNxMDZw/9m71toqqCEGIHS4jHSNc7LBQ9Qr0iKaKtD8sqjTN8T5mhZ7BuqKtI9iIHvxBPCcKwfSeXSeXSeXSeXSeXSeU75Dm/+yCODHvQCbdsSeT2ajXekR+6xFefD8wH3fllmmrPemMZRW11+wXB3C4fJt2W26GxsJ5PCxdCQFFBKh0qCMz9rBBrNOZtTso5lUhGgrUhOOfsrFhBAQBfhyJGfjxBO569KSK+JY5J6BkIQHC/5B1VrYaYVDV+k0Xt0SKvU/T/bdKlASuhR0N7rVERkt4Ut4Ut4Ut4Ut4Ut0VzAOU/2nyC55i8QQHM8howUOGfjkxxCl+jzB21A3dzPyQmw5ZRbSlhLUVOZvSYeSv+3JVUO/B5VsnMhdNDhv69zDviJRQZDC5R+4mDdtGpT7STtta5A07O1FL1XWvvwK5w7dEiIVq+fh4p3h0BPu85cUlmSdijDOYv29oGQzrqvXKGnqGSLh5HYB/0eTYMZyM4mLYJ3gp9+Z9+Z9+Z9+ZXBZAx2eOC4HAWTvWfqGnAIx6YOfj4vdkNmYQV1oGNAdkgIBMCGLjw9QQd67SennRhm3r2rDBQdvbM7K1Sor5Lz1uMVW+RJEGqXJcaJWxFraA4tBXcA4Squ4/3Xdbz6GE6u0Kg4C6iM0CtPZbKPfCTVgJ8ryj0V+gColfXQL+OQK8Bdj2y4CH3BOMRzPvzPvzPvzPtrBYMtfLKGCR3uhyD/OcH8JFuBN21rm1KY8PeVcgqRqoYlwI3O7BMAPLwh+VmhumVCB7GLAbd8Hdl4poex7fxG55f6qKWj+0WiNsB9Go6/ccPINdGxUWRsBLxpOcXaAKTjbhHMwbxivClvCkmpEDv2xvGiKC6ruG18mdfqiu6NpdGYJrfPp/kWg44fYlnjMbgVPGC6v0NuRyhKpn+H+7HZAs9qhojGLpWJh0ATRaVn1beV1LI16FO61cE0n+J0XT7xS0zOtOpaTM9UWoGpbwpbwpbwmBT4TDSX8Y/cYWDBzDxw120Kjkg9d26NRzJ+HK31chi8Ex3ivQMyVzsg6rudbcz7iWbZnG6HEPkv0JsxozGbmdbvcTIucJsSsyTzW1VO9f1372FbwCjpuuISpzoQkt4Ut4Ut4S/AQmGdLdjKXk4M/hC14Fo7dao74XNIJag4WEvaCc4k7CTU1dvjTmmPA1peB0n/wxr/urXtY+aatdLvWNWX+qve6ERccUDMJjbVkg7xJ5Ayu0oc2D6Ty6TFzgGYH11SQFkDUAyY4B96Otx8hTUXHN6iqgMjuZ7C578z8ILMG8YrwpcEOojg/ksuE28CxRvBVWM7RCfrl2YNIEcbIcB68w6lzzScB+jUObB9J5cdnkFoec1sMmOmxjy7tcH8K2r+YvFlisBWd6EdTbEAKmzPHK8KW8KW8KW8KW6ZbKDh7LEf40VD5tSj6cJJdBJTVzkdqvpWxTIqMgu//a5c7M+/M+/Mr0gL4hxbatsmDMWrwp3L9ULunsSiUCVxEQ5zy6Ty6Ty6Ty6Ty6Ty6TvuP+3sdvxf3FTjZ/tAwAYwp7Wx4m8+Diu3y+GqvA7wU+/M++dov+I2m6wLrFcTkYYXVha6YPS8eNMqZbn2hqML+h0yK8KW6e8z78z78z78z78nlUsz76wcmcZZhAY57FA/XP9+y43jqOC3aAkBgk4rNx6pbwpboVBQxXKhRv/hfZXUWCy9NRgDWumDcHWrstgU+/M+/M+/M+/M+/M+/J73aGGjJ9y23CwOepw/wcLDaB+sNl1MQFeeMV4Ut4AIXLOOAhnA0GBHhQm1D1o7dhPLpPLpPLpPLpPLpPLoztHgjbnAFmqmcUy14mbDAE2gS+tmnSSX1ivClvCkjY9y3BXUcrpSPXDyxPb3yEBMZg3jFeFLeFLeFLeFLeFLeA2OR+X4jErLeKAKQEV4cPi2UjvYrp1xPZC7FCqW8KSZ9KkiwsNLxSCQiU42TxtWruEHPvFCqW8KW8KW8KW8KW8KW8KW8KY1csL1ExJJNOplt1d1iuZbQ5sH0mV5gUdFwumIYMjD5/6WXryoonWD6Ty6Ty6Ty6Ty6Ty6Ty6Ty6Qokma2FDB6D/dj1PpTp2kx/xZed3aPBT78z1chQ1Plfa5MntLYieM23pf/D7zPvzPvzPvzPvzPvzPvzPvycSGgnN8j1A3VE1fd6eO+zH5732FUt4UtKAwFQQm++RnNqJMTufwU+RZswnw/gI5n35n35n35n35n35n35n35nydzQbumoiUHbrOTx9yhVLeFJPpsYEG/ynAYN3p1x1bqE9FrEG8YrwpbwpbwpbwpbwpbwpbwmmCGpEJ1Uv5rtE82TnHvvzPvzLAy9J1KV02eCn35n35n35n35n35n35n35n307izgYphjWQ4VoW3qlvClpIuYWOInRBGJjTJ5dJ5dJ5dJ5dJ5dJ5dJ5dJ5dVMbuB9Dm7IW3qlvClpKq2Be9vr6MV4Ut4Ut4Ut4Ut4Ut4Ut4UtQIpYls5wcGx4XlG8HnJeFLeFJPsXRxogrn0V5ybrWwXPhtx6pbwpbwpbwpbwpbwpbwpbwpd0hUQ4f/P2mCH/3RHj/IVS3hSTu1lcBNGTRXX4MTSLY0YU+/M+/M+/M+/M+/M+/M+/M+4C+jxGeQ9KnWA+OsvnfuMTDYC3hS3hqwmQ1v/49M/9ujd0tJ7QwkkLeFLeFLeFLeFLeFLeFLeFLeFQ63Zev2H9ZgdLlvzL3Rw5ilvClvCXfU38cxg0ERujxWSRTckgk/DxwKffmffmffmffmffmffmffmfflabkS32NVVzcifSmHBQhoUA6Ty6Ty4wHktL/m++gBv0P0b5GRJklsR48Kffmffmffmffmffmffmffmfb4hfnPiE0IujIIbtN/K9Fk3PGK8KW8JeRzPJuOdJrnh5cr6yNDqJG5rhSIy6Ty6Ty6Ty6Ty6Ty6Ty6Ty6M5FwCiO8BA8rJWDz3LADzOaV86ctDdpPLpPMFqBp7rmiaZQA/hVHTsVzNE2RFEQm9Ut4Ut4Ut4Ut4Ut4Ut4Ut4CGOlOAvtxLqu8KBDwlqQfoWIGzwbxivClvCksmq8jG25LDrehuXlo2foquYcF8bcg3MG8Yrwpbwpbwpbwpbwpa3wPOgPYoIGgRrm4Ao/Zf35n35n35n37xWhyJ50cLgI0tjcKZ0NGKTvLpPLpPLpPLpPLpPLpPKmtT8Aog8dE+ok/WG74U2jE9Ut4Ut4Ut4Ut0iWkJPTODNTunwKGZ6SJlXagZAnKbB9J5dJ5dJ5dJ5dJ5UwwsPLiu2OZFO4MFZBdWlX78z78z78z78z76PtSlDHU7a9CqCCRz+KtfGDslvClvClvClvClvCktwAeqSanpzbeAuH/cIq95n35n35n35n35n35NIlGjVSmKEcDFuPFFYSlRddmdeQQtJ5dJ5dJ5dJ5dJmBmWgdlj0pgMnPJGTlup5dJ5dJ5dJ5dJ5dJ5dJ3zrcKuJZoeTc3OL/Z6e0Jz9lIDnNLZSwbdpPLpPLpO+z7YbD7Ysy5zZH5Hivkt4Ut4Ut4Ut4Ut4Ut4Ut0rFUrin4ffgKHbrymf1kS6wmpK7Jj1GoB0xXgIzLH6FfPZyj7+ErpqVzDlK23MnSmO4Ut4Ut4Ut4Ut4Ut4Ut4Ut4TKqCK1CF86Vdz1grvtc83SZPBZjSWJXq/9PicNh6+vecBz9cz78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z78z7YAAP76WgAAAAAhAv9TSArcPg+8ZFeuS5te5QitGWKMuFCzmSzN/CFDE0o9GLtt465CWR6JBFj7yYtwh7N3BtG8lMl2AFtfysauWruqxNu9VxwU2itUFdYjIB5OyFSK0cb4lTcJOUxf/ml70n6bnZRTkQnZC4/U6XPXwA/xjnQ82RipjdvlsVTD1TpRJKp6WsFvGtNXYFmBFG7sX5R2lTRfnO0W83OfuXAtcTwoix4mvGtpsMi6aMpCn3byeTwf3JCLNon5cZm7YwYABA/IOu9zm8Dsk8QdbY2erIiNmWNtb4KY7dI6nrmg8g+HmMP3ObRWQo1xEdzS6GD0J+VFCvM+B/7Z1BR8JnyDbRO85y/ak+56/+vlCZmyMoUgwupiyh08vEeoYE2v/rNQzHfLtBdVfgYzPWH4dPuwXlH/5jfTpIVjZWqXCt5brghstH9e2Wke68drY0VlWE4tjoc5LW5DWrECO65cMzBIVIR/znfHqQoWiLD1q6q4ae55Vb952kY6MIr2R1teq6JPwvPWfPB+/xCkdLF4rhsTEaaVXf6Tkvsp1kGpAAjRR5SwsrQkojf6BVyZAJTUi8bCXitzaigQ4XHgu4ruLWlsv6+kFFczxE4r8FJmHRKD/hF7aM31Do7BXTtmK4gUGYteEw1/7Y33FrvETEygALLMw/r/mMBc9HHKk8RP5rSa6Vntb5Cc5pnMf6nuXQvFIInBXT0/bAk9fDEcGvYHCYqm9zsj6lwDEdkVaSA/AUpnTun5rmAmTrkpP23X2i9PiYpOQCakJCS6gZeSNiz6vZvxc4xp+RVdUyaOp2kTBoNRsq6Yv7zWx6zJPNJpXCu0d+nLvj8gjkOQzJc+7g8d9/49lWBPalK1pOs6IvvmZRvEmt6eIMVy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", "w": 1307, "h": 1067, "e": 1 }, { "id": "3", "layers": [{ "ddd": 0, "refId": "A", "ind": 4, "ty": 2, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "a": { "a": 0, "k": [653.5, 533.5], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 592, "s": [0], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 628, "s": [100], "i": { "x": [.667], "y": [1] }, "o": { "x": [.167], "y": [0] } }, { "t": 716, "s": [100], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 764, "s": [0] } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }] }, { "id": "A", "u": "", "p": "data:image/png;base64,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", "w": 1307, "h": 1067, "e": 1 }, { "id": "B", "layers": [{ "ddd": 0, "refId": "C", "w": 344, "h": 54, "ind": 81, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }, { "t": 604, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 82, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [78, 60], "ix": 2 }, "p": { "a": 0, "k": [36, 27], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "4", "layers": [{ "ddd": 0, "ind": 83, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [2, 2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [74.01, -31.72], [-31.26, -31.72], [-31.26, 75], [74.01, 75], [74.01, -31.72] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "B", "w": 346, "h": 58, "ind": 7, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [171, 27], "ix": 2 }, "a": { "a": 0, "k": [171, 27], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 2 }] }, { "id": "C", "layers": [ { "ddd": 0, "ind": 84, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 85, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 86, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 87, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "D", "layers": [{ "ddd": 0, "refId": "E", "w": 344, "h": 54, "ind": 88, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [32, 32], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 512, "s": [100], "h": 1 }, { "t": 604, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 89, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [32, 32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [107, 108], "ix": 2 }, "p": { "a": 0, "k": [21.5, 22], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "5", "layers": [{ "ddd": 0, "ind": 90, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [32, 32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [74.01, -31.72], [-31.26, -31.72], [-31.26, 75], [74.01, 75], [74.01, -31.72] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "D", "w": 107, "h": 108, "ind": 9, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [21.5, 22], "ix": 2 }, "a": { "a": 0, "k": [21.5, 22], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 1 }] }, { "id": "E", "layers": [ { "ddd": 0, "ind": 91, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [-17.45, 0], [-4.76, 15.87], [17.45, -15.87] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 5.5, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [26.46, 27.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 92, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .1, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 93, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 94, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 488, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "F", "layers": [{ "ddd": 0, "refId": "G", "w": 344, "h": 54, "ind": 95, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-1, 0], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }, { "t": 512, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 96, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-1, 0], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [69, 54], "ix": 2 }, "p": { "a": 0, "k": [32.5, 27], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "6", "layers": [{ "ddd": 0, "ind": 97, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-1, 0], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [66.55, -14.39], [-24.84, -14.39], [-24.84, 67.77], [66.55, 67.77], [66.55, -14.39] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "F", "w": 343, "h": 53, "ind": 12, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [172.5, 26.5], "ix": 2 }, "a": { "a": 0, "k": [172.5, 26.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 2 }] }, { "id": "G", "layers": [{ "ddd": 0, "refId": "H", "w": 266, "h": 29, "ind": 98, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [78, 13], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 99, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "H", "layers": [{ "ddd": 0, "ind": 100, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [-182, 189], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "I", "w": 266, "h": 29, "ind": 98, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [182, -189], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 100 }] }, { "id": "I", "layers": [{ "ddd": 0, "ind": 101, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-182, 189], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "J", "layers": [{ "ddd": 0, "refId": "K", "w": 344, "h": 54, "ind": 102, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [25, 15], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }, { "t": 512, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 103, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [25, 15], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "rc", "d": 1, "s": { "a": 0, "k": [92, 83], "ix": 2 }, "p": { "a": 0, "k": [21, 26.5], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 0, "ix": 2 }, "r": 1, "bm": 0 }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "7", "layers": [{ "ddd": 0, "ind": 104, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [25, 15], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "td": 1, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [66.55, -14.39], [-24.84, -14.39], [-24.84, 67.77], [66.55, 67.77], [66.55, -14.39] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "J", "w": 92, "h": 83, "ind": 14, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [21, 26.5], "ix": 2 }, "a": { "a": 0, "k": [21, 26.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "tt": 1 }] }, { "id": "K", "layers": [{ "ddd": 0, "refId": "L", "w": 0, "h": 0, "ind": 105, "ty": 0, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 106, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 448, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-22.7, -24.7], [22.7, -24.7], [24.7, -22.7], [24.7, 22.7], [22.7, 24.7], [-22.7, 24.7], [-24.7, 22.7], [-24.7, -22.7], [-22.7, -24.7] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": .7, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [27.24, 26.8], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "L", "layers": [{ "ddd": 0, "refId": "M", "w": 0, "h": 0, "ind": 105, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-104, 202], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }] }, { "id": "M", "layers": [{ "ddd": 0, "ind": 107, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [432.63, -160.38], [428.36, -160.38], [435.56, -170.78], [428.92, -180.3], [433.3, -180.3], [437.73, -173.9], [442.16, -180.3], [446.51, -180.3], [439.9, -170.82], [447.1, -160.38], [442.79, -160.38], [437.73, -167.69], [432.63, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -163.43], [423.65, -170.34], [417.32, -177.26], [410.96, -170.34], [417.32, -163.43] ], "i": [ [0, 0], [0, 4.071], [3.755, 0], [0, -4.071], [-3.795, 0] ], "o": [ [3.755, 0], [0, -4.071], [-3.795, 0], [0, 4.071], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [417.32, -160.07], [407.05, -170.34], [417.32, -180.62], [427.56, -170.34], [417.32, -160.07] ], "i": [ [0, 0], [0, 5.969], [-5.969, 0], [0, -5.969], [5.969, 0] ], "o": [ [-5.969, 0], [0, -5.969], [5.969, 0], [0, 5.969], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.02, -163.43], [400.15, -170.34], [394.02, -177.26], [387.9, -170.34], [394.02, -163.43] ], "i": [ [0, 0], [0, 4.15], [3.676, 0], [0, -4.15], [-3.676, 0] ], "o": [ [3.676, 0], [0, -4.15], [-3.676, 0], [0, 4.15], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394.62, -160.07], [388.21, -163.35], [388.21, -160.38], [384.38, -160.38], [384.38, -188.65], [388.21, -188.65], [388.21, -177.38], [394.58, -180.62], [404.02, -170.34], [394.62, -160.07] ], "i": [ [0, 0], [1.186, 1.976], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.648, 0], [0, -5.89], [5.969, 0] ], "o": [ [-2.688, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.225, -1.976], [6.008, 0], [0, 5.89], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [363.38, -160.07], [355.36, -166.87], [358.87, -166.87], [363.34, -163.19], [367.25, -166.11], [355.87, -174.69], [362.98, -180.62], [370.69, -174.41], [367.17, -174.41], [363.02, -177.62], [359.43, -174.85], [370.85, -166.31], [363.38, -160.07] ], "i": [ [0, 0], [.316, 4.309], [0, 0], [-2.569, 0], [0, 1.779], [0, 7.945], [-4.15, 0], [-.277, -3.874], [0, 0], [2.293, 0], [0, -1.779], [0, -8.301], [4.625, 0] ], "o": [ [-4.822, 0], [0, 0], [.198, 2.293], [2.372, 0], [0, -4.862], [0, -3.518], [4.625, 0], [0, 0], [-.198, -1.937], [-1.976, 0], [0, 4.704], [0, 3.834], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.16, -188.65], [351.43, -188.65], [351.43, -183.82], [347.16, -183.82], [347.16, -188.65] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [347.4, -160.38], [347.4, -180.3], [351.23, -180.3], [351.23, -160.38], [347.4, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [324.39, -160.38], [324.39, -188.65], [328.23, -188.65], [328.23, -176.79], [334.63, -180.62], [342.06, -172.64], [342.06, -160.38], [338.23, -160.38], [338.23, -171.88], [333.56, -177.18], [328.23, -171.17], [328.23, -160.38], [324.39, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.807, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [317.52, -160.38], [310.88, -166.9], [310.88, -176.98], [306.81, -176.98], [306.81, -180.3], [310.88, -180.3], [310.88, -186.55], [314.72, -186.55], [314.72, -180.3], [320.61, -180.3], [320.61, -176.98], [314.72, -176.98], [314.72, -167.02], [317.8, -163.7], [320.61, -163.7], [320.61, -160.38], [317.52, -160.38] ], "i": [ [0, 0], [0, 4.071], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.897, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.032, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.135], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.23, -160.38], [279.23, -188.65], [283.06, -188.65], [283.06, -172.32], [291.76, -180.3], [296.74, -180.3], [288.36, -172.52], [297.49, -160.38], [292.75, -160.38], [285.63, -169.95], [283.06, -167.58], [283.06, -160.38], [279.23, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [265.8, -160.07], [255.96, -170.34], [265.8, -180.62], [275.05, -173.35], [271.22, -173.35], [265.88, -177.26], [259.95, -170.34], [265.92, -163.43], [271.26, -167.1], [275.05, -167.1], [265.8, -160.07] ], "i": [ [0, 0], [0, 5.494], [-6.245, 0], [-.553, -4.506], [0, 0], [2.727, 0], [0, -3.834], [-3.953, 0], [-.632, 2.253], [0, 0], [5.099, 0] ], "o": [ [-6.245, 0], [0, -5.494], [4.664, 0], [0, 0], [-.356, -2.253], [-3.953, 0], [0, 3.834], [2.727, 0], [0, 0], [-.632, 4.19], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [237.68, -172.6], [248.94, -172.6], [243.41, -177.54], [237.68, -172.6] ], "i": [ [0, 0], [0, 0], [3.281, 0], [.593, -3.241] ], "o": [ [0, 0], [-.237, -3.044], [-3.083, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [243.76, -160.07], [233.8, -170.46], [243.41, -180.62], [252.81, -171.17], [252.74, -169.63], [237.56, -169.63], [243.76, -163.35], [249.14, -166.87], [252.97, -166.87], [243.76, -160.07] ], "i": [ [0, 0], [0, 5.534], [-6.127, 0], [0, -5.06], [.04, -.356], [0, 0], [-3.439, 0], [-.553, 2.253], [0, 0], [4.941, 0] ], "o": [ [-6.166, 0], [0, -5.573], [6.127, 0], [0, .514], [0, 0], [.316, 3.716], [2.925, 0], [0, 0], [-.672, 4.111], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [212.14, -160.38], [212.14, -188.65], [215.97, -188.65], [215.97, -176.79], [222.38, -180.62], [229.81, -172.64], [229.81, -160.38], [225.97, -160.38], [225.97, -171.88], [221.31, -177.18], [215.97, -171.17], [215.97, -160.38], [212.14, -160.38] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.965, 0], [0, -4.743], [0, 0], [0, 0], [0, 0], [2.806, 0], [0, -3.478], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.067, -2.49], [4.506, 0], [0, 0], [0, 0], [0, 0], [0, -3.162], [-3.123, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [195.87, -160.07], [182.35, -174.22], [195.87, -188.37], [207.85, -179.16], [203.54, -179.16], [195.83, -184.73], [186.54, -174.22], [195.87, -163.7], [203.62, -169.28], [207.81, -169.28], [195.87, -160.07] ], "i": [ [0, 0], [0, 9.487], [-7.076, 0], [-.712, -5.376], [0, 0], [3.992, 0], [0, -6.838], [-5.415, 0], [-.435, 3.241], [0, 0], [6.364, 0] ], "o": [ [-7.155, 0], [0, -9.487], [6.245, 0], [0, 0], [-.435, -3.241], [-5.376, 0], [0, 6.838], [4.071, 0], [0, 0], [-.593, 5.376], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "8", "layers": [ { "ddd": 0, "refId": "N", "w": 45, "h": 45, "ind": 108, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [276, 17], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 356, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 109, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 356, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [348.53, -181.7], [344.59, -181.7], [351.23, -191.29], [345.1, -200.08], [349.15, -200.08], [353.24, -194.17], [357.32, -200.08], [361.33, -200.08], [355.24, -191.32], [361.88, -181.7], [357.9, -181.7], [353.24, -188.44], [348.53, -181.7] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [334.41, -184.51], [340.24, -190.89], [334.41, -197.27], [328.54, -190.89], [334.41, -184.51] ], "i": [ [0, 0], [0, 3.756], [3.464, 0], [0, -3.756], [-3.501, 0] ], "o": [ [3.464, 0], [0, -3.756], [-3.501, 0], [0, 3.756], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [334.41, -181.41], [324.93, -190.89], [334.41, -200.37], [343.85, -190.89], [334.41, -181.41] ], "i": [ [0, 0], [0, 5.507], [-5.507, 0], [0, -5.507], [5.507, 0] ], "o": [ [-5.507, 0], [0, -5.507], [5.507, 0], [0, 5.507], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [312.91, -184.51], [318.57, -190.89], [312.91, -197.27], [307.26, -190.89], [312.91, -184.51] ], "i": [ [0, 0], [0, 3.829], [3.391, 0], [0, -3.829], [-3.391, 0] ], "o": [ [3.391, 0], [0, -3.829], [-3.391, 0], [0, 3.829], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [313.46, -181.41], [307.55, -184.43], [307.55, -181.7], [304.02, -181.7], [304.02, -207.77], [307.55, -207.77], [307.55, -197.38], [313.43, -200.37], [322.14, -190.89], [313.46, -181.41] ], "i": [ [0, 0], [1.094, 1.823], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.443, 0], [0, -5.434], [5.507, 0] ], "o": [ [-2.48, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.13, -1.823], [5.543, 0], [0, 5.433], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [284.82, -181.7], [284.82, -207.77], [288.36, -207.77], [288.36, -192.71], [296.38, -200.08], [300.98, -200.08], [293.25, -192.89], [301.67, -181.7], [297.29, -181.7], [290.73, -190.52], [288.36, -188.34], [288.36, -181.7], [284.82, -181.7] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [272.44, -181.41], [263.36, -190.89], [272.44, -200.37], [280.97, -193.66], [277.43, -193.66], [272.51, -197.27], [267.04, -190.89], [272.55, -184.51], [277.47, -187.9], [280.97, -187.9], [272.44, -181.41] ], "i": [ [0, 0], [0, 5.069], [-5.762, 0], [-.511, -4.157], [0, 0], [2.516, 0], [0, -3.538], [-3.647, 0], [-.584, 2.079], [0, 0], [4.704, 0] ], "o": [ [-5.762, 0], [0, -5.069], [4.303, 0], [0, 0], [-.329, -2.078], [-3.647, 0], [0, 3.537], [2.516, 0], [0, 0], [-.584, 3.866], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [246.49, -192.97], [256.88, -192.97], [251.77, -197.52], [246.49, -192.97] ], "i": [ [0, 0], [0, 0], [3.027, 0], [.547, -2.99] ], "o": [ [0, 0], [-.219, -2.808], [-2.844, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [252.1, -181.41], [242.91, -191], [251.77, -200.37], [260.45, -191.65], [260.38, -190.23], [246.38, -190.23], [252.1, -184.43], [257.06, -187.68], [260.6, -187.68], [252.1, -181.41] ], "i": [ [0, 0], [0, 5.105], [-5.652, 0], [0, -4.668], [.036, -.329], [0, 0], [-3.172, 0], [-.51, 2.078], [0, 0], [4.559, 0] ], "o": [ [-5.689, 0], [0, -5.142], [5.652, 0], [0, .474], [0, 0], [.292, 3.428], [2.699, 0], [0, 0], [-.62, 3.792], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [222.93, -181.7], [222.93, -207.77], [226.47, -207.77], [226.47, -196.83], [232.37, -200.37], [239.23, -193], [239.23, -181.7], [235.69, -181.7], [235.69, -192.31], [231.39, -197.2], [226.47, -191.65], [226.47, -181.7], [222.93, -181.7] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.735, 0], [0, -4.376], [0, 0], [0, 0], [0, 0], [2.589, 0], [0, -3.209], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.984, -2.297], [4.157, 0], [0, 0], [0, 0], [0, 0], [0, -2.918], [-2.881, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [207.92, -181.41], [195.45, -194.46], [207.92, -207.52], [218.97, -199.02], [214.99, -199.02], [207.88, -204.16], [199.31, -194.46], [207.92, -184.76], [215.07, -189.9], [218.93, -189.9], [207.92, -181.41] ], "i": [ [0, 0], [0, 8.752], [-6.528, 0], [-.656, -4.959], [0, 0], [3.683, 0], [0, -6.308], [-4.996, 0], [-.401, 2.99], [0, 0], [5.871, 0] ], "o": [ [-6.6, 0], [0, -8.752], [5.762, 0], [0, 0], [-.401, -2.99], [-4.959, 0], [0, 6.309], [3.756, 0], [0, 0], [-.547, 4.959], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-109, 370], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 110, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 356, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [307.4, -283.23], [307.4, -261.32], [305.26, -256.15], [300.1, -254.01], [256.27, -254.01], [251.11, -256.15], [248.97, -261.32], [248.97, -305.14], [251.11, -310.3], [256.27, -312.44], [289.14, -312.44] ], "i": [ [0, 0], [0, 0], [1.37, -1.37], [1.937, 0], [0, 0], [1.37, 1.37], [0, 1.937], [0, 0], [-1.37, 1.37], [-1.937, 0], [0, 0] ], "o": [ [0, 0], [0, 1.937], [-1.37, 1.37], [0, 0], [-1.937, 0], [-1.37, -1.37], [0, 0], [0, -1.937], [1.37, -1.37], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [267.23, -286.88], [278.19, -275.93], [307.4, -305.14] ], "i": [ [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [-109, 370], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 111, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 356, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [338, 237], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 8, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [169, 118.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "N", "layers": [ { "ddd": 0, "ind": 108, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [-385, 353], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 112, "ty": 3, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 108 }, { "ddd": 0, "refId": "O", "w": 45, "h": 45, "ind": 113, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [385, -353], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 112 } ] }, { "id": "O", "layers": [{ "ddd": 0, "ind": 114, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-385, 353], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [394, -343.42], [401.94, -324.91], [420.45, -316.98], [412.52, -335.49], [394, -343.42] ], "i": [ [0, 0], [-7.304, -7.293], [-2.922, 2.921], [7.304, 7.293], [2.923, -2.921] ], "o": [ [-2.921, 2.921], [7.303, 7.303], [2.919, -2.921], [-7.303, -7.303], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [420.45, -343.42], [401.94, -335.49], [394, -316.97], [412.52, -324.91], [420.45, -343.42] ], "i": [ [0, 0], [7.293, -7.305], [-2.921, -2.923], [-7.293, 7.305], [2.921, 2.923] ], "o": [ [-2.921, -2.921], [-7.303, 7.303], [2.921, 2.919], [7.303, -7.303], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[407.23, -330.2], [407.23, -330.18]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "9", "layers": [ { "ddd": 0, "ind": 17, "ty": 3, "sr": 1, "ks": { "p": { "a": 1, "k": [ { "t": 200, "s": [282, 203], "i": { "x": [.292], "y": [1] }, "o": { "x": [.483], "y": [0] } }, { "t": 228, "s": [282, 212.03], "i": { "x": [0], "y": [1] }, "o": { "x": [.585], "y": [0] } }, { "t": 272, "s": [282, 97], "i": { "x": [.293], "y": [1] }, "o": { "x": [.694], "y": [0] } }, { "t": 308, "s": [282, 103], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 348, "s": [282, 103], "i": { "x": [0], "y": [1] }, "o": { "x": [.517], "y": [0] } }, { "t": 416, "s": [282, 39], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 456, "s": [282, 39], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 492, "s": [282, 54] } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 0, "k": [399, 399], "ix": 2 }, "r": { "a": 1, "k": [ { "t": 200, "s": [0], "i": { "x": [.326], "y": [1] }, "o": { "x": [.759], "y": [0] } }, { "t": 228, "s": [3], "i": { "x": [0], "y": [1] }, "o": { "x": [.311], "y": [0] } }, { "t": 272, "s": [-1.1], "i": { "x": [0], "y": [1] }, "o": { "x": [.572], "y": [0] } }, { "t": 292, "s": [0] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 115, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [683.15, 145.39], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 17 }, { "ddd": 0, "refId": "P", "w": 24, "h": 8, "ind": 116, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-12, -4], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 115 }, { "ddd": 0, "ind": 117, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 17, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 145.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 118, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 17, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 145.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "P", "layers": [{ "ddd": 0, "ind": 119, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [12, 4], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [8.13, .33], [10.69, .33], [9.43, -.79], [8.13, .33] ], "i": [ [0, 0], [0, 0], [.747, 0], [.135, -.738] ], "o": [ [0, 0], [-.054, -.693], [-.702, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.51, 3.19], [7.24, .82], [9.43, -1.49], [11.57, .66], [11.55, 1.01], [8.1, 1.01], [9.51, 2.44], [10.74, 1.64], [11.61, 1.64], [9.51, 3.19] ], "i": [ [0, 0], [0, 1.26], [-1.395, 0], [0, -1.152], [.009, -.081], [0, 0], [-.783, 0], [-.126, .513], [0, 0], [1.125, 0] ], "o": [ [-1.404, 0], [0, -1.269], [1.395, 0], [0, .117], [0, 0], [.072, .846], [.666, 0], [0, 0], [-.153, .936], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-.41, 3.11], [-.41, -1.42], [.46, -1.42], [.46, -.62], [1.82, -1.49], [3.27, -.56], [4.74, -1.49], [6.34, .23], [6.34, 3.11], [5.46, 3.11], [5.46, .48], [4.5, -.73], [3.39, .64], [3.39, 3.11], [2.52, 3.11], [2.52, .48], [1.57, -.73], [.46, .64], [.46, 3.11], [-.41, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.8, 2.49], [-2.49, 1.13], [-2.49, 1.04], [-3.66, 1.04], [-4.64, 1.8], [-3.8, 2.49] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-3.97, 3.19], [-5.52, 1.82], [-3.75, .37], [-2.8, .37], [-2.49, .14], [-3.59, -.79], [-4.71, .06], [-5.52, .06], [-3.56, -1.49], [-1.63, .19], [-1.63, 3.11], [-2.49, 3.11], [-2.49, 2.37], [-3.97, 3.19] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-11.61, 3.11], [-11.61, -3.19], [-10.56, -3.19], [-7.53, 1.67], [-7.53, -3.19], [-6.6, -3.19], [-6.6, 3.11], [-7.63, 3.11], [-10.67, -1.73], [-10.67, 3.11], [-11.61, 3.11] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "a", "u": "", "p": "data:image/png;base64,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", "w": 896, "h": 448, "e": 1 }, { "id": "b", "layers": [ { "ddd": 0, "refId": "Q", "w": 51, "h": 51, "ind": 120, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [323, 21], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 121, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-542.66, -39.25], [-542.66, -60.74], [-538.52, -60.74], [-538.52, -56.95], [-532.08, -61.08], [-525.21, -56.65], [-518.22, -61.08], [-510.67, -52.9], [-510.67, -39.25], [-514.81, -39.25], [-514.81, -51.74], [-519.37, -57.46], [-524.62, -50.98], [-524.62, -39.25], [-528.75, -39.25], [-528.75, -51.74], [-533.27, -57.46], [-538.52, -50.98], [-538.52, -39.25], [-542.66, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-3.199, 0], [-.853, -2.815], [-3.113, 0], [0, -4.99], [0, 0], [0, 0], [0, 0], [2.857, 0], [0, -3.411], [0, 0], [0, 0], [0, 0], [2.815, 0], [0, -3.411], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.896, -2.431], [3.284, 0], [.896, -2.558], [4.649, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.284, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.284, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-558.69, -39.25], [-558.69, -60.74], [-554.55, -60.74], [-554.55, -56.6], [-548.84, -60.74], [-546.24, -60.74], [-546.24, -57.16], [-549.35, -57.16], [-554.55, -48.97], [-554.55, -39.25], [-558.69, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-3.028, 0], [0, 0], [0, 0], [0, 0], [0, -4.691], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.981, -2.857], [0, 0], [0, 0], [0, 0], [-3.923, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-574.33, -42.53], [-567.51, -49.99], [-574.33, -57.46], [-581.2, -49.99], [-574.33, -42.53] ], "i": [ [0, 0], [0, 4.393], [4.051, 0], [0, -4.392], [-4.094, 0] ], "o": [ [4.051, 0], [0, -4.392], [-4.094, 0], [0, 4.393], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-574.33, -38.91], [-585.42, -49.99], [-574.33, -61.08], [-563.29, -49.99], [-574.33, -38.91] ], "i": [ [0, 0], [0, 6.44], [-6.44, 0], [0, -6.439], [6.44, 0] ], "o": [ [-6.44, 0], [0, -6.439], [6.44, 0], [0, 6.44], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-605.41, -39.25], [-605.41, -69.1], [-586.26, -69.1], [-586.26, -65.18], [-600.97, -65.18], [-600.97, -56.26], [-589.08, -56.26], [-589.08, -52.34], [-600.97, -52.34], [-600.97, -39.25], [-605.41, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [197.35, 199.91], "ix": 2 }, "a": { "a": 0, "k": [-558.04, -54], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 122, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-37.02, -7.43], [37.02, -7.43], [37.66, -6.79], [37.66, 6.79], [37.02, 7.43], [-37.02, 7.43], [-37.66, 6.79], [-37.66, -6.79], [-37.02, -7.43] ], "i": [ [0, 0], [0, 0], [0, -.356], [0, 0], [.356, 0], [0, 0], [0, .356], [0, 0], [-.356, 0] ], "o": [ [0, 0], [.356, 0], [0, 0], [0, .356], [0, 0], [-.356, 0], [0, 0], [0, -.356], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.48, 104.52], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 123, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-37.02, -7.43], [37.02, -7.43], [37.66, -6.79], [37.66, 6.79], [37.02, 7.43], [-37.02, 7.43], [-37.66, 6.79], [-37.66, -6.79], [-37.02, -7.43] ], "i": [ [0, 0], [0, 0], [0, -.356], [0, 0], [.356, 0], [0, 0], [0, .356], [0, 0], [-.356, 0] ], "o": [ [0, 0], [.356, 0], [0, 0], [0, .356], [0, 0], [-.356, 0], [0, 0], [0, -.356], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.47, 76.91], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 124, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [395, 276], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 15, "ix": 2 } }, { "ty": "st", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.5, 138], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "Q", "layers": [{ "ddd": 0, "ind": 125, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [25.37, 25.32], "ix": 2 }, "a": { "a": 0, "k": [-407.02, -207.6], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "R", "w": 50, "h": 51, "ind": 120, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-432, -233], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 125 }] }, { "id": "R", "layers": [{ "ddd": 0, "ind": 126, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [432, 233], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-422.49, -223.06], [-413.21, -201.41], [-391.55, -192.13], [-400.83, -213.78], [-422.49, -223.06] ], "i": [ [0, 0], [-8.542, -8.529], [-3.418, 3.416], [8.542, 8.529], [3.418, -3.416] ], "o": [ [-3.416, 3.416], [8.54, 8.54], [3.414, -3.416], [-8.54, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-391.56, -223.06], [-413.21, -213.78], [-422.49, -192.13], [-400.83, -201.41], [-391.56, -223.06] ], "i": [ [0, 0], [8.53, -8.543], [-3.416, -3.418], [-8.529, 8.543], [3.416, 3.418] ], "o": [ [-3.416, -3.416], [-8.54, 8.54], [3.417, 3.414], [8.54, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[-407.02, -207.6], [-407.02, -207.57]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "c", "layers": [ { "ddd": 0, "ind": 127, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 5, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[0, -30.62], [0, 30.62]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.53, 101.33], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 128, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 5, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[-22.96, 0], [22.96, 0]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.54, 70.72], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "S", "w": 51, "h": 51, "ind": 129, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [323, 21], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 5, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 130, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 5, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-103.84, -39.25], [-103.84, -69.74], [-99.71, -69.74], [-99.71, -39.25], [-103.84, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-124.98, -52.43], [-112.82, -52.43], [-118.79, -57.76], [-124.98, -52.43] ], "i": [ [0, 0], [0, 0], [3.541, 0], [.639, -3.497] ], "o": [ [0, 0], [-.254, -3.284], [-3.326, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-118.41, -38.91], [-129.16, -50.12], [-118.79, -61.08], [-108.64, -50.89], [-108.73, -49.23], [-125.11, -49.23], [-118.41, -42.45], [-112.61, -46.24], [-108.47, -46.24], [-118.41, -38.91] ], "i": [ [0, 0], [0, 5.971], [-6.61, 0], [0, -5.458], [.038, -.384], [0, 0], [-3.712, 0], [-.592, 2.431], [0, 0], [5.331, 0] ], "o": [ [-6.655, 0], [0, -6.013], [6.614, 0], [0, .555], [0, 0], [.341, 4.009], [3.155, 0], [0, 0], [-.725, 4.436], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-143.21, -42.53], [-136.6, -49.99], [-143.21, -57.46], [-149.82, -49.99], [-143.21, -42.53] ], "i": [ [0, 0], [0, 4.478], [3.966, 0], [0, -4.478], [-3.966, 0] ], "o": [ [3.966, 0], [0, -4.478], [-3.966, 0], [0, 4.478], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-142.57, -38.91], [-149.47, -42.45], [-149.47, -39.25], [-153.61, -39.25], [-153.61, -69.74], [-149.47, -69.74], [-149.47, -57.59], [-142.61, -61.08], [-132.42, -49.99], [-142.57, -38.91] ], "i": [ [0, 0], [1.279, 2.133], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.857, 0], [0, -6.354], [6.44, 0] ], "o": [ [-2.9, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.322, -2.132], [6.483, 0], [0, 6.355], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-169.65, -42.19], [-163.46, -48.67], [-163.46, -49.06], [-169.01, -49.06], [-173.66, -45.47], [-169.65, -42.19] ], "i": [ [0, 0], [0, 3.966], [0, 0], [0, 0], [0, -2.26], [-2.431, 0] ], "o": [ [3.881, 0], [0, 0], [0, 0], [-2.815, 0], [0, 1.962], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-170.46, -38.91], [-177.79, -45.39], [-169.43, -52.26], [-164.91, -52.26], [-163.46, -53.36], [-168.66, -57.76], [-173.95, -53.7], [-177.79, -53.7], [-168.54, -61.08], [-159.37, -53.11], [-159.37, -39.25], [-163.46, -39.25], [-163.46, -42.79], [-170.46, -38.91] ], "i": [ [0, 0], [0, 3.838], [-5.032, 0], [0, 0], [0, .768], [3.284, 0], [.128, -2.175], [0, 0], [-5.118, 0], [0, -4.777], [0, 0], [0, 0], [0, 0], [3.241, 0] ], "o": [ [-4.393, 0], [0, -4.137], [0, 0], [.981, 0], [0, -2.602], [-3.028, 0], [0, 0], [.341, -4.222], [5.544, 0], [0, 0], [0, 0], [0, 0], [-1.066, 2.345], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-199.12, -39.25], [-199.12, -69.1], [-194.69, -69.1], [-194.69, -43.17], [-180.15, -43.17], [-180.15, -39.25], [-199.12, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "tr", "p": { "a": 0, "k": [346, 254], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 131, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 5, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [395, 277], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 15, "ix": 2 } }, { "ty": "st", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [197.5, 138.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "S", "layers": [{ "ddd": 0, "ind": 132, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [23, 233], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "T", "w": 51, "h": 51, "ind": 129, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-23, -233], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 132 }] }, { "id": "T", "layers": [{ "ddd": 0, "ind": 133, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [23, 233], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-13.02, -223.06], [-3.74, -201.41], [17.91, -192.13], [8.62, -213.78], [-13.02, -223.06] ], "i": [ [0, 0], [-8.543, -8.529], [-3.422, 3.416], [8.543, 8.529], [3.416, -3.416] ], "o": [ [-3.416, 3.416], [8.536, 8.54], [3.409, -3.416], [-8.537, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [17.9, -223.06], [-3.75, -213.78], [-13.02, -192.13], [8.63, -201.41], [17.9, -223.06] ], "i": [ [0, 0], [8.53, -8.543], [-3.416, -3.418], [-8.53, 8.543], [3.416, 3.418] ], "o": [ [-3.416, -3.416], [-8.537, 8.54], [3.416, 3.414], [8.536, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[2.44, -207.6], [2.44, -207.57]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "d", "layers": [ { "ddd": 0, "ind": 24, "ty": 3, "sr": 1, "ks": { "p": { "a": 1, "k": [{ "t": 0, "s": [133.24, 473.66], "i": { "x": [0], "y": [1] }, "o": { "x": [.421], "y": [0] } }, { "t": 104, "s": [507.08, 94.91] }], "ix": 2 }, "a": { "a": 0, "k": [257, -116], "ix": 2 }, "s": { "a": 0, "k": [65, 65], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 134, "ty": 3, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 24 }, { "ddd": 0, "refId": "U", "w": 50, "h": 51, "ind": 135, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [387, -233], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 134 }, { "ddd": 0, "ind": 136, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 24, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [305.62, -39.25], [298.46, -46.28], [298.46, -57.16], [294.06, -57.16], [294.06, -60.74], [298.46, -60.74], [298.46, -67.48], [302.59, -67.48], [302.59, -60.74], [308.94, -60.74], [308.94, -57.16], [302.59, -57.16], [302.59, -46.41], [305.92, -42.83], [308.94, -42.83], [308.94, -39.25], [305.62, -39.25] ], "i": [ [0, 0], [0, 4.393], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.048, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.351, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.303], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [279.52, -38.91], [271.5, -47.52], [271.5, -60.74], [275.64, -60.74], [275.64, -48.33], [280.67, -42.62], [286.47, -49.1], [286.47, -60.74], [290.61, -60.74], [290.61, -39.25], [286.47, -39.25], [286.47, -43.04], [279.52, -38.91] ], "i": [ [0, 0], [0, 5.117], [0, 0], [0, 0], [0, 0], [-3.028, 0], [0, 3.753], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [3.2, 0] ], "o": [ [-4.86, 0], [0, 0], [0, 0], [0, 0], [0, 3.412], [3.371, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.151, 2.687], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [256.3, -42.53], [262.91, -49.99], [256.3, -57.46], [249.69, -49.99], [256.3, -42.53] ], "i": [ [0, 0], [0, 4.478], [3.963, 0], [0, -4.478], [-3.969, 0] ], "o": [ [3.963, 0], [0, -4.478], [-3.969, 0], [0, 4.478], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [245.9, -30.55], [245.9, -60.74], [250.03, -60.74], [250.03, -57.59], [256.9, -61.08], [267.09, -49.99], [256.94, -38.91], [250.03, -42.45], [250.03, -30.55], [245.9, -30.55] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-2.862, 0], [0, -6.354], [6.444, 0], [1.279, 2.133], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.323, -2.132], [6.482, 0], [0, 6.355], [-2.901, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [221.07, -39.25], [221.07, -60.74], [225.21, -60.74], [225.21, -56.95], [232.12, -61.08], [240.14, -52.47], [240.14, -39.25], [236, -39.25], [236, -51.66], [230.97, -57.37], [225.21, -50.89], [225.21, -39.25], [221.07, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-3.2, 0], [0, -5.118], [0, 0], [0, 0], [0, 0], [3.028, 0], [0, -3.752], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.151, -2.687], [4.86, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.365, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [210.34, -39.25], [210.34, -69.1], [214.77, -69.1], [214.77, -39.25], [210.34, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 137, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 24, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [234.2, -171.8], [230.37, -171.8], [227.67, -170.68], [226.55, -167.98], [226.55, -137.36], [227.67, -134.65], [230.37, -133.53], [234.2, -133.53] ], "i": [ [0, 0], [0, 0], [.719, -.718], [0, -1.015], [0, 0], [-.719, -.718], [-1.011, 0], [0, 0] ], "o": [ [0, 0], [-1.011, 0], [-.719, .717], [0, 0], [0, 1.015], [.719, .718], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [264.82, -171.8], [291.61, -171.8], [294.32, -170.68], [295.44, -167.98], [295.44, -137.36], [294.32, -134.65], [291.61, -133.53], [264.82, -133.53] ], "i": [ [0, 0], [0, 0], [-.719, -.718], [0, -1.015], [0, 0], [.712, -.718], [1.018, 0], [0, 0] ], "o": [ [0, 0], [1.018, 0], [.712, .717], [0, 0], [0, 1.015], [-.719, .718], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [249.51, -129.7], [246.15, -121.58], [238.03, -118.22] ], "i": [ [0, 0], [2.15, -2.153], [3.041, 0] ], "o": [ [0, 3.045], [-2.156, 2.154], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [249.51, -129.7], [252.87, -121.58], [261, -118.22] ], "i": [ [0, 0], [-2.15, -2.153], [-3.047, 0] ], "o": [ [0, 3.045], [2.156, 2.154], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [249.51, -175.63], [246.15, -183.75], [238.03, -187.11] ], "i": [ [0, 0], [2.15, 2.153], [3.041, 0] ], "o": [ [0, -3.045], [-2.156, -2.153], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[249.51, -175.63], [249.51, -129.7]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [261, -187.11], [252.87, -183.75], [249.51, -175.63] ], "i": [ [0, 0], [2.156, -2.153], [0, -3.045] ], "o": [ [-3.047, 0], [-2.15, 2.153], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 138, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 24, "shapes": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [395, 277], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 8, "ix": 2 } }, { "ty": "st", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [257, -116], "ix": 2 }, "s": { "a": 0, "k": [99, 99], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "U", "layers": [{ "ddd": 0, "ind": 139, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-387, 233], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [396.44, -223.06], [405.72, -201.41], [427.37, -192.13], [418.09, -213.78], [396.44, -223.06] ], "i": [ [0, 0], [-8.543, -8.529], [-3.422, 3.416], [8.537, 8.529], [3.416, -3.416] ], "o": [ [-3.416, 3.416], [8.536, 8.54], [3.41, -3.416], [-8.543, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [427.36, -223.06], [405.72, -213.78], [396.44, -192.13], [418.09, -201.41], [427.36, -223.06] ], "i": [ [0, 0], [8.524, -8.543], [-3.416, -3.418], [-8.53, 8.543], [3.416, 3.418] ], "o": [ [-3.416, -3.416], [-8.543, 8.54], [3.416, 3.414], [8.537, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[411.9, -207.6], [411.9, -207.57]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "e", "layers": [ { "ddd": 0, "ind": 25, "ty": 3, "sr": 1, "ks": { "p": { "a": 1, "k": [{ "t": -4, "s": [132.4, 473.66], "i": { "x": [0], "y": [1] }, "o": { "x": [.421], "y": [0] } }, { "t": 100, "s": [506.24, 94.91] }], "ix": 2 }, "a": { "a": 0, "k": [670.85, -116], "ix": 2 }, "s": { "a": 0, "k": [65, 65], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 140, "ty": 3, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 25 }, { "ddd": 0, "refId": "V", "w": 51, "h": 51, "ind": 141, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [796, -233], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 140 }, { "ddd": 0, "ind": 142, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 25, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [787.54, -39.25], [787.54, -60.74], [791.68, -60.74], [791.68, -56.95], [798.59, -61.08], [806.6, -52.47], [806.6, -39.25], [802.47, -39.25], [802.47, -51.66], [797.43, -57.37], [791.68, -50.89], [791.68, -39.25], [787.54, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-3.2, 0], [0, -5.118], [0, 0], [0, 0], [0, 0], [3.028, 0], [0, -3.752], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [1.151, -2.687], [4.86, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.371, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [771.89, -42.53], [778.72, -49.99], [771.89, -57.46], [765.03, -49.99], [771.89, -42.53] ], "i": [ [0, 0], [0, 4.393], [4.052, 0], [0, -4.392], [-4.09, 0] ], "o": [ [4.052, 0], [0, -4.392], [-4.09, 0], [0, 4.393], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [771.89, -38.91], [760.81, -49.99], [771.89, -61.08], [782.94, -49.99], [771.89, -38.91] ], "i": [ [0, 0], [0, 6.44], [-6.437, 0], [0, -6.439], [6.444, 0] ], "o": [ [-6.437, 0], [0, -6.439], [6.444, 0], [0, 6.44], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [755.25, -39.25], [748.09, -46.28], [748.09, -57.16], [738.37, -57.16], [738.37, -46.41], [741.69, -42.83], [744.72, -42.83], [744.72, -39.25], [741.39, -39.25], [734.23, -46.28], [734.23, -57.16], [729.84, -57.16], [729.84, -60.74], [734.23, -60.74], [734.23, -67.48], [738.37, -67.48], [738.37, -60.74], [748.09, -60.74], [748.09, -67.48], [752.23, -67.48], [752.23, -60.74], [758.58, -60.74], [758.58, -57.16], [752.23, -57.16], [752.23, -46.41], [755.55, -42.83], [758.58, -42.83], [758.58, -39.25], [755.25, -39.25] ], "i": [ [0, 0], [0, 4.393], [0, 0], [0, 0], [0, 0], [-2.042, 0], [0, 0], [0, 0], [0, 0], [0, 4.393], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.042, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.345, 0], [0, 0], [0, 0], [0, 0], [0, 2.303], [0, 0], [0, 0], [0, 0], [-4.345, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.303], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [715.29, -38.91], [707.28, -47.52], [707.28, -60.74], [711.41, -60.74], [711.41, -48.33], [716.45, -42.62], [722.25, -49.1], [722.25, -60.74], [726.38, -60.74], [726.38, -39.25], [722.25, -39.25], [722.25, -43.04], [715.29, -38.91] ], "i": [ [0, 0], [0, 5.117], [0, 0], [0, 0], [0, 0], [-3.028, 0], [0, 3.753], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [3.2, 0] ], "o": [ [-4.86, 0], [0, 0], [0, 0], [0, 0], [0, 3.412], [3.371, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.151, 2.687], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [685.66, -57.03], [692.1, -57.03], [697.22, -61.21], [692.05, -65.39], [685.66, -65.39], [685.66, -57.03] ], "i": [ [0, 0], [0, 0], [0, 2.772], [3.371, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [3.327, 0], [0, -2.73], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [685.66, -43.17], [692.27, -43.17], [698.53, -48.16], [692.27, -53.15], [685.66, -53.15], [685.66, -43.17] ], "i": [ [0, 0], [0, 0], [0, 3.242], [4.179, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [4.179, 0], [0, -3.241], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [681.26, -39.25], [681.26, -69.1], [692.31, -69.1], [701.52, -61.81], [697.68, -55.58], [702.88, -47.95], [692.87, -39.25], [681.26, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, -4.478], [2.137, -1.024], [0, -4.137], [6.183, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [5.585, 0], [0, 3.198], [2.99, 1.066], [0, 5.373], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [663.6, -39.25], [656.44, -46.28], [656.44, -57.16], [652.04, -57.16], [652.04, -60.74], [656.44, -60.74], [656.44, -67.48], [660.57, -67.48], [660.57, -60.74], [666.92, -60.74], [666.92, -57.16], [660.57, -57.16], [660.57, -46.41], [663.9, -42.83], [666.92, -42.83], [666.92, -39.25], [663.6, -39.25] ], "i": [ [0, 0], [0, 4.393], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.048, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-4.351, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2.303], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [644.18, -69.74], [648.79, -69.74], [648.79, -64.54], [644.18, -64.54], [644.18, -69.74] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [644.44, -39.25], [644.44, -60.74], [648.57, -60.74], [648.57, -39.25], [644.44, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [606.71, -39.25], [606.71, -60.74], [610.84, -60.74], [610.84, -56.95], [617.28, -61.08], [624.15, -56.65], [631.14, -61.08], [638.69, -52.9], [638.69, -39.25], [634.55, -39.25], [634.55, -51.74], [629.99, -57.46], [624.75, -50.98], [624.75, -39.25], [620.61, -39.25], [620.61, -51.74], [616.09, -57.46], [610.84, -50.98], [610.84, -39.25], [606.71, -39.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-3.2, 0], [-.852, -2.815], [-3.117, 0], [0, -4.99], [0, 0], [0, 0], [0, 0], [2.856, 0], [0, -3.411], [0, 0], [0, 0], [0, 0], [2.812, 0], [0, -3.411], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.897, -2.431], [3.282, 0], [.897, -2.558], [4.644, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.289, 0], [0, 0], [0, 0], [0, 0], [0, -3.412], [-3.282, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [591.2, -42.53], [597.82, -49.99], [591.2, -57.46], [584.59, -49.99], [591.2, -42.53] ], "i": [ [0, 0], [0, 4.478], [3.969, 0], [0, -4.478], [-3.963, 0] ], "o": [ [3.969, 0], [0, -4.478], [-3.963, 0], [0, 4.478], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [591.85, -38.91], [584.94, -42.45], [584.94, -39.25], [580.8, -39.25], [580.8, -69.74], [584.94, -69.74], [584.94, -57.59], [591.8, -61.08], [602, -49.99], [591.85, -38.91] ], "i": [ [0, 0], [1.279, 2.133], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-2.856, 0], [0, -6.354], [6.437, 0] ], "o": [ [-2.901, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1.323, -2.132], [6.482, 0], [0, 6.355], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [563.7, -38.91], [555.68, -47.52], [555.68, -60.74], [559.82, -60.74], [559.82, -48.33], [564.85, -42.62], [570.65, -49.1], [570.65, -60.74], [574.78, -60.74], [574.78, -39.25], [570.65, -39.25], [570.65, -43.04], [563.7, -38.91] ], "i": [ [0, 0], [0, 5.117], [0, 0], [0, 0], [0, 0], [-3.028, 0], [0, 3.753], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [3.2, 0] ], "o": [ [-4.866, 0], [0, 0], [0, 0], [0, 0], [0, 3.412], [3.365, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1.151, 2.687], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [540.47, -38.91], [529, -49.14], [533.3, -49.14], [540.47, -42.83], [546.87, -47.52], [529.9, -61.3], [540.13, -69.44], [550.79, -60.44], [546.49, -60.44], [540.13, -65.52], [534.37, -61.34], [551.39, -47.56], [540.47, -38.91] ], "i": [ [0, 0], [.344, 6.184], [0, 0], [-4.567, 0], [0, 3.241], [0, 11.216], [-6.011, 0], [-.382, -5.458], [0, 0], [3.67, 0], [0, -2.558], [0, -11.685], [6.393, 0] ], "o": [ [-7.08, 0], [0, 0], [.344, 3.838], [3.753, 0], [0, -7.463], [0, -4.862], [6.1, 0], [0, 0], [-.299, -3.07], [-3.581, 0], [0, 7.506], [0, 5.459], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 143, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 25, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [677.09, -136.49], [676.84, -138.96], [678.4, -140.89], [680.87, -141.14], [682.8, -139.58], [684.34, -136.73] ], "i": [ [0, 0], [-.242, .824], [-.757, .409], [-.821, -.246], [-.407, -.756], [0, 0] ], "o": [ [-.407, -.756], [.248, -.824], [.757, -.409], [.827, .246], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [672.41, -131.51], [670.36, -135.31], [669.99, -136.52], [670.11, -137.78], [670.7, -138.9], [671.67, -139.7], [672.88, -140.08], [674.14, -139.96], [675.26, -139.37], [676.07, -138.39], [678.64, -133.64] ], "i": [ [0, 0], [0, 0], [.045, .424], [-.121, .408], [-.267, .331], [-.375, .202], [-.426, .044], [-.407, -.121], [-.331, -.268], [-.204, -.375], [0, 0] ], "o": [ [0, 0], [-.204, -.374], [-.045, -.424], [.121, -.408], [.267, -.33], [.375, -.203], [.42, -.044], [.407, .121], [.331, .268], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [672.93, -130.56], [665.22, -144.81], [663.29, -146.38], [660.83, -146.12], [659.26, -144.2], [659.51, -141.73], [668.25, -125.57], [663.95, -126.85], [661.33, -126.74], [659.33, -125.04], [658.97, -122.63], [660.39, -120.64], [672.53, -113.13], [673.21, -112.76], [679.36, -111.22], [685.51, -112.79], [685.12, -112.57], [688.92, -114.63], [695.18, -122.33], [694.16, -132.21], [689.53, -140.76], [687.61, -142.33], [685.14, -142.07], [683.57, -140.15], [683.83, -137.68] ], "i": [ [0, 0], [0, 0], [.821, .246], [.757, -.409], [.242, -.824], [-.407, -.756], [0, 0], [0, 0], [.84, -.328], [.458, -.774], [-.197, -.821], [-.712, -.45], [-1.088, -.59], [-.229, -.123], [-2.144, .004], [-1.889, 1.022], [0, 0], [0, 0], [-.986, 3.297], [1.635, 3.025], [0, 0], [.821, .245], [.751, -.41], [.242, -.824], [-.413, -.756] ], "o": [ [0, 0], [-.413, -.756], [-.827, -.246], [-.757, .409], [-.248, .824], [0, 0], [0, 0], [-.859, -.256], [-.84, .328], [-.432, .726], [.197, .821], [7.01, 4.417], [.223, .123], [1.889, 1.015], [2.15, -.004], [0, 0], [0, 0], [3.022, -1.637], [.98, -3.296], [0, 0], [-.407, -.756], [-.827, -.246], [-.757, .409], [-.248, .824], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [677.3, -128.87], "ix": 2 }, "a": { "a": 0, "k": [677.3, -128.87], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 144, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 25, "shapes": [{ "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [ [695.61, -130.39], [697.27, -130.39], [710.4, -143.51], [710.4, -159.9], [697.27, -173.02], [643.65, -173.02], [630.53, -159.9], [630.53, -143.51], [643.65, -130.39], [663.41, -130.39] ], "i": [ [0, 0], [0, 0], [0, 7.248], [0, 0], [7.245, 0], [0, 0], [0, -7.248], [0, 0], [-7.245, 0], [0, 0] ], "o": [ [0, 0], [7.245, 0], [0, 0], [0, -7.248], [0, 0], [-7.245, 0], [0, 0], [0, 7.248], [0, 0], [0, 0] ] } } }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 1, "ml": 4 }, { "ty": "tr", "p": { "a": 0, "k": [670.46, -151.71], "ix": 2 }, "a": { "a": 0, "k": [670.46, -151.71], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 145, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "parent": 25, "shapes": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [395, 277], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 8, "ix": 2 } }, { "ty": "st", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 4, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [670.85, -116], "ix": 2 }, "s": { "a": 0, "k": [99, 99], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ] }, { "id": "V", "layers": [{ "ddd": 0, "ind": 146, "ty": 4, "sr": 1, "ks": { "p": { "a": 0, "k": [-796, 233], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [805.9, -223.06], [815.18, -201.41], [836.83, -192.13], [827.55, -213.78], [805.9, -223.06] ], "i": [ [0, 0], [-8.543, -8.529], [-3.422, 3.416], [8.543, 8.529], [3.422, -3.416] ], "o": [ [-3.416, 3.416], [8.543, 8.54], [3.409, -3.416], [-8.543, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [836.83, -223.06], [815.18, -213.78], [805.9, -192.13], [827.55, -201.41], [836.83, -223.06] ], "i": [ [0, 0], [8.53, -8.543], [-3.416, -3.418], [-8.53, 8.543], [3.416, 3.418] ], "o": [ [-3.416, -3.416], [-8.543, 8.54], [3.416, 3.414], [8.543, -8.54], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": false, "v": [[821.36, -207.6], [821.36, -207.57]], "i": [[0, 0], [0, 0]], "o": [[0, 0], [0, 0]] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "st", "c": { "a": 0, "k": [ .13, .13, .13 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 3, "ix": 2 }, "lc": 2, "lj": 2, "ml": 4 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }] }, { "id": "f", "layers": [{ "ddd": 0, "refId": "W", "ind": 27, "ty": 2, "sr": 1, "ks": { "p": { "a": 0, "k": [147.95, 140.95], "ix": 2 }, "a": { "a": 0, "k": [653.29, 801.29], "ix": 2 }, "s": { "a": 1, "k": [{ "t": -8, "s": [0, 0], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 216, "s": [25, 25] }], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 592, "s": [100], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 628, "s": [0] }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }] }, { "id": "W", "u": "", "p": "data:image/png;base64,UklGRqroAABXRUJQVlA4WAoAAAAwAAAA/wMAQgMASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZBTFBIS58AAAUhBo0kKcrA3bN/wQtPBiL6PwEAIA25BDRig0NqkCATSTYfcrBtZVwVzQhuK2uRgG0HSQmwrhcAMYZ/kxxEkqRI1QO9e+Pf8dGDgYiYAN5WgSSQJM4jZUTNpHSSlCs0manjlHnXV84lZu7kBVBynqrbNoC9AOTrtrn23lW7H9cfQ5Bst22T3P/QkhsJgCgPZErEBEiUZDdsG0SvVkWZAZ+gJ4BUfkCS20iSJPX8/9GFinC3zT2rl7lEBAVJkgSpUZ8WkICVV1dObQ+y+4DktpEESVr/vb6ZTElZu/ePCAluG0mSlHt1z0w42Y5FPcK3JEmWJEm2FT7//88OKsJMzKqePbeniMAgSZIgN5L6FrwpTFe2eoZXNQBiPiDBtpVIkkTN4dT+15qjwskYQai5un9EQHAjSZEUy1x3UZ3DH5DktpEgSV39/zdPImzZkb3H2ktEUJQkWWzbPKoQAQYe+t5dTpBE/YBvSZIsSZJsyz3//5vTQZiJWdQ8u3tc5ykiPMm2LUuSJEmfWckYkRD/30/+wosFE9sAKLmNJEiSMuf/b55GuJnJvGpmdjNvEWFRkt2wkSSsrGnQBJT0yBx7bu4HKLmRJEmS3D1yqeX/b+3OrAp3mKqYzZ4RmLpEBERJtqo4bjRqAGevnsND8gOQJLCN26T/f7RHJAiA6mL0FhEQ3LaRJGG6dudeKZ2kq4/9AOVGkiRJEpZ/oh2nmnlk9ew3Iig5kuRIkubEd8Xd0rzIE75++ff/599/+/ff4D/wn/+v8e+/fcvSLgcLadq3E45TpSyFEKitS85/XnGwLNGJif2fYtTP+1EpR0rNRn6tvS00z69JXaG/Wv86YJI6F7CYIVwiiETmsSxEfgCsEcZdm9yVpcYoM45TV8yn6OO9OWVQmsQo6jb7u4pHMwmnjs2+fx51YFj9OtOXYsRSNB3hcGyjWYg9nF6c02U3OtiFi5KuU1w3MpOlbImqBx/sjAoGR7x/ViC/9t4FjDVGb4w5rEB+lfwZ4Xsp62NaYFJsO5pW+Cy2g6+QuKHU0zWez0CcjUXJU5r1n5S72VXeul4rRsm0scTEFqtJCeBgtEuJd3Pp3wuQzZphuCoB1lNwyaCK2e8rgbMb7cxVGw6yhg//DZXGozqJs22/A7QawZyWBRfSR1BtD+lylag7x8F8cS+M5XPNwgzPx0TGnujHQVZrnEmvVJg4EvW6DsaDE/uud3c2UrvhvaLEQQGyTRchis389l0/mY0y81txfz/X0+MjV4ytJGVwUdoR3rTnke22ILIrC+5A7lPvMuysBWPOuW/wAdaxKzeSwoXzKKQs3aN5pkqJ6yAHbkIiVd97iMmn2dE4gfub1hLUMzsQ+yHCH9fn1gybNcMokYt1z+0yV/B5tnv+NwpP34DMbG3HulmUjn/AhxV/dceNORv+iD/O2xbcGcRuLf7sHpnR9KTHkVlp3DxuArB5dTZidG7QI2Wf23h1dwI/rEDw4R9BTP4dTf3+6uOG7zILMyDMJ7MOkv//Se8d8fWmBfUsN5rD7y/na5eMk0mUs0WWLLrXo3P8NotRqQKPw7iLFCqVF70BMW0DvXp23f2+A7BJlLNHJjQu4B3cfGP37aEPn1ZpJTFTkrKw2TgYW/niWT/p/JP5/rF5MzpStolMVCX+pbv355TquwKoe88v7sD9YYC8P5GfQMz9Hc1GAGaitolMqE0uJfg+Tjy9ts/yMLE079yPMkR+0Z+dgY5NlQGoWvh6GqPcU/cozgvWbNjlqpFI5ijOez/g3CnsfJoOY3JtcWp5NKG6hBT/Ac/wl/H+SQ+58OU0JnVzynPkQ/8d/T13YFDIyB0cJa9W7McqNeQ7ByIioMA9RZ4ji8xbiXg6LzsNOloXsV/eysAfw/PknQFYeGQsebiwwBrgiOShEZ4wAyPJrCI/31q0l1aaKEckIcPCpFtPsEcVcs7yDhLrBBQQESqCkloRR60K7grmmJvVbhiSKKWfexZBIiR/G/9H9T8ZfcLHM9eiYv4BPy3YWYtc4pYNbvT5KlVGapaULlmyUlWiXUf57sFEEQ7QmJYX2QOJ0njKZpUDjcGRUTsHGuVhD7ex9c3eq2wmaLzNj4KWDofvEcwbjF/350YuYpmjWRRJiJuiiDnL4tR7TpdK1m4jZKtKaed/wSJQXnzTz3lEoGjdIRzJahq9Ty87ClWTs0i2CEVGjpwzhYUsAWasEj9zXlh9A7I4j+kdope7JNR4GZtUVRzUf6f+oXx2bH5kaDGLlLPIezP/mDc6i6RjhjTCPsTPQRuD+KUrczSL79D4I1YVzaEF6N5ugzJFlYZ6oa2R+NBXbYb3RTf5xXZdsUGayJFRpolUs1IUR6RqNItgi6zHPJCXFn1Ecu18uLEafqk/xbhLm3x/Q1/LeRkbge8oRCwvAU8V7gxMlKqxLOekD7ZNdygQSD+3Cnjru4PbaIeOZEmkn/43yAyQzBF8kSnhwh/ziFRWaK/4n+B2x9yWv5z3kliAYNRMIWaUWCPRFckB6JOGTJckbeYy1Sx5hwDHqEBVeZ56T9e1KhMlczQLpWmudqQnDn7eDzgki8wTeWS5ArkVgfyncZ/ahT88OdJIf2WJhfcMBGme92eqlviagqK10CyUJlh9B1EvqEpMZk729CvXmRu/+z81RcJFn3c4CKEkH6X0SyovEZtetyJHJaFeyia86saojnvzXh0aCm1rFToo0oLjkP//J84Tzyg07qhFkiicJsAogylMsVmOwfjzsDVHfPOU8JzTSPjo0jdzRJqF0gQrd5iIKEo/3iUIm+KPcZPCSdSv/LMyR7NQmuByEEkh0Zp2EVkLdpz+x6nnVYr1oa+6J5xroIoKFyaK+lZXA1FwBoV4ERY42Vr4DoJICsfsMrbsEfGMBxQ2LPqtv49dwZwmwDBKEBsox87KnI7ajCybI2muQM5MlM3TUqNiLRCTQf6nfOo6Is1CYBwVQxD6mEg5fim9sU49LT/lOCKZIztqgI7DRDmIJpAQ18BFFKW4xr51ZwEiNAhwRJQsV0CYMbu1Rp45ITLjw1Zi2mjJ6/85iCk9AiZl7Crg/JJKF2T47L7jZkHmmAjTIRuclDZs5qZKNNqTOZqFOxwE1jJrBB0rTOmHkOFoB96fKzWJIsHzHlBtC5CaMhiqIomYid4TD+wqtBF0tTkI06F5pM09bI79kzmahTsIAoMs3Yd6OM7odlx1H+LUP/vJppkiESAYlRMRjoxI2ZR+GO+FvU0lCs8Nv7KdhJHD/kA2B+4ZpEVGO/pwv+8gsJZZI+hYYUo/FPQKHIp9zd9nEoniXtmxE8Afwf89fFkJ3xFDyBxUjsPJI+aEihQmZNPtvlbYTUUpmVouhYh5BZx44wU2r2UNiQiHI65AElcBog2kvQv9mH2qGq4TYARlINKcfFXWTDk9EjsFyBW/L9GFJ4addwoDT9MECwRHBG0RDkFGENZMhWkzJswneCFaPke61r9mkSjcQRBpTtCll4n3Y8bOlD+RxsRsAod7DXQ4EoW4RFQZYwehcTgCaDpF4hAN5jjiiR+CaY82WYrCHQSR5vjcQD14P2bsTPkTECreC/P5nNuIX/hRRX81XZ3tf2NboB8pK7lCm1kkpfsS6moi6cu78mCAst05tuvTJ+SlcN2p4RfwCLhKoDM6AYKvCbo6wqVCSNgFQqS9UYs1VzkZoc37JvKC4oteK5c2EYSglEO7BGqCCg6gg7jjqqvtFhBeC5lCmAORRMT78CMfXpmrafL0+JjNof/n1lzlZMTvfCWOwnjBT5s3FJM/cP0396PMH/5jb87CyPvNIUGmJI6XW0VhD2k1Rm+uputS+LapMjhJ8R1/5nUdnTdQVWPjhXB/NY9Qsmkt7+sBIfzaKGgkACFsxmpoVw6CB66MYFBYRV1QFIeVgrK6tq1SmkExHRCUQEyd4QhByEIgSQhQCxCFQAEnOf0I92f+8F2xl40H7E8TCKy63iC86la/0Y2f6+6abxsoQ5MU7fhf+UjwO3nsvQn9b+0jtR/Fzc+8w9Pf2f2dLwx23F34A/D38dhV4XmPzIJEUUuDwhoKgDsqKumQ+7R2tey2gKB2arWlPqkSdYRWND22QAnRpGaaCYKrsohd9E3ALYgCBFpTDocOSeQU/gHid/RwwmLF6FmEJjsSCoB9RSUFZkToOtWvTZtQ6uOg+nNFLO4D/z/wb/3DoiPSBJe8KlWp4R+lCB7wMiJU/fDPO95+p0+DeOP+G1NdBiFVJsvZsTNKCpAiRX85InRtVF9YEAWgIEDK6mA2IZ0Q5RUqI7zttAC1lyj0cmuIi0gLDRijBOjAkYGOACgGCQJGSiKFIgm0bh3OykUUH2WLVhPcCVGeoTLCun6VF7cHupJalBIpTIiGCdTjzxRPkRkbUlpVrn0DFJlmOyKCeAO9fMwmpBOivEK9QXj1dSHhB9Ctsj/f3UtUxoZKkJL161ozzR+hvtmiWYRUQpRHqGqQnkPxbRcxZMWVPm3KMijsqFP05o0AQv+D71cz1p/x97gq0fJOL3k5ZNCjAnknmiwIlCBiwMJoGwBQHQdk8nG71rV3/2BZLoXVRhP33rYCEi5FEgjUgSYQDDACoBQ2gQntCADgOmQREIDsIQBCmYepAErpKy4zUZlXG+dlY+EeASA4koDKyxZA/MFXA/vkm149bRl0/k0rf92xnYeH38D7hUfTqpe//Iiiiwn7lG4PiLQIiyJn58Y5oEPhcLfSFdkn5nLgNzeNf+ze5NQ2MLWUvmLEmv7hS8HzAACuFBcRzVy2B9BEcCTBE5Q1zG2H+utC/I2Fkpq0IfIsG9GuJ6IykKCiEDWLsrXyurBDGkCad4x21FoaJeTsQYkunFS4efl1Ct0J6oQcVQTlhR6TOCPSKixJ4y49XFqLtKUoCuaL/OhvuvKMh6DDMUxn1thxhpg+Y2rnwfsU2UGCuBPBAYDiOBO4aak9bcLoKPpYeVlw+0I8/O7x13VzQhdO3IKdIYhPtE0kuDgugoSSnrnzsIS8m8BtEALkWZKBsEKxSPBIQMh/9ha0acotWACRefGTxSfYIOHQIlYSEShYzVHBPnOrluSgtpLoiMqIZy+iDhs5UKfQQ0qaUrBIgEhACVRU2CoRc6D4OnCQNAcX2TFvroYcX/wQ6+2CA+bjnSKBOwhWRG7Cdrlpqd3XkLcTqE2eXflLM++dFZ3+19/ynWHwqDf48LhT4j/4UWCN8gbx5zcWNn+iPAs5BmMjlOh4WpD6oBFWjEvUvvwtKId1a/DVcLsUHNWXqnYeOIgDXE9yxwlQLRXhm8gLitkAHZBEdWYKivFQgAvEBi2wYQJvHUHEwgGmlUCFDAU4ksPKHrCh1JLj0Q/+IVvkV4XJF4s3t7ecn+eolVVOcriImuRWpWJbQl9akCQKnz9QaqIJ1bZlmCJC3LJ069HZBf4f8P3SzHnil/H+34Jbi9y+n+0Xz2EnzlmCu6hyrg6VlCgNUNfCQnnXRhyZNCgRcLbGEkBCEv2D30uOcZ1CSJsiCX5WyHMTcSG4rPYh5DgCioJPwcex+ygXqCuJ0PQEcdlaiBTSeSgUgjYFIMsxDEqkOEBRVKAEETmEbIBl0UrYoqFqqFCtbWIYoXOyq4lAmwAxXwLGgvLj/+eIoHkiIt6lcF2IWmKQBqgaGigQEUU7CiFEBudACfY3NYqg5EFD/nej39BvOHLs1gIdGZc/qBx3BNFdkBHpUePrtmr+QKpPw7SQI12IkiISLJc1aCfiVE/PbdkK35TkUa027vsshRj0QpxuaQBNROcNr0bpShlKu7CSFCEMrCyJCoEwD3ag9RjBfAchaSgCy3KwKxwRCcg1AOPNIDuRcoJYUYUNwck2cRSfGI2DJpmUZxllizRChRDp40QM9cs9W0kJkWwFUCxScEa05bn6DdvJNCUaFHTcECQAl7GYWgTQn5d+8bECsXGk8yJA0jQ2gG7eYro92RdYkliCkQsM0IQ6LsHiMoL5bLuggUZR8po8QJAAXK1qRRa24IQL+7el6oWExU6hDM0iGZCeR9X64jwiclCzEpyXKCxaJRSxkhqi2DboJhBKRbTlufntKA5QtKFmU7bjjCCBdlWieQE9D8TOCqiwEv++9kxqwIitcmB9QqqNsTfwSKQuvFockUB0RroUCZQE88XglxtGgukQxMV2FTlPen+5MmfxXUJp2xykTAgisqceggUAWF2wlftxODd1Ac+0+6YkcXcB17iDd9hsfzosFfzHH04jaxZ5v4kTNmZQ6dsO9ostvAYfrQJBVpf/j+xOeCTIkyI/WQiakp0qkl1yrs1kUjq7Nm4uDD1P035VbPDZAelhOkijSd3hIm84ccLWDDq9mcu1OdpxQRgCpmRazQmoggIsBGladwy7yckHBNk1lAySkfwZ8rJxljSr6aiiOokq4rgSN8ddRFspbMQZVORNF6O2yBWI2SA1uVT3D3/L4ORxMKmkjXSQ91JGka5znpXhsikXu7KSHDEdzSb9VVHoGUTHhYw0HGd2/4jyBC9HUqddp//AhR7jOSK1HOVYUZlFEowzl4BYz+sWEVaK5xlv4eRlziqCktjyDFVFVjXXLjvY9+fmeG4Ra3mw3R0C4QkAcHWMQB0BdSUCFskVGHhEGR68IjUZiSypFkckQAY6y9Mw/Urb7IwlHRHuCLwkyAjfnFGmZxwpG3Bsh0AkenPJgoDlIJpa/+Ga78zrXGjAvXNsgAQIQSQPckg4c2q93LNZwUIkyuooOBUCzUrHGeF7U6mMM0Ttih2toKPoLNSa4Obi/UGZtqdP1UyGgw2OiDsIAjYcdF5KhiN6tmf/yIcx3G3FJktFGAXuFzVmcFlcQglOQw4M58qw6v4TgypCaR23KpI5NySnLCRFSOVl5pved0Z7AgQbWBfVCJ/1TqmUXwkhSjwvrKT86PCwnzlCCOWUlE4TVYRvTiUzThOIcJBjQJqxDa7AovBK43aOMRBl5yWX4BqxP1O38HRBlMJF+6uFlJRQRWSAjJ2wNH5gXVzwMvBv/r+jyG1LVAUZYVS4X9Qg4uDV3fQgUMwUOLX3UGGHSKgos1Ui4/8nXzY/5cUdAne+y//GQZpbSUcRc6xLtVyaPy5wv6iB/8d4hno/yPHE/BupnND5rsYjlioWSgC1/IwXZWADEfTYgizK6Taq+1ac0RhKEcQBlMMnAZOeIILDBUC5lH9coaKoMdQ+E3hE3R2e4IhSh3EMcwB63gPEtVYUt50liA/HHHuqqIqhzQuxYGAawSRkTMGtzkh/2r7NHsLcSqoisbnD63Ve2JwqZEL1gajjtviOgZACi5JQ2e/fXItu/Rz/Ae3FRSSPeNUlD6nfb9unBShjGDiJ57CyyamO0LRzfG86l6bO8Bnab2wfuORPulvKy50xM1RRMqeiHBGCo6Cm6tP4+TECcJ+oddt/pIRJvwVq8nML6PAkFnVUEjhK1uXrU1t1JVdNfNYsCui2jVFTpASAWiJSuiuhbkTdBh+Nl8YcyjMJFczHmgEMEHcgEW4deInS8e88VhegHEkDiRyREMx4DLM4yltVzDkCJFRozzkXAVCOi1GL9WLu19VoxwVBAu1YsOhKqFqk27kAsFWNwKP2S7khUjgQBVqGRGgBm4CcuDv3g4H5rRhfvYV7R/x1xVbS+LmvY2oMVShBWMt1lO1FFzjUa7iFEoE49u9iV9cDUR1k/vXfEVFELuXzgZExB5Re8aS1xv92v76EmF3QnCTNoqaoJ7m6iSrC6HG/qAGEckrU0viQeSIGf8OBVhZAsQMgfJ7ZomjjWl0YlZ4wGZvEdQqxMjLfkTkCBFu1QHmVvcN5n+kdUfR6VZ+pcTKS1OoigZ7H74bj836S5s9NByYtlIHENDVYagHk9sMKtWK9+qD376GsmJCRCCGUAkApx47ROIxKIqwJoyCn1fsmlmIhBLg6SNrtrun7ARGYwmxVRNW4gyCQQFsgEds3TAs+P74IJiKg3DWtHaUiWwLvTS3SJ4O6k4KpUYtjO2YQQkQCRnmOwMmUXQm3JKGcwK25KbE5i+3CyUSD2/udI5+6TtfHrIAEs5JdzUSYKFoElUvOCJXOWH1Ai2ZLOwC2XMMwhGQbAIWaDuICJ6BUBLvC4pIjiLY9nSMyeekA2D9MQRBI4LzSGCKUT+ag5kK1KxF8HUqC2YAIBqKgoghMARK0GWEyOTyPKgyfO1A6Uoa1axuYTxYATDRxmeMoRixv2JyqbgIRUQFkIBHaQ2OWoMKESPc19fbdS3zmIBB532bctqbqtK0058RBCKEcRWJLNV/2otIZqg1oz0xpB8Gma4pIUDRUAmCKaJzMCRTYEeQcGnaDlfDKpEo7PHAbP1loVmGNfcVkqoYpRIPQbi1Nz9i5bwejCHZsSEdUi6Bq77iyvMHdcrxnty38Kj/QBoxFJCAXUNZ/SQuNp0gWBlTmPLhEHvITCKFj8EAZkIAE7stIPfwFqp7qepmJkkStzcLz3AfQNJ+koyj0OSG16YxQCQ3VGCq+megFQQKgp0AeEC00FNMKuybI+e/OVA0QNIpkEQYEEFkOuFMeR35tRmMlBe7QBMmXCDkVmzbvW8Pogh0bgohkCS6GhI4jZ09FqATC8kpOU66IWUjPMkXJlS7nEGpEWyAVRJS5qpIk8maJIoMia6vDXNf3qQVAiILa2Z6p9has2+hUClZYhv82goqCPydz388yOGluJVWLOGgXvpeDKMJHg7RatDjgMBBTUBq0AGAythA4cJ6pwGacQN7pq2MFUiooSkpcQfmDhrgCKRa7MzHpncckG2EKTQD7RtbU9NMGpD6AADtcQD+7hfGBwSGChLq4ltALlz0EzUYh2s96ig9HhByZlkqGYITaNJVhQJkli3mlLttVaIXXYtpfQACAoI2C1ISoSVc6ZfPoRWIEoQkgQFmzzU5XkQGwp5Vl/NzqYCQhRObEdnJNTir9DcIicxhVRR9Lu96OSWMFcSwB/DshzChYSVAtZ7aABQaqEtShoOXRs5mjRWw2G5FqhCA0gZuTRFg0CpTWIsW9WAoJXDhcnzduq9s4PkSBK2oAQiJCmMJjhFABaP8cpejgkBEAh2CEUpqNFFwBpdRCHIRCsOeJpevEMsJu15KukdxGUKnXtMtEnCYjxlt+EtoFhwAsAkXlHScLgOJ1AwgHzsM6UDrwo07BAQI0HBDeuElNo9y9C2uRdoiMsgAoetFKJAe5EM5DBFqCQ/QkUNGsJNEFwALjzkYVHKCOa8NFQrRJ9vuNJsfRW41Tww8gE/c8bRepVq1AC9QiQxB4tIRmjxLegbNE+hxh0Ip3YLZdKdIOgSBBpMh4XKT3oKQxJZ5nt5YCRQLH217NroEg7DVx3tXeREkU0oK+d8EmUM5iCuiJYKtydQI5z7KlAOtY0TmL65zKy4j8R/KVeb/y0p8QRiEHXIAqRMpIqEZENqMVAu1LfbUrijjPvilVHbFM6hDk1DmcTknNjITHFguX0KIIAQKiDYIEzB1K2pwAlmVdhQhDOeQAARr+wAvj+rJdBsQxzCROLLcQoIDwec5tRGQz7jgUKYKyCtOVXKeK003j2BHg1IXCqnYncBlYhJHsYfgvdtLw2NDg6K3N9XbYuOY5AwEiLOpCEJ3SxZrCIdEFYTm4yuHMtE4uCQmaZVXAIyihFApi5dB9BGkHoZTlBNRRdqJl1JV5Uc9LlMzRKry4hDEitLGPo5zfVC8UTqvRitRpBAvAAsJOtQSHCwKFQoBrZsgesyyX79DtBw7BDJXJh+EcPk9FJp6vMoxjCRYSRdukFwVZ3X+nP1SDO0+xsgh/S9wu6AB1YlFwPkAEhwuA0h8ZCowewGZ/HKsdAmGCo0FLg7KVjEPnVaKlHgdy9X4TRdoAOU9Xetg4uyXNvHxB1NTVokz5Si9iIg41cPxCICijj1JrwxdYgzglG8HwIfNmUc65/3xeKlCwFNVOJnLbEiVBOBSyJCDHUl5Ct3f7e7hVoo0UUDp1chHgI6CvGBkhOFL3iAlzEDeYxiZeFOeUBdvMbDmxgl6WEAsIHfMiEbtGFlxk0o5UFQ1Oi5etAMBRBEJ9A4EAsEQUUzDKjgULFpZkkGsT3qgHBQBbSeE+0SwCBKCEh2LPPhbu5zoIQYJn1TRRGSiPwTV/FiMOMEAyhySh5oGEI5arlxvTbMHtdRIAwEHhKo6vIZIgoQKCWBY9t2FJinAFEXFMBQ51GY/2JomAG1HJtVURiwXWNhAit/b+M2HRrViy2q46BMkdMiC5k8JW+8piUyhUeCMLEaJIDhQS2pquoa324zQrzkvKgsEag9ZQnoNAQIS//PvLnpLAiPm6y9C1qCj4CQoABSmL9laGb00YYEB0DkVlt5P4WqezW3pdl8IGpRWTG6jZrYWJC2S6ZC1s3AMEbCzVgYAoW4EjKgpVjuyuI4JYplfvVlNoFkdEtoLfQvFWwkhbaTmCxjhgUaTvrwgCIjh+f6PVHEL4STXYKKNacmgmi+AwvFJkZrbk3hVW0jgAknKW2wVQt0aZCCDNxQpBhC0rpq6mpMSggYhshMo24wQEUxJqtCQaPdkUMJfxf8CXUtoC3zfEb/rfiBQHXdIsal5uMkCApEylr7UUbmt34fpEpxFIkZZk4Dw0fFB3vwAERqAMShm/HB/ITrJLlLUDHLYSnncQTFlkEEI8yuLKAWgZB3BZlLCJq3y575rlxzJO4le37xItzrqdL8sKhHhZnjTZMhRCqyO7CBUWCUbBiEbpotpJhBuwIAlgBObglHUvB6qDrc1QuSO2kp5XURSdOFlEyj1axswf9kMgadcFFUqUd6+iCie1irB83zRDFCnsjRxenbJa6xBqUrb9hI1Slyi5vI4RR8ucayvqKAQpZIkOAuLglOEXh+yOYUmKgrGBbAYBka0UUESJLuc0jqEkjlZienxZ8qdfZ2UWEIHCh5/2DfCCQbWfrdlOMBzE3AX4vXFoLfcOgIS1iFEsOlxAAjYoCmbJL2yUoUkK0grGIhLYlMHRVUDPU5eGMIRz3MGCRSGHO3kMas6NSZWMn4miHNuq3cS1LyL2UUhS1RDaqiXlTcHVkh2g1GpmRQFAzdJSRF9UmcMjEDlXBMOMnvLeJUoCkNus21h6XsEnjjqSQFCBAxuklK/umFPUkfOupd1rzVKKvii0mt25fuIaLQtqE62IoBDkVnojsqMSaNxegAZwwR7lF1jVadLJcUQQy+CXZeLaUpQLwgRHgxYVAU1dAfUHHLcBx+4l7jo2RhnisjZ63g/qz1N884qSS1L8Y/9PTgaOBArH1AloxbGP2Em/Eqz7Eh6lz0vFjoJ1C4glOWMDUIAGEUE08TUre7OtXG7Gu2NSETJ2Vq7Q80xMNueQUgEHAShRLCLVoLqF/KrGFDCwlgFIbqfEaGrJAKPcVEwegDpLdpjl9vFZJAD280zHGJckxOECEDBBQhCM2eTLmfK2nxi0SQQJ4gv4eL60EiHAde4kiOLnLcCA5mOXtUL7clmhsGP5oc4V6JeNHYP+nCOOOIRb4djxwbZQUZYiKf3cdOjWa8R2wT6vysmKIRALjoMWkO0Um3OWKAnkFeD4jTQmGDm+ejBmQCctiCyIcRTF3UCrCpW7LgAQKrhwa53PlN8UHO6UCkMLa5DJg1REyGekxoOjumVmKt+o+UCAclnXRbUART5VNeFN7jvHtwi3IaATOEnmPAkESGGECMKe6IpU3jgyzDOgjaUCzZdE9a0N+qFc0pgfRBMxBCeXvMBgTr7YDW7uj2662NAofLtAkcJ4sKzzNaBZBmqXJLpBqygWlkJhqWlrxeCzvIkkUQ2QFyDNSoJ1C4glOSMByKAhCEYfud6ICodTGLI1jZmAcaLj1HYcxllURAgPUfI8E+3zjiRyFDAs7ElRm+H2u1qLSkW1GrxQZQCFdOBnpe23ZDokVE1DgJDASBhr4uL7lnsiouCbZc08MDQFcRqs1AmiWjaACGzAiBVvFtPITykc5gzFUe6IckUBHLiIEi6JjkdRGw8EHxMtYNoZGyOW3617yGwxhcKxHEs7xSuOTJSUirpa6+fLtVKzaB0okpqOIwFnxQ3BAEBuRYIyUeAsghiwYvhXbdN/Cp4+MCHJhNZAhlIEiYwD1zWIRCJI4m4cF32pDPZ5iWyAevu/dw8V0XZAsmxKJrDzCuYAkigoCygpPCVTLz6+Exu4QImImm0OuMASEQBZFoQhSXMrKVyAgiOCUJwA+Mh8CixRaYjXNuJUAnVsEsmhUkcZbEHAM4K6gOoI4Cqw3Aurw6Fo5W7uCQ+ad9zYR+rQimpZVNrIpjPDcGeSAu1tFhbJx5KBeLNPH5un8ezUIAnogrXjk5QsjgIBG4hi+s1AeqDUGKHmOROKk0wOPc9Rm8Gi5GiCFlHgABdsGom29Rie1eiikzDJjWUt5Uq4sES4H4KaiFOAUsTXeJmTz1/A4jaoyagTQ6rGCKpbOS6Ii+OIYJSRN1lPAzQ5zFhhECAIVGSIgJqJkUt5xhEhBHeCwnXslshuDkPBCixuDXfFdX3i4RS3VYMrr0r5Af+SGnujxTspLTlTABgKh8b0mp7iNNeizdMFYrxi2jzCYV2AaNLJkRHSB2saHzRBpmGNM1MFYbpOMyrHsZXGJq4oBE6s0Ka3Nqz5wS1Vo73pJwCYKGfWaKJcj0LyBfKSXJdgeq7E/vwV2XXzeScBtggSfORYSWpxFAjYICgYZepuyxsgNThMKcgTAYsyiJ7HKGkAuAYJLnNEgUQ0o4rlBZaxbdBSPNnJ3/wISoBgQxkvphQnCnPAhJmRYCK8JurVoyKy1EqZj4dgEFWUmi4oDucAJaBIVBGPeY/z+DAbVDnmbxCrgzTq2I4of+2emnfAYSOwYrxp7vD+scdGpBWTaSEW6sRp8MK4adTWCVBqP+5bKynoaCmumXWlISFCNFGngLEduMAgdppCW9gykoy7SyAzivg38Mo19VgLAIwyrQGXidjahdojbYYjBrjgsLdv9h+U25YG/5bVmtKpSEdUu3dyADqJ8/FOs7owC/seoTwgt+b28WOiC8iXgiJCBfEQE5NOjhuCUKZ6bvGDXUoEAEWhSM9jlMHXNbpIW9Hx7KBVoRIgqcgSH7soii3TdvhKWpW7nplx64vku6PQkxkLjtR+v4DOobVnIgmw17qdmyPvmcZLJ0YUVNQ1IUOFtwEASS4NIX2w4/eX7M4ErkQqrkLYSoQ6U5wdIoGgZriLX6hAQKRHF8UuSjKWH+40qbHuIy1TEFxRrCi8/6Cdk1C8mYIQpBElgedjxXi5ldm8zPoFlgj3soBM2wEXCC84/1k0hLQe+TKiXbnpkvaiVkdU0a05Ute8wHZjhXY0QGT8i1taSwZ7wQgvr5YKSRg7GGbva59qu2CjEeCurkHZuItSzaunxLi4tmpeZjNvM54omgcWdrALLyBedRwQhDKUBEeflguCBNkROIEiz3POPEx0rmdACccR/nmRbaXWMaO3IxBcFKq9/MNfesptlLa+Pg8xWK3EeHZDXFW1NSLloDz0Z+ILZ4aWx1AXpbkQS3LP4jUgxMZxbXjGkKQpqKLmcBCEsjs4O5YbkcFK0fdsyAuUI1ykFqnDgraBcoSCy20pUJl9hUydLHyzvNhA5sithqvlKlwolbcTFaiPxqNTc2i5O0QBRCflNBFp/ou/ZqMNS1IUjA1kMwiIVJxQet4g0eYOq8vyDOGiVCR1UQdG8M/eVLmi7cVZtdxW/jHiMGoRRwSSBnoPw0C5KJb2sBm0HSnDOBonodSmLMlmXo4zIR0VQa5N3ZY11xJMiJx1vw7JfSNSl/EuuNMXc6Tm6HhJFGHfy+iIevDAOwB+19AcXlFXgwqbACcU+DlDF3HecGzPOG32yYaQBz1NrdJMPRo7OIhnFjvS7WciE1gnsxDFYUXkdQ0lcxWROF8OgliWvABfEDdWdRkPOLMTjJrxicgEwTpHaHPURfi+dS93Fy65DAUlEpN/zkjuG4mPSpru6n8OVvyKAvwMPrTgJq8eCe2ezDUap8wtwGFUSgAV5laSWprjgiCWgZ52EBblgjDBAdhKJFJXQC2HUShS4aDBKggWmQP6cdOMXzVQXNUhrNe2i3juu4XJr2HPJLfoZGT2jPPjb5A0bgDIyEOkjahbWBMtG4AQMKgIwgmu2RjNqRpeEAAwFIn0vIBa9f3lbztA8QFCfu0MH6U2RdSrB94TuE9tKaoWZKo5Hm1AnWyahuIN/ueuVCCmUQd2ITZ4i5rkWnyMY5aMQHRRtS0HIfhAxQmABBFBOMExfOSsHI4hZY5qymQt0bpEjTJIwzhIPToKPBrHihLqdq+DC+4eAOwDmtTRBu8S0DpuLoSavNemLShRlmUncqTGFTsRclBHSUl0EygGbEkfpOZSDU5ZBAKcqwSNoUg0jnTeXMLA45SrMZFEIrTZBCZCoki8b7j0K8ebgqGAZhZWCsvvLjs6opTqTY1IdLTcRaUjEESUBJTZeALAgi5SoG+IOMnm1gUJgAQNgTXRTpjKWjGnpRAACI4dljjsPOMTr0ogXLENQuMGG1CWNkQrglbi3/jhakRTN4VHVBBoKHY6MsaZyclcTUTtK6G1YGhNj0bi491em6zkAjpa3onsBIhGORBCrINFgRIOCB4cwhk/EtqKGTBpbCXzRLieh7ycbCgBsfac3rPa0edvgbOSfN7D3FbpwnbrtDefrlrsJCB0gkNACJTMhpAALT81Xm/TfJFJEY+0PRrnrGkcUlArwXKcERsQBciQ/F5vPGUpNKcoSrGdiySNraQ0gqnGUhEvOKQtu5JiR2RivdDTSqpU2ynYq/JoX+7++V1v7HRyapVKJACespXX0RyASKFuDFEUax5QMKojXK4eWaQWRfF1Jcp8XAKwFAaiiEQMgQyKJm1AFUgIogn+3lCuGJSCDSSwlRgxKcyxikG463DUAei0EsIbkbts9l953shwp60l0pRiY0bzj3xf0mrK9WpBRTM0C0AJPLIKiFHsFFWBjvXBzUkFl2dtHDjgIBOIqmskyZwmbUAVcAShhHu+ItGctrAi2IA2hShHYxjA5vxF10jlPHFYKORaaQYIjtybNWtnYitWoqC2O0UGXli6V203PF0ixpXR0DoLUJ1y43gddN0MUcobI9fHQ8zWSGPURoaVMosXgxxu6QgK6gQo00xLO9Py8My0/jHyirOz4eGqSM8TlMBDChKojfYtiBQeqVuIUJCbDS0f3u5yuLxZWvSWOJV8xO/hSYoTHpC+Gyj/OrsRDaov6aQ545mZwSldE4hqq5QNOSA2IAsUBdOkVjbVQ3ZyFwSIk+2mDupKaQ/aUIpYwdgy6rhcpELthbVDV+oaAqKJog9D5r8MFX0qcKb2sqXncYzBEQEYBXxle3cComqw4aRPJs0JR1UM3wPIFgzzhWDhSgmhiBMRG1AFAoJY1BhY4ymD1ZyiXBAqXq5BhmOIIyQeidSxKLWJWeR/gFAnoWDuhYDqoS3pGjyc63turY5aWuW1/ovAi5UpCKKaS+igr1d7JiAUqKf3ofXmqfVCfzL5C8BRCVasbr8xrAUFQagCl+MoOi6wAxTS2hKQi+g3XJ0nTh5bcHZKxAav6oUiOZoQmsPiVAkL9FBSolJfdrWSPsOp5PxoJ3aGQWplc0pBAUmQK3qvVO2pg+TSo2R1QGTUCSyCfYz4cQchAmUSMoApREr6y8OzsEuJAGArKSKjkkgdQaRRTEzjj6gV60pUiq4dDDFAth2oEcJWmrCwU0swnWQ6zYxIaqywcCpYPE5Y3M8WOWcTqvSGAtfRa95cQJ12mbtSAQCcZ6hP0gUBgk0hAjZIHwwGRmV3EWVHQFwK9bxNVcWRo79daRl/RYJpR6gKdkkcZYM3Y7uBrUa6p1yhwW1HJBpg6YzbcccK0IjSSmBLvy6E4hkrqwaWHZYUjkarqMnUiTPigAiRLAKhaqZFRDeBYiAW693lIXD4abkggCsOWCmiJg7yRmM0EFl9lGO51LEMQSUOlEIlpkoNIWjdSk3W63hjc9eTxwKf+zwIlsJ+RoQWsJZA3dB9STmRqC08En82ouYoih3LB9EJuedZTCcQFESPLigUSoIjoiWoByECa/Yy+vix0okZ70YEqOjYmr2pSBYZj4XLC5sF4skd78C6O/twIG81iHUS05GI1iUn22InYVaEOXMgBAFriAFRpKiCk44OxcdLFhyfxxYSBcUFMqdJBUAEzYAxO35PeiPUeryZdyMaSi1S1IqEMfGRf3cbakTsvdjCDgvRQJHMrIyv9OZBmM84MZOi1Tg8ISWX2ioWmDqUPyUSILq8GQXLKqNxtLCGLUz5OSA2IAokA8aku78CN/BJES4hIoGiDGEqQCXRPEagABCfzwMvFmpYU4jQinftGIR4QcH4LuIVlQr1T71FrEZmVMJX1y4aiB2sXXaCgWMZeZmUcBQpIyZ53paIukvWOxVUOEDUAZQEcyIKAqFICMIJR+hnvqe0GtyILlCF2KE7ahNX20tVCaURQSG9bmyV2qvzDxWZYfnuayuraw5pQ3ky1FgoCQJ8Gqf0skL7+3JcPWLIpjpH2zl/jIAREAsHiBplWMKcJNGpAoRYsMZGP63OGZ/SbkSJH6fs4ZvsIBrUwqL4gODo6JWeUq3IQ21oFCk7gBbdiFPVuyB7qKS4CLkiELV9NXYtGiwoJEklViwMVIuuKm4NrrtnIAhXcawE3zkWoEstCJiWv/HqoAwDUxZWhBCRQFGGyKhPdJltHy76mEafRw8VLVNfQIqngdZAvUmCY7i49CcghjoIKjkKKmkadUFAhFiKN+pWA+nfmqwcdQQoU5KBs8insck3CEoOmcabYsNwBQFcIHOOcAFRtn3QS/3uo0aY4wPkzK3mL0nsnXeOXG3znyaQIGhH1AguEq20wXVoxvzrAwWzjKuz3IgCwlbSIy2E9YGRqR6AWsHYCMG/qFInpKMN9xXPR5OuILOOsHlF1EOCYGGNW1ygFIFBOcnZ8d3PfGJPiqSjTKjAqewjirw5D44EQT4QVQlucnndWwaWNVWplb0WPtGzpFoMpV+y2Qz9ePs3H1wHfJw6tBcEkaYx/NuGVcYbhB4RSleCrCJsXhUlYCv4OjxJRC4wiqLwOQYwfM8FYRgbxnkBY6gQkx+RutyRBFYgFHHLDGX9iX2wluSmgOHBLdMVuUe5sUJWQtnj5uvoYXj4uYETy1xjpnZpQ97lI1QlAL03a3MY5znMB18XFRA5ujzbdFpR0CJKFeBcRYAgU6BD/tKpL3Nyqn0LkWPcYSspN1iDHYVRnARNg0yt8+ejoi0aZkTFNi7qKqoqWQgi3ubBcAZNRjA5pn14uyPlAzvTF+hd1puSaLcSYuLMuHdq2ZFsUA0gwcLCGreAYFOEABnyn+Q+vohohOIJ0a50KOSwlZRL1g+IxPEHYlG7BUVWLDtqrvvcBBPA0WqVt9CBAVlRLcgkCJM3aJFeBF28Qlwkqc7lmNqMnPf3hVmpI40UjprbULw/8XcZsQeUYVGA0UAWMCA+286tI2+AxelUwseLqFGG4JYekuQnCIhAJ4y64oPeyvQgMvHrIDrUmgYiEpbiExqOGCUNATTplRvqU1C5vFv0V0teYr1cShaBo/YNG1kA4CbQ/NJo8SheAlCH6dX+CY8h9t2HfyviaVMTsegFMW18spVAjjWFBYbaSUxZF1QAUagk5tPOcZzPG88xUZgiEmWgRRSxpDwkIHvF06PBV/0wiglVBJrRJtQvzdRbhjw3uA399v+co/mtS/lFRphBbeOj3ITThVicvlRNPA1iFkAlqIblXZhMnUo24x1VKFvBchBCkzaABYxAIP/53KEUnic1Bg9EZCPUrLQ0X8kAaBHe8lU8aLKZSB2KEtugqvpgEbAbysIvN1XI5nV4pghHUf3QjNvIeDDuQkLRb1zQzEz2U5EKjIkqASBsGTmWJpglpsqMgeIqSlMNBxEqVOhVMxrfiBqqAyhJ5zYgQWTE2AcjG5ccmkcistVkT9SrZ4w3aEVZsCKR1eDva99AgpN6chDpb5lutmmEV8uzURiI4lm0x33oWloNFd3lRmm61WWyj1gWNIDfHAEmiBSz+nZk6nRxMXxKxp2uHQo4DDCUzFGSckiEESIjNYMy0sX1r5EwJg9FFTIZzdfwVqOmQAm2cYSICXVGrw1QCH3UNzAwRJGkV6s3cSazW7bwS32AMzNp51i1Z2CjvyCsf1AG7gV3hDFJbYQDwHxFi5iDKLP2zEVCbTkkLhQWDQpc4BwQZIT5fIYmLtZCoSIRQkQciqAidRnKzgPRaEn4AYo1AWyLmiPrSNODAjKWF19cNZLfmFiRZQ3W4C8oO/GKbA4Cw9URa1+sN/xYTEJRvS5CLaopBBWKDZbBJJPNPMpi3liQ0zQkWEwGI8cuQMaBYEn8k8ildzXEm08szjxKnfGN0HiVeBC6UmEnEXK2BdSFsFIWtVvF6G4kPj6eFVOEDVdCmxJZsoxw8DoVjnBoXpKLFumUDUszD4GM4StNy4aiAqkcJp+6HYj5JlMkIcYzuka8CiAUzmmSOfggg7Aee0aE+XU2FVEvonjHWotHRJEC6BTEO3MKYh1RKnz3+FmLemFzwkpAYSFyQUTYe+vuGtlPSfBYkEgTssOHHl0PpjyNhAQ7dQBiEwBFIiJaZHOId+sClNl4GJoGOUkJlqHxJEeBQBDEoTVRtMUDXtm0QyBMAIANoyJ1KcpsZh2dp16CUa0gyaHDD4WJRRQLNyKJbr9KWmKdNQjUjsR5nfPrKHePBYkGmCQs/7deomrOiLQlel7oB1K+f16bR+WbNMbMIRWVNuKsSeORZaegVNC1Qoh9OFoSXQAEskDVzJfeP01oW8doRJdhaajFuM1FdhIfhB0VqUBkPJV6S8q+AkAzrK/6lZOG+mFd8nghebsGyVxQelNjL99gVE1D+fsC6mpWZ/qJYA8z8EqEAjLnvihRppnIjyZy3kWdwtAlSQNAF3zmGmILgiQQoCT1uXhylsLAkmIQJCCYOlZh58FKfB6h1nLE2CgSTUGaurkI8n+9Cg6LJRlyJ7qIJ3G75xpFbMU3cbNX323Qhgni4OZUFJqscN88DoINGUgCSbN/Aj5m9qBro/CL2JXwaDhDsfNcIDO/QO/UZCvBchTEBpDg1/4dsfVqDWwIxM17jLpuRDVKRZSyQoFo2uN7CGVQhHUmOOfzylHA2Op7zmMAE5QYctQRtL4QR5Z+E/DSYCR0MKFyXLYuPUIbxBJQ2wVDIffBXphtUtJfaIMAeJ7NBTIThxldQ4jGGQxKYgsC3FJUiLLmpaJyMyxJUTAQgstWMo6iCtEgAfUhgR6pKDSLUINwqz6kDTf3vcRXTohz9T8DPCPaWcFJAjM2xIM7s9h1Q+ZrUybEzN2aWBVjUVSrpjrFf3NsSAxtOSMLcm+wWZs3iGzQZGDNDhEAFjBiXXADLP+DmZ1FUYoGkCbFmZJoUMRTMnH1PONVYlJOCegIKACl94vlKGqixJ1xGH25NgRdNAzp3/1/RGIQ2ZheBRQcBYQ0ULqQmzLC4EgRFwWtCF0xGOUDAaA0rFLk6Idr1Ak0u3COWwSRHSyAiCV/oG7GlVJ7B05LnVnd9GxQKRKLFF1znbbnMeVPC3UALhpHCgmcfb8J+zUr9tPyr+9d/qcfIwxB3b/pKCHoyB9enVQUQJySKaqIdjAPuhOyxr1QJ8/sLIhRSMQaQiQHKZTECEElgWLAlrnPUl2cUdIiECSoKLYSn6dxLJVx9jEIcH4AkethqHFc1kIRBgPH8us7CiK46jcSWbtaMnYjdiUiAhHPH/n9G6QVxQDajb/pk/XNVXve6u6jc3eGvcLcLaHckNlZBJtHItAsEajkObsAGATohkXfGia5szQRZ5I3XVBXlYBQN30ifinaQoQqKCVtBovKCMHhcmSc1TUIiByqRS1ycGJa45sQJKGJRoA2k337rzpLdmxegD7YjaJMCnDDwm/PdDZIaBrqSkpDoBLnKMk4AEKCgCCUzNffjlXGrjlFEQgkkAAAthIhgCLPc9Rew3IZ42apaACE2pWaTsSVxlZVxfyA7Rq6IIYRN3CwKdtm8kCz8lOmCJLP2ECbruQuCMFbs6IiylQEXi0lVLaFjf1ZkaJWA6gLM53j9fCsBo4XDjikzI8jHBBcEGu+dS3b4CRFIJ7XbIZYoGGQipKqNKIRd1k+f98DEp22Yn/C6M4Q9/bnBvuvlgrmFyZNoMhFBwGCRHcGgqoXZspHqQck0POkNlVfSDTFaFDIof+QPeyInefxL89m3M5ucA6jpGYIATBJJQ0GIDZghNPL2JqLNUXDbotKig2/60BCgYuQJCJHy9MmUCcG0O38cJCs5w19QYm8ihIx0XslQ1RCXiJ0dTdBiGxkB/ZHBFqJaYUXhrpClVNJfyFgvmI3QOSIk6pkg/Zx6gQIdgBvCBViosa5Iwhn5LktUXOQUQokEOcLyCWllRShyRbFjoBakiIMpUcrimWY2t4UpOlVQGTUSIy1qElq4IQUAkMTQVhVUUdxRGNAhjV24ECZES5Hi4EF2TboNxTUrfwCRVILhdFwpc2jnM1KIjk6KTGok2e7AEXnPEAUARpi73a+8WleIH1UjqgqRqMMUYJIXUXIKQW142xZSLCcEwUj8vcUQwv7dYNoEsU2Al4XkgZoASdym+D25zBABRnPi2k4zqA6pl8ZgkogInbHHZVMMvQ7MJtQCPzoUgadSlZR5AoDC+6IDTABMfIzxpxO9u/4jjOwQpchF/crp52h39gQVXTmr/xJAwJAZCjEk2MPa18dYMoidJmjJone9njDhn/ohoHlAcKAcdZbBK+FdsEkTYVu2p+bdPkqEXFTNoi1w8aL4wJOmFtJalkAEwhDNhFR6L1tLpF2WISFi8VfYEjyAsDY/BpQdfQ8Q9kGMGJR3KdYk6Yg+iYyNenvBJ16DyuqmdfV6LBOSyT4yFpXjcMgbm1ui++btj+Po71P7YMrYQjoCaG2A+iP5Xvwh4bPos0SWRWQA8YZhYrpYE2zbIAKHMfy99khEmZOmD8xkib3gR2LIqEGK1Bq42YUtQALnLefp4QBitDzBkVwEXWVrDFvUpZoXlvAFCIwSYccAdQDiuidSd0BWJ9mvyO1eHyeVSH0SFeyFFpIdmrZAkWIpNC8NTcQegKACVAhThGz33M/h6j42HVQACCKDcydtpKeZ6O8usuPizJm0aAb6vq+gnDArCRsEWBUy5S2AEIbHGii8jxHonAqBlVKQXFTHYlwtdEMna5YT6Qb1S24dbrIK6FNkL7UlWmupc/VPmjmsAEksNxKGf5ZgTrVbCFC5GremksIuAAERgEM/3unfw6RD4WglEMgDBgEbnKHreTnucRI2xC3bk0UJ0BwjGhRVVFyMUwAlNHe3VgR29WzJ0MO1K1HCqL2sL+5MEgnXs4jjnXaaNXZP6kp3hB/3rFOfcpw511kC+dhQ3IAUF4LaYjhnvHIPkH4eCBc0CmU5HMuEIqEIJz5tRauLOkQCBK41QVnmi4yjqJAdIpQ3wnmyBIpL6OGYn2Y+cNRt/Uqur/mW4AONxGItyEgoYcShETom4NZvv6S3PMbUab5RGm80gvtAnQjtcYdGXM4kEXPc2DkaPAk2s9bdjmUgWDrkLgLCoWSwtwkZABQqB/t+Dg8CyGOATngApStZJxFRYSh9iGCUBNFC6+9OXl8qQEA0KaWq/uqI3ZcxWEnKThvibBEimHPEKXWFIVFZb8w6RAGmebJ84UKUC/0vG1IRIViHTKI8s+olyWwnFNAfyYCyjbTeIWIsxLQz8FxxSQUgD1j1r75z7Ow6+dvLoO6ESk6B8S5f9Xw90Xn9Mn+NISoPUS9MWUZ24ImQnEAQVZEtYBRWpoYFNI7mMOLiqB57kp81FwW1BXryB9zkOHtUa4R9rvNlKWLrY60QSdPyUiwFF1FYJQFiJLE1UQXxIoJFFurNNPCgV7RQRjG6hRbyVAYZSkmInQWsNi7sf3ZbhiNW2LlGkregRJdhBYYh5FxraKE2BWRtNC+mibAhxIm1INmYLbSjLYgnTLt9LcEZ57SCKpK7g2V9+Htr2rV5GfExlV2OpVshRgoCJCyFCkIIUwBxbKPqB0mPjnaEazEURTx1BVQthuAWsuRYDtAuKiqNDfFUMrF1W8ZAiHiuuygDiUXBOvArddjyGjRjXJCv3VKN65BmRB6YF9XniJsc1RDiPOOI4SDWMIxU8HoVSnUypq4Kp7zNMGfCmQHzmpqFp2aZeZxAMwdZFiSdcF/+mLlYnO0IyCiwCd4huMORtpKy3EUUgBqYgzHlq8APhtNjs5KKIDzCEGDCAo/eS6aCQURVoLOS0SJXYFLE/KIoxy4TDpQYEi/+QdoSNUReYHA61Ltv8W8xQYwYPKC1Tbg4izHd5yCQgo7EmIDooAMU0MmOqPm2rXDRJhg5iwMDkE00epKnyiykrgYaIBIFimAHhGiqA5ZXt1QXVOydlnegC5vS2QHUAVA+BrOsY3UszN56cY+dNipHUqTfniZBCE2JLzYgtBOjWxii3vGIwNEp2gJDPG6hpI5SAJBoxCCf7TzZ8FysoQwKokAoEDi2Z6ASNGGmiOzagZ1iUZQzhlB2xBbaQTqCCgnX/xDi3YCD6swFjkUYX6DM+XyJRiNUBy5NJcZa+3whnh9CLESKY8huG3w7UrekS6xnjcAQqgIsj2CeWGITgxJKBA0iiCIY8k/BjnDhIKkQ6CCiDiKIp66SEQaKwsgxgEuR5EgduGyK5ph6nV7bo9NgQyHDkS7sHJLFkor8QqDW2pZDIXy9w2IzrpzjmopivbAOrLPiwjCcIz9BmJ24GpPNs4GnQyr0c8bbHNRcKfOKSirc0txOEJOszCCOD5EtmDIM9hXFbSRNnpEIcZacAhwBLoV6eeXE6OlTAuFAcADjhHlvCpL5YjNgFEciLAF9Hnwc5VDogRXZx0OIHToUokzwHnEdmw/gAOYoY/k7ZWzW5DCa3432Nq90yrzcUalcyMQ5E9yBFR93gicyZW9IL3glOOOmJn47CTB2hVZzNZRoRGgP9aIojhbJN+YI+Ba9M1O/syQ2Kug84hKhMPTCBEAsR3qKCsUN+Um8ApEbP8vkRc0b0HfGeMoDtsmQvu3N0HDxthKepSi3+rEWeEw6kJNs6CGWmVHQD17NX+34XFSo2wsIgG5VKcaQ5FodeBQUaoIofQIStJVgRBjCfzmtmrdww0m1huWIhjuZrYxOCQZISAMiLGpvDCOQZSaM3gf35lvO1uvhPZgCuLdEASpMFqQNYnpd9Q2rZ+37s1sR+bSQCPITpk1zgKxE5QkRYHl/e/pO4c3tpfimbOtlDkkUHVhhZEzCDRHCi0xdhCqqN4ImbVM+0K0BQRrYIkgs1RoywOYg6y9kzjN4CSiapUIfK5m2T+9CNYD7AMhREKNuL8y2qshpdbguxfyeWXTqWcs2CEC8Em6IFxgFFEwidJszwaxnweg3S/HBQHinYyehwm2HugKjlVmpK00TSneH6QJoSA3JeoIfOfa5otoEetygzyvrEdGPYkhBMuta1InIGGoJggIm/P+AoC24iCkG/MCXgt1mDcUhgoEkviLCKkty7SsHsMzfDTes96JRagZVKnTpA2oAkRMPZgh3lBbJ7kCwUISGCo5dKWhjIAcZ5rjchskNNSCBqZH/r/tw5r0iNoSHCxyMBJw3i4xxvaJckWlJAhgTSTZNyXVWbLj/jZkYzbH9087MW1o2jFNCigRL6+oYZkb0tn2tCLKloJhtHEQbAifC4wBAqRURGjAzOACdaiRkB2AiQTknCOwlcARVoKyoG4oUBZxGcb5yQa92JUEURSqEd3ssvgIFjdodkjsCYTi/v2rJfFEhoi+R8txeY8Kkz0MoEgZrA/TCXBIQxzhgv1FY8whorAV65lckExXsl9RHtChgUgep1PJKuJaIQbQHAvyV18M/7Gr0Q4SBY5ZOsdX9uOMmJE+ZRUowlDOZ+vyXUcr2Xl/C0CRwwGPhHWpgE4GImiSRBBgOHH9NH9romkbTZKGSmkWcmdSmM9a/0wF2QmnCm0FBCWSePU0l5TclErUBNiUBiBOz2qn4iANOUTwEWUHUkDx6tX464KrkaMdCIgSRy3ZUSDGBY51miCUBJzM2RpoE4oGx28lL2+uKyNugHgu4sciGEUT0nllcmhoEIotg7Yyx+MZMgtqCP3YlaYqF91qUW0dNbGeN7uR9kE4G9sz7ESWlACiKVZ164IIqIgdo+bN1QrUgGVDoAQOUo5ajAIOIQYEw0FgZZJWpKYNLzRjjqgJep65clvYL8EiqF/LlMAI2oTiKoEwb181gxHSnWEWXplmgsSa0NF04umX1Y2Edsl3K0lkD2A3LmXTaSEYv81DkUuYBKIp8QsIQAQ2MMIZHVPL6JXgLAs4lEEC1awgoMZhnALxOZ9XmykOA2JJoURqslQPW4kgel6NKkrmIP5dfS4LYczMpDSHGdMsUysTHgulRIR1YXw6wWCZict5VgTvgtCbMEjAlYzJWRqm5LNg8zjnOUWOLsoWiGuH6AKZgyQQMIUVIFoxat7crCwGcjZFO47AQKT5IkodLWJmyXDLAuOVJKQb8XCkDnZERdnzFDKuwxBK3cZNKPuCitXqvr+nMiEVbOODX/sLL3x0p7ie7gH4rbcj4x5hQf60AF6FgR2dlcNbRCJFjSSisHQZZSttWkORaHMckWc5TpCuuUiwrYMkEDQKIerTZscBJCw1oYCiHYsQowvJpqgJX8z3m0ShUvv5UIOjU3EQbRMBYCs1dSolSIgbsDSpWlFZtxtzs4m9T8RiOcLGoJOm0cjz/PPrmwbM8Pd53Al9ATUryooiTJeUw0+CUS9AmEQh3kfj0allMC8hFUCEnaQWECCFFSAaGTEjE4oCIYp2DCKIRmvWteh5DuLz3HVUmsOVX/i8HB1S2IlTHG7BnIcIsDy91wKN0DJShbphUgiWtoyVOyKHvU7XoeDx4WM3iyJgfG7bI6zEeR46HEEv4M+jGuS8R6IcP2+zEeD8OQE4/0R0KohADWfhcMKqDpJAECjydDg+bLRplHxzM8PKPccXRDzenZSeV16JQRSoM2CzKQ910IU5kmq4bgWhKEhtMpcwI4Iu0HllDRwBeXkDjvE+abVc4rruEOZ1MTbvgxVESyENcVQQkiRwJBS1I6a/2A6NT1YFNo85BZB1rHAREMjCCHE4o2b8TVxQsHhjJJQgiDMARKlIXQQ/AFwJLVKTtmiWS1qAgFtE3dsa68TEsAaTASYuUcFU3Og0vRjFrphCaTE7wmc3bvv81GBbIV3QTpwKQVGWc464KEfjrtC20PInf1cNcRQxmTq1LOeVC8C8qPsMAYJNIYIbMMR/l3sPUA8lSbb/CaWI4cBEEaUidSlKYMBxtiNOcXylWAV1bAW0VloGpdBKow1QSiaoa4IUvkEUWSDgqyJKGFsDHJD5PrXeNUpRhjHDuGYdGCMXah2wkqhigeoIDdoH5nr0Hxt4xzAp7FG4mHvm4yEYRDdQp1KnSRvAAkL4A8UZNQvfLxEgncgoFSUBoMjRc7Q5hsICgEhLIm5vgfw6qe4PNoUd99901VAyuhafEJAkCsHXAFELsIamX108FIn9E5LPSmdttwuvCQvwBbRMy5Bhp7mLbA0rjKVYqwEV4ZwNtbE3jWdDdoOPk6Miet1KUssGAIGfJOHRoj7ftucKKdqcCNEBdYJEgZXkPJ/7X3KQEBxn0npkOwAdWJELDB24K3IJ3KO2tXuxIdKlDSme4G03oOBoELujosLTP5EAcUhELr4EIy9hAzlmptICeQEoCs28eFMx5od7ReL0dhT7R+EllDLP0ibzeVrlzLNxdjSEdWp1LPrNv1Y+XQDfEE2OdhhiBKpBC6NMpEJF7RTJoe6xSDHMZR3hfZ0qdB0FQGJaFqcNyiiuo4kpbwBkExUUI8+FAKqFv9laskfuVIRQGwxY58fDqutTXSeG8uqodt98hNvf8CzmRUOO2LPoFBbymA1R1KnUadIGsEAQ4pC/d/mbpdFCHRAA1CaWgBpRXEkAqlubNUMs6nLKrqS1wT5JNhXc9Aea6ClE3wJjNKutEtJKaZNMLyJ4FLnsMSOP7IDgOqrn7XjnBbQ9RXUGoy6QAEYo6hTGmXuVM6UcpyEkq7g3w+ots7MIPg84zZGyjxEbwAJC+NMl8nxr7kDC1RQQElUC2JivOkbh55nGVoI4ptOxbwIQgEHTrHaD2XnLmcrdfMjzUhXl6GoKTCAcVxOFFBagQMnxYuEREJk0knY2tUvPOxJ3eB+mCdiX87zF/Bd4tS9F8SyJ/vBCEueAqwkQcigi/WHjTiFCQVinVsei3/xr/dP1gj1OagoIAFBcWVREmjP7bYyhRLNOTuTl4Q5ND4qGTh3284KwdiRuJVneZRzRIXDdwPHiPGMyoBArOiKDoEBWON48Ip2hYwu+AClQDCOM4KHb1cxhgG1dy/qxU3ljosAgHs0mAlFkNxickIrCibovIIAAUgBCmC6BPsLjKE1HQiIQowUAQwT/JbWMerOwU4tCrqLBkHRQqTUD4b9S4q8wj0R8zqkx9GcQSSLaDMVNyebn7/OcZ8g0HgSK7t1y6kF1r6LrjNwmvZ/nacerDFYvtA5IsQBFJDe+cjNIUDkwwbkJPcNOZGGNK2rdTtQAkx+FDhydkac8ooaT7dmlOkNmtFlDMNqGctem+iCu8pBkGv8eFqdFX4zz9Q+rjNvjahpXMoxrDAKuGTwPUB1qTnOGBlkoLxcd4gxvbixm6kJshks5/U9RBBwz07d7c6T2KzISzELzAhUxnUpddFr6Ob9dWhylqThZRGKyAKBFuNIMEjhaHBVoeSAOTJ2aAUfumHLBeS4cfrE3ZMHHmDI+StefSzUEVyPJrkwut9QDIeKA0cuElWAFpCm7Aq7jpai9lyvjeChG/ABJICZKc0U2goYQIBE0L+o+QygCZBDmzNP+INzBRoxKwQYSkB0otpJwtBvkMFfoCKGYYjTqC8GYU/2Q+QRnr9P8OsZFSCgi4J4Fp0Q2EQDgyF3p4E9CAydIlDQ5fcBBj5o9ZKOKFjSKa+uoOUyQCChxBuJAPqiDiHHMkhGIxmENt1TBY999VZeO5fIW07MDSggN5YIFdBEAVURk1K40nbvZhkEpMv4R32DQthBH5JVqzKB+YjQgAzqwRJJhZLMDolk6QX4BG6z93Icd/mY755UhNcelAt+UtifY2EmTx6jDiRSNc9Y0oyic6USI2qkDJh8JhRPHdHEWEJixunol8EijCBM+eptrv3iCleJWgSjCFgolybIGMlkHc+c+gCIYMR4Awh3FRt5mSEnIXt4v1rdEwFopw4hpJUdJXvlza+eULaA6lfBxCUDRONCJLcJfgAgEwRjP+yA37k7W+RwUiQAAuQBgIjpPxq0QGaxTBuBTn8/7Q0ku0qLYkX0egZNxmxIkp3kML0EhPqNuEkB+nMe98H3FqqrGZo9gDIJpmDz/7a0jM/QzB7CktcUSq4gsBa01XAU8KN+jasM0S2QskGODwLqOUDjdYCFGH/6rE5USccCln0DloFCHHbIsRI/qGu/fGCQXtmoL1tw9BHljpbGhgFmYNdwDQaPHDBh4SMcar0j0As1gndJfOG72GLOrQde+hqmPppjOXX+VilyJi50OnTXFho6KYJzhR6bPnAcwEN5MH2qwFOuLQlRMKUOiUC0juJcRfHyD7YdYEY0JhQmxeItoIv0A+sPupfGguiloUsgsIyoc+aPiEpTX76tTN9JLtZbowDEpEiiEcMhNaXIcsqap87yuduoACNEMwoh52peuxXui4miHQHiC/i+lIzBsxiax583nTysIJT3x8UtpjAKuwx4ojsFUChOUUNXriNpkYSdzgtjABt0secEAEaIxCgqJENOg8TN6VuYn87S58uCOyGcLZYjH7QQq9tLXNIkyhBo3bFFeweG3m8LCpkc5DhlZAtEFi7pKUAB0muQeuT1fssgKMhyZEkQz4oDasdOR2ghxCkHcq3vo1kx6O00qQfArFwCswRZVYnAegko+Qk2+IqDaEwjZKNDBi+xiBJoYTlnq0TTkAdRXhS1/N/FiFDKR80GfBfAMWNMJAz+GCKnOUloGnUgAnKhrCC4AFDZMgo+0Hz0BQYKaMjXgo/JHRtUEvEvBRPoS1OcAB4lvEF/KAiYJ98LcDIdYixfKIsQuEo9spKKwiFowGWVHLaGdY10SpTjdVYxv9y63+xvLxRmP0zyu6wguQBSyPsBjJnwRPbf3gyAXpj04KxkKeDziGXzVhsv23rc78YrMUYKyMfL3VOglWrgmpmsaKlszQjoo8dw5g/EXaEQ6yCPT+geHeVp9fZzx5UyjmuuJHqsEQhELgpPQjyZsvAiaYTqVuo7gAkDhI0WeMe41KHgSEyZFq44CwQYSLEh26HkmmLwG+AjHIT76keC+qFMaZUVpb0QDShVu8gWsGxSPyvqmjTY1ASfO1eLSWh69OaTh6sh57klCMNoJjmCIUcmWEG0niLgSLJmQ9vcZOZlnRYAOV+zqIgDAEFiO5PKejXz2vvKICgilWMom91W2+206WUUQaU+EkDQ8rAEqegUQrsMAGId0G+Zpw/kOK6ZWGDFPmH7nYHHFD5CO0W3LQsY06Co+3W9iEuGMPLK4QBpyVWGJVUKnjQMZiAY6+Bp6BNSiF9fxm8QskmFjT6QCycqicgeutkYTleBiJpP0d6yOzhE2Z6DKOI9iFe4DvHBiOLCYjl8xQ61G6hdjoAWtfmnsoYrC9aXEBRrsZjO0SWhNqF1JmcbREOGdwNXqQgAh3WAgwuPFNCuJtxcMuaYrjKlKwYbFa9ym2EqKcJRTVrADH4Ve7ysaiO+L9WKhvg3WWfvbxHo3FxTtyV6WfsG0KveYmCwbauSR5TLRuBHZAAOCOmAHT4wsCLy848Uu6W5XbKXR5WvSs2qwV6Jxmqa4Wh0BRHYZFCWphFw3YT6PeDb+jFBKZd+P26Sn66nQDZLBIk+txQG/GYUoSJoqrX887iZG9WoHGT9kUEo8hZDpg23h2ajMKIn3FEcq3JRJKE1hEaWSyDbjQHBH06TA45mPYEXI643McLdLWbMiDuK6rQ6AFmw2g23uZifkeRNFoW0xbMtlSWHw91kgJOjsKiezF08XdqBbgGaKRUcGagmW1dIjN7pQwtXUxZQSN4ubypZbqm9ewYsBhp7ZzGvjVOeApgGBREEIa2TIdyHOdShuXAqHKNMhENOAnBHoeWabsQoQRD5nBQCBFYmDxFSjRWkh9XkbjlQBUw0zIscyhGSJO0LimgDsQEIOiAPDuDf/ItDoI7wfDAgbLBQkF94PrWVRYcx5y+JGLwjiW0r8FRYnTNXsCMJwFssOQbFMp4IAAaeQaZD/KPdCE0pjG/iNHKCaK3RAq2GFmkJsR8Rphn0Iz1/AEWTW5eBxRWOIARHDumpRkgUE7IAmY8tYMlqgA91A5Hk7yB2lT8mLVAkxAWwOJKlkoeRLWf2zHVq3LTMFq3lRVxFdgCgfbB0jWvn92ohblry32paOo114k2c2SHbJuc7XKYT1V1Y1SqBaoCVcJNZAiFIOd9qN0EUoMuRzPi+wBfL1pKADINVOygcNQyZO6LYOtTEhi+V5sxKHoDa0G6Ir2Sowc4cTwCJR7ZQALCAI4njapHl42kKjSKQtK++JUqIR6HnMALZDoAM28vYS7m5g2ieskxOa31etb1A/iDlRRbPFgxUYzo0hxScRi8edaD2HQ2I5ohmhcOZIUGISitawms1At/39U6IQztpt11Xe9p8olM3LzFcAhH/gUVPEha40O/34n25elHrKIsLelGAEFsEZFDY56I06544CArqfUF0v50nssMGmqwPe6249bDv7O1RYaYQYhm0By/nryunIUDlG+dLmAjlO87iuISD+/OMj/Pjg9kPFdRFdB+MOGYVX0qMxBQomk0ZBDowkoau9RWdEj0Hnxc6yVpVL8Jp5v3KMPsPkfYNXbRYBZrbaJGGnWTEskeFSFbXMj8hzGBI82A1fNY1LSoJwLBFkYBoEyQ4bf+IU78YCqAnK5LXDQqxALAZYEKxkAho8lYIYSQCNIQpKEL6g53M0k2k6Xt+yatASDhQ1xqnYm9VYcGzrqnLc2NK8PzvlK7ldYasJEbYvsuatDN1XZAPAHCWurdA6JcAQWLdHkIFooONhD6sYH0B//juPaV7e0i2C1UGr2W7zouhb1Cjimvm4r+Nx/LbJKKxnWdYi8Q3cowZRw5HoNz9j2EUxm4E9wOFmtxlFgqoycE1YOlxSbqcg3IRqW7w/AF8fl8czN9A41u0QLZpGGBjyGMmvOGHUj8DvP5qpJ3qeHTHCtG1JHVUEACkp0xUylNYgLLAtV/l8z4TzXDjL4bp5CRKQfCQWYoe8R/ICLSzP/yKndKhCbZuI1g0Rtpr9VpSiw/UsEUbAuhWiqqkGQOQxEv8oio78gf/uufSZIvVpOKc80zPfsr7KVtvPnx1VGGMpeKHMrZEWUQNx7KMk2YygZHXnTCkTqpm+l0eJf9h4PdG6PnLxlnKrSSyil/MOQXMEgvx+svyvuiQ8y9cAFFRXOpXXa4uQB8iOg8bqnCWeQJfQ5oBjMhYiCAAwOrFJayqXck4V3t5Htz2EEDTiMgl/aViXBpHVxbMiAhWxsOubICcP47Z+HK7c/ilBj7Qin20wRFY7yyVCmTbApoBV3llqdbyOfd650C4+7CX4z3jkFDM70w/vX5x63w0JdxNbVxrfVnAcW7gmHgMJEWf+nUpGXVF1GQk22gjG/llMBC65XlNz5AuN7SfC4qxvBJTA+nI/gAt9olkZLxQIZtujgeLRcYwox0mAdR0BgjVCniXJRxoK82degbYgnQcM7XagzJaGaJEoKKiAEuenIM/7PCC7hAZVUHOMqznif3eUpsSkVbsCKehGVGn2zyCtD5ZxMiFk3ly+E7gHmtXGDU2CcBRECtggKBhlybzxWYjEGbh0LodyW0QWMMDVjQjvcRdvVxco3T6MeiSMUo12A8IWRkaZxQ4GYVOMJkxin5+56sh2bM0YTzd0+pNfxvVjpKNqNN5gci2m2RIXBEeVFTpHJLe6w2NBOAoCBIT4mx44stSLyqRaTXXwvuPOdGXivQelwrJO8x2MqY0wbXM/XW00FoHTWeh5Oj4VLA+9kdDOrr/W5mgFoJbEAxxgqONCpIRPCuK4IiBRQYBgjfiYtxtU6l+agLK82+TUBu/Vs5iTz3PyAXQCYTkqHM3EraOhpZDxhyzxNU0ziX0Ta9kvS4rhxTPd0ME9q5ckFSY1URXk5fPcTna5gZI2yEFzgmU0Zbq+4O+N4F7ZGoAdnDI8a2LVIPGMpzlFAdq6smCpAaaW7UBXC/YIQlcSJxZKjpZhgueMcIMOv38hw0znQ/BEtsd1kKEeCWICKFwkVWI7ITp7fYGZnk0Q/7yQJ7OVtIp3j3JFlFSPVIhFlHe1i6sqOongAgDsbC5abCBTjw8WGje6H4JvcWwITBEbMpXBGpd47z7jQHGyMOtM9bjjiW82Qh6n4X2HTH8Qg41BIyCKI58GU2I6xrv9xYDOdz2zKMso/wvkKEFfwyM1WaocLXJfYB9SMhRc3wICq6XQCxKCBlms4F3Sh14Uyb9hEOwZUzDEV0qWewVGFUMBXk3wqQR+WXNM/vnEwQUbECpWEYZFfIrpPXsJbp6Rl+wwDs+pG55WSOe81mh5baFtCWs8cr2ig0VKeSxLYN9sqNe5YFEHnYqAHFvmTZYFSNu0ZSgJBkJwmaODnz4s57QEoSDDrlC7ms43QKeVoC2Bx51lcfMu1GSo5TKVmBF9HnS5EohVbBWaRA2PEgyTfaxQtNWKKjWIdxdddHJBrctX5196VP08i/0M/RnURY20kHbXGLIMw5XHG67M3MgEwqmcgMbtpLADzUz9x7/o5xIyofa1d42pCu8cj4zun4gwwG8+aqcGAMdiT/nmHzbmn5SaxNM4zrCOiXKRajro4y7HhnJVxlvQErUxEUALdBUP95bd9YfbAp2+VaT/FfF8DRToYyBTg0FETThiStzn55eAljIAqmudIP7rHv+DF81fQAjfv8+RQB0BiFq0CI4pz8IKxyjWQA5I0K9pKbwYPGKe6OV8y9bkdSquVjkKmIDIhW2DrEgjCMWiOBc3gug0guLorrp3/DVzP9ePII62hknKSJIrcU53KlEQt+3g2lCznCClO5/ncz4GpP3ifamwDTJikDzf5K6YkavFYrw9uo2HkkhSf6k47zJoyW8t2ObsmoxSFPAAUr8R+CqL8ThmOJTrC03q4qiwu2wguz0lsr6Zu4v3ThJfxrmTWKv0BXigJ96GQgUIMRMZJ4j7+w5nonKZXS3htBLSoYwCgL9A4nlF4oeN1VAGDZ8VWAAQcNT6XJFS3rcXR1Oki1tCLhWWs3P4Wnd7ysDjG/w7/rEIW7UUSas4JPxOGrmNwqQIqhwdBT1+4FUvKzZ83wDtn9HcKw0kiOK2VEzuINJKIxhx/QBxSRAvrSYKGMpOZyjZC+gyN+WRxJtMuV2TgPfpjk5cR6IQ8Pax2E9G5s1HvQO5u5iyjoBQwQDYIf1hVCpLfx9jGxFCj8gmgsUGSXOkgnU38d39jzLfp3DQKZsZCM6oGWYiBoT+JyIRkbjaD4bE6c6J4owWxb6lCtjUKeTDyyvW3ikp4Pj+4/OfH/4Z499Xn3VZyjWKLjQuf/oMM4rBwDqJkGdwEZ9cWo0jevqFiz94lLP61VFNqBnarNBUkfQdLgxZ1xEgQMT34xu8wciOF6jTiMsgRX8qmwP0rLp/KcqZXLL+JjaeR4nKkg1m1jCl4QRIltOhxafEYMjNFS9l8AAqim0C0OfGMFebxiEUfYHRHkQdWGPpShZPEKUOOoXg75r7uW9AKqW7q3RIP3I5s3pCvavpBoKq6QuMKWmqN6NUe+RS2GD51W0ZzRjiyYWHQihbe0boXIxHaNY+9JzVT+foeY7wvSgS80b94x8/nIj+BBW6RYQbsTCovFLJs22jBeCHEuTKcZz5Pepc0RN8BOzPj9sCoguISKOsrlnjXyJt+fR5oaHDEMplid1luoJwQdlGFtvK/2h0fi9d98I3tgLiVRKEw6aCtThZmW2mrFH/hrFo2mDVAt2BSmt6kXe2DOmF3hRCARo+vSpKIqhFNVV2ZzXEhh7EL760jjroVAWLldzf3W++06epSSMCgAmN8+IGFCq1kqnhYPwF5BcJJsRWjnE8AzUuJKEI383/HIflQvkctBD+6vioouHv8/SXjdv5tyogePsTI3vI1aIHwW39gsxlFdp4yh2otnJR1wj3f9hPBc5pkkCPjgQd8wL4tSqSXhQSLOVARxA1YCeB0ixL52C9ewbMHFOgAzjbXAdtUeC+lhfBPuHllCe0rJ/UqP3wDtHz7vYPogy6Rxd89/Hdpe+Pvrmd4s2Xpxt7kttKsweyESBGxuMGy0wwthJzDBS54OfX1mAQ1XA2AQCwKlv+N0a4Pn4otGYlBQ6n2lc+piz/NZYjWyLNoj1ziVcrXEJIT9hqAzmr+G78JL/CGmOFgaqcVqENm7QUZmdg7wNNiILgepaFcIizyYPWd/V6yxNLE5UGzVhp8lAV/KBxyy9Nf/7OlhUqwNo2Il6KaD5cPd0a1tzeKMAXgoH8JXO/sb/jpTIjrXI/+TrHewvD1WbZLxwwStchGIhuARk18Ubc+Ak3YpnhBoLBH6Yg76YRW0U2rZ2JTnoHs/Ru+HYr9MijwQ+kYKsu4isDRNT9qcdP9P9V28KE5o/DWrMk4qEyK4NGVIMFXfWEI4eEVtmZZRK1U9QbjdNTvngQFac/v7AlE0QKsl3r7xd/0+N7/SHUD8AfAgPC2yQdk5WOw+exwqBCvSUjfnpNTSoCFd/lPrLdDcIDn+5/IfuI/TQPkppTqkDMMSdqQuJyTj2xnPK8FR1NcXNYJ4AUHQa0AeB//rn7nuOiGlShDKJp2KOH/xjKqnT6FBq2MQQz8UUwMVZCmWmobeiNLnowxRLwQEzcdG9bARtxSPDPHcU/QYqnivrcMBGVhFA0Z0r27g1oVZ6N22P1rG8ZHn/x4yf6z5BTsdyjWpcsYldaVmsF7aOU70PpT8IygvAmF0+6JN9ANB88AFjhdmliEqoGlWyrcqYcOSX09TAUo/vRVBmUh/tAH16E7HhTXvjp0XZK34KOhGtmc6+lBFR1Y9DQy9WEiyqkTAQo2ilI14ax5FMeRfOp8vKMYSV7sTUw1nzxyNCeEi93L5ZMi6+6RzJ3F/4ZaivTuIxHKbr7FTVHX8ArtX2bNJJlDeY3Ev33WY0RoxMU6a3SOPB5tJQV/eKOrAllx59MKJZIheZ0ACvgoar2c6p38753THd3D0Id3hfjAf/BJG2xytALSMXOedqYrExBWoFulZkjvpCF1O87uDaFTiQZNtyPTC3CafX0YoKgxJpAirDoa4BlXkM5PTSE7st5gWaj/tM+fkJZnaZl2qXWGzUYE41bzQSCQA4KJRuRmeF6ZZBgOFgyPHgMdjEJcyldFUUVhvUsPcQQ6YWUti4Z5ktpIo7GLnA4kG0EV9a9BqcUlouFR3V2YzEwJzxpCkELMmREylQ0iUhoBVmMYEQuinOvo74Q5vNhbUVG/sTu78aMgTUCl1LqTKUImPWfcd5rjCCicxCGkKl7mN8NFpxCT36nxzWH5EAHCSIRF9FNM2FUtM99sAE55xrIjIgJQEelAOc9TfGSGTPgM0gSrjRkJ4SozjspmdVwjlOi3s2bA8ql+YoCC4u27KRCd1l9RkpHx0dxJio19dvldZhy/kZI2M67dQYYCOvjKRTCzAAtg3mrpApmXVD36ati5RGJbhwRaVrlHE35C8qeij0GOJARLaoFZYGLqb14l8llhRf43+f/LbsFIaglIDXheSbwOAEF98ybi/ivACEAdAIB1L2G+y+07eAsa1KWrjJZ6jRZuVSRkALARJLOb0HFreo/cOsEYORIZfLJK0jNnlU2CttHBICzJNAJBFD36dcqpUcIi9TcK44u1UlR9uS1iKDTxpeOVCgiixZyiEtz5HzkqYVBnDWWwD0VEWRFGltqKiwfNNCvtgXJ4mdfidmgE9TlC/DpxWt0A48GQ33zTuwRla4HsEylJkksvuo04Z6G4l5iXGmo4dSvaQTKAbny6r3UNaPasoykLj0YwcGEoRJKgqiIZYUM+H2DLlAk4JuVQt3T/lCpXuAgcG0S7IVMaVHQWOYFFXMwgo5hiTem/xN8ayExwCU6cLvKCcPmwE8TmQlNmMzmwWcSaUgAdc/2XwoGNShwy5TpXcGrhuEAdXfyAkJWdRFsLPVV8L/LnpUcjEyiL0jQetJdKiuexjGZqhxw3z+030AngkQdIAT25E6TWrHUJi1pBMVL7FDXFpVZvWeeN8VMIZwdOcz9F76o3mRowUF0pkFgt1HLHQ0N9du1GmW0svfLt5tOkcV24+MCNZR5EOCIz1+TiYcXVEWG0TuUMgBgU+5pQo4uZSdDlt0BSgkWAjJAaO7N+7vIN4CiOamlLJjgwqeDU8l+4Z7laElw3lwmAPRGeA3/c9O2p/VS68L1LAk2H8wab6NywifkeXJZQCrtcZH9x1VhwduC8JXr4SUsdF/oc4ACe5VnvsuccyIkIpUhkgKP3evnNZJoBKJ/0Q+tfina1qb3TJLgI4JhlOwKvcb/XX4DaZHK9TpwJKkJaYbQ0NA1ueX4LPMLZKmza+A8u8BX3xiosgnQ1eTVnZ6Of8/X3sE9ZTCUgtvZxnl0v1kWUSrLl9qPeJsOiNQaCTpSpQQHzrPcz+sOYpNp3MM77dbNs6IIAgNbs1Yv0ZrMIaImRTv0SFopRG2oJLqKjy2/9lJ085BE73m7A08JqHZEBIP0nNXJ0FpTuANiELuXzDraGAVhcEKdtfBS61JECXp7UVlz2NxTAg9uUU/2504M370vxebyppcroBoyi8EGqpIbxAHAXzTMynMfMglnsYSo8078v9Ng4X7dGoy5qxbV2xlOmSwkvbnPHM/N9fIDCm4AgDs7q+REYtHloknyQuP7RnwDOQRDUNYQSYFlMWAYlhN3UDbKnWUgMz5KbdG+HQZL7okhikMf92RGEXmIIrmJsND/0r3zEb/v9xzOqvWAUMhyTIc541ZqhhPwGSQ7ASI4dNPrzvEeMgieRMGARcQUhKy9ZhtnR1OEiHx/aW+HTzasYuYCAdO7Jy3a8gFo9tVqsxRF/XrI0lkXwAYxwFnehhkCfOFVxf3+wV4gbNue3q/PQQt8flDqQVAV7uk1soFIYqsyIpXCcFZiSKc+STCB6S8a7FlLHGEgzpLo4Rdo96IoRDnqSRDYWJXaiNjil75NhiEdy7Vdg3Xp8SXSP02kssphMQcRRxnRfFCiE9x315wFRutnurMo6mRnzkp4p3/g7xZJPJzSv/yo9gM7dOFSa2BeBE6Ci5epVheCY6Xvd0oFi1KU60GKKhMDYztgnI+i6qi2UBV4TCf4lgHn6MRBdd6p3lJteAW5uVqxMcOP+pPYU73AyTSmxwuByicgttnIMjaZrcwJyFRb+mSxM8pa0KGn5IkzEorZhTbh49wJbkW4eoK6/LJYE1UUVA9JTtwioHVORiT9odntN/Fefql0i+hFl4HbNdar0y6rd+nlC1bCWpVmK8DA/puwOuz0Lvo2fB2VmRVyVCeJLSIQSdFHRPpU3Wf3ml1VaKYOyTvvYIzcwPW/IBG+4wwaawXTUKrOb34E9Y8BztxnddApBKCtBS8Rvs5wk1eCSkgIDHcZ1/xudzpCl8PFKBGZaN8BnVVY6NI2M3ebXwwGzryWCWN12akBXoE79OXCNLnQRsFpcZ5tnOwWsRcrusXjqedgGebxjJT25TukRWNgSBA++zcLmWl/CnV1A23FE4L9p4t/tTNnNm512SkAT7f39DGja1vBTQLS2vVBpGVX/b/ypkmKQxVI+8HKO2eiCUfcE5CFtQ5wMp+nAWMYxC3QSXXZqQHAN0ZmQ1BrlVkytwNI7d82METwoq7t8Y60glUxcTSQOW//8+nXqDc9FV6ZwEXsswiILpoXnQLw0D9m6BRQYkfaGkm5p5wrzFiHC2UqIkbh9dWU1Obj619iNqmaZH+fIvLSwfC8BBr3TBo7GyUMESbwTgXQjcZ+vwC3aCtRa7lYOEp1V/rxv3zl2eXWPg3+Sj4Hu7t/ooON+9ki/0rCEXEnAtn/j8ZdaNw7aEoBsafKbmmtPSga3T+yQYFkDHcQRP0d/1uGeyxAz2fRrU6aF8/GObIJHPdOAXjyHzNuzhilzYwpYsc+QKCrNGXBUg3UNw1efNl/UTZQSbSIAlpGC3r8+9AT8Jz1emgenjnzce9UAG/myeM+zoLaO0ZmdGIN8qMvNgK6255JRWUKUV4tPQMDNRu97kwXwHBCMhQhCB8AXtZRUro4o12Lbj6e/ZMJQ2tkCV26HmEDaoQmrM9Uc5NKZLppB4CATFHmQWV+ThUGXOBNHSCqjq4PYb16i2xV3BdY1pObwnfBbnkUqcA9RXJhxkIgIcFNVNt5/7z6Dqzynp+5hVejV66PftkAzpB5tE7v6IhL3NMJwDQkMoZzM19UugzAjJEQCCiO/umUnKZ8Oo6jIolgT8N934kntU5J7bF+duP4s3j2DAIR7+pYUnx9g+dYRxc9zRdCfb14UC325deRLjAiUxNKE9+/q3lxh9Bjl2rrLYUeZMLpHJ0GYoF126C/AvlgYKRXBQUyt2XTSWVRyNDThcQrpLiFbCKkKMajN21F7rzg204Q77e9T01VGkMD8S+fqSBsnp/p3xzQuHcS4p180kgYn8eR22gp4+WfuGKwNABm1Sj5ow1dwc8PWVL7wzp7+2J065m605rDzREZbvBOQryo/w7njL+2kkT57EZzVbwWulABaQxn5z3TdVVdrFsPba0btyihupcTOUG+VXce8OxVpn5YecHA6aoVER5WIFntWKpdUpr5nXHwYBs0f89wRAnzlEDFhX4X+0ghB+7p0y+16bIUnN68f1eMjCKx4CbkqogKOJvPiu0EzeKuf7rFRhOZzodTYygcgHgHBXtH21O5bas5yf7Fne7U7e6uxAgaYjxPQBR/EPsWpFkCqkbnrWFspZcyNOfyC06btrajWZST1cnOkEUnDDa8k2OJaJf2nH/+uLGVgGC+79Bg+n/18+nMF1uL/hHKhXDYsYkNJ5YvjLgDdeMuK4RQJ82Ds2fYCZQcr+pvIECN9+NtD+bQ++uGKv2gTmPo70MaQMxnkXr2buSV9fa9jYrvBAYV3z+1XNKL1T0M4ZnGPaLTOwje/c/3cjAfasQeOhGeXjcto+g5E9RLOHd5O1sbcReJ9MyZCiqCk6rJWtahjANeuy7F4h8eagEa/yheymeMOlfWjDzAPoDMMf6bKyZ2eXuuzxuJ3wVA6RgSh5qAy3ZW8XSD1K8mePdS6Dg2nDpKxBTVuNr5leetmCv6rhHWraNLa5HHc2VuNz+5flBAi+PUiYDzMDWbxN+aN9a89jm3gI7cxwujy2T40mbzJjojxvsacFF9aFwj9tcUh+MG17/9amMLztXX86BGCAsAAsyAMwrMgfh0+zWugje65fRz2HLQEN4avLavq/veJvCgVyFODXZ0pHGfJGvQ0vfo4TEtnm5xpfXz0jhvN14UkOyUA7g4hgJT31T/DIRFOl3D86V3kLsJ4sun0Kv5eNgF4pyCElPX0a/pq8azLIjW/tW1LyvWtbwZQAEpEQkJJghn0GD1b5rl/bb2BzhAAKoI9e1fv2ids9bRz5Ntgxnv4slaMXOE92sFc4BtMNWEF5dF7NnLyvNSKUhSKIGcg6B9xT2qLUOcGyaBqLKygqdAFn4hSgubqxkBz9twxSv5sHH+W0XngUq6uRIuLxOlIeVr1gb7AwSoIcgj+V4cZ9iNwY3ujVxrbe0s8nRh/uxQD3bmqRM1MU6PRLymjiUgDzAFrlDRNx4QNyJTbYjKaIGjkl0oZPJZ3io+LXQrMtVngKMFnC1t2/SPjjm0hgi3GKNR38MmQ9PwbJaMVE4b3febj5HQ7HxJSImRAB/V86wXHa6R5n5XC2Fvo7Yg1hnc2yZW0QZmiJ0LNADko43PBp9OHAXxTp78Sto/e4pcr3e5qDn0GprXWA6TpIl0Ub1y7k41vP4O9pC2Gy2uAKkxccDFMd3Cs+3+8N8d5Z336X89EiVMiQl5+Hx3KrvW6Vno6jZ9MetThmJGGsoqCELoJAqnt6o907EppjpnbgpaZt4dJ0motU/O8xe+aPwlxgyVs5YvvA5OEq87FziUnSrPs91I/SXUY1AFVxv6r9vB+zs0v0vXu0Zq2a3Cp64G9bX9ky0Mu0jCqzu+8qSo95MOpbWbKyCAaGdqJkdFVIVVOyBKDNQdgXQsBVT72Dp2c4TYVtF0/CduKXhRx79+cuyuCqn11F5lwiFc0GF0sXBwRkC/aeoqjG/cDsMmFgWS0O91W+Xy4QiqSqIWyd/dcp4B3s9eM9aW3xJZLj3dqLJ1r8fFRuA10En58QgoAOKQs/cRrAHRjpstL5A05DSsdQ2QqqW2ME/7gSOeXFNQwraY723ZCeKFfdrAIFDNl6RXjL1HjKjy6d0Dcx6xBdgslYlWXMNu481ij7ahd7C0G1iAoRABsLMTiKKIf7BJtg5bz0v7utF/P3nMt5oEslZX6lkIh3R+H4VqLUURx+QirvPxvtduEKbpMybYq2YhAczFP7g8fh4QqgSYQsiSNOF6f33v9mcxcI6qLc9jDGadpXkaB40uUNatc3pcgPc9gOoi1t85AKDscQjAtwKkSFi1FeRQasLTlAEovSGghgHEiIK5GOZx5bddR4otrknymFOiVeJ27vz1cy4gm1Pm7aBMjGOBO/mDmD8gAQRHzCQBAdybkYKno5y1bxKc3Elc+lsMbkspG1gDtTHcfUDEjf7+2pPflhEkHeSKvSpCIgvCoccZd/C8K/K8iPXqK002VJhQABhl77CRzHwmTfIoMV+MGaXIJpz0t5mc5S4JylPH+ocHcg3mhn7/J7GBQsncWxgAsx9hzzp18vG4gSk297Zbiuh111S6acB5dWCvcPzJsafgZtolm0UEBrtTOOug8jlPJH+61hOx9LGk3NKsmaFwOoIOHwEGGo8D9x461OggxOwreSpOvHFEyAXmBSSZlSWzRHsr1rop4HUaMVOMzYE0khBZTnAb7iZF0scpBKTfpF+/Zi0wFHFTrzZOa04fAc8f8h87zUC3I4JBXo4b5i617Ndv+YZhIufw0rfxHHu5jwk1Pl72ZnCm4ycFGOY6ZE1pAjR2FrkoVa98gllBCPbfpLvpIJKL/DuJ/mivj/w9SNCsvLYpgvdj0xQY9jCcouycsxPdp244jvV9DeDEvIENAJS9ECwWnKc8W9wSWIFkAVA60IJ6etDHT1z/y3FQCOUvYlmHikaEqwOyOzIKKZlYCwakexlo0EkDLY7j06j/oAQE0NAEVYGieHAYFZBUjIyhUetMjjFsdZzevqO5tgP9w5ciGja8bZkt9ukMzJbI4RRxpKF8oaZSZjeuMP4qfBD/65/4VJhAgfa4Tc15iGD+Stq+erS4wsdMyH6JKlHb2P5b/F/8q/TIfxyB6aH7NZsYKRoW8Dx5EWWA4yBUXMB48y45WYvp9AxOdtp5A2kzqc+wAB4dTwaTCnAZLobZW9xxnCGyXHpNTcOd/ekfv7zYOjwu3mvJyGRgTIyOdFpaiTHs7jfqgZqVdxfYagT5P/+N3x7mCnidB/fW85KTn8HPFLcGZHw1gnAzUBsYXxyNnzt9GXLyu8wGDY+SpAcJHint0dILTDpiuEAKdIZlLeKs6///d9pC33vCko4DCXIfGLqsaPIYSyviyIBzZMeG4f/ad4j13wFrRlwPluCMPfH6sO1aNv7YTWkXOG8Kd+Td6hS/gTkew62suGnncS8QmG7pIudxRsGJdBpZjJFf3wBCYNBpKGkBu1BMiOAUd9u3MbhwZ50R1RB+TJn3i5mUB3ANcn79PjKH+1aitSgLxGE7aFD+FEXZ+ShsJlDAvbKNhkEMAC1noWzHyUPSUQcxBAFrRk30HODZr9t9tQG0XTAoclIETMyPNypxCdMCwe51j5Su+Sl7i85OoDiL2cZjkAQO8rom0B4HHyCWvYAxoW5CUTBOYGUOqDAESgYqIU8gXlmNwB0fZX2BIW1HITItkLA4wuNShE1ACU6H05xobwNDUCSIdiZ+QDGc55TWD5AsOWapfyx2WSiADxImXXupCaGy7Yy3c3+f/+Tw+Z+BLRtss08jhJSiFqnVMEh7ctN7UOgzzGSw6owQeN3iJah7ukdDO497eQPnC83GEniU8/CnYETtOGw0ZtMqsTHm6EL15cR9/v7+YagyZwhSIDPGiG6XOcUrmwT99fsAcK1CTGndX57IJ759AnGzVzUnO0Yk2owkFaIB8W8IzyDEFJKMoJi499+aM+0BIMtwmgdAlr96T4bq1SCLhpk6axyWLzQvMG8BIeiGfjw3+BMzlese7gVClIZw8lQLdqhxTDEUNH3Lv0FTJBhpNoQldeF/tDaRKwdY7UkrmjxImOU9ATgryHa62gJNxWsJxk97FeR4LAdHIHycezjPBtYAHJYcA1gZT1BZFoUZgiqpSLqpUe1lf9SIudC4LSOEkiekHSByVMQBgmarDblJapsMADxDyoM5YiZe5+PaK40CBGqcchmccf8p8Wlk7iHT2Eqw3qCHNjNF2VSBV76Xkw6OEZBEVy+w0SxUDb4XW4tdgCTilNDtvVw5lI0DhJzO1yXJGY4jAVVSExo+bLm3SVQA5etCqVDMbd+8gmsPfoLOmGnDAdyFEkDFniaZ7WEyjTjgMkcLp2Sn3MWqv/bLRx9lDzewBNl88gbM5LQT6HvjKp3IxkDgeJvJW2lhPftPYGPTcaFzJg4w1rYcXJ+zgCA1JwhPw0IZGhkuYSJLPTxI320+D95Ch7D5g5UC32oI8r6ahZjJY93zTDQYYbFnijrYzKoAEkkD1NluPcjWMCG97+m6b+Cve4seDAQdQj+xJ9ZMDn0jBZpN+mM3fDgdU3Y3DuKcmx9AtbEgykzIk/YaIg1pcdrQUSZ31U3hAHgDFUJoHjtQJdpjJxLKBXHw3OSYWx0xIJXXlwQMjQSHPpdgOigDVpHGAsdMQ6kJSUpdsn2LrUEAtquRx8ueGgWr4EmJ6kOWrIudLB4JVRHnVSLqxAdwv6+/2pcZDVc2KKG2zEzA1CDorAFKhrDq1aJwSZUBtnm4xRgC1rLehx7DDxcD5/n49d48USibzjwcM1OXVhuDyO2G0ti/JhnUDf9hB9bJeXrIoCHa5SfHg5CyTUVsQ53LbPwHJAz78QVJboAnFbxOgDqTt05WP2EkBuI2g1vAswULBsvSfjWA5p4/ZUBAmREGKLItAlGAiD0JpSDjAGVYRCZS9dzmN25hyRp0wAztyZwqoV+Xx7ltAO8p6T5dFwbYnCSHz+eF4dCxPI/gvA2lQN3z/m0xwGFwDMFoUA8ZYizQ4lSV612RkyPaD9D9QRGBtpa+1TyT6AZeVwnZU3xethcizvOUokhoumZLQqh5HUUlnAiV8SIEkSgYOJe7Ww4G3Y/McgL4ANIIxKrJhMBdgTs8+pNz5H030e1r4UvkAMtjiAXB6zYB98bAdArAGyDt0VJWbVABTEaIhrcNo+kR93t/c41Ldrpis9K8He5XxgkfBmBKzK61CxxWQJxA1DF82OTRHGVAwT02DSc4AIYo2Sn28UUeMwnaCU1nRUFnJey4uxHUn9f7c/z+x3GXDfLmClwfElGwBCVJ9+Q6FKc6WY11LC7Y/O3CWNaTntCPT9mLfqOtAPEkwTJgpQxu05atDXAGIWGsiqzmARaq1/e/I0HWuSUMunBXrvcly7ZG0kQ5a1il6+PBcQzC/P4VWOP15UOUu/pxDF4YkOqYiXs0xPZ8lTx1EyWbsnkUKUwmO45jpoxDUsY2N2ghDrCNQWm5vT8vEYPorC3dZYcgMselcIkWIyRTesy02RPCcq6Eqy1mEY/qyW0m9hFv4YKFBCc/yWxBBQEDiFkcRvRCHEqIoKmL/HThrKTMilQZ0wL2iNFdSDDHKAqcKqhUSVfYObspGVyLcUC0ET2R42bgPN3AM5W9OQ+5VRkIgL87jqeLtFZhCtifkhKeJdphBDDqMK+QpKXd5tEGV+ckZYXcENTtcP3nPQCR8FJM5rC5hTvIeez+9UNLmwifi3/KVkjxTAbb6NcJUGcaAM87frZg0YQVeVW+g4hu1OYLwyLKISJjouDoQMbQXb4QqbhCWxUrrwDo+zlBRaXCiZnhgncxGX2wBmlbaJX5Fnto4eMxEztGYTij+ioxnQXD6YUKqESQTgolIAaC1kWkvi4dsacbHDbr91ITK1zoSaFQO/77fiNGKtue5gBlZqBKIaUq5LGtRJiTOrV4JkcBxEy8Lo+3vUe1IRUw+gQ1I0gpJKH6eWhMcRwYmChqHtWh8Nv9kYOd2QsjpAwM0vv4nYRnQ5sZqHGfEyauzBivw277P7KbPJ0fyAiEExzHsS17B/8gwpywODHiSOfmtoWSviaBLH2/I6vTdXd/TFDg4+GQlkrYyCtJn/aVJBk3FUxbHiPoHZsu8PGOVxAPJqpgbyRoIp6pMVwH7CxRO22ETboCoOYLhCwkWQEklNudkLm/FxsnBZogrkinH1YE47he98uSCVZ0UZ3tTAhOCJ7kLzFTH0HAo8Zznufj81Q9SWOlLNrSgtyeWBylKaUHHK3OtqIiEi7wfUbsSapGUR8Ywcxp7AqTLsAxzG5KeH0uYRL3YZUPmBQu300FJN2ziUrgdRjLHo/7w4Dz8QEkE81lYapOCDwEcQt4AtDMS050/McBt7c/yNJksJ8s4J7SGqm169nC2cAPIKeijgoUl0SnIyGzjLnr10PmhxQlqTGaANvsJ9KY49pgllefzysWd6qBbDBhcxdNIGNiGDBCbu71xlGNjYqpD/B6W9v4YsJYLWrJ7YMK1DsReVGJbrVGkIqQ9NPmcjyopBtiphjl+DxvEOLq8PNhMoWhAhLiwCG1MBYC+UCaoE2AMvpzxA3+XUOyEqgdk60BWxkPbWCopc0Lm1wOgHXkV9xqPjgR7fkcC4LXxR5ngiTaxlSBDOwsLgRI68B5KqyB2HGi3QSlxPFhFMqRjIL3lf5tYzdViEkdx0cbDGjIY7xqz8slsZTs0zqMb8SvTH5qR53J2xRM/YRtmkqpA5zHPZyX29AkQsdN5SVVJEutpJK9xN8YDVWT0HFwuEhdBOv7lSkTe0KaMpjif+zGOJcbKXPSfbhwv5Z9j27jh3jkFpDnPB/mm4jihSoHBEQkqFDoAb5oAxFaAqkUMzd3+yILA6S9CHEFr48kpdUQcMb/RwEynhqVZJWivSejbL5u7BBDfEo/3gwfj5kwMJMYeQMWgp1kuh6I6EaGAUUlkEXCItJUu+3p6m6BA6BBuIo1F6BtJoKnAnC1IdEmhWujM1YRVdFFnR7pk4YAEAbtZevQViXD49JlwUAFmAUFV2xN1cNEO0SJJwQ6Qw2RoD3d3xsQjgcones5PWJPgkZv+qzBrzOgzCFOnTwmoJbtaHSKs7Jud38S50kd+2iCNlNs4zN8UyiQ8hufgUYFIBKCkYQ045Iq5cgJw6NBiT21ggu7fcOStBihBBvzm4qCCpPDBiOI1ErL3/znxbEcdvPdaJRB7t5Lw3lqPzLxJBAwWUf7wJadw5Wg47AF1Me5F4qcL/9NN4BDbkjHLkAQJV4HSN3bpw3C1G7nrwGKj/86KoSMBbiet0txiioVGexFuCjWg96MZ/hkE2zXoQKCgC0/SRhngmRUPO88Pp4QSizH8VKpaKAn+GHN9NzYnwoaaQpUmEgtJq4nM4aWWREfMtaXI5HqUq0IBRgwiFiG2DZi7c/rKICYidf5eJvJWxSAZypCFAt92Yr050blLvGZt+a+Xy72ntip/pAyVgjm9m4gUjAUrDAaEKGfIQC2SHBB7Am3c6rD2/Xek2TjLUiuhhPqS18wHuaBbZwHDVoISgqa4KXZxUASfjZhkVAmGBBywcqNiUuyKKoEaE93tL81I+9XWHk2MCFHRmEJckPQ0ByLzLw+HhH8BCJYfh48hupW9ECfxBbn5Z7KhL0kufqygrp6+h8cTwkFzSjcQHoEoywNYaOMEaaleiyAGTf03X0OmVrp+cAnJcGWwIWo7BbCNsP2cUaokf1m5Ze2wud72LKWxqdf7iJJm1D2BDX0AdOy0oGF+unhpSB0U9cGGgsKWjjADIpi0/vOjHgNMhmleInXniIQCyiX1nfRw32yfevA61A8KYGgFIvPM4FblAp4xtgBi7uYG9pcXS7tzyHX850DN5Aib4wZXTEvQC0CRl28oYAzlkSaU5XVVGYKor7y6Bn1kzuaoF+Xx3Om5znP5zmYiQg7mutTWk1gjAwVn3r4VRncE9Pp99J+w005AAYEZ0eNYRuuLwmcEw9mxdAsXbiExXzlxyd6PHmD6CILawHAVhFoM3DieCUVpopD2ZJEczz6fT27XvdkTjjAPkcMLhM+b/0f1yLVPkt8FA9EcCRJrETZn38TenpHAcRMvM7HZ+sbuDr4DBGKhLJABtdE4NmBioGE5UVatjT/roy1n+lnHd0w4Lp2ZDzGFGBUIFLlAAgSL4L7qzqw+/gK7W6ZTSgCRP3sYZZ4CVrTF559qj/6uLdp4N7mnB5zYzLl4Fp6WhE6aApckayYQl24dD+baJyFNEwcAzIVjvJZR1MlmiMh2tQJxJUnEowxvp576ak/GXsoDfcRUsKVMxVMPGBYU3Q4dQrn9NmCfU0gC25nE6uzGqFkkg8w3HJYVHLLHd2Xe6K23aLTy5I+3gcf8h82R3NjDYE8KhIbKYxgQiQmr2Gl50YtItbSVvWrb//gEf8ooiFTRNqiuMiBRd8uEtzqklTn5rYaLOmb/yW4RlafDvA1Y5kyYLOEuLpeMrC4H4SxEykTUFa6hV7PdwFjJbNQHFksCG3GFPdrCeGPZTZ4sro0/6u+sgyf4+Dj4TsXkQpQZUMOxHk5uSSkMA4VGXljG6hIk+mEurEUklDhKDeVPiZoT0F1X1Ur+N6DhHGsxSk2h+6tfg+EkNKtQdY2axiaC0FKKXXVBW2nOTbkqIWV0UVA6kKjK4ccVtHdvl2+rPGHx8WH+1clmE/Z4E3cGB3XG1nj6r9m2tfE0EsaQ7ZTGIVRqnGCs7KNyugwUKn4X0xBrMpUMlMAJRz6J6ftIIfSyAgRIFc3pcVq4nrfTlsQRB0Cv7xdwFvSkENzxVrxEpis0AnVIfnJXzQQ2cEav/KfgWm/LQZKk319FJ18i23IAislKFQbS9qeFOcAlkYISrSgq9nOIRQzvJScCsVU1TcsQJVeSVnRQcB1kJOEb9msCVAZEwuXXrg+ME5FxLjmkbULuavNBJKeAFAFWhROQjEVCrkB2zbU/sEUJGonMl1wM0NAcbJ7W+NWtzwAiFmXG5CgpWTJxPNSiUXX8hNHN/Ldvq0zwIZaBL8aJG5ndExx1KGwf/Nd5GXn8RPA+reTMpi+oM7wnJAVDPOesor59/Nyo26QxIwmR5DSFlN4AJS1UmTiJ1QzNdZ1D28uDZCajOqZEeOqOnMxS4zk+QAvicvl4HZRlw1XszUu0UNGRVXMFpTVwaLGlq4+h6T3LeErjw7MIqSOlgedYwy5cT/CM0FK5JZBJ8WD9G62s47w5eFCdGWg+H4hrYtTJgqxkmt5g3mz0w03UZ1hSygwpAOCKIoC8IIrBLCet3N9bChByGb6brYBt+FINsD06o4Ku/yKBPeoqYbVyljZ+nhoQSPXCEeZAdpO+6NXIG0Fm6+3ut3g+7GLDaw0zu2/wIXcNYDYX0ExFEORLkFRtrE1NLXtYKZ85aEgDEXCCkQQhwweE9GkybnSsKpkKy8423ZJH0fKUnhptPBVZBizaDra36/PzDjlScnA1DA19DQ7p/MqwckeS6BqTVAU75epCrqizUpoqhCCxoiBzibpzNDxGDrKgMyhB5z7dcIxTUeZewRZhrq4nyvyUpH6Tk+uuaGfPAhS1pIV2RBukhgsIS0KEPIV2/B6Fc8wByEnPYLyKJw2k6LxRUJL0zIyQegu5YVG8AAyYqGiJARUiHmh8f038r4wyFSPp7PnDwDuD5zjk79t5/sDy3EZ2eUAE0NuJa+tYF/cVTwF1QajyRKjywIqQhlySnHpeiz3QVcb0k9dL1JFQge1dQBbUwiJjsGlEhFLUdgV/aODwLJ6IyP+3GkhVro6SAflAQz3aLbQ6/s2nm/WkI7PEgPNI66FI6Rm+9PF3gK5KILzLDHy9UlrGTOcRBa5bkgpW6r9jsImNC5FKOF2KiVErl5V0huZMu2+9JnSC9pspOcJjD9oYNEkraISKauItN9vyH4BPna9YZrNjLtWikcNMUlUAoJ1iwq1T/AD9vewnZk4LawluB1APoAdfjfGbr2Pt5yNivdUuAwqqqlNrTB5dorBkJv3VMKiw3HRcx/2ck/hYkspTsRtZJmd6+znyVPXAeYb+evmr5VEVPSIP59jTltcUdkgcouezxG/iBq7t/B7zv+KqRgaPUVVOwAVPntd2woObd0EOjmiJoh6Bxn8dfFiC1XqQN36CZQJLYZxqbZpcSHNict2DzewubTQQCw/NtDMfPXlzPEPHmBtTXkLLfa0XAOUZ07IsFa7gpGUVfmulbHdwxvQ5kJYYktBItgD436qOUDLlEmvCWvezfwEqomdD6PDmFLV34RYJm8HtT3+DsbNfWGdjCGpoR9/PcH5WOhdjBozJ+c9OR5OhosHCkqK0b/lAwob3QU71WvgSrzW+5A6Vk5SQEVFXzBLTwzRdmBp9XohnzmfjqM8wBTwfm1rtpY9Ha/qpML6ao5o//zw4sTve/rem1OyyyKjwqXL+9U8NV9A1cLaKELQl5cil327gBee2981HTcWe8VOVm81tYOXrmfCyNmMjSiY+dHHAdkUnguhEoTA91bdh8oSwZQD+rfwCvQVLM4olPGS17Oi2nkUO32P/9yUasT/898X/H1/Xm+YypZoq9io8Bnp2hB3vQVf+3OCNqN4mNm0VY5LXpBUzkUNmv3JwmjEpxqLEiW1wFJWa3aB3aX/DdteYuc/NK/bbymKjs5h00FxLmmZWsZwKyi1LITzK2Jq9+XsZpkbxdais7rcKCo5oaF2LZX12JCIhvoIyNrfebsBOKKc/lpYU9yGCAObBOQwEpJcm1mBaB9eJfGOrqS0gxljVsUQShkBbDXpiS0sxis8WegPvg0hUgoEyZmuMiqy7vOKBMgqVedPTJO5NlVmN/d3EJs0AUpdcWnTFiW5iIMPtleDP63Kf5pdSzkpAab4uVGUeLDwAAqJLnmrK1PFtc0XQyoB/XvhbUClvG0mqYT3K4Gt7eipietA9LKA3/gJJHPcJK1GVhq1fldK8Z7YlGGOsTMqszd/LSEsK4u5vD+vFYEuLaJkelLYl54Af/x3mL+nn5A4PcaVx4hbDtgVYRF2/CrmBn8GqbzvlK1UlyiRAGgp1ARxu8ZvenPTEtDqXt9PSeVB8It/t53/dROVFMMoGMrrFeUQE5KbR09U/2mk0JemotRUNXemB3wItkMKRcmfv6/X+3wJsllQ/tSonO+bGihc0ICNlHzp8wdhLHGc+tToPG7OAqQLfJUR+sqoKXuCMTCkPAuWwkwLiRmuguBYBtce4eTI6Wm/7j1YMC3Lh6Pp72w0VGSwtySgzgkIAEhsbCv2pmItuKorS0CXC142FhUgZXSAVYqc8YXHQJDl4n5kSy3HragKrzovQtXYqQOkhAiZuUQTydlb91QtXeLrEEjzpdSECtlqFPOSwsg0PDqNGpGwbg7LhvYQ+IUxZc55ltuZl4yKggiUxwSEAErqYvxUxiriBxOUfYmzhgbDXPgbh5ViCGNKJjGDLLUhsYevN3AYEvpLkl/1uz9oDigYihtwCYqQQlHvMqRCFkQxlq1IijQFXOVhEhawBcrgRpirvuDIZgwj/xSbk2+B0R4wkJKECPGSq5DjPb3w0qLmTg5vhzxewjKu9JcUnsv9RBfrshLXB0nURUyGGinj2SmvZYW/qJm7gTIIQGWUVCimoeT8KHIQoQcJrEBc+aHE6/0VInHJ6NhBg5FiyQcHEExUMe5kMS1gKmvMT71LAwkSEgMo9kI8/Elxp0WeU13cAyTlVmeNFS4VkgejJIjvRQ0looIUeQDlOkoyeQDfrzwf+qMq/zuE3/cNBq+7ehQZJ4mCXswrfYiN7eDr3/JvRZiQPapTM0KwsFI+6Xf7AqQ9a6W3xFyu327Xxdtp4enmP3/dT7Y/7hvG1heU5btyApkFjDc9MziGYlj8iaKs38jc8GsQA6Q9GRTRNKk3oCQ6LdV8y9jG1y9NZspCab5Ntp00F0g4JPOpeT3f1GTocu9ra4FMFULYDoAKQ+TnUcDZ/DaQfWMYAmMpWkipRNKP+CLxKvF/yjA0hRWXfPJhYev1zxwrhUHDpIS+3I+UiqWaueJPIQs/+jNbyt3gJtoi1X4Xp0osD5LfVQmSy+PMfwhKUIgAnuoFYuJ2KkQUqUxupaLY/zGDBmr5ugELenF9qQmohaSkbjlvJvsALUMrKX99paSfEstlE6rHlea89yDA5gNUOL4kC9yTY2QCsbG5VynllcYF76btCdqIb2jy0jTF5k+qVEb5xTrdOtyIF6+K3F4s/47fvW9CWSUICA9Zl4308fdtJMuzitbj9PcsqyxiWeU9z6F3XDLVYtgvHuINbrXPxuSthHI9oh3p/Ljfr+pEyfUNMq+Z6LSAfygeDlSoADyB+EcNbcFhjqlU3OdllJl04b8obzASIfmRJz+xyrY4QBPa/oJCNZnPtt/0vpF5NAlUA26QoyI1FBiGhIbBwZysmRUkkDmAF3Hng0Zmc08p0lu5XzGsqgcPBAQq3ZnxMABmJ0/ur6gjW0rkkvUQrJJ54WAQEj4v2QGMFKGQKERSYxZ9sUos896/kCTMRkM8a/mH1K2zTRW9K6FhU0Wrqtjf8n5RG6VXpEMZ93kGcNAWJ55IpodNCHr5UoQx/f8NfhnlAXQ/29HnfAoZSPvLioI7JFO1l8DsX5BD5BC9woPVwZlKZt3AE40zXuS09vgwApUsk4/7nzM26D1BYNJ+pUpeH34TarheZKPXe/IKWg9KfsLvZacvudbxKIrJK9O8gvD5b23oIwq36HZLI4Hc+LdyMqxWBytbpLbOFhBGE/+FkSlLa3taC87op+tfUcXUQKQeuWT2W1moRHg7nuY48XH2HYFuNaFU3a7xCpSGoPNfd3846ix/4rPesA2o7gHmKSJ8os5/yR5trkjhE/irvSosn5RCQCI/rIqtz0Sdz3jJxqdDLMxO1qn2/yoM4OLbfHk/0AzfMTuoOW5X8UYkolGjHF/CClQWW13f+/d6JkDiYqZJXHaOWjSR5trIs+0UVuT+pris4RGEi991HkCXHGGlRTRDAFcNpS4iAWYEMg2VVJIk5PwFTlU57WGQwx3F3WN/ZygeCknFdbAhyewxZpRgcF41vQijFfirQraYycgUBLTNqoVTAfp5LkhAYA6x8PudsV8Y7iZqLwZYU34jTMABr3wSPSYEhCfGdAUEybvwql9iT7wyn7CQA/29rHRmf4LPZBQzFID5W50kt3F7iDQjXZP+1itocfpvtEQ6vaQ/xteqEYFRQP1SfPB22IZtM58l+klklYXjtwYLS2pJEYV5GTkLgViZ4XQ9CEd51UztPeD+ahAgpPzP+dx++GuZ98YVuadjvBZa8l68GmEF4ADrWxKhzT6HQDPgXFJJLUUkFhmV8Oujs5QjM6zE8ni+9cACMzBM8g2yGKySM+rBQkRAh9zxekU+4nbCC9iRAcaOa6MIOASonn23R3pCrZsiADkzbQwlJdJaeon+ZlgWs2rfOP25hNCZyRkFHF2GEeAjQwj/86b8k/lWqACtAULtVJ22BgSmaUZvdivvQA8FQ/oeJ6dMNJhGqKBTe4lJkdRkAZbFkYUz9VEkaXxZTi+E/TggZT4AjJ+PAW5TSfCXdNEkAA1U+ALJnYzQz8uSHUWtJfrKc9RS2D0+zLcQhFlDyCds88cF4ZAnYkgCOG/KK5AO4bzesKMqVLfCWMylJQEkzEQd+Ug3QJLSnZf7jY6CG6irBKQhAgJdST2TKK4J2V5CLxwpRr4xL9iFZ39N99OghwFeYJhzARaDDcjrPkYJbK7SnlJJ+FKnwmychjaiq9gwKn4mlwBIM3/XYEBNn6wXjDz3ibDemY+83/j1JT8S+ihZ/hgYBWO0QcwCRuQuAAFZIJ6Huzvt5epTNAu8qRAOf6KsA3ke/4bx+XtsimxOF+ozZTgIgIxXZwTt7tcdBb2hMoYedu4KFQRGI14FkmFOyN+95+6C9uGuUlEY0VDs8t9/wsIkOpfGiZw4A8wor/fnhKYa2DFBLA0QCCSOaC147OEu/IdkGA0drGIyy4k4RAeZ4e7CdjIJZo6ZVypAECxczhqgyCUNVkjlvUCPDq+36FRdCvjvnmTJ4KEPvoKOGCbzZMWiwBBHsiimOxUpeDx7ixN02EFoQrZTZQBQcip7rTiCQ+JVXt+c70ByT/yeHwzzuPAjoHk+HNVgQ5E2SIqXYGFPhT6MEEcZBVunO/zFt89pm/7BdkKMALzB99jjPy8ybvLHNPI8I5B057XUhIJ4q17vPEDcz9r1mKF4ywbiEFEmsyCMYRZAxHBkwUQfwvb4Fx9n5uI65zIVBriTpGZyq3Q7vUAwhQRJyQ4Ej1UX071O34CYe2TokcfDXi/FJYvL9YpXJmQEMfLLHHeKTOBmwgScoipPG9gTYaO6x1ise8oLBlQlgpfrNkCuhnmcZBWszOTaD1IQluFGqIEUFkT3lkw2IjNAJQe953RhLuoYyAi+xTBkEioIM2qPjoOG9HI4xYVxIovGRTx8vV/fgMSlqiJchaD6H8kDgKkki8U0YiuQjnqRa6R0bBd+1Jj2EiQD8NaCLefgfbasRl+ixrB37PUu11saSR2hkgpqlYaEDkakIyyPEpIaI853uGLJ3gJ/cWLcLXQcyTJl9uKnjRaa8XxM3K/lcaAAKKLlwOv1HYglkerL6uEnQl7SyuIybIEP7OA40oXmAiPx/TrfMymqT2/uJNgrFN6AyREJiSLjRM+2MlP3pn2UA/jhh1TEYAKeFwJEskZQgKfYwSuInuFBcqS68R3C/ZiYOuiOoR826Ne3maawmRTzOTHARo4mRZlxEZL5wr04N/J5ycFeUqiFCJCWgKq8OsoVZqUeT1JIZnaEZ3gn6qaGclZ+buO/KrKMnWagSNHXf2iQeUHCzGKyTk/Xy3epdJKkVLaZkzq0UByjC4JXUWVpIqElqH58ErJp5H17CSKvvyOMPyVUK2Grho0tyQKYlCYP5hI5+61Tv3PfgyQx0GisHuolqJJgmE79EOezmkwiGaENkvmkqGPbw82wc5QI9pxJFF112fU7W8KQHT2bNdXg+utN/AQikX5IAS1JWKaSy+gs5h0HQ5qDyLyYlmSCoDOkAI5shXfwVsyx+H7BoMlQwg4S5ySU78iec77Pn/52I7JoqZLzWh6AZiSjSAeBZYUUDiQ90WSIiaOEYGCcP7R1ZYji5qTEvSgyMEhnTz9vmJ9NIlVDVjLkoUmUzMxbeaolkqQF0Vgo9Y5ERDhsMwNh/JIC/AezIJjhMAkBFsQLxLkDMGgSEmuOZefzmMSZBSenpPDF/EjKkUK0WikUjqQltUlrsiF0QJqP2AKBIbmbTRjAH8ifwkoSAMYaFWeHny8bHGwJvOjnz89h3pNTSx9PG85dJoEx9NfbeXroBWqrYKAvIq3WNQaRpWZSgRYMWWyR7hhW5uMdoNXgXsx8W875/LnnWsjmG8vv1efKW32Vhpf0AUQH0BpgTMHqlNkDjnyjotRImyXoraT48peIsQPdVRLSIvgJYnVtC0NxJj5fpkvrnf+BgrLX9UWtQE8AkMB4VGrSaAMyA6YAoiOi15LOoA6IeV6+4BTmFHpajecUccZh7oVo3WPpfdw8KbDclnj01zt7KtKlFekgR5SEf7VTB4QGY69BA6RH45sg6Je8/N8edvH44cIAw04/UXkOvULM7yy82EqPF5sjjjs7cL3Cl+a8ElMNtKw6K8z58CmQAgfb177aX5bbUibAVjMJEOzZ7LHLq8q++1mOnyC8xS9KqBRS/B3nlU+Si5KyzeQJSRYiAWry/jq9pgiQjSaC6p6FY+npxfEPBNpzPB3ZuBE5ukKY5wQEKl/v8id0mWQ3obGczyzL8tvGComyHs4ulJSo84Z5eXsM7FIg6Rz01um+lCM4V99Xn320bTnkju8sLn/7wqX1Htzv9SuJy6rDAj/RBSRYwGybNAnBcmYCQBPukJhf38LhxMog9zHXWlsbq/dphDl6MGC6xcK8ImfB21zecoO3+wDUtiq1Bkp2oKTDvgY31GEweERCP69w2Vu3zZCCnzHaGs0Ha9mT7K0qvIhirHlb1Bf8QOEmYTQUaFt9CQMIro7H1kdzFR0gVOQYr0+W6UXKXC1CJBPhZrW59zXaNvC2QUFFxyp5jeLO1e4t6FW/9I8rXssPJdmHLuMyW3RPQDXW6O6svzR9Zv+cs13kLMTY23y0ed/0dtVn+lwgUvoi3Fz/9fXWd6GoiS3NtqzDNfa2t1tDNe2jq5BKgdKOmnwASSPXqNf2Nfs1opU9iOHx7AqYKa0mlfPX8r71jyFWa9dRMPgqbrOv1UffLu6FDOn2j1ZrWd75vUWYhMskDs8mWF+zXcZcrW1dkTSKh1A8aNJ6mwip1p+Kj36hJe50Xlubzueu/PV+73OvdlKFzh8AthP4SGpqPH7Py3a7jC57AZdGGIuWhlD+6Mz/jAZkidKL0ID/en73j4/30b9Hrrhdmb9//M27exnwx/lr7/vH5bJlLgfPZvqXveZ/xmMIJJ7G8ObX49E+bm/Xftn69duSZr/+3T8x+9dz+2ptv35/bv2PPOb/12bG/8C/13/sX9/9srb+9tHvbfb3ftPb47m27/fv29wuetnwFz4/TUm/59z332tun/X4TPfru5wBYXn0q+Rxv7fLH/crfs6Km/tjsUXyJLk8O7fMQizyWlqJu4Qhrz9sXtPZ+Ukp1TNNP/Rj+MlSjq0kLim1IqnnJjytmIiSNnPCcWFJWdqBE9FRpmWM38jTtEFieRQfcabTszCXVrn1ZX6MyppVjcREvdVLJcmN5JS4CCVK8y5Dv6mnedu/1Hl25Hm+HR6n64Hub/eeyhRFczzNayvmowRX33Qr9fJ2L/l+6PV6qI9z7nk6TsDl9FPZKMn8mjOZFyPo+JjnQkp5SkqPXGeeVJPQvJTxqu2Xdd4C/p/gP/Af+A/8B/4D/4H/wH/gP/Af+A/8B/4D/4H/wH/gP/Af+A/8B/4D/4H/wH/gP/Af+A/8B/4D/4H/wH/gP/Af+A/8B/4D/4H/wH/gP/Af+A/8B/4D/4H/wH/gP//fBP6TAABWUDggaEcAANC7AZ0BKgAEQwM+nU6iTSWkPSWiM8iroBOJZW734mQoqMdBdBs1NTVZnx5C3BcTef7D+3d0HQPqb8L/kf2w/sH7n/Nd0/6Qe0P4n6F/rf0N3C3X2Y/0vf2P8d+X30U/53+0/zPuV/pX/F/3/5//QF+mf/A/u/+D+FP/h9WXmF/q3+M/Yz3pv+r/2v9N72f8R6gH9Q/7H//9e32Of3u9gz+bf5T05f3D/6nyo/1b/q/uZ8EH7X//3/mf//4AP/57VP8A/8XVb+X/5n/Y+ov6H9v/LP9A/S+YZhL+L8Pvt/nq7Q/sJqKeyPUtiNOIMK/E3+W9QDzO8E/8d6gHlM99T9q9Qvo7/u/////+GRRJjYa/LEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJAR+T201FIW2mbNl0fGLzrmg4xedMtcgGDL/1hnDlWJs6ZF4c45xzjnHOOcc45xzjnHOObKsCF/6sCIO6BpXGPsTLO8oT6gC3AYcL5hRtPIchih0yc49xkkCXBEw2r1eQUTM/tE4wNB6+xPf5hjW50kAity+MYel7YWm/LDJJt7itRdmReHOOcc45xzjnHOOccYMx/Jx2A8iH9+0DnXXFA7QYOGg4yCjzGQjZVHn3xKJ19iyPXF2S5vfs2VLXfJzedrkjUsZE6h3Sb2lYUuOt64tuCaW7mLf0KnCQY19Ut8ZNv61taMjm1Ow7BiFJTVCcUH+puTjXCig9fZqffq/7g+2sPobIxICQEgJASAkBICQEYUYuG9knbLjjgTYO/qgTJqMB6cNV/ajHLZRbVpqbZ06J6W5jEBHRWv4R0s1jbfIXokdmqjF6TT8LO1HpnFmiqieREoszXvwuYigBgCWZ5DVsBSehv4HaqluPBJhTbjqyeVDniqv2JWE6ChpJeRc33ro3oQAOIdQ8k9raxLcMsbUyCrCaGFcFYgOXIWk5KeIR284p1xJpMGJASAkBICQEfkwwQYjTgxCcA4G/IMIeoXuYw0AW45bimwX6rFkCVEOwSI/SqLrwndrjCOC4ZSJ0aBB4W4JuoNOgWMywj+oah1p2fQuu/GSRgj2c0pzv/VsawkJP7O5qWktIwmxwpAlG7kvzjg9v3BEbp+NZQZyDYpohFENzBB7/DcejSUqQpJYW4q38VP8CJ7txZOvJsGJ/O8IqkB1X3B51T9Ww9zZqE9d6BrK/OUMyOJDaGseGZF4c45xzjnHOK5YvqVv/54fgePkONGfQ5xO8FIMNAOOkZmVqYu481u9y8sXL34e8GI61a6oUwD4OazW44aIgPHY7q/sb3lK6g5yWjazTSEFhnb4zS6ItoqZ1GSY76O8Dbl/osKKI8chMCYcekLQQRYg6Ky1X0pCKJGubNsVtw5gxICQEgJAR+IeyA77qs6BY+qyv8m0EKiV2yBfjKnixWYMk8AX1OA+WzLqaXukpeNgwOjXpofPTZzng1yfQIoCLRvC+GKkIuFrGppOJI0RnMS8ywgTZuD5Ws7ApUN6vE++68J0LuGnZGw6b7YyAIH4N4ByB186IFa/LEgJAL3fUEgRhMN1ggGIXD5OuowmobnmRUHQA+jnhnO58Wz6SQXmwGWrx0+4LhTC5fKfIa3LMo0tWbz6EOD1wc3Ha+o5RpgQtng6wbHYtg9Jr68eJQJW0oFkzGPaVrA6x6WbpmGlPuMhM1NRBc0hCXZkXhzjmyjwEfJ2ixALdpP7XPoAoI7rHRTM3RQMbnvzXhgphvdRslYwpwdS8XLw5xzjnHPLbIa8WM7cbnYFq491gWPXa8cR2+kPkNIFJ+kKHSsDvBDSsePW6XvPRfWXvln6svCx8r3Yt3R+X3oMSAkBICPxJEZytISOBCUcd7dKhfAlazxV6mXAS1nKDhqs5t+jYro/TC/4vmlhICNEBN8qUmJASN5lVgHM2FYEDiygUcwosTlFClCtpzOhmaIerDXrzr+W/B0/7XAUsp5lahDyBYswYkBICPyZSZkLb2QdyIVp29ZATQ7FPaBatZ/5zODIOK4yG6isl5FjTrAkBICQE+LbsyLwvDiOqk96il8kQNgq62JYpzJaQ7P5lcVhySeQQKvfOn9znobS2ZF4c44rrJKgjgIWX2qk5+L8txnN3rwCdjypDVh1YOUs3SRRKvUZbMi8LveHOOcc45+yblzS3xNArzviFmATQ79fkPcR6JyItqwPY2cbvFwiHBadWv/IvpTqMtmReHFc/9g0sUAe0GsygijQlFXKnLpj6NrV3cDnHHeAa9B28dtvEKoSAkCnTIw3onWgsWfcQFvsohEb2UzLhQzXrAKd/hs2JN6+BNnqW0JuKLaWzIvDnFcqcwIa9DUZFNamMV9YxkTJkNi3dyXtqM2yVBICpiV7OD+9Qkt52bVC1p1G79KdbBUiorIq1cYv/wUSnTutxUl5n8Q2T8kmZF4c45sSPs7xhw3YLqgmJjoFKnrblQITwXGknGwa7Tb3Alr8sSAkBICNE3zMcIGqC7urRp/d9cOFlhyFkMkBR34T9lfhL2kIS7Mi8ObAOwW88DKNyzWaJnqkgs61+VrnRUuzIvD+BOkwYkBrRAuQyJrOJovroCjg0hIJMPwNqrZKKP7HfDkhH2gWX7nEzhjo6jLZkXcv5pTg4FpRgBRTFT74e+qKs2aRM5uEYKRRjnHOLveH+Q9RI10tuotsaD/YZhV5lxi7WIuR+CT9C/b2PqTmw+vpw/WTqMtmReFvCz984Nzlahpm1HDpdDnHOLv2GEtfliRTuZosR+jaLKGRoRDoDI7dbzqElUFXWokUasRSBEEVkE6Lw5xzYRTMxlpx4LpGhysorYrsyGa/5AgVr8sSAkU5KMts+ksmorMCy/4dMwWwfMYxEins4UuzIvDjHZqBbQRiYgPm/k5gHBoyBICklt2ZF4c45xzjnOYCTEMgNmDBQf9JqHhBCXZkXhxscpsxQXlw3paqXZkXhzjnHOOcc45xzj3+B0H/taYCjbt8SDg0dg4ZbS2ZF4c2ErOC0Q0/yeCmkXmlt2ZF4c45xzjnHOOcc5wCC9uvSN44SFoHKGQX5YkBIBjMn1VsrbGOGHvCQqSSWzIvDnHOOcc45xzjnHOOcdDoCBTI1Nlz84YkBICPz3xEOGcvOOYgztZLLKLMXhzjnHOOcc45xzjnHOWo7hItlf3BG3wBvWHsyLw5xWx+z3DhtyQfrFX3bqe6/LEgJASAkBICQEgJASAj9GWTrhf5M5ZtnIS00BArX5WGsdAAgJezBM1273A5y2KNaIJWPyxICQEgJASAkBICQEgU8BiI7plNkjdCfE1yLKNt087pwrX5Yj9B92OXLUkYtYmttmaH8uu+ZHF2ZF4c45xzjnHOOcc45xdOOaCGQ/Iq7C/xLLmBraaReHOOccUTp5jgvKiQWBbqrqSQDvuINcYliRdmReHOOcc45xzjnHOOcc+FOlmdxL+x4OZi3idYkBICQEYg2pkfEDF6UaoQdy0KEvTZJwDHBajLZkXhzjnHOOcc45xzjnHOWjdggmBjojZcPKHm/KCxzenUZbMi8OLMxbnMLWGYOZnlq8QRwYmAqMUqQEgJASAkBICQEgJASAkMRYFOVo/SKn2wBvX8D7SxONLEgJASAZt6el7KefDq9KiEHNjX4DfD/ZMIFa/LEgJASAkBICQEgJARlHKk2wzqZX4D9/6PCBsFa/LEgJAR+fxoy1Da4PJ0EmHDNYgSKGlYf3hzjnHOOcc45xzjnHvnnBUz2B2XdQMZ1YO93u/3hzjnHOOcdFHXTPD/NI1eAqmmhZ8WVD9kQECtfliQEgJASAkBH62PdUgyd0/bacDFTw0TLZkXhzjnHOObNBScsM2NKhx9te61C2urmvASAkBICQEgJASAkBMgLcYEd0Hh4T5hQJmawfHKMtmReHOOcc45tJlHoiT/h/hYRBB8kHfzMahUgJASAkBICQEgJASAZ4FgHk3F49bzoCBWvyxICQEgJASAZn9TgEYhs1RvhmDa70KtuqAgVr8sSAkBH6bGppY78cPfnfLDWzrZkXhzjnHOOcc45xzi4RY1H7kTiS59MAwrFwAOLsyLw5xzjjhgOMogFR2X7Rzm4qxMGJASAkBICQEgJASAkBKLOATd4LQYc9tJJSKV73R9oyqyBICMrOSUCcwGrLZ5brhfUuiFEnOoy2ZF4c45xzjnHOOcc45xzjnHX40lTOgNDdN+b/MHuGoZfg9qPuWbvjI93axj+8Occ45xzjnHOOcc45xzjnHOOcc45xzjnHxZJevyxICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJASAkBICQEgJALgAA/u2oAAAAABRvZe8svGFYehUK/Bkb/o3ZD5Y8qXX/PKuZ8AccPKT3xcqfJG1GK3kEYalY5qthz7z9FU1OaXwbmWgjaVqCrJX2oDvYkW2yKU3uN+Vd6CJf+62r8TpCsj7DW1u3H9MpnPbB8TB9hsDHC67iNHFddxGjiuu4XAWl2kCAJGz2rMnxvfm9up/7ltRiG8+v/5Xv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", "w": 1307, "h": 1067, "e": 1 } ]; var layers = [ { "ddd": 0, "refId": "0", "w": 225, "h": 113, "ind": 1, "ty": 0, "nm": "lottielab.com", "sr": 1, "ks": { "p": { "a": 0, "k": [35, 17], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 732, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "1", "w": 1184, "h": 592, "ind": 2, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "a": { "a": 0, "k": [592, 296], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 600, "s": [100], "h": 1 }, { "t": 816, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "2", "w": 296, "h": 148, "ind": 3, "ty": 0, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 716, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "3", "w": 296, "h": 148, "ind": 4, "ty": 0, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 592, "s": [100], "h": 1 }, { "t": 856, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 5, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 176, "s": [22.5, 22.5], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 248, "s": [25, 25] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 6, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [-137.23, 51.63], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 0, "k": [76, 76], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 5 }, { "ddd": 0, "refId": "4", "w": 346, "h": 58, "ind": 7, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-2, -2], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 6 }, { "ddd": 0, "ind": 8, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [-255.49, 52.06], "ix": 2 }, "a": { "a": 0, "k": [25.34, 27.62], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 512, "s": [70, 70], "i": { "x": [0], "y": [3.063] }, "o": { "x": [0], "y": [0] } }, { "t": 548, "s": [81, 81] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 5 }, { "ddd": 0, "refId": "5", "w": 107, "h": 108, "ind": 9, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-32, -32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 8 }, { "ddd": 0, "ind": 10, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [111.85, 87.11], "ix": 2 }, "s": { "a": 1, "k": [ { "t": 444, "s": [21, 21], "i": { "x": [.288], "y": [1] }, "o": { "x": [.478], "y": [0] } }, { "t": 460, "s": [26.25, 26.25], "i": { "x": [.629], "y": [1] }, "o": { "x": [1], "y": [0] } }, { "t": 480, "s": [25, 25] } ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 11, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [7.38, -.79], "ix": 2 }, "a": { "a": 0, "k": [172, 27], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 448, "s": [75, 75], "i": { "x": [.833], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 508, "s": [76, 76] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 10 }, { "ddd": 0, "refId": "6", "w": 343, "h": 53, "ind": 12, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [1, 0], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 11 }, { "ddd": 0, "ind": 13, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [-110.31, -1.7], "ix": 2 }, "a": { "a": 0, "k": [27.34, 25.87], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 496, "s": [81, 81], "i": { "x": [1], "y": [1] }, "o": { "x": [1], "y": [0] } }, { "t": 512, "s": [67, 67] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 10 }, { "ddd": 0, "refId": "7", "w": 92, "h": 83, "ind": 14, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-25, -15], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 13 }, { "ddd": 0, "refId": "8", "w": 338, "h": 237, "ind": 15, "ty": 0, "sr": 1, "ks": { "p": { "a": 1, "k": [{ "t": 336, "s": [-40.48, 107.77], "i": { "x": [0], "y": [1] }, "o": { "x": [.333], "y": [0] } }, { "t": 408, "s": [77.02, 102.77] }], "ix": 2 }, "a": { "a": 0, "k": [169, 118.5], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 428, "s": [19.75, 19.75], "i": { "x": [1], "y": [1] }, "o": { "x": [1], "y": [0] } }, { "t": 452, "s": [16.25, 16.25] }], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 356, "s": [100], "h": 1 }, { "t": 448, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 16, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 176, "s": [22.5, 22.5], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 248, "s": [25, 25] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "9", "w": 563, "h": 283, "ind": 17, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-282, -203], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 176, "s": [100], "h": 1 }, { "t": 660, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 16 }, { "ddd": 0, "ind": 18, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 176, "s": [100], "h": 1 }, { "t": 660, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "parent": 16, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [9.58, 3.18], [9.58, -3.25], [10.46, -3.25], [10.46, 3.18], [9.58, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.38, -3.25], [8.36, -3.25], [8.36, -2.16], [7.38, -2.16], [7.38, -3.25] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [7.44, 3.18], [7.44, -1.35], [8.31, -1.35], [8.31, 3.18], [7.44, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [4.05, 2.56], [5.36, 1.19], [5.36, 1.11], [4.19, 1.11], [3.21, 1.87], [4.05, 2.56] ], "i": [ [0, 0], [0, .837], [0, 0], [0, 0], [0, -.477], [-.513, 0] ], "o": [ [.819, 0], [0, 0], [0, 0], [-.594, 0], [0, .414], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [3.88, 3.25], [2.33, 1.89], [4.1, .44], [5.05, .44], [5.36, .2], [4.26, -.72], [3.15, .13], [2.33, .13], [4.29, -1.43], [6.22, .26], [6.22, 3.18], [5.36, 3.18], [5.36, 2.43], [3.88, 3.25] ], "i": [ [0, 0], [0, .81], [-1.062, 0], [0, 0], [0, .162], [.693, 0], [.027, -.459], [0, 0], [-1.08, 0], [0, -1.008], [0, 0], [0, 0], [0, 0], [.684, 0] ], "o": [ [-.927, 0], [0, -.873], [0, 0], [.207, 0], [0, -.549], [-.639, 0], [0, 0], [.072, -.891], [1.17, 0], [0, 0], [0, 0], [0, 0], [-.225, .495], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-5.41, 3.18], [-5.41, -1.35], [-4.54, -1.35], [-4.54, -.55], [-3.18, -1.43], [-1.73, -.49], [-.26, -1.43], [1.34, .3], [1.34, 3.18], [.47, 3.18], [.47, .54], [-.5, -.66], [-1.6, .71], [-1.6, 3.18], [-2.48, 3.18], [-2.48, .54], [-3.43, -.66], [-4.54, .71], [-4.54, 3.18], [-5.41, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.675, 0], [-.18, -.594], [-.657, 0], [0, -1.053], [0, 0], [0, 0], [0, 0], [.603, 0], [0, -.72], [0, 0], [0, 0], [0, 0], [.594, 0], [0, -.72], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.189, -.513], [.693, 0], [.189, -.54], [.981, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0], [0, -.72], [-.693, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-10.46, 3.18], [-10.46, -3.12], [-6.41, -3.12], [-6.41, -2.29], [-9.52, -2.29], [-9.52, -.48], [-7.01, -.48], [-7.01, .35], [-9.52, .35], [-9.52, 2.35], [-6.32, 2.35], [-6.32, 3.18], [-10.46, 3.18] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 50, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [682, 120.32], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-66, -10], [66, -10], [70, -6], [70, 6], [66, 10], [-66, 10], [-70, 6], [-70, -6], [-66, -10] ], "i": [ [0, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0] ], "o": [ [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [733.82, 120.5], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 1, "k": [ { "t": 248, "s": [0, 0], "i": { "x": [.437], "y": [1] }, "o": { "x": [1], "y": [0] } }, { "t": 284, "s": [0, 100], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 348, "s": [0, 100], "i": { "x": [0], "y": [1] }, "o": { "x": [.517], "y": [0] } }, { "t": 416, "s": [0, 36], "i": { "x": [.75], "y": [.75] }, "o": { "x": [.25], "y": [.25] } }, { "t": 448, "s": [0, 36], "i": { "x": [0], "y": [1] }, "o": { "x": [0], "y": [0] } }, { "t": 484, "s": [0, 51] } ], "ix": 2 }, "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 0, "k": [399, 399], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 19, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 176, "s": [100], "h": 1 }, { "t": 660, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "parent": 16, "shapes": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [15.39, 3.54], [13.71, 1.89], [13.71, -.67], [12.68, -.67], [12.68, -1.5], [13.71, -1.5], [13.71, -3.08], [14.68, -3.08], [14.68, -1.5], [16.17, -1.5], [16.17, -.67], [14.68, -.67], [14.68, 1.85], [15.46, 2.69], [16.17, 2.69], [16.17, 3.54], [15.39, 3.54] ], "i": [ [0, 0], [0, 1.03], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.48, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [-1.02, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, .54], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.84, -3.62], [11.92, -3.62], [11.92, -2.4], [10.84, -2.4], [10.84, -3.62] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [10.9, 3.54], [10.9, -1.5], [11.87, -1.5], [11.87, 3.54], [10.9, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [2.05, 3.54], [2.05, -1.5], [3.02, -1.5], [3.02, -.61], [4.53, -1.58], [6.14, -.55], [7.78, -1.58], [9.55, .34], [9.55, 3.54], [8.58, 3.54], [8.58, .6], [7.51, -.73], [6.28, .79], [6.28, 3.54], [5.31, 3.54], [5.31, .6], [4.25, -.73], [3.02, .79], [3.02, 3.54], [2.05, 3.54] ], "i": [ [0, 0], [0, 0], [0, 0], [0, 0], [-.75, 0], [-.2, -.66], [-.73, 0], [0, -1.17], [0, 0], [0, 0], [0, 0], [.67, 0], [0, -.8], [0, 0], [0, 0], [0, 0], [.66, 0], [0, -.8], [0, 0], [0, 0] ], "o": [ [0, 0], [0, 0], [0, 0], [.21, -.57], [.77, 0], [.21, -.6], [1.09, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0], [0, -.8], [-.77, 0], [0, 0], [0, 0], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.58, 2.77], [-.04, 1.01], [-1.58, -.73], [-3.13, 1.01], [-1.58, 2.77] ], "i": [ [0, 0], [0, 1.05], [.93, 0], [0, -1.05], [-.93, 0] ], "o": [ [.93, 0], [0, -1.05], [-.93, 0], [0, 1.05], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-1.43, 3.62], [-3.06, 2.79], [-3.06, 3.54], [-4.03, 3.54], [-4.03, -3.62], [-3.06, -3.62], [-3.06, -.77], [-1.45, -1.58], [.94, 1.01], [-1.43, 3.62] ], "i": [ [0, 0], [.3, .5], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.67, 0], [0, -1.49], [1.51, 0] ], "o": [ [-.68, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.31, -.5], [1.52, 0], [0, 1.49], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-8.04, 3.62], [-9.91, 1.59], [-9.91, -1.5], [-8.95, -1.5], [-8.95, 1.41], [-7.76, 2.75], [-6.4, 1.23], [-6.4, -1.5], [-5.43, -1.5], [-5.43, 3.54], [-6.4, 3.54], [-6.4, 2.65], [-8.04, 3.62] ], "i": [ [0, 0], [0, 1.2], [0, 0], [0, 0], [0, 0], [-.71, 0], [0, .88], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [.75, 0] ], "o": [ [-1.14, 0], [0, 0], [0, 0], [0, 0], [0, .8], [.79, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-.27, .63], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [{ "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-13.48, 3.62], [-16.17, 1.22], [-15.16, 1.22], [-13.48, 2.69], [-11.98, 1.59], [-15.96, -1.64], [-13.56, -3.54], [-11.06, -1.44], [-12.07, -1.44], [-13.56, -2.63], [-14.91, -1.65], [-10.92, 1.58], [-13.48, 3.62] ], "i": [ [0, 0], [.08, 1.45], [0, 0], [-1.07, 0], [0, .76], [0, 2.63], [-1.41, 0], [-.09, -1.28], [0, 0], [.86, 0], [0, -.6], [0, -2.74], [1.5, 0] ], "o": [ [-1.66, 0], [0, 0], [.08, .9], [.88, 0], [0, -1.75], [0, -1.14], [1.43, 0], [0, 0], [-.07, -.72], [-.84, 0], [0, 1.76], [0, 1.28], [0, 0] ] } } }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "fl", "c": { "a": 0, "k": [ 1, 1, 1 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [734.38, 174.97], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }, { "ty": "gr", "it": [ { "ty": "sh", "d": 1, "ks": { "a": 0, "k": { "c": true, "v": [ [-26.5, -10.5], [26.5, -10.5], [28.5, -8.5], [28.5, 8.5], [26.5, 10.5], [-26.5, 10.5], [-28.5, 8.5], [-28.5, -8.5], [-26.5, -10.5] ], "i": [ [0, 0], [0, 0], [0, -1.105], [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0] ], "o": [ [0, 0], [1.105, 0], [0, 0], [0, 1.105], [0, 0], [-1.105, 0], [0, 0], [0, -1.105], [0, 0] ] } } }, { "ty": "fl", "c": { "a": 0, "k": [ 0, 0, 0 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "p": { "a": 0, "k": [734.32, 175], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "a": { "a": 0, "k": [733.82, 141.5], "ix": 2 }, "s": { "a": 0, "k": [399, 399], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "a", "ind": 20, "ty": 2, "sr": 1, "ks": { "a": { "a": 0, "k": [448, 224], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 176, "s": [100], "h": 1 }, { "t": 660, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 16 }, { "ddd": 0, "ind": 21, "ty": 3, "sr": 1, "ks": { "p": { "a": 0, "k": [148, 74], "ix": 2 }, "s": { "a": 1, "k": [{ "t": 148, "s": [25, 25], "i": { "x": [1], "y": [1] }, "o": { "x": [1], "y": [0] } }, { "t": 176, "s": [18.25, 18.25] }], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "b", "w": 395, "h": 276, "ind": 22, "ty": 0, "sr": 1, "ks": { "p": { "a": 1, "k": [{ "t": 16, "s": [-762.81, 389.66], "i": { "x": [0], "y": [1] }, "o": { "x": [.421], "y": [0] } }, { "t": 136, "s": [-388.97, 10.9] }], "ix": 2 }, "a": { "a": 0, "k": [197.5, 138], "ix": 2 }, "s": { "a": 0, "k": [65, 65], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 16, "s": [100], "h": 1 }, { "t": 176, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 21 }, { "ddd": 0, "refId": "c", "w": 395, "h": 277, "ind": 23, "ty": 0, "sr": 1, "ks": { "p": { "a": 1, "k": [{ "t": 8, "s": [-499.64, 389.66], "i": { "x": [0], "y": [1] }, "o": { "x": [.421], "y": [0] } }, { "t": 124, "s": [-125.81, 10.9] }], "ix": 2 }, "a": { "a": 0, "k": [197.5, 138.5], "ix": 2 }, "s": { "a": 0, "k": [65, 65], "ix": 2 }, "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 8, "s": [100], "h": 1 }, { "t": 176, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 21 }, { "ddd": 0, "refId": "d", "w": 640, "h": 490, "ind": 24, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-371, -84], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [100], "h": 1 }, { "t": 176, "s": [0], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 21 }, { "ddd": 0, "refId": "e", "w": 639, "h": 490, "ind": 25, "ty": 0, "sr": 1, "ks": { "p": { "a": 0, "k": [-107, -84], "ix": 2 }, "o": { "a": 1, "k": [{ "t": 0, "s": [100], "h": 1 }, { "t": 176, "s": [0], "h": 1 }], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0, "parent": 21 }, { "ddd": 0, "ind": 26, "ty": 4, "sr": 1, "ks": { "o": { "a": 1, "k": [{ "t": 0, "s": [0], "h": 1 }, { "t": 64, "s": [100], "h": 1 }], "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 1, "k": [ { "t": 12, "s": [0, 0], "i": { "x": [0], "y": [1] }, "o": { "x": [.454], "y": [0] } }, { "t": 152, "s": [885.4, 463.6], "i": { "x": [0], "y": [1] }, "o": { "x": [.34], "y": [0] } }, { "t": 204, "s": [967.32, 506.16] } ], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "st", "c": { "a": 0, "k": [ .855, .22, .891 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "w": { "a": 0, "k": 2, "ix": 2 }, "lc": 1, "lj": 1, "ml": 4 }, { "ty": "tr", "p": { "a": 0, "k": [-1.84, -2.42], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }, { "ty": "tr", "p": { "a": 0, "k": [148.46, 74.6], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } }] }], "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "refId": "f", "w": 296, "h": 148, "ind": 27, "ty": 0, "sr": 1, "ks": { "o": { "a": 1, "k": [ { "t": 0, "s": [0], "h": 1 }, { "t": 36, "s": [100], "h": 1 }, { "t": 668, "s": [0], "h": 1 } ], "ix": 2 } }, "ao": 0, "ip": 0, "op": 877, "st": 0 }, { "ddd": 0, "ind": 28, "ty": 4, "sr": 1, "ks": { "o": { "a": 0, "k": 100, "ix": 2 } }, "ao": 0, "shapes": [{ "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "a": 0, "k": [1184, 592], "ix": 2 }, "p": { "a": 0, "k": [0, 0], "ix": 2 }, "r": { "a": 0, "k": 0, "ix": 2 } }, { "ty": "fl", "c": { "a": 0, "k": [ .965, .965, .965 ], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 }, "r": 1, "bm": 0 }, { "ty": "tr", "a": { "a": 0, "k": [-592, -296], "ix": 2 }, "s": { "a": 0, "k": [25, 25], "ix": 2 }, "o": { "a": 0, "k": 100, "ix": 2 } } ] }], "ip": 0, "op": 877, "st": 0 } ]; var atomic_form_animation_default = { v, fr: 100, ip: 0, op: 876, w: 296, h: 148, ddd: 0, assets, layers }; //#endregion //#region modules/promotions/assets/js/react/atomic-promotion-media.js var CARD_WIDTH$2 = 296; var IMAGE_HEIGHT$1 = 176; var ANIMATION_HEIGHT = 150; var PROMOTION_ANIMATIONS = { "atomic-form-animation": atomic_form_animation_exports }; function resolvePromotionAnimation(animationKey) { var _PROMOTION_ANIMATIONS; return (_PROMOTION_ANIMATIONS = PROMOTION_ANIMATIONS[animationKey]) !== null && _PROMOTION_ANIMATIONS !== void 0 ? _PROMOTION_ANIMATIONS : null; } function AtomicPromotionMedia(_ref) { var image = _ref.image; var animationData = _ref.animationData; if (image) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Image, { src: image, alt: "", sx: { width: CARD_WIDTH$2, height: IMAGE_HEIGHT$1 } }); if (animationData) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { height: ANIMATION_HEIGHT, width: "100%", overflow: "hidden" }, "data-testid": "e-atomic-form-animation" }, /*#__PURE__*/ react.default.createElement(import_index_umd.default, { animationData, loop: true, autoplay: true, rendererSettings: { preserveAspectRatio: "xMidYMid slice" }, style: { width: "100%", height: "100%" } })); return null; } AtomicPromotionMedia.propTypes = { animationData: import_prop_types.default.object, image: import_prop_types.default.string }; //#endregion //#region modules/promotions/assets/js/react/components/atomic-promotion-card.js var CARD_WIDTH$1 = 296; var AtomicPromotionCard = function AtomicPromotionCard(_ref) { var doClose = _ref.doClose; var promotionData = _ref.promotionData; var _ref2 = promotionData !== null && promotionData !== void 0 ? promotionData : {}; var title = _ref2.title; var content = _ref2.content; var ctaText = _ref2.ctaText; var ctaUrl = _ref2.ctaUrl; var image = _ref2.image; var animationData = _ref2.animationData; return /*#__PURE__*/ react.default.createElement(_elementor_ui.ClickAwayListener, { disableReactTree: true, mouseEvent: "onMouseDown", touchEvent: "onTouchStart", onClickAway: doClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { width: CARD_WIDTH$1 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", py: 1, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle2" }, title), /*#__PURE__*/ react.default.createElement(_elementor_ui.CloseButton, { edge: "end", sx: { ml: "auto" }, slotProps: { icon: { fontSize: "small" } }, onClick: doClose })), /*#__PURE__*/ react.default.createElement(AtomicPromotionMedia, { image, animationData }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "secondary", sx: { pt: 1.5, pb: 1 } }, content)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", pt: 1, pb: 1.5, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", size: "small", color: "promotion", startIcon: /*#__PURE__*/ react.default.createElement(_elementor_icons.CrownFilledIcon, null), href: ctaUrl, target: "_blank", rel: "noopener noreferrer" }, ctaText)))); }; AtomicPromotionCard.propTypes = { doClose: import_prop_types.default.func, promotionData: import_prop_types.default.object }; //#endregion //#region modules/promotions/assets/js/react/components/promotion-card.js var PromotionCard = function PromotionCard(_ref) { var doClose = _ref.doClose; var promotionsData = _ref.promotionsData; var title = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.title; var description = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.description; var imgSrc = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.image; var imgAlt = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.image_alt; var ctaText = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.upgrade_text; var ctaUrl = promotionsData === null || promotionsData === void 0 ? void 0 : promotionsData.upgrade_url; return /*#__PURE__*/ react.default.createElement(_elementor_ui.ClickAwayListener, { disableReactTree: true, mouseEvent: "onMouseDown", touchEvent: "onTouchStart", onClickAway: doClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { width: 296 }, "data-testid": "e-promotion-card" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", py: 1, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle2" }, title), /*#__PURE__*/ react.default.createElement(_elementor_ui.Chip, { label: (0, _wordpress_i18n.__)("PRO", "elementor"), size: "small", variant: "outlined", color: "promotion", sx: { ml: 1 } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.CloseButton, { edge: "end", sx: { ml: "auto" }, slotProps: { icon: { fontSize: "small" } }, onClick: doClose })), /*#__PURE__*/ react.default.createElement(_elementor_ui.Image, { src: imgSrc, alt: imgAlt, sx: { height: 150, width: "100%" } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { px: 2 }, 1 === description.length ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "secondary", sx: { pt: 1.5, pb: 1 } }, description[0]) : /*#__PURE__*/ react.default.createElement(_elementor_ui.List, { sx: { pl: 2 } }, description.map(function(text, index) { return /*#__PURE__*/ react.default.createElement(_elementor_ui.ListItem, { key: index, sx: { listStyle: "disc", display: "list-item", color: "text.secondary", p: 0 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "secondary" }, text)); }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { pt: 1, pb: 1.5, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", size: "small", color: "promotion", onClick: function redirectHandler() { window.open(ctaUrl, "_blank"); return doClose(); }, sx: { ml: "auto" } }, ctaText)))); }; PromotionCard.propTypes = { doClose: import_prop_types.default.func, promotionsData: import_prop_types.default.object }; //#endregion //#region modules/promotions/assets/js/react/components/widget-promotion-card.js var CARD_WIDTH = 296; var IMAGE_HEIGHT = 176; var DEFAULT_CTA_TEXT = (0, _wordpress_i18n.__)("Upgrade Now", "elementor"); var WidgetPromotionCard = function WidgetPromotionCard(_ref) { var doClose = _ref.doClose; var promotionData = _ref.promotionData; var title = promotionData.title; var content = promotionData.content; var image = promotionData.image; var ctaUrl = promotionData.ctaUrl; var ctaText = promotionData.ctaText; var hideProTag = promotionData.hideProTag; return /*#__PURE__*/ react.default.createElement(_elementor_ui.ClickAwayListener, { disableReactTree: true, mouseEvent: "onMouseDown", touchEvent: "onTouchStart", onClickAway: doClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { width: CARD_WIDTH } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", py: 1, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle2" }, title), hideProTag && /*#__PURE__*/ react.default.createElement(_elementor_ui.Chip, { label: (0, _wordpress_i18n.__)("Free", "elementor"), size: "tiny", variant: "standard", color: "secondary", sx: { ml: 1 } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.CloseButton, { edge: "end", sx: { ml: "auto" }, slotProps: { icon: { fontSize: "small" } }, onClick: doClose })), image && /*#__PURE__*/ react.default.createElement(_elementor_ui.Image, { src: image, alt: "", sx: { width: CARD_WIDTH, height: IMAGE_HEIGHT } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "secondary", sx: { pt: 1.5, pb: 1 } }, content)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { pt: 1, pb: 1.5, px: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", size: "small", color: hideProTag ? "info" : "promotion", href: ctaUrl, target: "_blank", rel: "noopener noreferrer", startIcon: hideProTag ? null : /*#__PURE__*/ react.default.createElement(_elementor_icons.CrownFilledIcon, null), sx: { ml: "auto" } }, ctaText || DEFAULT_CTA_TEXT)))); }; WidgetPromotionCard.propTypes = { doClose: import_prop_types.default.func, promotionData: import_prop_types.default.object }; //#endregion //#region modules/promotions/assets/js/react/app.js var _excluded = [ "colorScheme", "isRTL", "anchorTarget" ]; function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function(r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } __name(ownKeys$1, "ownKeys"); function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function(r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$1, "_objectSpread"); var OFFSET_MODIFIER = { name: "offset", options: { offset: [-24, 8] } }; function getPlacement(anchorTarget, isRTL) { if (!anchorTarget) return "right"; return isRTL ? "left-start" : "right-start"; } function getCardContent(props) { if ("atomic" === props.cardType) return /*#__PURE__*/ react.default.createElement(AtomicPromotionCard, { doClose: props.doClose, promotionData: props.promotionData }); if ("widgetPromotion" === props.cardType) return /*#__PURE__*/ react.default.createElement(WidgetPromotionCard, { doClose: props.doClose, promotionData: props.promotionData }); return /*#__PURE__*/ react.default.createElement(PromotionCard, { doClose: props.onClose, promotionsData: props.promotionsData }); } var App = function App(_ref) { var colorScheme = _ref.colorScheme; var isRTL = _ref.isRTL; var anchorTarget = _ref.anchorTarget; var props = _objectWithoutProperties(_ref, _excluded); return /*#__PURE__*/ react.default.createElement(_elementor_ui.DirectionProvider, { rtl: isRTL }, /*#__PURE__*/ react.default.createElement(_elementor_ui.LocalizationProvider, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.ThemeProvider, { colorScheme, palette: "unstable" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Infotip, { content: getCardContent(props), placement: getPlacement(anchorTarget, isRTL), arrow: true, open: true, disableHoverListener: true, PopperProps: _objectSpread$1({ modifiers: [OFFSET_MODIFIER], sx: { zIndex: function zIndex(theme) { return theme.zIndex.appBar - 1; } } }, anchorTarget && { anchorEl: anchorTarget }) }, /*#__PURE__*/ react.default.createElement("span", null))))); }; App.propTypes = { colorScheme: import_prop_types.default.oneOf([ "auto", "light", "dark" ]), isRTL: import_prop_types.default.bool, anchorTarget: import_prop_types.default.object, cardType: import_prop_types.default.string, promotionsData: import_prop_types.default.object, promotionData: import_prop_types.default.object, ctaUrl: import_prop_types.default.string, doClose: import_prop_types.default.func, onClose: import_prop_types.default.func }; //#endregion //#region assets/dev/js/editor/utils/preview-iframe-listeners.js function bindPreviewIframeEvents(callback) { var _elementor; var iframeDocument = (_elementor = elementor) === null || _elementor === void 0 || (_elementor = _elementor.$preview) === null || _elementor === void 0 || (_elementor = _elementor[0]) === null || _elementor === void 0 ? void 0 : _elementor.contentDocument; if (!iframeDocument) return function() {}; var handleEvent = function handleEvent() { return callback(); }; iframeDocument.addEventListener("click", handleEvent); iframeDocument.addEventListener("keydown", handleEvent); return function() { iframeDocument.removeEventListener("click", handleEvent); iframeDocument.removeEventListener("keydown", handleEvent); }; } //#endregion //#region node_modules/react-dom/client.js var require_client = /* @__PURE__ */ __commonJSMin(((exports) => { var m = (globalThis.ReactDOM); var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; exports.createRoot = function(c, o) { i.usingClientEntryPoint = true; try { return m.createRoot(c, o); } finally { i.usingClientEntryPoint = false; } }; })); //#endregion //#region modules/promotions/assets/js/react/app-manager.js init_defineProperty(); var import_client = require_client(); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function(r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function(r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var AppManager = /*#__PURE__*/ function() { function AppManager() { _classCallCheck(this, AppManager); this.promotionInfoTip = null; this.promotionWrapper = null; this.onRoute = function() {}; this.unbindIframeEvents = function() {}; this.attachAtomicWidgetPromotionListeners(); this.attachWidgetPromotionListeners(); } return _createClass(AppManager, [ { key: "getPromotionData", value: function getPromotionData(promotionType) { return elementorPromotionsData[promotionType] || {}; } }, { key: "resolveWidgetPromotionData", value: function resolveWidgetPromotionData(detail) { var _elementor; var _elementor$config$pro; var _elementsPromotion$ac; var _elementsPromotion$ac2; var _elementsPromotion$ti; var _elementsPromotion$co; var promotions = ((_elementor = elementor) === null || _elementor === void 0 || (_elementor = _elementor.config) === null || _elementor === void 0 ? void 0 : _elementor.v4Promotions) || {}; var widgetType = detail.widgetType || ""; var normalizedType = widgetType.replace(/[-_]/g, "").toLowerCase(); var key = Object.keys(promotions).find(function(promotionKey) { return promotionKey.replace(/[-_]/g, "").toLowerCase() === normalizedType; }); var promotionData = key ? promotions[key] : null; var elementsPromotion = ((_elementor$config$pro = elementor.config.promotion) === null || _elementor$config$pro === void 0 ? void 0 : _elementor$config$pro.elements) || {}; var fallbackCtaUrl = detail.ctaUrl || ((_elementsPromotion$ac = elementsPromotion.action_button) === null || _elementsPromotion$ac === void 0 || (_elementsPromotion$ac = _elementsPromotion$ac.url) === null || _elementsPromotion$ac === void 0 ? void 0 : _elementsPromotion$ac.replace("%s", widgetType)) || ""; var fallbackCtaText = detail.ctaText || ((_elementsPromotion$ac2 = elementsPromotion.action_button) === null || _elementsPromotion$ac2 === void 0 ? void 0 : _elementsPromotion$ac2.text) || ""; var widgetName = detail.widgetTitle || detail.title || ""; var hideProTag = detail.hideProTag || false; return applyProConnectPromotionOverrides(promotionData ? _objectSpread(_objectSpread({}, promotionData), {}, { ctaUrl: promotionData.ctaUrl || fallbackCtaUrl, ctaText: promotionData.ctaText || fallbackCtaText, hideProTag }) : { title: detail.title || ((_elementsPromotion$ti = elementsPromotion.title) === null || _elementsPromotion$ti === void 0 ? void 0 : _elementsPromotion$ti.replace("%s", widgetName)) || "", content: detail.content || ((_elementsPromotion$co = elementsPromotion.content) === null || _elementsPromotion$co === void 0 ? void 0 : _elementsPromotion$co.replace("%s", widgetName)) || "", ctaUrl: fallbackCtaUrl, ctaText: fallbackCtaText, hideProTag }); } }, { key: "mount", value: function mount(targetNode, selectors) { var _elementor2; var _elementor2$getPrefer; var _rootElement$getAttri; var _this = this; if (this.promotionInfoTip) return; var wrapperElement = targetNode === null || targetNode === void 0 ? void 0 : targetNode.closest(selectors.wrapperElement); var rootElement = wrapperElement === null || wrapperElement === void 0 ? void 0 : wrapperElement.querySelector(selectors.reactAnchor); if (!rootElement) return; this.attachEditorEventListeners(); this.promotionInfoTip = (0, import_client.createRoot)(rootElement); var colorScheme = ((_elementor2 = elementor) === null || _elementor2 === void 0 || (_elementor2$getPrefer = _elementor2.getPreferences) === null || _elementor2$getPrefer === void 0 ? void 0 : _elementor2$getPrefer.call(_elementor2, "ui_theme")) || "auto"; var isRTL = elementorCommon.config.isRTL; var promotionType = (_rootElement$getAttri = rootElement.getAttribute("data-promotion")) === null || _rootElement$getAttri === void 0 ? void 0 : _rootElement$getAttri.replace("_promotion", ""); this.promotionInfoTip.render(/*#__PURE__*/ react.default.createElement(App, { colorScheme, isRTL, promotionsData: this.getPromotionData(promotionType), onClose: function onClose() { return _this.unmount(); } })); } }, { key: "mountCard", value: function mountCard(targetEl, wrapperClassName, appProps) { var _elementor3; var _elementor3$getPrefer; var _this2 = this; this.unmount(); this.promotionWrapper = document.createElement("span"); this.promotionWrapper.className = wrapperClassName; document.body.appendChild(this.promotionWrapper); this.attachEditorEventListeners(); this.promotionInfoTip = (0, import_client.createRoot)(this.promotionWrapper); this.promotionInfoTip.render(/*#__PURE__*/ react.default.createElement(App, _extends({ colorScheme: ((_elementor3 = elementor) === null || _elementor3 === void 0 || (_elementor3$getPrefer = _elementor3.getPreferences) === null || _elementor3$getPrefer === void 0 ? void 0 : _elementor3$getPrefer.call(_elementor3, "ui_theme")) || "auto", isRTL: elementorCommon.config.isRTL, anchorTarget: targetEl, doClose: function doClose() { return _this2.unmount(); } }, appProps))); } }, { key: "resolveAtomicWidgetPromotionCardProps", value: function resolveAtomicWidgetPromotionCardProps(_ref) { var cardType = _ref.cardType; var content = _ref.content; return { cardType, promotionData: applyProConnectPromotionOverrides({ title: content.title, content: content.content, ctaText: content.ctaText, ctaUrl: content.widgetCtaUrl, image: content.image, animationData: resolvePromotionAnimation(content.animation) }) }; } }, { key: "attachAtomicWidgetPromotionListeners", value: function attachAtomicWidgetPromotionListeners() { var _elementor4; var _this3 = this; (((_elementor4 = elementor) === null || _elementor4 === void 0 || (_elementor4 = _elementor4.config) === null || _elementor4 === void 0 ? void 0 : _elementor4.atomicWidgetPromotions) || []).forEach(function(_ref2) { var type = _ref2.type; var cardType = _ref2.cardType; var content = _ref2.content; document.addEventListener("".concat(type, "-promotion:open"), function(event) { _this3.mountCard(event.detail.target, "e-".concat(type, "-promotion-wrapper"), _this3.resolveAtomicWidgetPromotionCardProps({ cardType, content })); }); }); } }, { key: "attachWidgetPromotionListeners", value: function attachWidgetPromotionListeners() { var _this4 = this; document.addEventListener("widget-promotion:open", function(event) { _this4.mountCard(event.detail.target, "e-widget-promotion-wrapper", { cardType: "widgetPromotion", promotionData: _this4.resolveWidgetPromotionData(event.detail) }); }); } }, { key: "unmount", value: function unmount() { var _this$promotionWrappe; if (this.promotionInfoTip) { this.detachEditorEventListeners(); this.promotionInfoTip.unmount(); this.unbindIframeEvents(); } (_this$promotionWrappe = this.promotionWrapper) === null || _this$promotionWrappe === void 0 || (_this$promotionWrappe = _this$promotionWrappe.parentNode) === null || _this$promotionWrappe === void 0 || _this$promotionWrappe.removeChild(this.promotionWrapper); this.promotionInfoTip = null; this.promotionWrapper = null; } }, { key: "attachEditorEventListeners", value: function attachEditorEventListeners() { var _this5 = this; this.unbindIframeEvents = bindPreviewIframeEvents(function() { return _this5.unmount(); }); this.onRoute = function(component, route) { if (route !== "panel/elements/categories" && route !== "panel/editor/content") return; _this5.unmount(); }; $e.routes.on("run:after", this.onRoute); } }, { key: "detachEditorEventListeners", value: function detachEditorEventListeners() { $e.routes.off("run:after", this.onRoute); } } ]); }(); function applyProConnectPromotionOverrides(promotionData) { if (!elementor.helpers.hasProAndNotConnected()) return promotionData; return _objectSpread(_objectSpread({}, promotionData), {}, { ctaUrl: elementorProEditorConfig.urls.connect, ctaText: (0, _wordpress_i18n.__)("Connect & Activate", "elementor") }); } //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } var init_arrayWithHoles = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e; var n; var i; var u; var a = []; var f = !0; var o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } var init_iterableToArrayLimit = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var init_arrayLikeToArray = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } var init_unsupportedIterableToArray = __esmMin((() => { init_arrayLikeToArray(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var init_nonIterableRest = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } var init_slicedToArray = __esmMin((() => { init_arrayWithHoles(); init_iterableToArrayLimit(); init_unsupportedIterableToArray(); init_nonIterableRest(); })); //#endregion //#region assets/dev/js/editor/components/validator/base.js var require_base$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = elementorModules.Module.extend({ errors: [], __construct: function __construct(settings) { var customValidationMethod = settings.customValidationMethod; if (customValidationMethod) this.validationMethod = customValidationMethod; }, getDefaultSettings: function getDefaultSettings() { return { validationTerms: {} }; }, isValid: function isValid() { var validationErrors = this.validationMethod.apply(this, arguments); if (validationErrors.length) { this.errors = validationErrors; return false; } return true; }, validationMethod: function validationMethod(newValue) { var validationTerms = this.getSettings("validationTerms"); var errors = []; if (validationTerms.required) { if (!("" + newValue).length) errors.push("Required value is empty"); } return errors; } }); })); //#endregion //#region assets/dev/js/editor/components/validator/number.js var require_number = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Validator = require_base$1(); module.exports = Validator.extend({ validationMethod: function validationMethod(newValue) { var validationTerms = this.getSettings("validationTerms"); var errors = []; if (_.isFinite(newValue)) { if (void 0 !== validationTerms.min && newValue < validationTerms.min) errors.push("Value is less than minimum"); if (void 0 !== validationTerms.max && newValue > validationTerms.max) errors.push("Value is greater than maximum"); } return errors; } }); })); //#endregion //#region assets/dev/js/editor/components/validator/breakpoint.js function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); } var NumberValidator, BreakpointValidator; var init_breakpoint = __esmMin((() => { init_classCallCheck(); init_createClass(); __name(_callSuper$2, "_callSuper"); __name(_isNativeReflectConstruct$2, "_isNativeReflectConstruct"); NumberValidator = require_number(); BreakpointValidator = /*#__PURE__*/ function(_NumberValidator) { function BreakpointValidator() { _classCallCheck(this, BreakpointValidator); return _callSuper$2(this, BreakpointValidator, arguments); } _inherits(BreakpointValidator, _NumberValidator); return _createClass(BreakpointValidator, [ { key: "getDefaultSettings", value: function getDefaultSettings() { return { validationTerms: { max: 5120 } }; } }, { key: "getPanelActiveBreakpoints", value: function getPanelActiveBreakpoints() { var panelBreakpoints = elementor.documents.currentDocument.config.settings.settings.active_breakpoints.map(function(breakpointName) { return breakpointName.replace("viewport_", ""); }); var panelActiveBreakpoints = {}; panelBreakpoints.forEach(function(breakpointName) { panelActiveBreakpoints[breakpointName] = elementorFrontend.config.responsive.breakpoints[breakpointName]; }); return panelActiveBreakpoints; } }, { key: "initBreakpointProperties", value: function initBreakpointProperties() { var _activeBreakpoints$br; var _activeBreakpoints$br2; var validationTerms = this.getSettings("validationTerms"); var activeBreakpoints = this.getPanelActiveBreakpoints(); var breakpointKeys = Object.keys(activeBreakpoints); this.breakpointIndex = breakpointKeys.indexOf(validationTerms.breakpointName); this.topBreakpoint = (_activeBreakpoints$br = activeBreakpoints[breakpointKeys[this.breakpointIndex + 1]]) === null || _activeBreakpoints$br === void 0 ? void 0 : _activeBreakpoints$br.value; this.bottomBreakpoint = (_activeBreakpoints$br2 = activeBreakpoints[breakpointKeys[this.breakpointIndex - 1]]) === null || _activeBreakpoints$br2 === void 0 ? void 0 : _activeBreakpoints$br2.value; } }, { key: "validationMethod", value: function validationMethod(newValue) { var validationTerms = this.getSettings("validationTerms"); var errors = NumberValidator.prototype.validationMethod.call(this, newValue); if (_.isFinite(newValue) || "" === newValue) { if (!this.validateMinMaxForBreakpoint(newValue, validationTerms)) errors.push("Value is not between the breakpoints above or under the edited breakpoint"); } return errors; } }, { key: "validateMinMaxForBreakpoint", value: function validateMinMaxForBreakpoint(newValue, validationTerms) { var breakpointDefaultValue = elementorFrontend.config.responsive.breakpoints[validationTerms.breakpointName].default_value; var isValid = true; this.initBreakpointProperties(); if ("mobile" === validationTerms.breakpointName && 320 === this.bottomBreakpoint) this.bottomBreakpoint -= 1; if (this.bottomBreakpoint) { if ("" !== newValue && newValue <= this.bottomBreakpoint) isValid = false; if ("" === newValue && breakpointDefaultValue <= this.bottomBreakpoint) isValid = false; } if (this.topBreakpoint) { if ("" !== newValue && newValue >= this.topBreakpoint) isValid = false; if ("" === newValue && breakpointDefaultValue >= this.topBreakpoint) isValid = false; } return isValid; } } ]); }(NumberValidator); })); //#endregion //#region assets/dev/js/editor/controls/base.js var require_base = /* @__PURE__ */ __commonJSMin(((exports, module) => { init_defineProperty(); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function(r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function(r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var ControlBaseView = Marionette.CompositeView.extend({ ui: function ui() { return { controlTitle: ".elementor-control-title" }; }, behaviors: function behaviors() { return elementor.hooks.applyFilters("controls/base/behaviors", {}, this); }, getBehavior: function getBehavior(name) { return this._behaviors[Object.keys(this.behaviors()).indexOf(name)]; }, className: function className() { var classes = "elementor-control elementor-control-" + this.model.get("name") + " elementor-control-type-" + this.model.get("type"); var modelClasses = this.model.get("classes"); var responsive = this.model.get("responsive"); if (!_.isEmpty(modelClasses)) classes += " " + modelClasses; if (!_.isEmpty(responsive)) { var responsiveControlName = responsive.max || responsive.min; classes += " elementor-control-responsive-" + responsiveControlName; } return classes; }, templateHelpers: function templateHelpers() { var controlData = { _cid: this.model.cid }; return { view: this, data: _.extend({}, this.model.toJSON(), controlData) }; }, getTemplate: function getTemplate() { return Marionette.TemplateCache.get("#tmpl-elementor-control-" + this.model.get("type") + "-content"); }, initialize: function initialize(options) { var label = this.model.get("label"); Object.defineProperty(this, "container", { get: function get() { if (!options.container) { var settingsModel = options.elementSettingsModel; var view = $e.components.get("document").utils.findViewById(settingsModel.id); if (view && view.getContainer) options.container = view.getContainer(); else { if (!settingsModel.id) settingsModel.id = "bc-" + elementorCommon.helpers.getUniqueId(); options.container = new elementorModules.editor.Container({ type: "bc-container", id: settingsModel.id, model: settingsModel, settings: settingsModel, label, view: false, parent: false, renderer: false, controls: settingsModel.options.controls }); } } return options.container; } }); Object.defineProperty(this, "elementSettingsModel", { get: function get() { elementorDevTools.deprecation.deprecated("elementSettingsModel", "2.8.0", "container.settings"); return options.container ? options.container.settings : options.elementSettingsModel; } }); var controlType = this.model.get("type"); var controlSettings = jQuery.extend(true, {}, elementor.config.controls[controlType], this.model.attributes); this.model.set(controlSettings); var settings = this.container ? this.container.settings : this.elementSettingsModel; this.listenTo(settings, "change", this.onAfterChange); if (this.model.attributes.responsive) { this.onDeviceModeChange = this.onDeviceModeChange.bind(this); elementor.listenTo(elementor.channels.deviceMode, "change", this.onDeviceModeChange); } }, onDestroy: function onDestroy() { elementor.stopListening(elementor.channels.deviceMode, "change", this.onDeviceModeChange); }, onDeviceModeChange: function onDeviceModeChange() { this.toggleControlVisibility(); }, onAfterChange: function onAfterChange() { this.toggleControlVisibility(); }, toggleControlVisibility: function toggleControlVisibility() { var settings = this.container ? this.container.settings : this.elementSettingsModel; var isVisible = elementor.helpers.isActiveControl(this.model, settings.attributes, settings.controls); this.$el.toggleClass("elementor-hidden-control", !isVisible); elementor.getPanelView().updateScrollbar(); }, onRender: function onRender() { var layoutType = this.model.get("label_block") ? "block" : "inline"; var showLabel = this.model.get("show_label"); var elClasses = "elementor-label-" + layoutType; elClasses += " elementor-control-separator-" + this.model.get("separator"); if (!showLabel) elClasses += " elementor-control-hidden-label"; this.$el.addClass(elClasses); this.toggleControlVisibility(); }, reRoute: function reRoute(controlActive) { $e.route($e.routes.getCurrent("panel"), this.getControlInRouteArgs(controlActive ? this.getControlPath() : ""), { history: false }); }, getControlInRouteArgs: function getControlInRouteArgs(path) { return _objectSpread(_objectSpread({}, $e.routes.getCurrentArgs("panel")), {}, { activeControl: path }); }, getControlPath: function getControlPath() { var controlPath = this.model.get("name"); var parent = this._parent; while (!parent.$el.hasClass("elementor-controls-stack")) { controlPath = (parent.model.get("name") || parent.model.get("_id")) + "/" + controlPath; parent = parent._parent; } return controlPath; } }); module.exports = ControlBaseView; })); //#endregion //#region assets/dev/js/editor/components/dynamic-tags/tag-controls-stack-empty.js var require_tag_controls_stack_empty = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = Marionette.ItemView.extend({ className: "elementor-tag-controls-stack-empty", template: "#tmpl-elementor-tag-controls-stack-empty" }); })); //#endregion //#region assets/dev/js/editor/components/dynamic-tags/tag-controls-stack.js var require_tag_controls_stack = /* @__PURE__ */ __commonJSMin(((exports, module) => { var EmptyView = require_tag_controls_stack_empty(); module.exports = elementorModules.editor.views.ControlsStack.extend({ activeTab: "content", template: _.noop, emptyView: EmptyView, isEmpty: function isEmpty() { return this.collection.length < 2; }, childViewOptions: function childViewOptions() { return { container: this.options.container }; }, getNamespaceArray: function getNamespaceArray() { var currentPageView = elementor.getPanelView().getCurrentPageView(); var eventNamespace = currentPageView.getNamespaceArray(); eventNamespace.push(currentPageView.activeSection); eventNamespace.push(this.getOption("controlName")); eventNamespace.push(this.getOption("name")); return eventNamespace; }, onRenderTemplate: function onRenderTemplate() { this.activateFirstSection(); } }); })); //#endregion //#region assets/dev/js/editor/components/dynamic-tags/tag-panel-view.js var require_tag_panel_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { var TagControlsStack = require_tag_controls_stack(); module.exports = Marionette.ItemView.extend({ className: "elementor-dynamic-cover e-input-style", tagControlsStack: null, templateHelpers: function templateHelpers() { var helpers = {}; if (this.model) helpers.controls = this.model.options.controls; return helpers; }, ui: { remove: ".elementor-dynamic-cover__remove" }, events: function events() { var events = { "click @ui.remove": "onRemoveClick" }; if (this.hasSettings()) events.click = "onClick"; return events; }, getTemplate: function getTemplate() { var config = this.getTagConfig(); var templateFunction = Marionette.TemplateCache.get("#tmpl-elementor-control-dynamic-cover"); var renderedTemplate = Marionette.Renderer.render(templateFunction, { hasSettings: this.hasSettings(), isRemovable: !this.getOption("dynamicSettings").default, title: config.title, content: config.panel_template }); return Marionette.TemplateCache.prototype.compileTemplate(renderedTemplate.trim()); }, getTagConfig: function getTagConfig() { return elementor.dynamicTags.getConfig("tags." + this.getOption("name")); }, initSettingsPopup: function initSettingsPopup() { var settingsPopupOptions = { className: "elementor-tag-settings-popup", position: { my: "left top+5", at: "left bottom", of: this.$el, autoRefresh: true }, hide: { ignore: ".select2-container" } }; var settingsPopup = elementorCommon.dialogsManager.createWidget("buttons", settingsPopupOptions); this.getSettingsPopup = function() { return settingsPopup; }; }, hasSettings: function hasSettings() { return !!Object.values(this.getTagConfig().controls).length; }, showSettingsPopup: function showSettingsPopup() { if (!this.tagControlsStack) this.initTagControlsStack(); var settingsPopup = this.getSettingsPopup(); if (settingsPopup.isVisible()) return; settingsPopup.show(); }, initTagControlsStack: function initTagControlsStack() { this.tagControlsStack = new TagControlsStack({ model: this.model, controls: this.model.controls, name: this.options.name, controlName: this.options.controlName, container: this.options.container, el: this.getSettingsPopup().getElements("message")[0] }); this.tagControlsStack.render(); }, initModel: function initModel() { this.model = new elementorModules.editor.elements.models.BaseSettings(this.getOption("settings"), { controls: this.getTagConfig().controls }); }, initialize: function initialize() { this.initModel(); if (!this.hasSettings()) return; this.initSettingsPopup(); this.listenTo(this.model, "change", this.render); }, onClick: function onClick() { this.showSettingsPopup(); }, onRemoveClick: function onRemoveClick(event) { event.stopPropagation(); this.destroy(); this.trigger("remove"); }, onDestroy: function onDestroy() { if (this.hasSettings()) this.getSettingsPopup().destroy(); if (this.tagControlsStack) this.tagControlsStack.destroy(); } }); })); //#endregion //#region assets/dev/js/editor/components/dynamic-tags/control-behavior.js var require_control_behavior = /* @__PURE__ */ __commonJSMin(((exports, module) => { init_defineProperty(); var TagPanelView = require_tag_panel_view(); module.exports = Marionette.Behavior.extend({ tagView: null, listenerAttached: false, initialize: function initialize() { if (!this.listenerAttached) { this.listenTo(this.view.options.container.settings, "change:external:__dynamic__", this.onAfterExternalChange); this.listenerAttached = true; } }, shouldRenderTools: function shouldRenderTools() { if (this.getOption("dynamicSettings").default) return false; var isFeatureAvailableToUser = elementor.helpers.hasPro() && !elementor.helpers.hasProAndNotConnected(); var hasTags = this.getOption("tags").length > 0; return !isFeatureAvailableToUser || hasTags; }, renderTools: function renderTools() { var _this = this; if (!this.shouldRenderTools()) return; var $dynamicSwitcher = jQuery(Marionette.Renderer.render("#tmpl-elementor-control-dynamic-switcher")); $dynamicSwitcher.on("click", function(event) { return _this.onDynamicSwitcherClick(event); }); this.$el.find(".elementor-control-dynamic-switcher-wrapper").append($dynamicSwitcher); this.ui.dynamicSwitcher = $dynamicSwitcher; if ("color" === this.view.model.get("type")) if (this.view.colorPicker) this.moveDynamicSwitcherToColorPicker(); else setTimeout(function() { return _this.moveDynamicSwitcherToColorPicker(); }); this.ui.dynamicSwitcher.tipsy({ title: function title() { return this.getAttribute("data-tooltip"); }, gravity: "s" }); }, moveDynamicSwitcherToColorPicker: function moveDynamicSwitcherToColorPicker() { var $colorPickerToolsContainer = this.view.colorPicker.$pickerToolsContainer; this.ui.dynamicSwitcher.removeClass("elementor-control-unit-1").addClass("e-control-tool"); var $eyedropper = $colorPickerToolsContainer.find(".elementor-control-element-color-picker"); if ($eyedropper.length) this.ui.dynamicSwitcher.insertBefore($eyedropper); else $colorPickerToolsContainer.append(this.ui.dynamicSwitcher); }, toggleDynamicClass: function toggleDynamicClass() { this.$el.toggleClass("elementor-control-dynamic-value", this.isDynamicMode()); }, isDynamicMode: function isDynamicMode() { var dynamicSettings = this.view.container.settings.get("__dynamic__"); return !!(dynamicSettings && dynamicSettings[this.view.model.get("name")]); }, createTagsList: function createTagsList() { var tags = _.groupBy(this.getOption("tags"), "group"); var groups = elementor.dynamicTags.getConfig("groups"); var $tagsList = this.ui.tagsList = jQuery("
", { class: "elementor-tags-list" }); var $tagsListInner = jQuery("
", { class: "elementor-tags-list__inner" }); $tagsList.append($tagsListInner); jQuery.each(groups, function(groupName) { var groupTags = tags[groupName]; if (!groupTags) return; var group = this; var $groupTitle = jQuery("
", { class: "elementor-tags-list__group-title" }).text(group.title); $tagsListInner.append($groupTitle); groupTags.forEach(function(tag) { var $tag = jQuery("
", { class: "elementor-tags-list__item" }); $tag.text(tag.title).attr("data-tag-name", tag.name); $tagsListInner.append($tag); }); }); if (!elementor.helpers.hasPro() && Object.keys(tags).length) { var proTeaser = Marionette.Renderer.render("#tmpl-elementor-dynamic-tags-promo", { promotionUrl: elementor.config.dynamicPromotionURL.replace("%s", this.view.model.get("name")) }); $tagsListInner.append(proTeaser); } $tagsListInner.on("click", ".elementor-tags-list__item", this.onTagsListItemClick.bind(this)); elementorCommon.elements.$body.append($tagsList); }, getTagsList: function getTagsList() { if (!this.ui.tagsList) this.createTagsList(); return this.ui.tagsList; }, toggleTagsList: function toggleTagsList() { var $tagsList = this.getTagsList(); if ($tagsList.is(":visible")) { $tagsList.hide(); return; } var direction = elementorCommon.config.isRTL ? "left" : "right"; $tagsList.show().position({ my: "".concat(direction, " top"), at: "".concat(direction, " bottom+5"), of: this.ui.dynamicSwitcher }); }, setTagView: function setTagView(id, name, settings) { if (this.tagView) this.tagView.destroy(); var tagView = this.tagView = new TagPanelView({ id, name, settings, controlName: this.view.model.get("name"), dynamicSettings: this.getOption("dynamicSettings") }); var elementContainer = this.view.options.container; var tagViewLabel = elementContainer.controls[tagView.options.controlName].label; tagView.options.container = new elementorModules.editor.Container({ type: "dynamic", id, model: tagView.model, settings: tagView.model, view: tagView, parent: elementContainer, label: elementContainer.label + " " + tagViewLabel, controls: tagView.model.options.controls, renderer: elementContainer }); tagView.render(); this.$el.find(".elementor-control-tag-area").after(tagView.el); this.listenTo(tagView, "remove", this.onTagViewRemove.bind(this)); }, setDefaultTagView: function setDefaultTagView() { var tagData = elementor.dynamicTags.tagTextToTagData(this.getDynamicValue()); this.setTagView(tagData.id, tagData.name, tagData.settings); }, tagViewToTagText: function tagViewToTagText() { var tagView = this.tagView; return elementor.dynamicTags.tagDataToTagText(tagView.getOption("id"), tagView.getOption("name"), tagView.model); }, getDynamicValue: function getDynamicValue() { return this.view.container.dynamic.get(this.view.model.get("name")); }, destroyTagView: function destroyTagView() { if (this.tagView) { this.tagView.destroy(); this.tagView = null; } }, showPromotion: function showPromotion() { var hasProAndNotConnected = elementor.helpers.hasProAndNotConnected(); var dialogOptions = { title: (0, _wordpress_i18n.__)("Dynamic Content", "elementor"), content: (0, _wordpress_i18n.__)("Create more personalized and dynamic sites by populating data from various sources with dozens of dynamic tags to choose from.", "elementor"), targetElement: this.ui.dynamicSwitcher, position: { blockStart: "-10" }, actionButton: { url: hasProAndNotConnected ? elementorProEditorConfig.urls.connect : elementor.config.dynamicPromotionURL.replace("%s", this.view.model.get("name")), text: hasProAndNotConnected ? (0, _wordpress_i18n.__)("Connect & Activate", "elementor") : (0, _wordpress_i18n.__)("Upgrade", "elementor") } }; elementor.promotion.showDialog(dialogOptions); }, onRender: function onRender() { this.$el.addClass("elementor-control-dynamic"); this.renderTools(); this.toggleDynamicClass(); if (this.isDynamicMode()) this.setDefaultTagView(); }, onDynamicSwitcherClick: function onDynamicSwitcherClick(event) { event.stopPropagation(); if (this.getOption("tags").length) this.toggleTagsList(); else this.showPromotion(); }, onTagsListItemClick: function onTagsListItemClick(event) { var $tag = jQuery(event.currentTarget); this.setTagView(elementorCommon.helpers.getUniqueId(), $tag.data("tagName"), {}); if (this.view.getGlobalKey()) this.view.triggerMethod("unset:global:value"); if (this.isDynamicMode()) $e.run("document/dynamic/settings", { container: this.view.options.container, settings: _defineProperty({}, this.view.model.get("name"), this.tagViewToTagText()) }); else $e.run("document/dynamic/enable", { container: this.view.options.container, settings: _defineProperty({}, this.view.model.get("name"), this.tagViewToTagText()) }); this.toggleDynamicClass(); this.toggleTagsList(); if (this.tagView.getTagConfig().settings_required) this.tagView.showSettingsPopup(); }, onTagViewRemove: function onTagViewRemove() { $e.run("document/dynamic/disable", { container: this.view.options.container, settings: _defineProperty({}, this.view.model.get("name"), this.tagViewToTagText()) }); this.toggleDynamicClass(); }, onAfterExternalChange: function onAfterExternalChange() { this.destroyTagView(); if (this.isDynamicMode()) this.setDefaultTagView(); this.toggleDynamicClass(); }, onDestroy: function onDestroy() { this.destroyTagView(); if (this.ui.tagsList) this.ui.tagsList.remove(); } }); })); //#endregion //#region assets/dev/js/editor/controls/base-data.js var require_base_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { init_slicedToArray(); init_defineProperty(); init_breakpoint(); function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var ControlBaseView = require_base(); var TagsBehavior = require_control_behavior(); var Validator = require_base$1(); var NumberValidator = require_number(); var ControlBaseDataView = ControlBaseView.extend({ validatorTypes: { Base: Validator, Number: NumberValidator, Breakpoint: BreakpointValidator }, ui: function ui() { var ui = ControlBaseView.prototype.ui.apply(this, arguments); _.extend(ui, { input: "input[data-setting][type!=\"checkbox\"][type!=\"radio\"]", checkbox: "input[data-setting][type=\"checkbox\"]", radio: "input[data-setting][type=\"radio\"]", select: "select[data-setting]", textarea: "textarea[data-setting]", responsiveSwitchersSibling: "".concat(ui.controlTitle, "[data-e-responsive-switcher-sibling!=\"false\"]"), responsiveSwitchers: ".elementor-responsive-switcher", contentEditable: "[contenteditable=\"true\"]" }); return ui; }, templateHelpers: function templateHelpers() { var controlData = ControlBaseView.prototype.templateHelpers.apply(this, arguments); controlData.data.controlValue = this.getControlValue(); return controlData; }, events: function events() { return { "input @ui.input": "onBaseInputTextChange", "change @ui.checkbox": "onBaseInputChange", "change @ui.radio": "onBaseInputChange", "input @ui.textarea": "onBaseInputTextChange", "change @ui.select": "onBaseInputChange", "input @ui.contentEditable": "onBaseInputTextChange", "click @ui.responsiveSwitchers": "onResponsiveSwitchersClick" }; }, behaviors: function behaviors() { var behaviors = ControlBaseView.prototype.behaviors.apply(this, arguments); var dynamicSettings = this.options.model.get("dynamic"); if (dynamicSettings && dynamicSettings.active) { var tags = _.filter(elementor.dynamicTags.getConfig("tags"), function(tag) { return tag.editable && _.intersection(tag.categories, dynamicSettings.categories).length; }); if (tags.length || elementor.config.user.is_administrator) behaviors.tags = { behaviorClass: TagsBehavior, tags, dynamicSettings }; } return behaviors; }, initialize: function initialize() { ControlBaseView.prototype.initialize.apply(this, arguments); this.registerValidators(); if (this.model.get("responsive")) this.setPlaceholderFromParent(); if (void 0 === this.model.get("inherit_placeholders")) this.model.set("inherit_placeholders", true); var settings = this.container ? this.container.settings : this.elementSettingsModel; this.listenTo(settings, "change:external:" + this.model.get("name"), this.onAfterExternalChange); }, getControlValue: function getControlValue() { return this.container.settings.get(this.model.get("name")); }, getGlobalKey: function getGlobalKey() { return this.container.globals.get(this.model.get("name")); }, getGlobalValue: function getGlobalValue() { return this.globalValue; }, getGlobalDefault: function getGlobalDefault() { var controlGlobalArgs = this.model.get("global"); if (controlGlobalArgs !== null && controlGlobalArgs !== void 0 && controlGlobalArgs.default) { if (!elementor.config.globals.defaults_enabled[this.getGlobalMeta().controlType]) return ""; var _$e$data$commandExtra = $e.data.commandExtractArgs(controlGlobalArgs.default); var command = _$e$data$commandExtra.command; var args = _$e$data$commandExtra.args; var result = $e.data.getCache($e.components.get("globals"), command, args.query); return result === null || result === void 0 ? void 0 : result.value; } return ""; }, getCurrentValue: function getCurrentValue() { if (this.getGlobalKey() && !this.globalValue) return ""; if (this.globalValue) return this.globalValue; var controlValue = this.getControlValue(); if (controlValue) return controlValue; return this.getGlobalDefault(); }, isGlobalActive: function isGlobalActive() { var _this$options$model$g; return (_this$options$model$g = this.options.model.get("global")) === null || _this$options$model$g === void 0 ? void 0 : _this$options$model$g.active; }, setValue: function setValue(value) { this.setSettingsModel(value); }, setSettingsModel: function setSettingsModel(value) { var key = this.model.get("name"); $e.run("document/elements/settings", { container: this.options.container, settings: _defineProperty({}, key, value) }); this.triggerMethod("settings:change"); }, applySavedValue: function applySavedValue() { this.setInputValue("[data-setting=\"" + this.model.get("name") + "\"]", this.getControlValue()); }, getEditSettings: function getEditSettings(setting) { var settings = this.getOption("elementEditSettings").toJSON(); if (setting) return settings[setting]; return settings; }, setEditSetting: function setEditSetting(settingKey, settingValue) { (this.getOption("elementEditSettings") || this.getOption("container").settings).set(settingKey, settingValue); }, /** * Get the placeholder for the current control. * * @return {*} placeholder */ getControlPlaceholder: function getControlPlaceholder() { var placeholder = this.model.get("placeholder"); if (this.model.get("responsive") && this.model.get("inherit_placeholders")) placeholder = placeholder || this.container.placeholders[this.model.get("name")]; return placeholder; }, /** * Get the responsive parent view if exists. * * @return {ControlBaseDataView|undefined} responsive parent view if exists */ getResponsiveParentView: function getResponsiveParentView() { var parent = this.model.get("parent"); try { return parent && this.container.panel.getControlView(parent); } catch (e) {} }, /** * Get the responsive children views if exists. * * @return {ControlBaseDataView|null} responsive children views if exists */ getResponsiveChildrenViews: function getResponsiveChildrenViews() { var children = this.model.get("inheritors"); var views = []; try { var _iterator = _createForOfIteratorHelper(children); var _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var child = _step.value; views.push(this.container.panel.getControlView(child)); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } catch (e) {} return views; }, /** * Get prepared placeholder from the responsive parent, and put it into current * control model as placeholder. */ setPlaceholderFromParent: function setPlaceholderFromParent() { var parent = this.getResponsiveParentView(); if (parent) this.container.placeholders[this.model.get("name")] = parent.preparePlaceholderForChildren(); }, /** * Returns the value of the current control if exists, or the parent value if not, * so responsive children can set it as their placeholder. When there are multiple * inputs, the inputs which are empty on this control will inherit their values * from the responsive parent. * For example, if on desktop the padding of all edges is 10, and on tablet only * padding right and left is set to 15, the mobile control placeholder will * eventually be: { top: 10, right: 15, left: 15, bottom: 10 }, because of the * inheritance of multiple values. * * @return {*} value of the current control if exists, or the parent value if not */ preparePlaceholderForChildren: function preparePlaceholderForChildren() { var _this$getResponsivePa; var cleanValue = this.getCleanControlValue(); var parentValue = (_this$getResponsivePa = this.getResponsiveParentView()) === null || _this$getResponsivePa === void 0 ? void 0 : _this$getResponsivePa.preparePlaceholderForChildren(); if (cleanValue instanceof Object) return Object.assign({}, parentValue, cleanValue); return cleanValue || parentValue; }, /** * Start the re-rendering recursive chain from the responsive child of this * control. It's useful when the current control value is changed and we want * to update all responsive children. In this case, the re-rendering is supposed * to be applied only from the responsive child of this control and on. */ propagatePlaceholder: function propagatePlaceholder() { var _iterator2 = _createForOfIteratorHelper(this.getResponsiveChildrenViews()); var _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) _step2.value.renderWithChildren(); } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } }, /** * Re-render current control and trigger this method on the responsive child. * The purpose of those actions is to recursively re-render all responsive * children. */ renderWithChildren: function renderWithChildren() { this.render(); this.propagatePlaceholder(); }, /** * Get control value without empty properties, and without default values. * * @return {{}} control value without empty properties, and without default values */ getCleanControlValue: function getCleanControlValue() { var value = this.getControlValue(); return value && value !== this.model.get("default") ? value : void 0; }, onAfterChange: function onAfterChange(control) { if (Object.keys(control.changed).includes(this.model.get("name"))) this.propagatePlaceholder(); ControlBaseView.prototype.onAfterChange.apply(this, arguments); }, getInputValue: function getInputValue(input) { var $input = this.$(input); if ($input.is("[contenteditable=\"true\"]")) return $input.html(); var inputValue = $input.val(); var inputType = $input.attr("type"); if (-1 !== ["radio", "checkbox"].indexOf(inputType)) return $input.prop("checked") ? inputValue : ""; if ("number" === inputType && _.isFinite(inputValue)) return +inputValue; if ("SELECT" === input.tagName && $input.prop("multiple") && null === inputValue) inputValue = []; return inputValue; }, setInputValue: function setInputValue(input, value) { var $input = this.$(input); var inputType = $input.attr("type"); if ("checkbox" === inputType) $input.prop("checked", !!value); else if ("radio" === inputType) $input.filter("[value=\"" + value + "\"]").prop("checked", true); else $input.val(value); }, addValidator: function addValidator(validator) { this.validators.push(validator); }, registerValidators: function registerValidators() { var _this = this; this.validators = []; var validationTerms = {}; if (this.model.get("required")) validationTerms.required = true; if (!jQuery.isEmptyObject(validationTerms)) this.addValidator(new this.validatorTypes.Base({ validationTerms })); var validators = this.model.get("validators"); if (validators) Object.entries(validators).forEach(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); var key = _ref2[0]; var args = _ref2[1]; _this.addValidator(new _this.validatorTypes[key]({ validationTerms: args })); }); }, onBeforeRender: function onBeforeRender() { this.setPlaceholderFromParent(); }, onRender: function onRender() { ControlBaseView.prototype.onRender.apply(this, arguments); if (this.model.get("responsive")) this.renderResponsiveSwitchers(); this.applySavedValue(); this.triggerMethod("ready"); this.toggleControlVisibility(); this.addTooltip(); }, onBaseInputTextChange: function onBaseInputTextChange(event) { this.onBaseInputChange(event); }, onBaseInputChange: function onBaseInputChange(event) { clearTimeout(this.correctionTimeout); var input = event.currentTarget; var value = this.getInputValue(input); var validators = this.validators.slice(0); var settingsValidators = this.container.settings.validators[this.model.get("name")]; if (settingsValidators) validators = validators.concat(settingsValidators); if (validators) { var oldValue = this.getControlValue(input.dataset.setting); if (!validators.every(function(validator) { return validator.isValid(value, oldValue); })) { this.correctionTimeout = setTimeout(this.setInputValue.bind(this, input, oldValue), 1200); return; } } this.updateElementModel(value, input); this.triggerMethod("input:change", event); }, onResponsiveSwitchersClick: function onResponsiveSwitchersClick(event) { var $switcher = jQuery(event.currentTarget); var device = $switcher.data("device"); var $switchersWrapper = this.ui.responsiveSwitchersWrapper; var selectedOption = $switcher.index(); $switchersWrapper.toggleClass("elementor-responsive-switchers-open"); $switchersWrapper[0].style.setProperty("--selected-option", selectedOption); this.triggerMethod("responsive:switcher:click", device); elementor.changeDeviceMode(device); }, renderResponsiveSwitchers: function renderResponsiveSwitchers() { var templateHtml = Marionette.Renderer.render("#tmpl-elementor-control-responsive-switchers", this.model.attributes); this.ui.responsiveSwitchersSibling.after(templateHtml); this.ui.responsiveSwitchersWrapper = this.$el.find(".elementor-control-responsive-switchers"); }, onAfterExternalChange: function onAfterExternalChange() { this.hideTooltip(); this.applySavedValue(); }, addTooltip: function addTooltip() { this.ui.tooltipTargets = this.$el.find(".tooltip-target"); if (!this.ui.tooltipTargets.length) return; this.ui.tooltipTargets.tipsy({ gravity: function gravity() { var gravity = jQuery(this).data("tooltip-pos"); if (void 0 !== gravity) return gravity; return "s"; }, title: function title() { return this.getAttribute("data-tooltip"); } }); }, hideTooltip: function hideTooltip() { if (this.ui.tooltipTargets.length) this.ui.tooltipTargets.tipsy("hide"); }, updateElementModel: function updateElementModel(value) { this.setValue(value); } }, { getStyleValue: function getStyleValue(placeholder, controlValue, controlData) { if ("DEFAULT" === placeholder) return controlData.default; return controlValue; }, onPasteStyle: function onPasteStyle() { return true; } }); module.exports = ControlBaseDataView; })); //#endregion //#region modules/promotions/assets/js/react/controls/promotion.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty(); var import_base_data = /* @__PURE__ */ __toESM(require_base_data()); function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$1, "_callSuper"); function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$1, "_isNativeReflectConstruct"); var _default = /*#__PURE__*/ function(_ControlBaseDataView) { function _default(options) { var _this; _classCallCheck(this, _default); _this = _callSuper$1(this, _default, [options]); _defineProperty(_this, "promotionInfoTip", null); _defineProperty(_this, "selectors", { wrapperElement: ".elementor-control-type-switcher", reactAnchor: ".e-promotion-react-wrapper" }); _this.AppManager = new AppManager(); return _this; } _inherits(_default, _ControlBaseDataView); return _createClass(_default, [ { key: "ui", value: function ui() { return { switcher: "[data-promotion].elementor-control-type-switcher" }; } }, { key: "events", value: function events() { return { "click @ui.switcher": "onClickControlSwitcher" }; } }, { key: "promotionData", value: function promotionData(promotionType) { return elementorPromotionsData[promotionType] || {}; } }, { key: "onClickControlSwitcher", value: function onClickControlSwitcher(event) { event.stopPropagation(); this.AppManager.mount(event.target, this.selectors); } } ]); }(import_base_data.default); //#endregion //#region modules/promotions/assets/js/react/module.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var Module = /*#__PURE__*/ function(_elementorModules$edi) { function Module() { _classCallCheck(this, Module); return _callSuper(this, Module, arguments); } _inherits(Module, _elementorModules$edi); return _createClass(Module, [{ key: "onElementorInit", value: function onElementorInit() { elementor.addControlView("promotion_control", _default); new AppManager(); } }]); }(elementorModules.editor.utils.Module); //#endregion //#region modules/promotions/assets/js/react/index.js new Module(); //#endregion })(React, elementorV2.ui, elementorV2.icons, wp.i18n); //# sourceMappingURL=e-react-promotions.js.map